Changeset b6a0831 in tol
- Timestamp:
- Feb 27, 2012, 8:00:00 AM (15 years ago)
- Branches:
- 1941-docker-image-to-test, devel, master
- Children:
- 477d78a
- Parents:
- 44d90fd
- File:
-
- 1 edited
-
toltcl/generic/tolaccess.cpp (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
toltcl/generic/tolaccess.cpp
r44d90fd rb6a0831 1002 1002 BSyntaxObject* container; 1003 1003 Tcl_DString dstr; 1004 Tcl_Obj * ArgIndexes;1005 1004 int tcl_code = TCL_OK; 1006 1005 int i; 1007 int n, index_length;1008 Tcl_Obj ** items;1009 1006 1010 1007 int length = 0; … … 1038 1035 const int OBJ_DESC = OBJ_PATHV + 1; 1039 1036 const int OBJ_DESCV = OBJ_DESC + 1; 1040 const int OBJ_INDEXES = OBJ_DESCV + 1; 1041 const int OBJ_INDEXESV = OBJ_INDEXES + 1; 1042 const int OBJ_ISFILE = OBJ_INDEXESV + 1; 1037 const int OBJ_ISFILE = OBJ_DESCV + 1; 1043 1038 const int OBJ_ISFILEV = OBJ_ISFILE + 1; 1044 1039 const int OBJ_HASSUBSET = OBJ_ISFILEV + 1; … … 1068 1063 } 1069 1064 1070 // is ok to ask for a list1071 Tcl_ListObjGetElements( interp, objv[ 1 ], &n, &items );1072 1073 // initialize the list of indexes (the common part) for every item1074 // in the Set1075 if (strcmp(Tcl_GetString( items[ 0 ] ),"Console")) {1076 if (n>2)1077 ArgIndexes = Tcl_NewListObj( n - 2, items + 2 );1078 else1079 ArgIndexes = Tcl_NewListObj( 0, NULL );1080 } else {1081 if ( n > 1 )1082 ArgIndexes = Tcl_NewListObj( n - 1, items + 1 );1083 else1084 ArgIndexes = Tcl_NewListObj( 0, NULL );1085 }1086 1087 1065 datav[ OBJ_GRAMMAR ] = Tcl_NewStringObj( "grammar", -1 ); 1088 1066 datav[ OBJ_GRAMMARV ] = Tcl_NewObj( ); … … 1095 1073 datav[ OBJ_DESC ] = Tcl_NewStringObj( "description", -1 ); 1096 1074 datav[ OBJ_DESCV ] = Tcl_NewObj( ); 1097 Tcl_Obj * last_index = Tcl_NewIntObj( 1 );1098 Tcl_ListObjAppendElement( NULL, ArgIndexes, last_index );1099 datav[ OBJ_INDEXES ] = Tcl_NewStringObj( "indexes", -1 );1100 datav[ OBJ_INDEXESV ] = ArgIndexes;1101 Tcl_ListObjLength( NULL, datav[ OBJ_INDEXES ], &index_length );1102 1075 datav[ OBJ_ISFILE ] = Tcl_NewStringObj( "isfile", -1 ); 1103 1076 datav[ OBJ_ISFILEV ] = Tcl_NewObj( ); … … 1145 1118 /* read the path */ 1146 1119 btxt = syn_i->SourcePath(); 1147 Tcl_ExternalToUtfDString(NULL, btxt,-1,&dstr);1120 Tcl_ExternalToUtfDString(NULL, btxt, -1,& dstr); 1148 1121 SAVE_SET_STRING( datav + OBJ_PATHV, &dstr ); 1149 1122 Tcl_DStringFree(&dstr); … … 1152 1125 btxt = syn_i->Description(); 1153 1126 Tcl_ExternalToUtfDString(NULL,btxt,-1,&dstr); 1154 SAVE_SET_STRING( datav + OBJ_ PATHV, &dstr );1127 SAVE_SET_STRING( datav + OBJ_DESCV, &dstr ); 1155 1128 Tcl_DStringFree(&dstr); 1156 1129 1157 /* update last index */1158 if ( Tcl_IsShared( last_index ) ) {1159 last_index = Tcl_NewIntObj( i );1160 Tcl_ListObjReplace( NULL, datav[ OBJ_INDEXESV ], index_length-1,1161 1, 1, &last_index );1162 } else {1163 Tcl_SetIntObj( last_index, i );1164 }1165 /* to refresh the string */1166 Tcl_InvalidateStringRep( datav[ OBJ_INDEXESV ] );1167 1130 // Este if es para incluir en los items que son Set informacion 1168 1131 // que solo ellos llevan como: Subtype, IsFile, etc ... … … 1225 1188 datac = NUM_OBJS; 1226 1189 } else 1227 datac = OBJ_ INDEXESV + 1;1190 datac = OBJ_DESCV + 1; 1228 1191 // set the loop variable 1229 1192 Tcl_Obj *varValuePtr = Tcl_ObjSetVar2( interp, objv[ 0 ], NULL, … … 1240 1203 } 1241 1204 tcl_code = Tcl_EvalObjEx( interp, objv[ 2 ], 0 ); 1205 // unset loop variable 1206 Tcl_UnsetVar( interp, Tcl_GetString( objv[ 0 ] ), 0 ); 1242 1207 if ( tcl_code != TCL_OK) { 1243 1208 if ( tcl_code == TCL_CONTINUE) { … … 1257 1222 delete citer; 1258 1223 1259 /* liberar los objetos tcl*/1224 /* release tcl objects holds on datav */ 1260 1225 for ( i = 0; i < NUM_OBJS; ++i ) { 1261 1226 Tcl_DecrRefCount( datav[ i ] );
Note: See TracChangeset
for help on using the changeset viewer.
