Changeset 29812d
- Timestamp:
- Sep 21, 2009, 11:48:42 AM (16 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
- Children:
- b66c22, c30180
- Parents:
- 89c8b2
- Location:
- src
- Files:
-
- 3 added
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Makefile.am
r89c8b2 r29812d 2 2 HEADER = atom.hpp bond.hpp boundary.hpp config.hpp defs.hpp element.hpp ellipsoid.hpp helpers.hpp leastsquaremin.hpp linkedcell.hpp molecules.hpp parser.hpp periodentafel.hpp stackclass.hpp tesselation.hpp tesselationhelpers.hpp vector.hpp verbose.hpp 3 3 4 noinst_PROGRAMS = VectorUnitTest 4 noinst_PROGRAMS = VectorUnitTest MemoryAllocatorUnitTest 5 5 6 6 bin_PROGRAMS = molecuilder joiner analyzer … … 11 11 analyzer_SOURCES = analyzer.cpp datacreator.cpp element.cpp helpers.cpp periodentafel.cpp parser.cpp verbose.cpp helpers.hpp periodentafel.hpp parser.hpp datacreator.hpp 12 12 13 TESTS = VectorUnitTest 13 TESTS = VectorUnitTest MemoryAllocatorUnitTest 14 14 check_PROGRAMS = $(TESTS) 15 15 VectorUnitTest_SOURCES = defs.hpp helpers.cpp helpers.hpp leastsquaremin.cpp leastsquaremin.hpp vectorunittest.cpp vectorunittest.hpp vector.cpp vector.hpp verbose.cpp verbose.hpp … … 17 17 VectorUnitTest_LDFLAGS = $(CPPUNIT_LIBS) -ldl 18 18 19 MemoryAllocatorUnitTest_SOURCES = defs.hpp helpers.cpp helpers.hpp memoryallocatorunittest.cpp memoryallocatorunittest.hpp memoryallocator.hpp verbose.cpp verbose.hpp 20 MemoryAllocatorUnitTest_CXXFLAGS = $(CPPUNIT_CFLAGS) 21 MemoryAllocatorUnitTest_LDFLAGS = $(CPPUNIT_LIBS) -ldl 22 23 19 24 EXTRA_DIST = ${molecuilder_DATA} -
src/analyzer.cpp
r89c8b2 r29812d 10 10 #include "datacreator.hpp" 11 11 #include "helpers.hpp" 12 #include "memoryallocator.hpp" 12 13 #include "parser.hpp" 13 14 #include "periodentafel.hpp" … … 72 73 return 1; 73 74 } else { 74 dir = (char *) Malloc(sizeof(char)*(strlen(argv[2])+2), "main: *dir");75 dir = Malloc<char>(strlen(argv[2]) + 2, "main: *dir"); 75 76 strcpy(dir, "/"); 76 77 strcat(dir, argv[2]); … … 555 556 // ++++++++++++++++ exit ++++++++++++++++++++++++++++++++++ 556 557 delete(periode); 557 Free( (void **)&dir, "main: *dir");558 Free(&dir); 558 559 cout << "done." << endl; 559 560 return 0; -
src/atom.cpp
r89c8b2 r29812d 6 6 7 7 #include "atom.hpp" 8 #include "memoryallocator.hpp" 8 9 9 10 /************************************* Functions for class atom *************************************/ … … 61 62 atom::~atom() 62 63 { 63 Free( (void **)&ComponentNr, "atom::~atom: *ComponentNr");64 Free(&ComponentNr); 64 65 }; 65 66 -
src/boundary.cpp
r89c8b2 r29812d 6 6 7 7 #include "boundary.hpp" 8 #include "memoryallocator.hpp" 8 9 9 10 #include<gsl/gsl_poly.h> -
src/config.cpp
r89c8b2 r29812d 6 6 7 7 #include "config.hpp" 8 #include "memoryallocator.hpp" 8 9 9 10 /******************************** Functions for class ConfigFileBuffer **********************/ … … 86 87 return; 87 88 } else 88 buffer = (char **) Malloc(sizeof(char *)*NoLines, "ConfigFileBuffer::ConfigFileBuffer: **buffer");89 buffer = Malloc<char*>(NoLines, "ConfigFileBuffer::ConfigFileBuffer: **buffer"); 89 90 90 91 // scan each line and put into buffer … … 92 93 int i; 93 94 do { 94 buffer[lines] = (char *) Malloc(sizeof(char)*MAXSTRINGSIZE, "ConfigFileBuffer::ConfigFileBuffer: *buffer[]");95 buffer[lines] = Malloc<char>(MAXSTRINGSIZE, "ConfigFileBuffer::ConfigFileBuffer: *buffer[]"); 95 96 file->getline(buffer[lines], MAXSTRINGSIZE-1); 96 97 i = strlen(buffer[lines]); … … 112 113 { 113 114 for(int i=0;i<NoLines;++i) 114 Free( (void **)&buffer[i], "ConfigFileBuffer::~ConfigFileBuffer: *buffer[]");115 Free( (void **)&buffer, "ConfigFileBuffer::~ConfigFileBuffer: **buffer");116 Free( (void **)&LineMapping, "ConfigFileBuffer::~ConfigFileBuffer: *LineMapping");115 Free(&buffer[i]); 116 Free(&buffer); 117 Free(&LineMapping); 117 118 } 118 119 … … 122 123 void ConfigFileBuffer::InitMapping() 123 124 { 124 LineMapping = (int *) Malloc(sizeof(int)*NoLines, "ConfigFileBuffer::InitMapping: *LineMapping");125 LineMapping = Malloc<int>(NoLines, "ConfigFileBuffer::InitMapping: *LineMapping"); 125 126 for (int i=0;i<NoLines;i++) 126 127 LineMapping[i] = i; … … 163 164 config::config() 164 165 { 165 mainname = (char *) MallocString(sizeof(char)*MAXSTRINGSIZE,"config constructor: mainname");166 defaultpath = (char *) MallocString(sizeof(char)*MAXSTRINGSIZE,"config constructor: defaultpath");167 pseudopotpath = (char *) MallocString(sizeof(char)*MAXSTRINGSIZE,"config constructor: pseudopotpath");168 databasepath = (char *) MallocString(sizeof(char)*MAXSTRINGSIZE,"config constructor: databasepath");169 configpath = (char *) MallocString(sizeof(char)*MAXSTRINGSIZE,"config constructor: configpath");170 configname = (char *) MallocString(sizeof(char)*MAXSTRINGSIZE,"config constructor: configname");171 ThermostatImplemented = (int *) Malloc((MaxThermostats)*(sizeof(int)), "config constructor: *ThermostatImplemented");172 ThermostatNames = (char **) Malloc((MaxThermostats)*(sizeof(char *)), "config constructor: *ThermostatNames");166 mainname = Malloc<char>(MAXSTRINGSIZE,"config constructor: mainname"); 167 defaultpath = Malloc<char>(MAXSTRINGSIZE,"config constructor: defaultpath"); 168 pseudopotpath = Malloc<char>(MAXSTRINGSIZE,"config constructor: pseudopotpath"); 169 databasepath = Malloc<char>(MAXSTRINGSIZE,"config constructor: databasepath"); 170 configpath = Malloc<char>(MAXSTRINGSIZE,"config constructor: configpath"); 171 configname = Malloc<char>(MAXSTRINGSIZE,"config constructor: configname"); 172 ThermostatImplemented = Malloc<int>(MaxThermostats, "config constructor: *ThermostatImplemented"); 173 ThermostatNames = Malloc<char*>(MaxThermostats, "config constructor: *ThermostatNames"); 173 174 for (int j=0;j<MaxThermostats;j++) 174 ThermostatNames[j] = (char *) MallocString(12*(sizeof(char)), "config constructor: ThermostatNames[]");175 ThermostatNames[j] = Malloc<char>(12, "config constructor: ThermostatNames[]"); 175 176 Thermostat = 4; 176 177 alpha = 0.; … … 263 264 config::~config() 264 265 { 265 Free( (void **)&mainname, "config::~config: *mainname");266 Free( (void **)&defaultpath, "config::~config: *defaultpath");267 Free( (void **)&pseudopotpath, "config::~config: *pseudopotpath");268 Free( (void **)&databasepath, "config::~config: *databasepath");269 Free( (void **)&configpath, "config::~config: *configpath");270 Free( (void **)&configname, "config::~config: *configname");271 Free( (void **)&ThermostatImplemented, "config::~config: *ThermostatImplemented");266 Free(&mainname); 267 Free(&defaultpath); 268 Free(&pseudopotpath); 269 Free(&databasepath); 270 Free(&configpath); 271 Free(&configname); 272 Free(&ThermostatImplemented); 272 273 for (int j=0;j<MaxThermostats;j++) 273 Free( (void **)&ThermostatNames[j], "config::~config: *ThermostatNames[]");274 Free( (void **)&ThermostatNames, "config::~config: **ThermostatNames");274 Free(&ThermostatNames[j]); 275 Free(&ThermostatNames); 275 276 }; 276 277 … … 280 281 void config::InitThermostats(class ConfigFileBuffer *fb) 281 282 { 282 char *thermo = Malloc String(12, "IonsInitRead: thermo");283 char *thermo = Malloc<char>(12, "IonsInitRead: thermo"); 283 284 int verbose = 0; 284 285 … … 347 348 Thermostat = None; 348 349 } 349 Free( (void **)&thermo, "InitThermostats: thermo");350 Free(&thermo); 350 351 }; 351 352 … … 1533 1534 long file_position = file->tellg(); // mark current position 1534 1535 char *dummy1, *dummy, *free_dummy; // pointers in the line that is read in per step 1535 dummy1 = free_dummy = (char *) Malloc(256 * sizeof(char), "config::ParseForParameter: *free_dummy");1536 dummy1 = free_dummy = Malloc<char>(256, "config::ParseForParameter: *free_dummy"); 1536 1537 1537 1538 //fprintf(stderr,"Parsing for %s\n",name); … … 1548 1549 if (file->eof()) { 1549 1550 if ((critical) && (found == 0)) { 1550 Free( (void **)&free_dummy, "config::ParseForParameter: *free_dummy");1551 Free(&free_dummy); 1551 1552 //Error(InitReading, name); 1552 1553 fprintf(stderr,"Error:InitReading, critical %s not found\n", name); … … 1556 1557 file->clear(); 1557 1558 file->seekg(file_position, ios::beg); // rewind to start position 1558 Free( (void **)&free_dummy, "config::ParseForParameter: *free_dummy");1559 Free(&free_dummy); 1559 1560 return 0; 1560 1561 } … … 1608 1609 if (file->eof()) { 1609 1610 if ((critical) && (found == 0)) { 1610 Free( (void **)&free_dummy, "config::ParseForParameter: *free_dummy");1611 Free(&free_dummy); 1611 1612 //Error(InitReading, name); 1612 1613 fprintf(stderr,"Error:InitReading, critical %s not found\n", name); … … 1616 1617 file->clear(); 1617 1618 file->seekg(file_position, ios::beg); // rewind to start position 1618 Free( (void **)&free_dummy, "config::ParseForParameter: *free_dummy");1619 Free(&free_dummy); 1619 1620 return 0; 1620 1621 } … … 1657 1658 if (critical) { 1658 1659 if (verbose) fprintf(stderr,"Error: EoL at %i and still missing %i value(s) for parameter %s\n", line, yth-j, name); 1659 Free( (void **)&free_dummy, "config::ParseForParameter: *free_dummy");1660 Free(&free_dummy); 1660 1661 //return 0; 1661 1662 exit(255); … … 1665 1666 file->clear(); 1666 1667 file->seekg(file_position, ios::beg); // rewind to start position 1667 Free( (void **)&free_dummy, "config::ParseForParameter: *free_dummy");1668 Free(&free_dummy); 1668 1669 return 0; 1669 1670 } … … 1678 1679 file->seekg(file_position, ios::beg); // rewind to start position 1679 1680 } 1680 Free( (void **)&free_dummy, "config::ParseForParameter: *free_dummy");1681 Free(&free_dummy); 1681 1682 return 0; 1682 1683 } … … 1732 1733 } 1733 1734 } 1734 if ((type >= row_int) && (verbose)) fprintf(stderr,"\n"); 1735 Free((void **)&free_dummy, "config::ParseForParameter: *free_dummy"); 1735 if ((type >= row_int) && (verbose)) 1736 fprintf(stderr,"\n"); 1737 Free(&free_dummy); 1736 1738 if (!sequential) { 1737 1739 file->clear(); … … 1811 1813 dummy = strchr(dummy1, '\n'); // set on line end then (whole line = keyword) 1812 1814 //fprintf(stderr,"Error: Cannot find tabs or spaces on line %i in search for %s\n", line, name); 1813 //Free( (void **)&free_dummy);1815 //Free(&free_dummy); 1814 1816 //Error(FileOpenParams, NULL); 1815 1817 } else { -
src/defs.hpp
r89c8b2 r29812d 7 7 #ifndef DEFS_HPP_ 8 8 #define DEFS_HPP_ 9 10 using namespace std;11 9 12 10 #define MYEPSILON 1e-13 //!< machine epsilon precision -
src/helpers.cpp
r89c8b2 r29812d 34 34 void debug_in(const char *output, const char *file, const int line) {} // print nothing 35 35 #endif 36 37 /** Wrapper for allocating'ing a memory range with *output if it fails.38 * \param size number of chars to alloc for \a *buffer39 * \param *output message if malloc fails40 * \return pointer to memory range41 */42 void * Malloc(size_t size, const char* output)43 {44 void *buffer = NULL;45 buffer = (void *)malloc(size); // alloc46 if (buffer == NULL)47 cout << Verbose(0) << "Malloc failed - pointer is NULL: " << output << endl;48 return(buffer);49 };50 51 /** Wrapper for allocating'ing a memory range with *output if it fails.52 * \param size number of chars to alloc for \a *buffer53 * \param *output message if malloc fails54 * \return pointer to memory range55 */56 void * Calloc(size_t size, const char* output)57 {58 void *buffer = NULL;59 buffer = (void *)calloc(size, (size_t)0); // alloc60 if (buffer == NULL)61 cout << Verbose(0) << "Calloc failed - pointer is NULL: " << output << endl;62 return(buffer);63 };64 65 /** Wrapper for reallocating'ing a memory range with *output if it fails.66 * \param *OldPointer pointer to old memory range67 * \param size number of chars to alloc for \a *buffer68 * \param *output message if malloc fails69 * \return pointer to memory range70 */71 void * ReAlloc(void * OldPointer, size_t size, const char* output)72 {73 void *buffer = NULL;74 if (OldPointer == NULL)75 //cout << Verbose(0) << "ReAlloc impossible - old is NULL: " << output << endl;76 buffer = (void *)malloc(size); // malloc77 else78 buffer = (void *)realloc(OldPointer, size); // realloc79 if (buffer == NULL)80 cout << Verbose(0) << "ReAlloc failed - new is NULL: " << output << endl;81 return(buffer);82 };83 84 /** Wrapper for free'ing an allocated memory range with *output if it fails.85 * \param *buffer pointer to buffer to be free'd86 * \param *output message if free fails87 */88 void Free(void ** buffer, const char* output)89 {90 if (*buffer == NULL) {91 //cout << Verbose(5) << "Free not necesary: " << output << endl;92 } else {93 free(*buffer);94 *buffer = NULL;95 }96 };97 98 /** Malloc string array and set its length to the allocated length.99 * \param *output message if malloc fails100 * \param size number of chars to alloc for \a *buffer101 * \return pointer to string array102 */103 char* MallocString(size_t size, const char* output)104 {105 size_t i;106 char *buffer;107 buffer = (char *)malloc(sizeof(char) * (size+1)); // alloc108 if (buffer == NULL)109 cout << Verbose(0) << output << endl;110 for (i=size;i--;) // reset111 buffer[i] = i % 2 == 0 ? 'p': 'c';112 buffer[size] = '\0'; // and set length marker on its end113 return(buffer);114 }115 36 116 37 /** modulo operator for doubles. … … 170 91 } 171 92 // allocate string 172 returnstring = (char *) Malloc(sizeof(char)*(order+2), "FixedDigitNumber: *returnstring");93 returnstring = Malloc<char>(order + 2, "FixedDigitNumber: *returnstring"); 173 94 // terminate and fill string array from end backward 174 95 returnstring[order] = '\0'; … … 196 117 }; 197 118 119 /** 120 * Allocates a memory range using malloc(). 121 * Prints the provided error message in case of a failure. 122 * 123 * \param number of memory slices of type X to allocate 124 * \param failure message which is printed if the allocation fails 125 * \return pointer to the allocated memory range, will be NULL if a failure occurred 126 */ 127 template <> char* Malloc<char>(size_t size, const char* output) 128 { 129 char* buffer = NULL; 130 buffer = (char*) malloc(sizeof(char) * (size + 1)); 131 for (size_t i = size; i--;) 132 buffer[i] = (i % 2 == 0) ? 'p': 'c'; 133 buffer[size] = '\0'; 198 134 135 if (buffer == NULL) 136 cout << Verbose(0) << "Malloc for datatype " << typeid(char).name() 137 << " failed - pointer is NULL: " << output << endl; 138 139 return buffer; 140 }; 141 142 -
src/helpers.hpp
r89c8b2 r29812d 23 23 #include "defs.hpp" 24 24 #include "verbose.hpp" 25 #include "memoryallocator.hpp" 25 26 26 27 /********************************************** helpful functions *********************************/ … … 50 51 void flip(double *x, double *y); 51 52 int pot(int base, int n); 52 void * Malloc(size_t size, const char* output);53 void * Calloc(size_t size, const char* output);54 void * ReAlloc(void * OldPointer, size_t size, const char* output);55 char* MallocString(size_t size, const char* output);56 void Free(void ** buffer, const char* output);53 //void * Malloc(size_t size, const char* output); 54 //void * Calloc(size_t size, const char* output); 55 //void * ReAlloc(void * OldPointer, size_t size, const char* output); 56 //char* MallocString(size_t size, const char* output); 57 //void Free(void ** buffer, const char* output); 57 58 char *FixedDigitNumber(const int FragmentNumber, const int digits); 58 59 bool IsValidNumber( const char *string); … … 93 94 94 95 // allocat and fill 95 LookupTable = (T **) Malloc(sizeof(T *)*count, "CreateFatherLookupTable - **LookupTable");96 LookupTable = Malloc<T*>(count, "CreateFatherLookupTable - **LookupTable"); 96 97 if (LookupTable == NULL) { 97 98 cerr << "LookupTable memory allocation failed!" << endl; … … 273 274 274 275 276 275 277 #endif /*HELPERS_HPP_*/ -
src/joiner.cpp
r89c8b2 r29812d 10 10 #include "datacreator.hpp" 11 11 #include "helpers.hpp" 12 #include "memoryallocator.hpp" 12 13 #include "parser.hpp" 13 14 #include "periodentafel.hpp" … … 55 56 return 1; 56 57 } else { 57 dir = (char *) Malloc(sizeof(char)*(strlen(argv[2])+2), "main: *dir");58 dir = Malloc<char>(strlen(argv[2]) + 2, "main: *dir"); 58 59 strcpy(dir, "/"); 59 60 strcat(dir, argv[2]); … … 240 241 // exit 241 242 delete(periode); 242 Free( (void **)&dir, "main: *dir");243 Free(&dir); 243 244 cout << "done." << endl; 244 245 return 0; -
src/moleculelist.cpp
r89c8b2 r29812d 7 7 #include "config.hpp" 8 8 #include "molecules.hpp" 9 #include "memoryallocator.hpp" 9 10 10 11 /*********************************** Functions for class MoleculeListClass *************************/ … … 375 376 376 377 // 0b. allocate memory for constants 377 FitConstant = (double ***) Malloc(sizeof(double **) *3, "MoleculeListClass::AddHydrogenCorrection: ***FitConstant");378 FitConstant = Malloc<double**>(3, "MoleculeListClass::AddHydrogenCorrection: ***FitConstant"); 378 379 for (int k = 0; k < 3; k++) { 379 FitConstant[k] = (double **) Malloc(sizeof(double *) *a, "MoleculeListClass::AddHydrogenCorrection: **FitConstant[]");380 FitConstant[k] = Malloc<double*>(a, "MoleculeListClass::AddHydrogenCorrection: **FitConstant[]"); 380 381 for (int i = a; i--;) { 381 FitConstant[k][i] = (double *) Malloc(sizeof(double) *b, "MoleculeListClass::AddHydrogenCorrection: *FitConstant[][]");382 FitConstant[k][i] = Malloc<double>(b, "MoleculeListClass::AddHydrogenCorrection: *FitConstant[][]"); 382 383 } 383 384 } … … 424 425 425 426 // 0d. allocate final correction matrix 426 correction = (double **) Malloc(sizeof(double *) *a, "MoleculeListClass::AddHydrogenCorrection: **correction");427 correction = Malloc<double*>(a, "MoleculeListClass::AddHydrogenCorrection: **correction"); 427 428 for (int i = a; i--;) 428 correction[i] = (double *) Malloc(sizeof(double) *b, "MoleculeListClass::AddHydrogenCorrection: *correction[]");429 correction[i] = Malloc<double>(b, "MoleculeListClass::AddHydrogenCorrection: *correction[]"); 429 430 430 431 // 1a. go through every molecule in the list … … 500 501 output.close(); 501 502 // 6. free memory of parsed matrices 502 FitConstant = (double ***) Malloc(sizeof(double **) *a, "MoleculeListClass::AddHydrogenCorrection: ***FitConstant");503 FitConstant = Malloc<double**>(a, "MoleculeListClass::AddHydrogenCorrection: ***FitConstant"); 503 504 for (int k = 0; k < 3; k++) { 504 FitConstant[k] = (double **) Malloc(sizeof(double *) *a, "MoleculeListClass::AddHydrogenCorrection: **FitConstant[]");505 FitConstant[k] = Malloc<double*>(a, "MoleculeListClass::AddHydrogenCorrection: **FitConstant[]"); 505 506 for (int i = a; i--;) { 506 FitConstant[k][i] = (double *) Malloc(sizeof(double) *b, "MoleculeListClass::AddHydrogenCorrection: *FitConstant[][]");507 FitConstant[k][i] = Malloc<double>(b, "MoleculeListClass::AddHydrogenCorrection: *FitConstant[][]"); 507 508 } 508 509 } … … 665 666 //outputFragment.clear(); 666 667 delete (FragmentNumber); 667 //Free( (void **)&FragmentNumber, "MoleculeListClass::OutputConfigForListOfFragments: *FragmentNumber");668 //Free(&FragmentNumber); 668 669 } 669 670 cout << " done." << endl; … … 808 809 if ((FreeList) && (ListOfLocalAtoms != NULL)) { 809 810 // free the index lookup list 810 Free( (void **) &ListOfLocalAtoms[FragmentCounter], "MoleculeLeafClass::FillBondStructureFromReference - **ListOfLocalAtoms[]");811 Free(&ListOfLocalAtoms[FragmentCounter]); 811 812 if (FragmentCounter == 0) // first fragments frees the initial pointer to list 812 Free( (void **) &ListOfLocalAtoms, "MoleculeLeafClass::FillBondStructureFromReference - ***ListOfLocalAtoms");813 Free(&ListOfLocalAtoms); 813 814 } 814 815 FragmentCounter--; … … 873 874 if (ListOfLocalAtoms == NULL) { // allocated initial pointer 874 875 // allocate and set each field to NULL 875 ListOfLocalAtoms = (atom ***) Malloc(sizeof(atom **) *Counter, "MoleculeLeafClass::FillBondStructureFromReference - ***ListOfLocalAtoms");876 ListOfLocalAtoms = Malloc<atom**>(Counter, "MoleculeLeafClass::FillBondStructureFromReference - ***ListOfLocalAtoms"); 876 877 if (ListOfLocalAtoms != NULL) { 877 878 for (int i = Counter; i--;) … … 917 918 if (FragmentList == NULL) { 918 919 KeySetCounter = Count(); 919 FragmentList = (Graph **) Malloc(sizeof(Graph *) *KeySetCounter, "MoleculeLeafClass::AssignKeySetsToFragment - **FragmentList");920 FragmentList = Malloc<Graph*>(KeySetCounter, "MoleculeLeafClass::AssignKeySetsToFragment - **FragmentList"); 920 921 for (int i = KeySetCounter; i--;) 921 922 FragmentList[i] = NULL; … … 953 954 if ((FreeList) && (ListOfLocalAtoms != NULL)) { 954 955 // free the index lookup list 955 Free( (void **) &ListOfLocalAtoms[FragmentCounter], "MoleculeLeafClass::AssignKeySetsToFragment - **ListOfLocalAtoms[]");956 Free(&ListOfLocalAtoms[FragmentCounter]); 956 957 if (FragmentCounter == 0) // first fragments frees the initial pointer to list 957 Free( (void **) &ListOfLocalAtoms, "MoleculeLeafClass::AssignKeySetsToFragment - ***ListOfLocalAtoms");958 Free(&ListOfLocalAtoms); 958 959 } 959 960 *out << Verbose(1) << "End of AssignKeySetsToFragment." << endl; -
src/molecules.cpp
r89c8b2 r29812d 6 6 7 7 #include "config.hpp" 8 #include "memoryallocator.hpp" 8 9 #include "molecules.hpp" 9 10 … … 55 56 if (ListOfBondsPerAtom != NULL) 56 57 for(int i=AtomCount;i--;) 57 Free( (void **)&ListOfBondsPerAtom[i], "molecule::~molecule: ListOfBondsPerAtom[i]");58 Free( (void **)&ListOfBondsPerAtom, "molecule::~molecule: ListOfBondsPerAtom");59 Free( (void **)&NumberOfBondsPerAtom, "molecule::~molecule: NumberOfBondsPerAtom");58 Free(&ListOfBondsPerAtom[i]); 59 Free(&ListOfBondsPerAtom); 60 Free(&NumberOfBondsPerAtom); 60 61 if (TesselStruct != NULL) 61 62 delete(TesselStruct); … … 163 164 NoNonHydrogen++; 164 165 if (pointer->Name == NULL) { 165 Free( (void **)&pointer->Name, "molecule::AddAtom: *pointer->Name");166 pointer->Name = (char *) Malloc(sizeof(char)*6, "molecule::AddAtom: *pointer->Name");166 Free(&pointer->Name); 167 pointer->Name = Malloc<char>(6, "molecule::AddAtom: *pointer->Name"); 167 168 sprintf(pointer->Name, "%2s%02d", pointer->type->symbol, pointer->nr+1); 168 169 } … … 182 183 if (pointer != NULL) { 183 184 atom *walker = new atom(pointer); 184 walker->Name = (char *) Malloc(sizeof(char)*strlen(pointer->Name)+1, "atom::atom: *Name");185 walker->Name = Malloc<char>(strlen(pointer->Name) + 1, "atom::atom: *Name"); 185 186 strcpy (walker->Name, pointer->Name); 186 187 walker->nr = last_atom++; // increase number within molecule … … 267 268 Orthovector1.MatrixMultiplication(matrix); 268 269 InBondvector.SubtractVector(&Orthovector1); // subtract just the additional translation 269 Free( (void **)&matrix, "molecule::AddHydrogenReplacementAtom: *matrix");270 Free(&matrix); 270 271 bondlength = InBondvector.Norm(); 271 272 // *out << Verbose(4) << "Corrected InBondvector is now: "; … … 1080 1081 } 1081 1082 } while (!flag); 1082 Free( (void **)&matrix, "molecule::DetermineCenter: *matrix");1083 Free(&matrix); 1083 1084 Center.Scale(1./(double)AtomCount); 1084 1085 }; … … 1339 1340 { 1340 1341 stringstream zeile1, zeile2; 1341 int *DoubleList = (int *) Malloc(Nr*sizeof(int), "PrintPermutationMap: *DoubleList");1342 int *DoubleList = Malloc<int>(Nr, "PrintPermutationMap: *DoubleList"); 1342 1343 int doubles = 0; 1343 1344 for (int i=0;i<Nr;i++) … … 1354 1355 doubles++; 1355 1356 // *out << "Found " << doubles << " Doubles." << endl; 1356 Free( (void **)&DoubleList, "PrintPermutationMap: *DoubleList");1357 Free(&DoubleList); 1357 1358 // *out << zeile1.str() << endl << zeile2.str() << endl; 1358 1359 }; … … 1388 1389 { 1389 1390 double Potential, OldPotential, OlderPotential; 1390 PermutationMap = (atom **) Malloc(AtomCount*sizeof(atom *), "molecule::MinimiseConstrainedPotential: **PermutationMap");1391 DistanceMap **DistanceList = (DistanceMap **) Malloc(AtomCount*sizeof(DistanceMap *), "molecule::MinimiseConstrainedPotential: **DistanceList");1392 DistanceMap::iterator *DistanceIterators = (DistanceMap::iterator *) Malloc(AtomCount*sizeof(DistanceMap::iterator), "molecule::MinimiseConstrainedPotential: *DistanceIterators");1393 int *DoubleList = (int *) Malloc(AtomCount*sizeof(int), "molecule::MinimiseConstrainedPotential: *DoubleList");1394 DistanceMap::iterator *StepList = (DistanceMap::iterator *) Malloc(AtomCount*sizeof(DistanceMap::iterator), "molecule::MinimiseConstrainedPotential: *StepList");1391 PermutationMap = Malloc<atom*>(AtomCount, "molecule::MinimiseConstrainedPotential: **PermutationMap"); 1392 DistanceMap **DistanceList = Malloc<DistanceMap*>(AtomCount, "molecule::MinimiseConstrainedPotential: **DistanceList"); 1393 DistanceMap::iterator *DistanceIterators = Malloc<DistanceMap::iterator>(AtomCount, "molecule::MinimiseConstrainedPotential: *DistanceIterators"); 1394 int *DoubleList = Malloc<int>(AtomCount, "molecule::MinimiseConstrainedPotential: *DoubleList"); 1395 DistanceMap::iterator *StepList = Malloc<DistanceMap::iterator>(AtomCount, "molecule::MinimiseConstrainedPotential: *StepList"); 1395 1396 double constants[3]; 1396 1397 int round; … … 1468 1469 } 1469 1470 *out << Verbose(1) << "done." << endl; 1470 Free( (void **)&DoubleList, "molecule::MinimiseConstrainedPotential: *DoubleList");1471 Free(&DoubleList); 1471 1472 // argument minimise the constrained potential in this injective PermutationMap 1472 1473 *out << Verbose(1) << "Argument minimising the PermutationMap, at current potential " << OldPotential << " ... " << endl; … … 1549 1550 for (int i=AtomCount; i--;) 1550 1551 DistanceList[i]->clear(); 1551 Free( (void **)&DistanceList, "molecule::MinimiseConstrainedPotential: **DistanceList");1552 Free( (void **)&DistanceIterators, "molecule::MinimiseConstrainedPotential: *DistanceIterators");1552 Free(&DistanceList); 1553 Free(&DistanceIterators); 1553 1554 return ConstrainedPotential(out, PermutationMap, startstep, endstep, constants, IsAngstroem); 1554 1555 }; … … 1647 1648 1648 1649 // store the list to single step files 1649 int *SortIndex = (int *) Malloc(AtomCount*sizeof(int), "molecule::LinearInterpolationBetweenConfiguration: *SortIndex");1650 int *SortIndex = Malloc<int>(AtomCount, "molecule::LinearInterpolationBetweenConfiguration: *SortIndex"); 1650 1651 for (int i=AtomCount; i--; ) 1651 1652 SortIndex[i] = i; … … 1653 1654 1654 1655 // free and return 1655 Free( (void **)&PermutationMap, "molecule::MinimiseConstrainedPotential: *PermutationMap");1656 Free(&PermutationMap); 1656 1657 delete(MoleculePerStep); 1657 1658 return status; … … 1712 1713 ConstrainedPotentialEnergy = MinimiseConstrainedPotential(out, PermutationMap,configuration.DoConstrainedMD, 0, configuration.GetIsAngstroem()); 1713 1714 EvaluateConstrainedForces(out, configuration.DoConstrainedMD, 0, PermutationMap, &Force); 1714 Free( (void **)&PermutationMap, "molecule::MinimiseConstrainedPotential: *PermutationMap");1715 Free(&PermutationMap); 1715 1716 } 1716 1717 … … 2412 2413 if (Walker->type->Z != 1) // count non-hydrogen atoms whilst at it 2413 2414 NoNonHydrogen++; 2414 Free( (void **)&Walker->Name, "molecule::CountAtoms: *walker->Name");2415 Walker->Name = (char *) Malloc(sizeof(char)*6, "molecule::CountAtoms: *walker->Name");2415 Free(&Walker->Name); 2416 Walker->Name = Malloc<char>(6, "molecule::CountAtoms: *walker->Name"); 2416 2417 sprintf(Walker->Name, "%2s%02d", Walker->type->symbol, Walker->nr+1); 2417 2418 *out << "Naming atom nr. " << Walker->nr << " " << Walker->Name << "." << endl; … … 2624 2625 NumberCells = divisor[0]*divisor[1]*divisor[2]; 2625 2626 *out << Verbose(1) << "Allocating " << NumberCells << " cells." << endl; 2626 CellList = (molecule **) Malloc(sizeof(molecule *)*NumberCells, "molecule::CreateAdjacencyList - ** CellList");2627 CellList = Malloc<molecule*>(NumberCells, "molecule::CreateAdjacencyList - ** CellList"); 2627 2628 for (int i=NumberCells;i--;) 2628 2629 CellList[i] = NULL; … … 2706 2707 delete(CellList[i]); 2707 2708 } 2708 Free( (void **)&CellList, "molecule::CreateAdjacencyList - ** CellList");2709 Free(&CellList); 2709 2710 2710 2711 // create the adjacency list per atom … … 2771 2772 *out << Verbose(1) << "AtomCount is " << AtomCount << ", thus no bonds, no connections!." << endl; 2772 2773 *out << Verbose(0) << "End of CreateAdjacencyList." << endl; 2773 Free( (void **)&matrix, "molecule::CreateAdjacencyList: *matrix");2774 Free(&matrix); 2774 2775 2775 2776 }; … … 2981 2982 void molecule::CyclicStructureAnalysis(ofstream *out, class StackClass<bond *> * BackEdgeStack, int *&MinimumRingSize) 2982 2983 { 2983 atom **PredecessorList = (atom **) Malloc(sizeof(atom *)*AtomCount, "molecule::CyclicStructureAnalysis: **PredecessorList");2984 int *ShortestPathList = (int *) Malloc(sizeof(int)*AtomCount, "molecule::CyclicStructureAnalysis: *ShortestPathList");2985 enum Shading *ColorList = (enum Shading *) Malloc(sizeof(enum Shading)*AtomCount, "molecule::CyclicStructureAnalysis: *ColorList");2984 atom **PredecessorList = Malloc<atom*>(AtomCount, "molecule::CyclicStructureAnalysis: **PredecessorList"); 2985 int *ShortestPathList = Malloc<int>(AtomCount, "molecule::CyclicStructureAnalysis: *ShortestPathList"); 2986 enum Shading *ColorList = Malloc<enum Shading>(AtomCount, "molecule::CyclicStructureAnalysis: *ColorList"); 2986 2987 class StackClass<atom *> *BFSStack = new StackClass<atom *> (AtomCount); // will hold the current ring 2987 2988 class StackClass<atom *> *TouchedStack = new StackClass<atom *> (AtomCount); // contains all "touched" atoms (that need to be reset after BFS loop) … … 3174 3175 *out << Verbose(1) << "No rings were detected in the molecular structure." << endl; 3175 3176 3176 Free( (void **)&PredecessorList, "molecule::CyclicStructureAnalysis: **PredecessorList");3177 Free( (void **)&ShortestPathList, "molecule::CyclicStructureAnalysis: **ShortestPathList");3178 Free( (void **)&ColorList, "molecule::CyclicStructureAnalysis: **ColorList");3177 Free(&PredecessorList); 3178 Free(&ShortestPathList); 3179 Free(&ColorList); 3179 3180 delete(BFSStack); 3180 3181 }; … … 3220 3221 Walker = Walker->next; 3221 3222 if (Walker->ComponentNr != NULL) 3222 Free( (void **)&Walker->ComponentNr, "molecule::InitComponentNumbers: **Walker->ComponentNr");3223 Walker->ComponentNr = (int *) Malloc(sizeof(int)*NumberOfBondsPerAtom[Walker->nr], "molecule::InitComponentNumbers: *Walker->ComponentNr");3223 Free(&Walker->ComponentNr); 3224 Walker->ComponentNr = Malloc<int>(NumberOfBondsPerAtom[Walker->nr], "molecule::InitComponentNumbers: *Walker->ComponentNr"); 3224 3225 for (int i=NumberOfBondsPerAtom[Walker->nr];i--;) 3225 3226 Walker->ComponentNr[i] = -1; … … 3344 3345 int NumberOfFragments = 0; 3345 3346 double TEFactor; 3346 char *filename = (char *) Malloc(sizeof(char)*MAXSTRINGSIZE, "molecule::ParseKeySetFile - filename");3347 char *filename = Malloc<char>(MAXSTRINGSIZE, "molecule::ParseKeySetFile - filename"); 3347 3348 3348 3349 if (FragmentList == NULL) { // check list pointer … … 3356 3357 if (InputFile != NULL) { 3357 3358 // each line represents a new fragment 3358 char *buffer = (char *) Malloc(sizeof(char)*MAXSTRINGSIZE, "molecule::ParseKeySetFile - *buffer");3359 char *buffer = Malloc<char>(MAXSTRINGSIZE, "molecule::ParseKeySetFile - *buffer"); 3359 3360 // 1. parse keysets and insert into temp. graph 3360 3361 while (!InputFile.eof()) { … … 3371 3372 InputFile.close(); 3372 3373 InputFile.clear(); 3373 Free( (void **)&buffer, "molecule::ParseKeySetFile - *buffer");3374 Free(&buffer); 3374 3375 *out << Verbose(1) << "done." << endl; 3375 3376 } else { … … 3404 3405 3405 3406 // free memory 3406 Free( (void **)&filename, "molecule::ParseKeySetFile - filename");3407 Free(&filename); 3407 3408 3408 3409 return status; … … 3511 3512 stringstream filename; 3512 3513 bool status = true; 3513 char *buffer = (char *) Malloc(sizeof(char)*MAXSTRINGSIZE, "molecule::CheckAdjacencyFileAgainstMolecule: *buffer");3514 char *buffer = Malloc<char>(MAXSTRINGSIZE, "molecule::CheckAdjacencyFileAgainstMolecule: *buffer"); 3514 3515 3515 3516 filename << path << "/" << FRAGMENTPREFIX << ADJACENCYFILE; … … 3519 3520 // allocate storage structure 3520 3521 int NonMatchNumber = 0; // will number of atoms with differing bond structure 3521 int *CurrentBonds = (int *) Malloc(sizeof(int)*8, "molecule::CheckAdjacencyFileAgainstMolecule - CurrentBonds"); // contains parsed bonds of current atom3522 int *CurrentBonds = Malloc<int>(8, "molecule::CheckAdjacencyFileAgainstMolecule - CurrentBonds"); // contains parsed bonds of current atom 3522 3523 int CurrentBondsOfAtom; 3523 3524 … … 3564 3565 } else 3565 3566 *out << Verbose(1) << "done: Not equal by " << NonMatchNumber << " atoms." << endl; 3566 Free( (void **)&CurrentBonds, "molecule::CheckAdjacencyFileAgainstMolecule - **CurrentBonds");3567 Free(&CurrentBonds); 3567 3568 } else { 3568 3569 *out << Verbose(1) << "Adjacency file not found." << endl; … … 3570 3571 } 3571 3572 *out << endl; 3572 Free( (void **)&buffer, "molecule::CheckAdjacencyFileAgainstMolecule: *buffer");3573 Free(&buffer); 3573 3574 3574 3575 return status; … … 3598 3599 return false; 3599 3600 // parse the EnergyPerFragment file 3600 char *buffer = (char *) Malloc(sizeof(char)*MAXSTRINGSIZE, "molecule::CheckOrderAtSite: *buffer");3601 char *buffer = Malloc<char>(MAXSTRINGSIZE, "molecule::CheckOrderAtSite: *buffer"); 3601 3602 sprintf(buffer, "%s/%s%s.dat", path, FRAGMENTPREFIX, ENERGYPERFRAGMENT); 3602 3603 InputFile.open(buffer, ios::in); … … 3705 3706 } 3706 3707 } 3707 Free( (void **)&buffer, "molecule::CheckOrderAtSite: *buffer");3708 Free(&buffer); 3708 3709 // pick a given number of highest values and set AtomMask 3709 3710 } else { // global increase of Bond Order … … 3757 3758 return false; 3758 3759 } 3759 SortIndex = (int *) Malloc(sizeof(int)*AtomCount, "molecule::FragmentMolecule: *SortIndex");3760 SortIndex = Malloc<int>(AtomCount, "molecule::FragmentMolecule: *SortIndex"); 3760 3761 for(int i=AtomCount;i--;) 3761 3762 SortIndex[i] = -1; … … 3831 3832 // === compare it with adjacency file === 3832 3833 FragmentationToDo = FragmentationToDo && CheckAdjacencyFileAgainstMolecule(out, configuration->configpath, ListOfAtoms); 3833 Free( (void **)&ListOfAtoms, "molecule::FragmentMolecule - **ListOfAtoms");3834 Free(&ListOfAtoms); 3834 3835 3835 3836 // ===== 2. perform a DFS analysis to gather info on cyclic structure and a list of disconnected subgraphs ===== … … 3920 3921 delete(Subgraphs); 3921 3922 } 3922 Free( (void **)&FragmentList, "molecule::FragmentMolecule - **FragmentList");3923 Free(&FragmentList); 3923 3924 3924 3925 // ===== 8b. gather keyset lists (graphs) from all subgraphs and transform into MoleculeListClass ===== … … 3967 3968 *out << Verbose(1) << "Freeing bond memory" << endl; 3968 3969 delete(FragmentList); // remove bond molecule from memory 3969 Free( (void **)&SortIndex, "molecule::FragmentMolecule: *SortIndex");3970 Free(&SortIndex); 3970 3971 } else 3971 3972 *out << Verbose(1) << "FragmentList is zero on return, splitting failed." << endl; … … 4055 4056 bool molecule::ParseOrderAtSiteFromFile(ofstream *out, char *path) 4056 4057 { 4057 unsigned char *OrderArray = (unsigned char *) Malloc(sizeof(unsigned char)*AtomCount, "molecule::ParseOrderAtSiteFromFile - *OrderArray");4058 bool *MaxArray = (bool *) Malloc(sizeof(bool)*AtomCount, "molecule::ParseOrderAtSiteFromFile - *MaxArray");4058 unsigned char *OrderArray = Malloc<unsigned char>(AtomCount, "molecule::ParseOrderAtSiteFromFile - *OrderArray"); 4059 bool *MaxArray = Malloc<bool>(AtomCount, "molecule::ParseOrderAtSiteFromFile - *MaxArray"); 4059 4060 bool status; 4060 4061 int AtomNr, value; … … 4097 4098 status = false; 4098 4099 } 4099 Free( (void **)&OrderArray, "molecule::ParseOrderAtSiteFromFile - *OrderArray");4100 Free( (void **)&MaxArray, "molecule::ParseOrderAtSiteFromFile - *MaxArray");4100 Free(&OrderArray); 4101 Free(&MaxArray); 4101 4102 4102 4103 *out << Verbose(1) << "End of ParseOrderAtSiteFromFile" << endl; … … 4121 4122 if (ListOfBondsPerAtom != NULL) { 4122 4123 for(int i=AtomCount;i--;) 4123 Free( (void **)&ListOfBondsPerAtom[i], "molecule::CreateListOfBondsPerAtom: ListOfBondsPerAtom[i]");4124 Free( (void **)&ListOfBondsPerAtom, "molecule::CreateListOfBondsPerAtom: ListOfBondsPerAtom");4124 Free(&ListOfBondsPerAtom[i]); 4125 Free(&ListOfBondsPerAtom); 4125 4126 } 4126 4127 if (NumberOfBondsPerAtom != NULL) 4127 Free( (void **)&NumberOfBondsPerAtom, "molecule::CreateListOfBondsPerAtom: NumberOfBondsPerAtom");4128 ListOfBondsPerAtom = (bond ***) Malloc(sizeof(bond **)*AtomCount, "molecule::CreateListOfBondsPerAtom: ***ListOfBondsPerAtom");4129 NumberOfBondsPerAtom = (int *) Malloc(sizeof(int)*AtomCount, "molecule::CreateListOfBondsPerAtom: *NumberOfBondsPerAtom");4128 Free(&NumberOfBondsPerAtom); 4129 ListOfBondsPerAtom = Malloc<bond**>(AtomCount, "molecule::CreateListOfBondsPerAtom: ***ListOfBondsPerAtom"); 4130 NumberOfBondsPerAtom = Malloc<int>(AtomCount, "molecule::CreateListOfBondsPerAtom: *NumberOfBondsPerAtom"); 4130 4131 4131 4132 // reset bond counts per atom … … 4141 4142 for(int i=AtomCount;i--;) { 4142 4143 // allocate list of bonds per atom 4143 ListOfBondsPerAtom[i] = (bond **) Malloc(sizeof(bond *)*NumberOfBondsPerAtom[i], "molecule::CreateListOfBondsPerAtom: **ListOfBondsPerAtom[]");4144 ListOfBondsPerAtom[i] = Malloc<bond*>(NumberOfBondsPerAtom[i], "molecule::CreateListOfBondsPerAtom: **ListOfBondsPerAtom[]"); 4144 4145 // clear the list again, now each NumberOfBondsPerAtom marks current free field 4145 4146 NumberOfBondsPerAtom[i] = 0; … … 4183 4184 void molecule::BreadthFirstSearchAdd(ofstream *out, molecule *Mol, atom **&AddedAtomList, bond **&AddedBondList, atom *Root, bond *Bond, int BondOrder, bool IsAngstroem) 4184 4185 { 4185 atom **PredecessorList = (atom **) Malloc(sizeof(atom *)*AtomCount, "molecule::BreadthFirstSearchAdd: **PredecessorList");4186 int *ShortestPathList = (int *) Malloc(sizeof(int)*AtomCount, "molecule::BreadthFirstSearchAdd: *ShortestPathList");4187 enum Shading *ColorList = (enum Shading *) Malloc(sizeof(enum Shading)*AtomCount, "molecule::BreadthFirstSearchAdd: *ColorList");4186 atom **PredecessorList = Malloc<atom*>(AtomCount, "molecule::BreadthFirstSearchAdd: **PredecessorList"); 4187 int *ShortestPathList = Malloc<int>(AtomCount, "molecule::BreadthFirstSearchAdd: *ShortestPathList"); 4188 enum Shading *ColorList = Malloc<enum Shading>(AtomCount, "molecule::BreadthFirstSearchAdd: *ColorList"); 4188 4189 class StackClass<atom *> *AtomStack = new StackClass<atom *>(AtomCount); 4189 4190 atom *Walker = NULL, *OtherAtom = NULL; … … 4290 4291 *out << Verbose(1) << "Coloring Walker " << Walker->Name << " black." << endl; 4291 4292 } 4292 Free( (void **)&PredecessorList, "molecule::BreadthFirstSearchAdd: **PredecessorList");4293 Free( (void **)&ShortestPathList, "molecule::BreadthFirstSearchAdd: **ShortestPathList");4294 Free( (void **)&ColorList, "molecule::BreadthFirstSearchAdd: **ColorList");4293 Free(&PredecessorList); 4294 Free(&ShortestPathList); 4295 Free(&ColorList); 4295 4296 delete(AtomStack); 4296 4297 }; … … 4309 4310 atom *Walker = NULL, *OtherAtom = NULL; 4310 4311 bool status = true; 4311 atom **ParentList = (atom **) Malloc(sizeof(atom *)*Father->AtomCount, "molecule::BuildInducedSubgraph: **ParentList");4312 atom **ParentList = Malloc<atom*>(Father->AtomCount, "molecule::BuildInducedSubgraph: **ParentList"); 4312 4313 4313 4314 *out << Verbose(2) << "Begin of BuildInducedSubgraph." << endl; … … 4348 4349 } 4349 4350 4350 Free( (void **)&ParentList, "molecule::BuildInducedSubgraph: **ParentList");4351 Free(&ParentList); 4351 4352 *out << Verbose(2) << "End of BuildInducedSubgraph." << endl; 4352 4353 return status; … … 4391 4392 { 4392 4393 atom *Runner = NULL, *FatherOfRunner = NULL, *OtherFather = NULL; 4393 atom **SonList = (atom **) Malloc(sizeof(atom *)*AtomCount, "molecule::StoreFragmentFromStack: **SonList");4394 atom **SonList = Malloc<atom*>(AtomCount, "molecule::StoreFragmentFromStack: **SonList"); 4394 4395 molecule *Leaf = new molecule(elemente); 4395 4396 bool LonelyFlag = false; … … 4461 4462 Leaf->CreateListOfBondsPerAtom(out); 4462 4463 //Leaflet->Leaf->ScanForPeriodicCorrection(out); 4463 Free( (void **)&SonList, "molecule::StoreFragmentFromStack: **SonList");4464 Free(&SonList); 4464 4465 // *out << Verbose(1) << "End of StoreFragmentFromKeyset." << endl; 4465 4466 return Leaf; … … 4482 4483 MoleculeListClass * molecule::CreateListOfUniqueFragmentsOfOrder(ofstream *out, int Order, config *configuration) 4483 4484 { 4484 atom **PredecessorList = (atom **) Malloc(sizeof(atom *)*AtomCount, "molecule::CreateListOfUniqueFragmentsOfOrder: **PredecessorList");4485 int *ShortestPathList = (int *) Malloc(sizeof(int)*AtomCount, "molecule::CreateListOfUniqueFragmentsOfOrder: *ShortestPathList");4486 int *Labels = (int *) Malloc(sizeof(int)*AtomCount, "molecule::CreateListOfUniqueFragmentsOfOrder: *Labels");4487 enum Shading *ColorVertexList = (enum Shading *) Malloc(sizeof(enum Shading)*AtomCount, "molecule::CreateListOfUniqueFragmentsOfOrder: *ColorList");4488 enum Shading *ColorEdgeList = (enum Shading *) Malloc(sizeof(enum Shading)*BondCount, "molecule::CreateListOfUniqueFragmentsOfOrder: *ColorBondList");4485 atom **PredecessorList = Malloc<atom*>(AtomCount, "molecule::CreateListOfUniqueFragmentsOfOrder: **PredecessorList"); 4486 int *ShortestPathList = Malloc<int>(AtomCount, "molecule::CreateListOfUniqueFragmentsOfOrder: *ShortestPathList"); 4487 int *Labels = Malloc<int>(AtomCount, "molecule::CreateListOfUniqueFragmentsOfOrder: *Labels"); 4488 enum Shading *ColorVertexList = Malloc<enum Shading>(AtomCount, "molecule::CreateListOfUniqueFragmentsOfOrder: *ColorList"); 4489 enum Shading *ColorEdgeList = Malloc<enum Shading>(BondCount, "molecule::CreateListOfUniqueFragmentsOfOrder: *ColorBondList"); 4489 4490 StackClass<atom *> *RootStack = new StackClass<atom *>(AtomCount); 4490 4491 StackClass<atom *> *TouchedStack = new StackClass<atom *>((int)pow(4,Order)+2); // number of atoms reached from one with maximal 4 bonds plus Root itself … … 4616 4617 4617 4618 // free memory and exit 4618 Free( (void **)&PredecessorList, "molecule::CreateListOfUniqueFragmentsOfOrder: **PredecessorList");4619 Free( (void **)&ShortestPathList, "molecule::CreateListOfUniqueFragmentsOfOrder: *ShortestPathList");4620 Free( (void **)&Labels, "molecule::CreateListOfUniqueFragmentsOfOrder: *Labels");4621 Free( (void **)&ColorVertexList, "molecule::CreateListOfUniqueFragmentsOfOrder: *ColorList");4619 Free(&PredecessorList); 4620 Free(&ShortestPathList); 4621 Free(&Labels); 4622 Free(&ColorVertexList); 4622 4623 delete(RootStack); 4623 4624 delete(TouchedStack); … … 4669 4670 int Removal; 4670 4671 int SpaceLeft; 4671 int *TouchedList = (int *) Malloc(sizeof(int)*(SubOrder+1), "molecule::SPFragmentGenerator: *TouchedList");4672 int *TouchedList = Malloc<int>(SubOrder + 1, "molecule::SPFragmentGenerator: *TouchedList"); 4672 4673 bond *Binder = NULL; 4673 4674 bond **BondsList = NULL; … … 4677 4678 4678 4679 // Hier muessen von 1 bis NumberOfBondsPerAtom[Walker->nr] alle Kombinationen 4679 // von Endstuecken (aus den Bonds) hinzugef ᅵᅵgt werden und fᅵᅵr verbleibende ANOVAOrder4680 // rekursiv GraphCrawler in der n ᅵᅵchsten Ebene aufgerufen werden4680 // von Endstuecken (aus den Bonds) hinzugefuegt werden und fuer verbleibende ANOVAOrder 4681 // rekursiv GraphCrawler in der naechsten Ebene aufgerufen werden 4681 4682 4682 4683 *out << Verbose(1+verbosity) << "Begin of SPFragmentGenerator." << endl; … … 4738 4739 } 4739 4740 // then allocate and fill the list 4740 BondsList = (bond **) Malloc(sizeof(bond *)*SubSetDimension, "molecule::SPFragmentGenerator: **BondsList");4741 BondsList = Malloc<bond*>(SubSetDimension, "molecule::SPFragmentGenerator: **BondsList"); 4741 4742 SubSetDimension = 0; 4742 4743 Binder = FragmentSearch->BondsPerSPList[2*SP]; … … 4750 4751 *out << Verbose(2+verbosity) << "Calling subset generator " << SP << " away from root " << *FragmentSearch->Root << " with sub set dimension " << SubSetDimension << "." << endl; 4751 4752 SPFragmentGenerator(out, FragmentSearch, SP, BondsList, SubSetDimension, SubOrder-bits); 4752 Free( (void **)&BondsList, "molecule::SPFragmentGenerator: **BondsList");4753 Free(&BondsList); 4753 4754 } 4754 4755 } else { … … 4784 4785 } 4785 4786 } 4786 Free( (void **)&TouchedList, "molecule::SPFragmentGenerator: *TouchedList");4787 Free(&TouchedList); 4787 4788 *out << Verbose(1+verbosity) << "End of SPFragmentGenerator, " << RootDistance << " away from Root " << *FragmentSearch->Root << " and SubOrder is " << SubOrder << "." << endl; 4788 4789 }; … … 4962 4963 *out << Verbose(0) << "Preparing subset for this root and calling generator." << endl; 4963 4964 // prepare the subset and call the generator 4964 BondsList = (bond **) Malloc(sizeof(bond *)*FragmentSearch.BondsPerSPCount[0], "molecule::PowerSetGenerator: **BondsList");4965 BondsList = Malloc<bond*>(FragmentSearch.BondsPerSPCount[0], "molecule::PowerSetGenerator: **BondsList"); 4965 4966 BondsList[0] = FragmentSearch.BondsPerSPList[0]->next; // on SP level 0 there's only the root bond 4966 4967 4967 4968 SPFragmentGenerator(out, &FragmentSearch, 0, BondsList, FragmentSearch.BondsPerSPCount[0], Order); 4968 4969 4969 Free( (void **)&BondsList, "molecule::PowerSetGenerator: **BondsList");4970 Free(&BondsList); 4970 4971 } else { 4971 4972 *out << Verbose(0) << "Not enough total number of edges to build " << Order << "-body fragments." << endl; … … 5021 5022 *out << Verbose(2) << "Begin of ScanForPeriodicCorrection." << endl; 5022 5023 5023 ColorList = (enum Shading *) Malloc(sizeof(enum Shading)*AtomCount, "molecule::ScanForPeriodicCorrection: *ColorList");5024 ColorList = Malloc<enum Shading>(AtomCount, "molecule::ScanForPeriodicCorrection: *ColorList"); 5024 5025 while (flag) { 5025 5026 // remove bonds that are beyond bonddistance … … 5082 5083 // free allocated space from ReturnFullMatrixforSymmetric() 5083 5084 delete(AtomStack); 5084 Free( (void **)&ColorList, "molecule::ScanForPeriodicCorrection: *ColorList");5085 Free( (void **)&matrix, "molecule::ScanForPeriodicCorrection: *matrix");5085 Free(&ColorList); 5086 Free(&matrix); 5086 5087 *out << Verbose(2) << "End of ScanForPeriodicCorrection." << endl; 5087 5088 }; … … 5093 5094 double * molecule::ReturnFullMatrixforSymmetric(double *symm) 5094 5095 { 5095 double *matrix = (double *) Malloc(sizeof(double)*NDIM*NDIM, "molecule::ReturnFullMatrixforSymmetric: *matrix");5096 double *matrix = Malloc<double>(NDIM * NDIM, "molecule::ReturnFullMatrixforSymmetric: *matrix"); 5096 5097 matrix[0] = symm[0]; 5097 5098 matrix[1] = symm[1]; … … 5220 5221 // FragmentLowerOrdersList is a 2D-array of pointer to MoleculeListClass objects, one dimension represents the ANOVA expansion of a single order (i.e. 5) 5221 5222 // with all needed lower orders that are subtracted, the other dimension is the BondOrder (i.e. from 1 to 5) 5222 NumMoleculesOfOrder = (int *) Malloc(sizeof(int)*UpgradeCount, "molecule::FragmentBOSSANOVA: *NumMoleculesOfOrder");5223 FragmentLowerOrdersList = (Graph ***) Malloc(sizeof(Graph **)*UpgradeCount, "molecule::FragmentBOSSANOVA: ***FragmentLowerOrdersList");5223 NumMoleculesOfOrder = Malloc<int>(UpgradeCount, "molecule::FragmentBOSSANOVA: *NumMoleculesOfOrder"); 5224 FragmentLowerOrdersList = Malloc<Graph**>(UpgradeCount, "molecule::FragmentBOSSANOVA: ***FragmentLowerOrdersList"); 5224 5225 5225 5226 // initialise the fragments structure 5226 FragmentSearch.ShortestPathList = (int *) Malloc(sizeof(int)*AtomCount, "molecule::PowerSetGenerator: *ShortestPathList");5227 FragmentSearch.ShortestPathList = Malloc<int>(AtomCount, "molecule::PowerSetGenerator: *ShortestPathList"); 5227 5228 FragmentSearch.FragmentCounter = 0; 5228 5229 FragmentSearch.FragmentSet = new KeySet; … … 5259 5260 5260 5261 // initialise Order-dependent entries of UniqueFragments structure 5261 FragmentSearch.BondsPerSPList = (bond **) Malloc(sizeof(bond *)*Order*2, "molecule::PowerSetGenerator: ***BondsPerSPList");5262 FragmentSearch.BondsPerSPCount = (int *) Malloc(sizeof(int)*Order, "molecule::PowerSetGenerator: *BondsPerSPCount");5262 FragmentSearch.BondsPerSPList = Malloc<bond*>(Order * 2, "molecule::PowerSetGenerator: ***BondsPerSPList"); 5263 FragmentSearch.BondsPerSPCount = Malloc<int>(Order, "molecule::PowerSetGenerator: *BondsPerSPCount"); 5263 5264 for (int i=Order;i--;) { 5264 5265 FragmentSearch.BondsPerSPList[2*i] = new bond(); // start node … … 5271 5272 // allocate memory for all lower level orders in this 1D-array of ptrs 5272 5273 NumLevels = 1 << (Order-1); // (int)pow(2,Order); 5273 FragmentLowerOrdersList[RootNr] = (Graph **) Malloc(sizeof(Graph *)*NumLevels, "molecule::FragmentBOSSANOVA: **FragmentLowerOrdersList[]");5274 FragmentLowerOrdersList[RootNr] = Malloc<Graph*>(NumLevels, "molecule::FragmentBOSSANOVA: **FragmentLowerOrdersList[]"); 5274 5275 for (int i=0;i<NumLevels;i++) 5275 5276 FragmentLowerOrdersList[RootNr][i] = NULL; … … 5338 5339 5339 5340 // free Order-dependent entries of UniqueFragments structure for next loop cycle 5340 Free( (void **)&FragmentSearch.BondsPerSPCount, "molecule::PowerSetGenerator: *BondsPerSPCount");5341 Free(&FragmentSearch.BondsPerSPCount); 5341 5342 for (int i=Order;i--;) { 5342 5343 delete(FragmentSearch.BondsPerSPList[2*i]); 5343 5344 delete(FragmentSearch.BondsPerSPList[2*i+1]); 5344 5345 } 5345 Free( (void **)&FragmentSearch.BondsPerSPList, "molecule::PowerSetGenerator: ***BondsPerSPList");5346 Free(&FragmentSearch.BondsPerSPList); 5346 5347 } 5347 5348 } … … 5351 5352 5352 5353 // cleanup FragmentSearch structure 5353 Free( (void **)&FragmentSearch.ShortestPathList, "molecule::PowerSetGenerator: *ShortestPathList");5354 Free(&FragmentSearch.ShortestPathList); 5354 5355 delete(FragmentSearch.FragmentSet); 5355 5356 … … 5382 5383 } 5383 5384 } 5384 Free( (void **)&FragmentLowerOrdersList[RootNr], "molecule::FragmentBOSSANOVA: **FragmentLowerOrdersList[]");5385 Free(&FragmentLowerOrdersList[RootNr]); 5385 5386 RootNr++; 5386 5387 } 5387 Free( (void **)&FragmentLowerOrdersList, "molecule::FragmentBOSSANOVA: ***FragmentLowerOrdersList");5388 Free( (void **)&NumMoleculesOfOrder, "molecule::FragmentBOSSANOVA: *NumMoleculesOfOrder");5388 Free(&FragmentLowerOrdersList); 5389 Free(&NumMoleculesOfOrder); 5389 5390 5390 5391 *out << Verbose(0) << "End of FragmentBOSSANOVA." << endl; … … 5476 5477 if (result) { 5477 5478 *out << Verbose(5) << "Calculating distances" << endl; 5478 Distances = (double *) Malloc(sizeof(double)*AtomCount, "molecule::IsEqualToWithinThreshold: Distances");5479 OtherDistances = (double *) Malloc(sizeof(double)*AtomCount, "molecule::IsEqualToWithinThreshold: OtherDistances");5479 Distances = Malloc<double>(AtomCount, "molecule::IsEqualToWithinThreshold: Distances"); 5480 OtherDistances = Malloc<double>(AtomCount, "molecule::IsEqualToWithinThreshold: OtherDistances"); 5480 5481 Walker = start; 5481 5482 while (Walker->next != end) { … … 5491 5492 /// ... sort each list (using heapsort (o(N log N)) from GSL) 5492 5493 *out << Verbose(5) << "Sorting distances" << endl; 5493 PermMap = (size_t *) Malloc(sizeof(size_t)*AtomCount, "molecule::IsEqualToWithinThreshold: *PermMap");5494 OtherPermMap = (size_t *) Malloc(sizeof(size_t)*AtomCount, "molecule::IsEqualToWithinThreshold: *OtherPermMap");5494 PermMap = Malloc<size_t>(AtomCount, "molecule::IsEqualToWithinThreshold: *PermMap"); 5495 OtherPermMap = Malloc<size_t>(AtomCount, "molecule::IsEqualToWithinThreshold: *OtherPermMap"); 5495 5496 gsl_heapsort_index (PermMap, Distances, AtomCount, sizeof(double), CompareDoubles); 5496 5497 gsl_heapsort_index (OtherPermMap, OtherDistances, AtomCount, sizeof(double), CompareDoubles); 5497 PermutationMap = (int *) Malloc(sizeof(int)*AtomCount, "molecule::IsEqualToWithinThreshold: *PermutationMap");5498 PermutationMap = Malloc<int>(AtomCount, "molecule::IsEqualToWithinThreshold: *PermutationMap"); 5498 5499 *out << Verbose(5) << "Combining Permutation Maps" << endl; 5499 5500 for(int i=AtomCount;i--;) 5500 5501 PermutationMap[PermMap[i]] = (int) OtherPermMap[i]; 5501 5502 5502 /// ... and compare them step by step, whether the difference is individ iually(!) below \a threshold for all5503 /// ... and compare them step by step, whether the difference is individually(!) below \a threshold for all 5503 5504 *out << Verbose(4) << "Comparing distances" << endl; 5504 5505 flag = 0; … … 5508 5509 flag = 1; 5509 5510 } 5510 Free((void **)&PermMap, "molecule::IsEqualToWithinThreshold: *PermMap"); 5511 Free((void **)&OtherPermMap, "molecule::IsEqualToWithinThreshold: *OtherPermMap");5512 5513 /// free memory5514 Free( (void **)&Distances, "molecule::IsEqualToWithinThreshold: Distances");5515 Free( (void **)&OtherDistances, "molecule::IsEqualToWithinThreshold: OtherDistances");5511 5512 // free memory 5513 Free(&PermMap); 5514 Free(&OtherPermMap); 5515 Free(&Distances); 5516 Free(&OtherDistances); 5516 5517 if (flag) { // if not equal 5517 Free( (void **)&PermutationMap, "molecule::IsEqualToWithinThreshold: *PermutationMap");5518 Free(&PermutationMap); 5518 5519 result = false; 5519 5520 } … … 5541 5542 atom *Walker = NULL, *OtherWalker = NULL; 5542 5543 *out << Verbose(3) << "Begin of GetFatherAtomicMap." << endl; 5543 int *AtomicMap = (int *) Malloc(sizeof(int)*AtomCount, "molecule::GetAtomicMap: *AtomicMap"); //Calloc5544 int *AtomicMap = Malloc<int>(AtomCount, "molecule::GetAtomicMap: *AtomicMap"); 5544 5545 for (int i=AtomCount;i--;) 5545 5546 AtomicMap[i] = -1; -
src/parser.cpp
r89c8b2 r29812d 8 8 9 9 #include "helpers.hpp" 10 #include "memoryallocator.hpp" 10 11 #include "parser.hpp" 11 12 … … 56 57 MatrixContainer::MatrixContainer() { 57 58 Indices = NULL; 58 Header = (char **) Malloc(sizeof(char)*1, "MatrixContainer::MatrixContainer: **Header");59 Matrix = (double ***) Malloc(sizeof(double **)*(1), "MatrixContainer::MatrixContainer: ***Matrix"); // one more each for the total molecule60 RowCounter = (int *) Malloc(sizeof(int)*(1), "MatrixContainer::MatrixContainer: *RowCounter");61 ColumnCounter = (int *) Malloc(sizeof(int)*(1), "MatrixContainer::MatrixContainer: *ColumnCounter");59 Header = Malloc<char*>(1, "MatrixContainer::MatrixContainer: **Header"); 60 Matrix = Malloc<double**>(1, "MatrixContainer::MatrixContainer: ***Matrix"); // one more each for the total molecule 61 RowCounter = Malloc<int>(1, "MatrixContainer::MatrixContainer: *RowCounter"); 62 ColumnCounter = Malloc<int>(1, "MatrixContainer::MatrixContainer: *ColumnCounter"); 62 63 Header[0] = NULL; 63 64 Matrix[0] = NULL; … … 74 75 if ((ColumnCounter != NULL) && (RowCounter != NULL)) { 75 76 for(int j=RowCounter[i]+1;j--;) 76 Free( (void **)&Matrix[i][j], "MatrixContainer::~MatrixContainer: *Matrix[][]");77 Free( (void **)&Matrix[i], "MatrixContainer::~MatrixContainer: **Matrix[]");77 Free(&Matrix[i][j]); 78 Free(&Matrix[i]); 78 79 } 79 80 } 80 81 if ((ColumnCounter != NULL) && (RowCounter != NULL) && (Matrix[MatrixCounter] != NULL)) 81 82 for(int j=RowCounter[MatrixCounter]+1;j--;) 82 Free( (void **)&Matrix[MatrixCounter][j], "MatrixContainer::~MatrixContainer: *Matrix[MatrixCounter][]");83 Free(&Matrix[MatrixCounter][j]); 83 84 if (MatrixCounter != 0) 84 Free( (void **)&Matrix[MatrixCounter], "MatrixContainer::~MatrixContainer: **Matrix[MatrixCounter]");85 Free( (void **)&Matrix, "MatrixContainer::~MatrixContainer: ***Matrix");85 Free(&Matrix[MatrixCounter]); 86 Free(&Matrix); 86 87 } 87 88 if (Indices != NULL) 88 89 for(int i=MatrixCounter+1;i--;) { 89 Free( (void **)&Indices[i], "MatrixContainer::~MatrixContainer: *Indices[]");90 } 91 Free( (void **)&Indices, "MatrixContainer::~MatrixContainer: **Indices");90 Free(&Indices[i]); 91 } 92 Free(&Indices); 92 93 93 94 if (Header != NULL) 94 95 for(int i=MatrixCounter+1;i--;) 95 Free( (void **)&Header[i], "MatrixContainer::~MatrixContainer: *Header[]");96 Free( (void **)&Header, "MatrixContainer::~MatrixContainer: **Header");97 Free( (void **)&RowCounter, "MatrixContainer::~MatrixContainer: *RowCounter");98 Free( (void **)&ColumnCounter, "MatrixContainer::~MatrixContainer: *RowCounter");96 Free(&Header[i]); 97 Free(&Header); 98 Free(&RowCounter); 99 Free(&ColumnCounter); 99 100 }; 100 101 … … 109 110 if (Matrix == NULL) { 110 111 cout << " with trivial mapping." << endl; 111 Indices = (int **) Malloc(sizeof(int *)*(MatrixCounter+1), "MatrixContainer::InitialiseIndices: **Indices");112 Indices = Malloc<int*>(MatrixCounter + 1, "MatrixContainer::InitialiseIndices: **Indices"); 112 113 for(int i=MatrixCounter+1;i--;) { 113 Indices[i] = (int *) Malloc(sizeof(int)*RowCounter[i], "MatrixContainer::InitialiseIndices: *Indices[]");114 Indices[i] = Malloc<int>(RowCounter[i], "MatrixContainer::InitialiseIndices: *Indices[]"); 114 115 for(int j=RowCounter[i];j--;) 115 116 Indices[i][j] = j; … … 119 120 if (MatrixCounter != Matrix->MatrixCounter) 120 121 return false; 121 Indices = (int **) Malloc(sizeof(int *)*(MatrixCounter+1), "MatrixContainer::InitialiseIndices: **Indices");122 Indices = Malloc<int*>(MatrixCounter + 1, "MatrixContainer::InitialiseIndices: **Indices"); 122 123 for(int i=MatrixCounter+1;i--;) { 123 124 if (RowCounter[i] != Matrix->RowCounter[i]) 124 125 return false; 125 Indices[i] = (int *) Malloc(sizeof(int)*Matrix->RowCounter[i], "MatrixContainer::InitialiseIndices: *Indices[]");126 Indices[i] = Malloc<int>(Matrix->RowCounter[i], "MatrixContainer::InitialiseIndices: *Indices[]"); 126 127 for(int j=Matrix->RowCounter[i];j--;) { 127 128 Indices[i][j] = Matrix->Indices[i][j]; … … 162 163 163 164 // parse header 164 Header[MatrixNr] = (char *) Malloc(sizeof(char)*1024, "MatrixContainer::ParseMatrix: *Header[]");165 Header[MatrixNr] = Malloc<char>(1024, "MatrixContainer::ParseMatrix: *Header[]"); 165 166 for (int m=skiplines+1;m--;) 166 167 input.getline(Header[MatrixNr], 1023); … … 197 198 // allocate matrix if it's not zero dimension in one direction 198 199 if ((ColumnCounter[MatrixNr] > 0) && (RowCounter[MatrixNr] > -1)) { 199 Matrix[MatrixNr] = (double **) Malloc(sizeof(double *)*(RowCounter[MatrixNr]+1), "MatrixContainer::ParseMatrix: **Matrix[]");200 Matrix[MatrixNr] = Malloc<double*>(RowCounter[MatrixNr] + 1, "MatrixContainer::ParseMatrix: **Matrix[]"); 200 201 201 202 // parse in each entry for this matrix … … 209 210 strncpy(Header[MatrixNr], line.str().c_str(), 1023); 210 211 for(int j=0;j<RowCounter[MatrixNr];j++) { 211 Matrix[MatrixNr][j] = (double *) Malloc(sizeof(double)*ColumnCounter[MatrixNr], "MatrixContainer::ParseMatrix: *Matrix[][]");212 Matrix[MatrixNr][j] = Malloc<double>(ColumnCounter[MatrixNr], "MatrixContainer::ParseMatrix: *Matrix[][]"); 212 213 input.getline(filename, 1023); 213 214 stringstream lines(filename); … … 220 221 } 221 222 //cout << endl; 222 Matrix[MatrixNr][ RowCounter[MatrixNr] ] = (double *) Malloc(sizeof(double)*ColumnCounter[MatrixNr], "MatrixContainer::ParseMatrix: *Matrix[RowCounter[MatrixNr]][]");223 Matrix[MatrixNr][ RowCounter[MatrixNr] ] = Malloc<double>(ColumnCounter[MatrixNr], "MatrixContainer::ParseMatrix: *Matrix[RowCounter[MatrixNr]][]"); 223 224 for(int j=ColumnCounter[MatrixNr];j--;) 224 225 Matrix[MatrixNr][ RowCounter[MatrixNr] ][j] = 0.; … … 274 275 275 276 cout << "Parsing through each fragment and retrieving " << prefix << suffix << "." << endl; 276 Header = (char **) ReAlloc(Header, sizeof(char *)*(MatrixCounter+1), "MatrixContainer::ParseFragmentMatrix: **Header"); // one more each for the total molecule277 Matrix = (double ***) ReAlloc(Matrix, sizeof(double **)*(MatrixCounter+1), "MatrixContainer::ParseFragmentMatrix: ***Matrix"); // one more each for the total molecule278 RowCounter = (int *) ReAlloc(RowCounter, sizeof(int)*(MatrixCounter+1), "MatrixContainer::ParseFragmentMatrix: *RowCounter");279 ColumnCounter = (int *) ReAlloc(ColumnCounter, sizeof(int)*(MatrixCounter+1), "MatrixContainer::ParseFragmentMatrix: *ColumnCounter");277 Header = ReAlloc<char*>(Header, MatrixCounter + 1, "MatrixContainer::ParseFragmentMatrix: **Header"); // one more each for the total molecule 278 Matrix = ReAlloc<double**>(Matrix, MatrixCounter + 1, "MatrixContainer::ParseFragmentMatrix: ***Matrix"); // one more each for the total molecule 279 RowCounter = ReAlloc<int>(RowCounter, MatrixCounter + 1, "MatrixContainer::ParseFragmentMatrix: *RowCounter"); 280 ColumnCounter = ReAlloc<int>(ColumnCounter, MatrixCounter + 1, "MatrixContainer::ParseFragmentMatrix: *ColumnCounter"); 280 281 for(int i=MatrixCounter+1;i--;) { 281 282 Matrix[i] = NULL; … … 291 292 if (!ParseMatrix(file.str().c_str(), skiplines, skipcolumns, i)) 292 293 return false; 293 Free( (void **)&FragmentNumber, "MatrixContainer::ParseFragmentMatrix: *FragmentNumber");294 Free(&FragmentNumber); 294 295 } 295 296 return true; … … 306 307 { 307 308 MatrixCounter = MCounter; 308 Header = (char **) Malloc(sizeof(char *)*(MatrixCounter+1), "MatrixContainer::AllocateMatrix: *Header");309 Matrix = (double ***) Malloc(sizeof(double **)*(MatrixCounter+1), "MatrixContainer::AllocateMatrix: ***Matrix"); // one more each for the total molecule310 RowCounter = (int *) Malloc(sizeof(int)*(MatrixCounter+1), "MatrixContainer::AllocateMatrix: *RowCounter");311 ColumnCounter = (int *) Malloc(sizeof(int)*(MatrixCounter+1), "MatrixContainer::AllocateMatrix: *ColumnCounter");309 Header = Malloc<char*>(MatrixCounter + 1, "MatrixContainer::AllocateMatrix: *Header"); 310 Matrix = Malloc<double**>(MatrixCounter + 1, "MatrixContainer::AllocateMatrix: ***Matrix"); // one more each for the total molecule 311 RowCounter = Malloc<int>(MatrixCounter + 1, "MatrixContainer::AllocateMatrix: *RowCounter"); 312 ColumnCounter = Malloc<int>(MatrixCounter + 1, "MatrixContainer::AllocateMatrix: *ColumnCounter"); 312 313 for(int i=MatrixCounter+1;i--;) { 313 Header[i] = (char *) Malloc(sizeof(char)*1024, "MatrixContainer::AllocateMatrix: *Header[i]");314 Header[i] = Malloc<char>(1024, "MatrixContainer::AllocateMatrix: *Header[i]"); 314 315 strncpy(Header[i], GivenHeader[i], 1023); 315 316 RowCounter[i] = RCounter[i]; 316 317 ColumnCounter[i] = CCounter[i]; 317 Matrix[i] = (double **) Malloc(sizeof(double *)*(RowCounter[i]+1), "MatrixContainer::AllocateMatrix: **Matrix[]");318 Matrix[i] = Malloc<double*>(RowCounter[i] + 1, "MatrixContainer::AllocateMatrix: **Matrix[]"); 318 319 for(int j=RowCounter[i]+1;j--;) { 319 Matrix[i][j] = (double *) Malloc(sizeof(double)*ColumnCounter[i], "MatrixContainer::AllocateMatrix: *Matrix[][]");320 Matrix[i][j] = Malloc<double>(ColumnCounter[i], "MatrixContainer::AllocateMatrix: *Matrix[][]"); 320 321 for(int k=ColumnCounter[i];k--;) 321 322 Matrix[i][j][k] = 0.; … … 466 467 FragmentNumber = FixedDigitNumber(MatrixCounter, i); 467 468 line << name << FRAGMENTPREFIX << FragmentNumber << "/" << prefix; 468 Free( (void **)&FragmentNumber, "*FragmentNumber");469 Free(&FragmentNumber); 469 470 output.open(line.str().c_str(), ios::out); 470 471 if (output == NULL) { … … 520 521 { 521 522 cout << "Parsing energy indices." << endl; 522 Indices = (int **) Malloc(sizeof(int *)*(MatrixCounter+1), "EnergyMatrix::ParseIndices: **Indices");523 Indices = Malloc<int*>(MatrixCounter + 1, "EnergyMatrix::ParseIndices: **Indices"); 523 524 for(int i=MatrixCounter+1;i--;) { 524 Indices[i] = (int *) Malloc(sizeof(int)*RowCounter[i], "EnergyMatrix::ParseIndices: *Indices[]");525 Indices[i] = Malloc<int>(RowCounter[i], "EnergyMatrix::ParseIndices: *Indices[]"); 525 526 for(int j=RowCounter[i];j--;) 526 527 Indices[i][j] = j; … … 579 580 // allocate last plus one matrix 580 581 cout << "Allocating last plus one matrix with " << (RowCounter[MatrixCounter]+1) << " rows and " << ColumnCounter[MatrixCounter] << " columns." << endl; 581 Matrix[MatrixCounter] = (double **) Malloc(sizeof(double *)*(RowCounter[MatrixCounter]+1), "MatrixContainer::ParseFragmentMatrix: **Matrix[]");582 Matrix[MatrixCounter] = Malloc<double*>(RowCounter[MatrixCounter] + 1, "MatrixContainer::ParseFragmentMatrix: **Matrix[]"); 582 583 for(int j=0;j<=RowCounter[MatrixCounter];j++) 583 Matrix[MatrixCounter][j] = (double *) Malloc(sizeof(double)*ColumnCounter[MatrixCounter], "MatrixContainer::ParseFragmentMatrix: *Matrix[][]");584 Matrix[MatrixCounter][j] = Malloc<double>(ColumnCounter[MatrixCounter], "MatrixContainer::ParseFragmentMatrix: *Matrix[][]"); 584 585 585 586 // try independently to parse global energysuffix file if present … … 606 607 607 608 cout << "Parsing force indices for " << MatrixCounter << " matrices." << endl; 608 Indices = (int **) Malloc(sizeof(int *)*(MatrixCounter+1), "ForceMatrix::ParseIndices: **Indices");609 Indices = Malloc<int*>(MatrixCounter + 1, "ForceMatrix::ParseIndices: **Indices"); 609 610 line << name << FRAGMENTPREFIX << FORCESFILE; 610 611 input.open(line.str().c_str(), ios::in); … … 619 620 line.str(filename); 620 621 // parse the values 621 Indices[i] = (int *) Malloc(sizeof(int)*RowCounter[i], "ForceMatrix::ParseIndices: *Indices[]");622 Indices[i] = Malloc<int>(RowCounter[i], "ForceMatrix::ParseIndices: *Indices[]"); 622 623 FragmentNumber = FixedDigitNumber(MatrixCounter, i); 623 624 //cout << FRAGMENTPREFIX << FragmentNumber << "[" << RowCounter[i] << "]:"; 624 Free( (void **)&FragmentNumber, "ForceMatrix::ParseIndices: *FragmentNumber");625 Free(&FragmentNumber); 625 626 for(int j=0;(j<RowCounter[i]) && (!line.eof());j++) { 626 627 line >> Indices[i][j]; … … 629 630 //cout << endl; 630 631 } 631 Indices[MatrixCounter] = (int *) Malloc(sizeof(int)*RowCounter[MatrixCounter], "ForceMatrix::ParseIndices: *Indices[]");632 Indices[MatrixCounter] = Malloc<int>(RowCounter[MatrixCounter], "ForceMatrix::ParseIndices: *Indices[]"); 632 633 for(int j=RowCounter[MatrixCounter];j--;) { 633 634 Indices[MatrixCounter][j] = j; … … 714 715 // allocate last plus one matrix 715 716 cout << "Allocating last plus one matrix with " << (RowCounter[MatrixCounter]+1) << " rows and " << ColumnCounter[MatrixCounter] << " columns." << endl; 716 Matrix[MatrixCounter] = (double **) Malloc(sizeof(double *)*(RowCounter[MatrixCounter]+1), "MatrixContainer::ParseFragmentMatrix: **Matrix[]");717 Matrix[MatrixCounter] = Malloc<double*>(RowCounter[MatrixCounter] + 1, "MatrixContainer::ParseFragmentMatrix: **Matrix[]"); 717 718 for(int j=0;j<=RowCounter[MatrixCounter];j++) 718 Matrix[MatrixCounter][j] = (double *) Malloc(sizeof(double)*ColumnCounter[MatrixCounter], "MatrixContainer::ParseFragmentMatrix: *Matrix[][]");719 Matrix[MatrixCounter][j] = Malloc<double>(ColumnCounter[MatrixCounter], "MatrixContainer::ParseFragmentMatrix: *Matrix[][]"); 719 720 720 721 // try independently to parse global forcesuffix file if present … … 743 744 744 745 cout << "Parsing hessian indices for " << MatrixCounter << " matrices." << endl; 745 Indices = (int **) Malloc(sizeof(int *)*(MatrixCounter+1), "HessianMatrix::ParseIndices: **Indices");746 Indices = Malloc<int*>(MatrixCounter + 1, "HessianMatrix::ParseIndices: **Indices"); 746 747 line << name << FRAGMENTPREFIX << FORCESFILE; 747 748 input.open(line.str().c_str(), ios::in); … … 756 757 line.str(filename); 757 758 // parse the values 758 Indices[i] = (int *) Malloc(sizeof(int)*RowCounter[i], "HessianMatrix::ParseIndices: *Indices[]");759 Indices[i] = Malloc<int>(RowCounter[i], "HessianMatrix::ParseIndices: *Indices[]"); 759 760 FragmentNumber = FixedDigitNumber(MatrixCounter, i); 760 761 //cout << FRAGMENTPREFIX << FragmentNumber << "[" << RowCounter[i] << "]:"; 761 Free( (void **)&FragmentNumber, "HessianMatrix::ParseIndices: *FragmentNumber");762 Free(&FragmentNumber); 762 763 for(int j=0;(j<RowCounter[i]) && (!line.eof());j++) { 763 764 line >> Indices[i][j]; … … 766 767 //cout << endl; 767 768 } 768 Indices[MatrixCounter] = (int *) Malloc(sizeof(int)*RowCounter[MatrixCounter], "HessianMatrix::ParseIndices: *Indices[]");769 Indices[MatrixCounter] = Malloc<int>(RowCounter[MatrixCounter], "HessianMatrix::ParseIndices: *Indices[]"); 769 770 for(int j=RowCounter[MatrixCounter];j--;) { 770 771 Indices[MatrixCounter][j] = j; … … 938 939 // allocate last plus one matrix 939 940 cout << "Allocating last plus one matrix with " << (RowCounter[MatrixCounter]+1) << " rows and " << ColumnCounter[MatrixCounter] << " columns." << endl; 940 Matrix[MatrixCounter] = (double **) Malloc(sizeof(double *)*(RowCounter[MatrixCounter]+1), "MatrixContainer::ParseFragmentMatrix: **Matrix[]");941 Matrix[MatrixCounter] = Malloc<double*>(RowCounter[MatrixCounter] + 1, "MatrixContainer::ParseFragmentMatrix: **Matrix[]"); 941 942 for(int j=0;j<=RowCounter[MatrixCounter];j++) 942 Matrix[MatrixCounter][j] = (double *) Malloc(sizeof(double)*ColumnCounter[MatrixCounter], "MatrixContainer::ParseFragmentMatrix: *Matrix[][]");943 Matrix[MatrixCounter][j] = Malloc<double>(ColumnCounter[MatrixCounter], "MatrixContainer::ParseFragmentMatrix: *Matrix[][]"); 943 944 944 945 // try independently to parse global forcesuffix file if present … … 970 971 KeySetsContainer::~KeySetsContainer() { 971 972 for(int i=FragmentCounter;i--;) 972 Free( (void **)&KeySets[i], "KeySetsContainer::~KeySetsContainer: *KeySets[]");973 Free(&KeySets[i]); 973 974 for(int i=Order;i--;) 974 Free( (void **)&OrderSet[i], "KeySetsContainer::~KeySetsContainer: *OrderSet[]");975 Free( (void **)&KeySets, "KeySetsContainer::~KeySetsContainer: **KeySets");976 Free( (void **)&OrderSet, "KeySetsContainer::~KeySetsContainer: **OrderSet");977 Free( (void **)&AtomCounter, "KeySetsContainer::~KeySetsContainer: *AtomCounter");978 Free( (void **)&FragmentsPerOrder, "KeySetsContainer::~KeySetsContainer: *FragmentsPerOrder");975 Free(&OrderSet[i]); 976 Free(&KeySets); 977 Free(&OrderSet); 978 Free(&AtomCounter); 979 Free(&FragmentsPerOrder); 979 980 }; 980 981 … … 993 994 FragmentCounter = FCounter; 994 995 cout << "Parsing key sets." << endl; 995 KeySets = (int **) Malloc(sizeof(int *)*FragmentCounter, "KeySetsContainer::ParseKeySets: **KeySets");996 KeySets = Malloc<int*>(FragmentCounter, "KeySetsContainer::ParseKeySets: **KeySets"); 996 997 for(int i=FragmentCounter;i--;) 997 998 KeySets[i] = NULL; … … 1003 1004 } 1004 1005 1005 AtomCounter = (int *) Malloc(sizeof(int)*FragmentCounter, "KeySetsContainer::ParseKeySets: *RowCounter");1006 AtomCounter = Malloc<int>(FragmentCounter, "KeySetsContainer::ParseKeySets: *RowCounter"); 1006 1007 for(int i=0;(i<FragmentCounter) && (!input.eof());i++) { 1007 1008 stringstream line; 1008 1009 AtomCounter[i] = ACounter[i]; 1009 1010 // parse the values 1010 KeySets[i] = (int *) Malloc(sizeof(int)*AtomCounter[i], "KeySetsContainer::ParseKeySets: *KeySets[]");1011 KeySets[i] = Malloc<int>(AtomCounter[i], "KeySetsContainer::ParseKeySets: *KeySets[]"); 1011 1012 for(int j=AtomCounter[i];j--;) 1012 1013 KeySets[i][j] = -1; 1013 1014 FragmentNumber = FixedDigitNumber(FragmentCounter, i); 1014 1015 //cout << FRAGMENTPREFIX << FragmentNumber << "[" << AtomCounter[i] << "]:"; 1015 Free( (void **)&FragmentNumber, "KeySetsContainer::ParseKeySets: *FragmentNumber");1016 Free(&FragmentNumber); 1016 1017 input.getline(filename, 1023); 1017 1018 line.str(filename); … … 1047 1048 1048 1049 // scan through all to determine fragments per order 1049 FragmentsPerOrder = (int *) Malloc(sizeof(int)*Order, "KeySetsContainer::ParseManyBodyTerms: *FragmentsPerOrder");1050 FragmentsPerOrder = Malloc<int>(Order, "KeySetsContainer::ParseManyBodyTerms: *FragmentsPerOrder"); 1050 1051 for(int i=Order;i--;) 1051 1052 FragmentsPerOrder[i] = 0; … … 1061 1062 1062 1063 // scan through all to gather indices to each order set 1063 OrderSet = (int **) Malloc(sizeof(int *)*Order, "KeySetsContainer::ParseManyBodyTerms: **OrderSet");1064 OrderSet = Malloc<int*>(Order, "KeySetsContainer::ParseManyBodyTerms: **OrderSet"); 1064 1065 for(int i=Order;i--;) 1065 OrderSet[i] = (int *) Malloc(sizeof(int)*FragmentsPerOrder[i], "KeySetsContainer::ParseManyBodyTermsKeySetsContainer::ParseManyBodyTerms: *OrderSet[]");1066 OrderSet[i] = Malloc<int>(FragmentsPerOrder[i], "KeySetsContainer::ParseManyBodyTermsKeySetsContainer::ParseManyBodyTerms: *OrderSet[]"); 1066 1067 for(int i=Order;i--;) 1067 1068 FragmentsPerOrder[i] = 0; -
src/stackclass.hpp
r89c8b2 r29812d 3 3 4 4 #include "verbose.hpp" 5 #include "memoryallocator.hpp" 5 6 6 7 template <typename T> class StackClass; … … 43 44 NextFreeField = 0; 44 45 EntryCount = dimension; 45 StackList = (T *) Malloc(sizeof(T)*EntryCount, "StackClass::StackClass: **StackList");46 StackList = Malloc<T>(EntryCount, "StackClass::StackClass: **StackList"); 46 47 }; 47 48 … … 50 51 template <typename T> StackClass<T>::~StackClass() 51 52 { 52 Free( (void **)&StackList, "StackClass::StackClass: **StackList");53 Free(&StackList); 53 54 }; 54 55 -
src/tesselation.cpp
r89c8b2 r29812d 7 7 8 8 #include "tesselation.hpp" 9 #include "memoryallocator.hpp" 9 10 10 11 // ======================================== Points on Boundary ================================= … … 504 505 TesselPoint::~TesselPoint() 505 506 { 506 Free( (void **)&Name, "TesselPoint::~TesselPoint: *Name");507 Free(&Name); 507 508 }; 508 509 -
src/vector.cpp
r89c8b2 r29812d 8 8 #include "defs.hpp" 9 9 #include "helpers.hpp" 10 #include "memoryallocator.hpp" 10 11 #include "leastsquaremin.hpp" 11 12 #include "vector.hpp" … … 674 675 double * Vector::InverseMatrix(double *A) 675 676 { 676 double *B = (double *) Malloc(sizeof(double)*NDIM*NDIM, "Vector::InverseMatrix: *B");677 double *B = Malloc<double>(NDIM * NDIM, "Vector::InverseMatrix: *B"); 677 678 double detA = RDET3(A); 678 679 double detAReci;
Note:
See TracChangeset
for help on using the changeset viewer.