Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/helpers.cpp

    • Property mode changed from 100644 to 100755
    rf66195 rbe90f1  
    66
    77#include "helpers.hpp"
     8#include "memoryusageobserver.hpp"
    89
    910/********************************************** helpful functions *********************************/
     
    117118};
    118119
    119 /** Blows the 6-dimensional \a cell_size array up to a full NDIM by NDIM matrix.
    120  * \param *symm 6-dim array of unique symmetric matrix components
    121  * \return allocated NDIM*NDIM array with the symmetric matrix
    122  */
    123 double * ReturnFullMatrixforSymmetric(double *symm)
    124 {
    125   double *matrix = Malloc<double>(NDIM * NDIM, "molecule::ReturnFullMatrixforSymmetric: *matrix");
    126   matrix[0] = symm[0];
    127   matrix[1] = symm[1];
    128   matrix[2] = symm[3];
    129   matrix[3] = symm[1];
    130   matrix[4] = symm[2];
    131   matrix[5] = symm[4];
    132   matrix[6] = symm[3];
    133   matrix[7] = symm[4];
    134   matrix[8] = symm[5];
    135   return matrix;
    136 };
    137 
    138 /** Comparison function for GSL heapsort on distances in two molecules.
    139  * \param *a
    140  * \param *b
    141  * \return <0, \a *a less than \a *b, ==0 if equal, >0 \a *a greater than \a *b
    142  */
    143 int CompareDoubles (const void * a, const void * b)
    144 {
    145   if (*(double *)a > *(double *)b)
    146     return -1;
    147   else if (*(double *)a < *(double *)b)
    148     return 1;
    149   else
    150     return 0;
    151 };
    152 
    153 
    154 /** Allocates a memory range using malloc().
     120/**
     121 * Allocates a memory range using malloc().
    155122 * Prints the provided error message in case of a failure.
    156123 *
     
    177144};
    178145
     146/**
     147 * Frees all memory registered by the memory observer and calls exit(225) afterwards.
     148 */
     149void performCriticalExit() {
     150  map<void*, size_t> pointers = MemoryUsageObserver::getInstance()->getPointersToAllocatedMemory();
     151  for (map<void*, size_t>::iterator runner = pointers.begin(); runner != pointers.end(); runner++) {
     152    Free(((void**) &runner->first));
     153  }
     154
     155  exit(255);
     156}
Note: See TracChangeset for help on using the changeset viewer.