Changeset 0cc72d6 in tol
- Timestamp:
- Nov 17, 2010, 7:39:37 PM (16 years ago)
- Branches:
- 1941-docker-image-to-test, devel, master
- Children:
- d06ddf9
- Parents:
- 04855da
- Location:
- tol/btol/set_type
- Files:
-
- 2 edited
-
set.cpp (modified) (4 diffs)
-
setgra.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tol/btol/set_type/set.cpp
r04855da r0cc72d6 39 39 BSyntaxObject* BSet::objCond_ = NIL; 40 40 BSet BSet::unknown_; 41 42 //-------------------------------------------------------------------- 43 static bool DoIndexElement(BObjByIdxNameHash** indexByName, 44 BSyntaxObject* obj, 45 int i) 46 //-------------------------------------------------------------------- 47 { 48 bool ok = true; 49 if(indexByName && *indexByName && obj) 50 { 51 const BText& name = obj->Name(); 52 if(name.HasName()) 53 { 54 BObjByIdxNameHash::const_iterator found = (*indexByName)->find(name); 55 if(found!=(*indexByName)->end()) 56 { 57 Error(I2("Duplicated index name ", 58 "Nombre de Ãndice duplicado ")+ 59 name); 60 ok = false; 61 } 62 (**indexByName)[name] = BIndexedSyntaxObject(i,obj); 63 } 64 else 65 { 66 Error(I2("A indexed by name set cannot have elements without a valid name ", 67 "Un conjunto indexado por nombres no puede tener elementos sin un nombre válido ") 68 +"'"+name+"'"); 69 ok = false; 70 } 71 if(!ok) { delete *indexByName; *indexByName = NULL; } 72 } 73 return(ok); 74 } 75 76 //-------------------------------------------------------------------- 77 static bool UnIndexElement(BObjByIdxNameHash** indexByName, 78 BSyntaxObject* obj) 79 //-------------------------------------------------------------------- 80 { 81 bool ok = true; 82 if(indexByName && *indexByName && obj) 83 { 84 const BText& name = obj->Name(); 85 if(name.HasName()) 86 { 87 BObjByIdxNameHash::const_iterator found = (*indexByName)->find(name); 88 if(found!=(*indexByName)->end()) 89 { 90 (*indexByName)->erase(name); 91 } 92 else 93 { 94 Error(I2("Cannot remove the non found index name ", 95 "No se puede eliminar el Ãndice de nombre no encontrado ")+ 96 name); 97 ok = false; 98 } 99 } 100 if(!ok) { delete *indexByName; *indexByName = NULL; } 101 } 102 return(ok); 103 } 104 105 //-------------------------------------------------------------------- 106 static bool ReIndexElement(BObjByIdxNameHash** indexByName, 107 BSyntaxObject* obj, 108 int i) 109 //-------------------------------------------------------------------- 110 { 111 bool ok = true; 112 if(indexByName && *indexByName && obj) 113 { 114 const BText& name = obj->Name(); 115 if(name.HasName()) 116 { 117 BObjByIdxNameHash::iterator found = (*indexByName)->find(name); 118 if(found!=(*indexByName)->end()) 119 { 120 found->second.position_ = i; 121 } 122 else 123 { 124 Error(I2("Cannot remove the non found index name ", 125 "No se puede eliminar el Ãndice de nombre no encontrado ")+ 126 name); 127 ok = false; 128 } 129 } 130 else 131 { 132 Error(I2("A indexed by name set cannot have elements without a valid name ", 133 "Un conjunto indexado por nombres no puede tener elementos sin un nombre válido ") 134 +"'"+name+"'"); 135 ok = false; 136 } 137 if(!ok) { delete *indexByName; *indexByName = NULL; } 138 } 139 return(ok); 140 } 141 41 142 42 143 //-------------------------------------------------------------------- … … 334 435 } 335 436 336 //-------------------------------------------------------------------- 337 static bool DoIndexElement(BObjByIdxNameHash** indexByName, 338 BSyntaxObject* obj, 339 int i) 340 //-------------------------------------------------------------------- 341 { 342 bool ok = true; 343 if(indexByName && *indexByName && obj) 344 { 345 const BText& name = obj->Name(); 346 if(name.HasName()) 347 { 348 BObjByIdxNameHash::const_iterator found = (*indexByName)->find(name); 349 if(found!=(*indexByName)->end()) 350 { 351 Error(I2("Duplicated index name ", 352 "Nombre de ᅵndice duplicado ")+ 353 name); 354 ok = false; 355 } 356 (**indexByName)[name] = BIndexedSyntaxObject(i,obj); 357 } 358 else 359 { 360 Error(I2("A indexed by name set cannot have elements without a valid name ", 361 "Un conjunto indexado por nombres no puede tener elementos sin un nombre vᅵlido ") 362 +"'"+name+"'"); 363 ok = false; 364 } 365 if(!ok) { delete *indexByName; *indexByName = NULL; } 366 } 367 return(ok); 368 } 437 369 438 370 439 //-------------------------------------------------------------------- … … 396 465 if((n<0)||(n>=s)) { return; } 397 466 BSyntaxObject* found = array_[n]; 467 UnIndexElement(&indexByName_,found); 398 468 int i; 399 469 for(i=n; i<s-1; i++) 400 470 { 401 471 array_[i] = array_[i+1]; 472 ReIndexElement(&indexByName_,array_[i],i); 402 473 } 403 474 array_.ReallocBuffer(s-1); … … 413 484 if((n<0)||(n>=s)) { return; } 414 485 BSyntaxObject* found = array_[n]; 486 UnIndexElement(&indexByName_,found); 415 487 newObject->IncNRefs(); 416 488 array_[n] = newObject; 489 DoIndexElement(&indexByName_,array_[n],n); 417 490 found->DecNRefs(); 418 491 if(deleteOld) { DESTROY(found); } -
tol/btol/set_type/setgra.cpp
r04855da r0cc72d6 161 161 I2("Removes the n-th element of a set and tries to delete it " 162 162 "from memory if deleteOld is true. Returns the own set " 163 "with the rest of elements." , 163 "with the rest of elements." 164 "If the set was indexed by name then the indes will be updated.", 164 165 "Elimina el n-esimo elemento de un conjunto e intenta " 165 166 "borrar el viejo de la memoria si deleteOld es cierto. " 166 "Devuelve el propio conjunto con el resto de elementos."), 167 "Devuelve el propio conjunto con el resto de elementos." 168 "Si el conjunto estaba indexado por nombre el índice será " 169 "actualizado"), 167 170 BOperClassify::SetAlgebra_ 168 171 ) … … 202 205 I2("Replaces the n-th element of a set by a another new one " 203 206 "and tries to delete the old one from memory if deleteOld " 204 "is true. Returns the own set with the new changed element.", 207 "is true. Returns the own set with the new changed element." 208 "If the set was indexed by name then the indes will be updated." , 205 209 "Reemplaza el n-ésimo elemento de un conjunto por otro " 206 210 "nuevo e intenta borrar el viejo de la memoria si deleteOld " 207 211 "es cierto. Devuelve el propio conjunto con el elemento " 208 "cambiado."), 212 "cambiado." 213 "Si el conjunto estaba indexado por nombre el índice será " 214 "actualizado"), 209 215 BOperClassify::SetAlgebra_ 210 216 )
Note: See TracChangeset
for help on using the changeset viewer.
