Changes in src/periodentafel.cpp [112b09:61745cc]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/periodentafel.cpp
r112b09 r61745cc 4 4 * 5 5 */ 6 7 #include "Helpers/MemDebug.hpp"8 6 9 7 using namespace std; … … 32 30 periodentafel::periodentafel() 33 31 { 34 ASSERT(LoadElementsDatabase(new stringstream(elementsDB,ios_base::in)), "General element initialization failed"); 35 ASSERT(LoadValenceDatabase(new stringstream(valenceDB,ios_base::in)), "Valence entry of element initialization failed"); 36 ASSERT(LoadOrbitalsDatabase(new stringstream(orbitalsDB,ios_base::in)), "Orbitals entry of element initialization failed"); 37 ASSERT(LoadHBondAngleDatabase(new stringstream(HbondangleDB,ios_base::in)), "HBond angle entry of element initialization failed"); 38 ASSERT(LoadHBondLengthsDatabase(new stringstream(HbonddistanceDB,ios_base::in)), "HBond distance entry of element initialization failed"); 32 bool status = true; 33 status = LoadElementsDatabase(new stringstream(elementsDB,ios_base::in)); 34 ASSERT(status, "General element initialization failed"); 35 status = LoadValenceDatabase(new stringstream(valenceDB,ios_base::in)); 36 ASSERT(status, "Valence entry of element initialization failed"); 37 status = LoadOrbitalsDatabase(new stringstream(orbitalsDB,ios_base::in)); 38 ASSERT(status, "Orbitals entry of element initialization failed"); 39 status = LoadHBondAngleDatabase(new stringstream(HbondangleDB,ios_base::in)); 40 ASSERT(status, "HBond angle entry of element initialization failed"); 41 status = LoadHBondLengthsDatabase(new stringstream(HbonddistanceDB,ios_base::in)); 42 ASSERT(status, "HBond distance entry of element initialization failed"); 39 43 }; 40 44 … … 66 70 * \param *pointer element to be removed 67 71 */ 68 voidperiodentafel::RemoveElement(element * const pointer)69 { 70 RemoveElement(pointer->getNumber());72 size_t periodentafel::RemoveElement(element * const pointer) 73 { 74 return RemoveElement(pointer->getNumber()); 71 75 }; 72 76 … … 74 78 * \param Z element to be removed 75 79 */ 76 voidperiodentafel::RemoveElement(atomicNumber_t Z)77 { 78 elements.erase(Z);80 size_t periodentafel::RemoveElement(atomicNumber_t Z) 81 { 82 return elements.erase(Z); 79 83 }; 80 84 … … 229 233 strncat(filename, STANDARDELEMENTSDB, MAXSTRINGSIZE-strlen(filename)); 230 234 input.open(filename); 235 if (!input.fail()) 236 DoLog(0) && (Log() << Verbose(0) << "Using " << filename << " as elements database." << endl); 231 237 status = status && LoadElementsDatabase(&input); 238 input.close(); 239 input.clear(); 232 240 233 241 // fill valence DB per element … … 236 244 strncat(filename, STANDARDVALENCEDB, MAXSTRINGSIZE-strlen(filename)); 237 245 input.open(filename); 246 if (!input.fail()) 247 DoLog(0) && (Log() << Verbose(0) << "Using " << filename << " as valence database." << endl); 238 248 otherstatus = otherstatus && LoadValenceDatabase(&input); 249 input.close(); 250 input.clear(); 239 251 240 252 // fill orbitals DB per element … … 243 255 strncat(filename, STANDARDORBITALDB, MAXSTRINGSIZE-strlen(filename)); 244 256 input.open(filename); 257 if (!input.fail()) 258 DoLog(0) && (Log() << Verbose(0) << "Using " << filename << " as orbitals database." << endl); 245 259 otherstatus = otherstatus && LoadOrbitalsDatabase(&input); 260 input.close(); 261 input.clear(); 246 262 247 263 // fill H-BondAngle DB per element … … 250 266 strncat(filename, STANDARDHBONDANGLEDB, MAXSTRINGSIZE-strlen(filename)); 251 267 input.open(filename); 268 if (!input.fail()) 269 DoLog(0) && (Log() << Verbose(0) << "Using " << filename << " as H bond angle database." << endl); 252 270 otherstatus = otherstatus && LoadHBondAngleDatabase(&input); 271 input.close(); 272 input.clear(); 253 273 254 274 // fill H-BondDistance DB per element … … 257 277 strncat(filename, STANDARDHBONDDISTANCEDB, MAXSTRINGSIZE-strlen(filename)); 258 278 input.open(filename); 279 if (!input.fail()) 280 DoLog(0) && (Log() << Verbose(0) << "Using " << filename << " as H bond length database." << endl); 259 281 otherstatus = otherstatus && LoadHBondLengthsDatabase(&input); 282 input.close(); 283 input.clear(); 260 284 261 285 if (!otherstatus){ … … 274 298 bool status = true; 275 299 int counter = 0; 300 pair< std::map<atomicNumber_t,element*>::iterator, bool > InserterTest; 276 301 if (!(*input).fail()) { 277 302 (*input).getline(header1, MAXSTRINGSIZE); … … 299 324 //(*input) >> ws; 300 325 (*input) >> ws; 301 if (elements.count(neues->Z)) {// if element already present, remove and delete it302 element * const Elemental = FindElement(neues->Z);303 ASSERT(Elemental != NULL, "element should be present but is not??");304 RemoveElement(Elemental);305 delete(Elemental);306 }307 326 //neues->Output((ofstream *)&cout); 308 if ((neues->Z > 0) && (neues->Z < MAX_ELEMENTS)) { 309 DoLog(0) && (Log() << Verbose(0) << " " << neues->symbol); 310 elements[neues->getNumber()] = neues; 327 if ((neues->getNumber() > 0) && (neues->getNumber() < MAX_ELEMENTS)) { 328 if (elements.count(neues->getNumber())) {// if element already present, remove and delete old one (i.e. replace it) 329 //cout << neues->symbol << " is present already." << endl; 330 element * const Elemental = FindElement(neues->getNumber()); 331 ASSERT(Elemental != NULL, "element should be present but is not??"); 332 *Elemental = *neues; 333 } else { 334 InserterTest = elements.insert(pair <atomicNumber_t,element*> (neues->getNumber(), neues)); 335 ASSERT(InserterTest.second, "Could not insert new element into periodentafel on LoadElementsDatabase()."); 336 } 337 DoLog(0) && (Log() << Verbose(0) << " " << elements[neues->getNumber()]->symbol); 311 338 counter++; 312 339 } else { … … 317 344 } 318 345 DoLog(0) && (Log() << Verbose(0) << endl); 319 } else 346 } else { 347 DoeLog(1) && (eLog() << Verbose(1) << "Could not open the database." << endl); 320 348 status = false; 349 } 321 350 322 351 if (counter == 0)
Note:
See TracChangeset
for help on using the changeset viewer.