Changes in src/helpers.cpp [a67d19:112b09]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/helpers.cpp
ra67d19 r112b09 4 4 */ 5 5 6 #include "Helpers/MemDebug.hpp" 6 7 7 8 #include "helpers.hpp" 9 #include "Helpers/fast_functions.hpp" 8 10 #include "log.hpp" 9 11 #include "memoryusageobserver.hpp" … … 51 53 }; 52 54 53 /** Returns the power of \a n with respect to \a base.54 * \param base basis55 * \param n power56 * \return \f$base^n\f$57 */58 int pot(int base, int n)59 {60 int res = 1;61 int j;62 for (j=n;j--;)63 res *= base;64 return res;65 };66 67 55 /** Counts lines in file. 68 56 * Note we are scanning lines from current position, not from beginning. … … 71 59 int CountLinesinFile(ifstream &InputFile) 72 60 { 73 char *buffer = Malloc<char>(MAXSTRINGSIZE, "CountLinesinFile: *buffer");61 char *buffer = new char[MAXSTRINGSIZE]; 74 62 int lines=0; 75 63 … … 83 71 } 84 72 InputFile.seekg(PositionMarker, ios::beg); 85 Free(&buffer);73 delete[](buffer); 86 74 return lines; 87 75 }; … … 103 91 } 104 92 // allocate string 105 returnstring = Malloc<char>(order + 2, "FixedDigitNumber: *returnstring");93 returnstring = new char[order + 2]; 106 94 // terminate and fill string array from end backward 107 95 returnstring[order] = '\0'; … … 135 123 double * ReturnFullMatrixforSymmetric(const double * const symm) 136 124 { 137 double *matrix = Malloc<double>(NDIM * NDIM, "molecule::ReturnFullMatrixforSymmetric: *matrix");125 double *matrix = new double[NDIM * NDIM]; 138 126 matrix[0] = symm[0]; 139 127 matrix[1] = symm[1]; … … 153 141 double * InverseMatrix( const double * const A) 154 142 { 155 double *B = Malloc<double>(NDIM * NDIM, "Vector::InverseMatrix: *B");143 double *B = new double[NDIM * NDIM]; 156 144 double detA = RDET3(A); 157 145 double detAReci; … … 175 163 }; 176 164 177 /** hard-coded determinant of a 3x3 matrix.178 * \param a[9] matrix179 * \return \f$det(a)\f$180 */181 double RDET3(const double a[NDIM*NDIM])182 {183 return ((a)[0]*(a)[4]*(a)[8] + (a)[3]*(a)[7]*(a)[2] + (a)[6]*(a)[1]*(a)[5] - (a)[2]*(a)[4]*(a)[6] - (a)[5]*(a)[7]*(a)[0] - (a)[8]*(a)[1]*(a)[3]);184 };185 165 186 /** hard-coded determinant of a 2x2 matrix.187 * \param a[4] matrix188 * \return \f$det(a)\f$189 */190 double RDET2(const double a[4])191 {192 return ((a[0])*(a[3])-(a[1])*(a[2]));193 };194 195 /** hard-coded determinant of a 2x2 matrix.196 * \param a0 (0,0) entry of matrix197 * \param a1 (0,1) entry of matrix198 * \param a2 (1,0) entry of matrix199 * \param a3 (1,1) entry of matrix200 * \return \f$det(a)\f$201 */202 double RDET2(const double a0, const double a1, const double a2, const double a3)203 {204 return ((a0)*(a3)-(a1)*(a2));205 };206 166 207 167 /** Comparison function for GSL heapsort on distances in two molecules. … … 221 181 222 182 223 /** Allocates a memory range using malloc().224 * Prints the provided error message in case of a failure.225 *226 * \param number of memory slices of type X to allocate227 * \param failure message which is printed if the allocation fails228 * \return pointer to the allocated memory range, will be NULL if a failure occurred229 */230 template <> char* Malloc<char>(size_t size, const char* output)231 {232 char* buffer = NULL;233 buffer = (char*) malloc(sizeof(char) * (size + 1));234 for (size_t i = size; i--;)235 buffer[i] = (i % 2 == 0) ? 'p': 'c';236 buffer[size] = '\0';237 238 if (buffer != NULL) {239 MemoryUsageObserver::getInstance()->addMemory(buffer, size);240 } else {241 Log() << Verbose(0) << "Malloc for datatype " << typeid(char).name()242 << " failed - pointer is NULL: " << output << endl;243 }244 245 return buffer;246 };247 248 183 /** 249 * Frees all memory registered by the memory observer and calls exit(225) afterwards.184 * Calls exit(255). 250 185 */ 251 186 void performCriticalExit() { 252 map<void*, size_t> pointers = MemoryUsageObserver::getInstance()->getPointersToAllocatedMemory();253 for (map<void*, size_t>::iterator runner = pointers.begin(); runner != pointers.end(); runner++) {254 Free(((void**) &runner->first));255 }256 257 187 exit(255); 258 188 }
Note:
See TracChangeset
for help on using the changeset viewer.