Changeset b0f6382 in tol for toltcl/generic/tolaccess.cpp
- Timestamp:
- Feb 24, 2012, 3:51:30 PM (15 years ago)
- Branches:
- 1941-docker-image-to-test, devel, master
- Children:
- 578c841
- Parents:
- aedc343
- File:
-
- 1 edited
-
toltcl/generic/tolaccess.cpp (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
toltcl/generic/tolaccess.cpp
raedc343 rb0f6382 825 825 } 826 826 827 inline void SAVE_SET_STRING( Tcl_Obj **obj, const char* str ) 828 { 829 if (Tcl_IsShared( *obj ) ) { 830 Tcl_DecrRefCount( *obj ); 831 *obj = Tcl_NewStringObj( str, -1 ); 832 Tcl_IncrRefCount( *obj ); 833 } else 834 Tcl_SetStringObj( *obj, str,-1 ); 835 } 836 827 837 class ContainerIterator 828 838 { … … 1096 1106 datav[ OBJ_SUBTYPE ] = Tcl_NewStringObj( "subtype", -1 ); 1097 1107 datav[ OBJ_SUBTYPEV ] = Tcl_NewObj( ); 1098 datav[ OBJ_STRUCT ] = Tcl_New StringObj( "struct", -1);1108 datav[ OBJ_STRUCT ] = Tcl_NewObj( ); 1099 1109 datav[ OBJ_STRUCTV ] = Tcl_NewObj( ); 1100 1110 … … 1192 1202 Tcl_IncrRefCount( datav[ OBJ_SUBTYPEV ] ); 1193 1203 } else 1194 Tcl_SetIntObj( datav[ OBJ_SUBTYPEV ], set_i->SubType( ) );1204 Tcl_SetIntObj( datav[ OBJ_SUBTYPEV ], set_i->SubType( ) ); 1195 1205 1196 /* STRUCT INFO */1206 /* STRUCT OR CLASS INFO */ 1197 1207 // asume que dstr esta a longitud 0 1198 if ( set_i->Struct( ) ) { 1199 btxt = set_i->Struct( )->Name( ); 1200 Tcl_ExternalToUtfDString( NULL, btxt, -1, &dstr ); 1208 if ( syn_i->Grammar() == GraNameBlock() ) { 1209 SAVE_SET_STRING( datav + OBJ_STRUCT, "class" ); 1210 const BNameBlock& nb = ((BUserNameBlock*)(syn_i))->Contens(); 1211 const BClass* cls = nb.Class( ); 1212 if ( cls ) { 1213 btxt = cls->FullName(); 1214 Tcl_ExternalToUtfDString( NULL, btxt, -1, &dstr ); 1215 } 1216 } else { 1217 SAVE_SET_STRING( datav + OBJ_STRUCT, "struct" ); 1218 if ( set_i->Struct( ) ) { 1219 btxt = set_i->Struct( )->Name( ); 1220 Tcl_ExternalToUtfDString( NULL, btxt, -1, &dstr ); 1221 } 1201 1222 } 1202 SAVE_SET_STRING( datav + OBJ_ PATHV, &dstr );1223 SAVE_SET_STRING( datav + OBJ_STRUCTV, &dstr ); 1203 1224 Tcl_DStringFree( &dstr ); 1204 1225 datac = NUM_OBJS; … … 2248 2269 } 2249 2270 2250 /* ojo info debe tener espacio para 7Tcl_Obj como maximo */2271 /* ojo info debe tener espacio para 9 Tcl_Obj como maximo */ 2251 2272 /* retorna cuantos Tcl_Obj creo */ 2252 2273 … … 2320 2341 2321 2342 /* STRUCTURE */ 2322 if ( ptrSet->Struct() ) { 2343 if ( var->Grammar() == GraNameBlock() ) { 2344 const BNameBlock& nb = ((BUserNameBlock*)(var))->Contens(); 2345 const BClass* cls = nb.Class( ); 2346 if ( cls ) { 2347 info[8] = Tcl_NewStringObj( cls->FullName().String(), -1 ); 2348 } else { 2349 info[8] = Tcl_NewStringObj( NULL, 0 ); 2350 } 2351 } else if ( ptrSet->Struct() ) { 2323 2352 BText btxt( ptrSet->Struct()->Name() ); 2324 2353 Tcl_ExternalToUtfDString(NULL,btxt,-1,&dstr); 2325 2354 info[8] = Tcl_NewStringObj( Tcl_DStringValue(&dstr), -1 ); 2326 2355 Tcl_DStringFree( &dstr ); 2327 } else 2356 } else { 2328 2357 info[8] = Tcl_NewStringObj( NULL, 0 ); 2358 } 2329 2359 infoc = 9; 2330 2360 } else
Note: See TracChangeset
for help on using the changeset viewer.
