Changeset 14890
- Timestamp:
- 05/04/13 16:56:02 (12 years ago)
- Location:
- issm/trunk-jpl/src/c/shared/Alloc
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/shared/Alloc/alloc.h
r13251 r14890 13 13 void xdelete(Matrix<IssmDouble>** pvptr); 14 14 void xdelete(Vector<IssmDouble>** pvptr); 15 15 16 #endif -
issm/trunk-jpl/src/c/shared/Alloc/xNewDelete.h
r13623 r14890 8 8 #include <cassert> 9 9 10 // memory management of types 11 // T with non-trivial constructors require 12 // C++ style memory management 10 /* memory management of types T with non-trivial constructors require C++ style memory management*/ 13 11 #define USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES 14 // but for speed on may alternatively use C memory management 15 // but can do so safely only for T that are at most 16 // plain old data structures (POD) 12 /* but for speed one may alternatively use C memory management but can do so safely only for T that are at most 13 * plain old data structures (POD)*/ 17 14 #ifndef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES 18 15 #include <cstdlib> 19 16 #endif 20 17 21 template <class T> 22 T* xNew(unsigned int size) { 18 template <class T> T* xNew(unsigned int size) { /*{{{*/ 23 19 #ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES 24 20 T* aT_p=new T[size]; … … 30 26 return aT_p; 31 27 #endif 32 } 33 34 template <class T> 35 T** xNew(unsigned int dim1, unsigned int dim2) { 28 }/*}}}*/ 29 template <class T> T** xNew(unsigned int dim1, unsigned int dim2) { /*{{{*/ 36 30 #ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES 37 31 T* buf=new T[dim1*dim2]; … … 55 49 return aT_pp ; 56 50 #endif 57 } 58 59 template <class T> 60 T* xNewZeroInit(unsigned int size) { 51 }/*}}}*/ 52 template <class T> T* xNewZeroInit(unsigned int size) {/*{{{*/ 61 53 #ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES 62 54 T* aT_p=xNew<T>(size); … … 69 61 return aT_p; 70 62 #endif 71 } 72 73 template <class T> 74 T** xNewZeroInit(unsigned int dim1, unsigned int dim2) { 63 }/*}}}*/ 64 template <class T> T** xNewZeroInit(unsigned int dim1, unsigned int dim2) {/*{{{*/ 75 65 #ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES 76 66 T** aT_pp=xNew<T>(dim1,dim2); … … 89 79 return aT_pp ; 90 80 #endif 91 } 92 93 template <class T> 94 void xDelete(T**& aT_pp) { 81 }/*}}}*/ 82 template <class T> void xDelete(T**& aT_pp) {/*{{{*/ 95 83 if (aT_pp) { 96 84 #ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES … … 103 91 } 104 92 aT_pp=0; 105 } 106 107 template <class T> 108 void xDelete(T*& aT_p) { 93 }/*}}}*/ 94 template <class T> void xDelete(T*& aT_p) {/*{{{*/ 109 95 if (aT_p) 110 96 #ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES … … 114 100 #endif 115 101 aT_p=0; 116 } 117 118 template <class T> 119 T* xReNew(T* old, unsigned int old_size, unsigned int size) { 102 }/*}}}*/ 103 template <class T> T* xReNew(T* old, unsigned int old_size, unsigned int size) {/*{{{*/ 120 104 #ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES 121 105 T* aT_p=0; … … 150 134 return aT_p; 151 135 #endif 152 } 136 }/*}}}*/ 153 137 154 138 #endif
Note:
See TracChangeset
for help on using the changeset viewer.