g4tools  5.4.0
cmemT
Go to the documentation of this file.
1 // Copyright (C) 2010, Guy Barrand. All rights reserved.
2 // See the file tools.license for terms.
3 
4 #ifndef tools_cmemT
5 #define tools_cmemT
6 
7 #include <cstdlib>
8 
9 #ifdef TOOLS_MEM
10 #include "mem"
11 #endif
12 
13 namespace tools {
14 
15 template <class T>
16 inline void cmem_free(T*& a_p){
17  if(!a_p) return;
18  ::free(a_p);
19  a_p = NULL;
20 #ifdef TOOLS_MEM
21  mem::decrement("cmem");
22 #endif
23 }
24 
25 template <class T>
26 inline T* cmem_alloc(size_t a_num){
27  if(a_num<=0) return 0;
28  T* p = (T*)::malloc(a_num*sizeof(T));
29  if(!p) return 0;
30 #ifdef TOOLS_MEM
31  mem::increment("cmem");
32 #endif
33  return p;
34 }
35 
36 template <class T>
37 inline T* cmem_alloc_copy(const T* a_from,size_t a_num){
38  if(a_num<=0) return 0;
39  T* p = (T*)::malloc(a_num*sizeof(T));
40  if(!p) return 0;
41 #ifdef TOOLS_MEM
42  mem::increment("cmem");
43 #endif
44  //::memcpy(p,a_from,a_num*sizeof(T));
45  for(size_t i=0;i<a_num;i++) p[i] = a_from[i];
46  return p;
47 }
48 
49 }
50 
51 #endif
tools::cmem_free
void cmem_free(T *&a_p)
Definition: cmemT:16
mem
tools::cmem_alloc
T * cmem_alloc(size_t a_num)
Definition: cmemT:26
tools::cmem_alloc_copy
T * cmem_alloc_copy(const T *a_from, size_t a_num)
Definition: cmemT:37
tools
inlined C code : ///////////////////////////////////
Definition: aida_ntuple:26