Changeset 17b3a5c for molecuilder/src/helpers.hpp
- Timestamp:
- Oct 9, 2009, 10:54:52 AM (16 years ago)
- Children:
- 3efb4a
- Parents:
- 70b7aa
- File:
-
- 1 edited
-
molecuilder/src/helpers.hpp (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
molecuilder/src/helpers.hpp
r70b7aa r17b3a5c 9 9 using namespace std; 10 10 11 /*********************************************** includes ***********************************/ 12 11 13 // include config.h 12 14 #ifdef HAVE_CONFIG_H … … 14 16 #endif 15 17 16 #include <iostream>17 #include <iomanip>18 18 #include <fstream> 19 #include <sstream>20 #include <math.h>21 #include <string>22 19 23 #include "defs.hpp"24 #include "verbose.hpp"25 20 #include "memoryallocator.hpp" 26 21 … … 51 46 void flip(double *x, double *y); 52 47 int pot(int base, int n); 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);58 48 char *FixedDigitNumber(const int FragmentNumber, const int digits); 59 49 bool IsValidNumber( const char *string); 50 int CompareDoubles (const void * a, const void * b); 51 double * ReturnFullMatrixforSymmetric(double *cell_size); 60 52 61 53 /********************************************** helpful template functions *********************************/ … … 119 111 }; 120 112 121 /******************************** Some templates for list management ***********************************/122 123 /** Adds linking of an item to a list.124 * \param *walker125 * \return true - adding succeeded, false - error in list126 */127 template <typename X> void link(X *walker, X *end)128 {129 X *vorher = end->previous;130 if (vorher != NULL)131 vorher->next = walker;132 end->previous = walker;133 walker->previous = vorher;134 walker->next = end;135 };136 137 /** Removes linking of an item in a list.138 * \param *walker139 * \return true - removing succeeded, false - given item not found in list140 */141 template <typename X> void unlink(X *walker)142 {143 if (walker->next != NULL)144 walker->next->previous = walker->previous;145 if (walker->previous != NULL)146 walker->previous->next = walker->next;147 };148 149 /** Adds new item before an item \a *end in a list.150 * \param *pointer item to be added151 * \param *end end of list152 * \return true - addition succeeded, false - unable to add item to list153 */154 template <typename X> bool add(X *pointer, X *end)155 {156 if (end != NULL) {157 link(pointer, end);158 } else {159 pointer->previous = NULL;160 pointer->next = NULL;161 }162 return true;163 };164 165 /** Finds item in list166 * \param *suche search criteria167 * \param *start begin of list168 * \param *end end of list169 * \return X - if found, NULL - if not found170 */171 template <typename X, typename Y> X * find(Y *suche, X *start, X *end)172 {173 X *walker = start;174 while (walker->next != end) { // go through list175 walker = walker->next; // step onward beforehand176 if (*walker->sort == *suche) return (walker);177 }178 return NULL;179 };180 181 /** Removes an item from the list without check.182 * \param *walker item to be removed183 * \return true - removing succeeded, false - given item not found in list184 */185 template <typename X> void removewithoutcheck(X *walker)186 {187 if (walker != NULL) {188 unlink(walker);189 delete(walker);190 walker = NULL;191 }192 };193 194 /** Removes an item from the list, checks if exists.195 * Checks beforehand if atom is really within molecule list.196 * \param *pointer item to be removed197 * \param *start begin of list198 * \param *end end of list199 * \return true - removing succeeded, false - given item not found in list200 */201 template <typename X> bool remove(X *pointer, X *start, X *end)202 {203 X *walker = find (pointer->sort, start, end);204 /* while (walker->next != pointer) { // search through list205 walker = walker->next;206 if (walker == end) return false; // item not found in list207 }*/208 // atom found, now unlink209 if (walker != NULL)210 removewithoutcheck(walker);211 else212 return false;213 return true;214 };215 216 /** Cleans the whole list.217 * \param *start begin of list218 * \param *end end of list219 * \return true - list was cleaned successfully, false - error in list structure220 */221 template <typename X> bool cleanup(X *start, X *end)222 {223 X *pointer = start->next;224 X *walker;225 while (pointer != end) { // go through list226 walker = pointer; // mark current227 pointer = pointer->next; // step onward beforehand228 // remove walker229 unlink(walker);230 delete(walker);231 walker = NULL;232 }233 return true;234 };235 236 /** Returns the first marker in a chain list.237 * \param *me one arbitrary item in chain list238 * \return poiner to first marker239 */240 template <typename X> X *GetFirst(X *me)241 {242 X *Binder = me;243 while(Binder->previous != NULL)244 Binder = Binder->previous;245 return Binder;246 };247 248 /** Returns the last marker in a chain list.249 * \param *me one arbitrary item in chain list250 * \return poiner to last marker251 */252 template <typename X> X *GetLast(X *me)253 {254 X *Binder = me;255 while(Binder->next != NULL)256 Binder = Binder->next;257 return Binder;258 };259 260 113 /** Frees a two-dimensional array. 261 114 * \param *ptr pointer to array … … 285 138 286 139 140 287 141 #endif /*HELPERS_HPP_*/
Note:
See TracChangeset
for help on using the changeset viewer.
