Changeset 390a2b for molecuilder/src/helpers.cpp
- Timestamp:
- Sep 21, 2009, 11:48:42 AM (16 years ago)
- Children:
- 14db08, 39d983
- Parents:
- bc3953
- File:
-
- 1 edited
-
molecuilder/src/helpers.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
molecuilder/src/helpers.cpp
rbc3953 r390a2b 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
Note:
See TracChangeset
for help on using the changeset viewer.
