#ifndef tools_realloc #define tools_realloc #include //memcpy namespace tools { template inline bool realloc(T*& a_pointer, unsigned int a_new_size,unsigned int a_old_size, bool a_init = false) { if(!a_new_size) { delete [] a_pointer; a_pointer = 0; return true; } if(!a_pointer) { a_pointer = new T[a_new_size]; if(!a_pointer) return false; return true; } if(a_old_size==a_new_size) return true; T* pointer = new T[a_new_size]; if(!pointer) { delete [] a_pointer; a_pointer = 0; return false; } if(a_new_size>a_old_size) { ::memcpy(pointer,a_pointer,a_old_size*sizeof(T)); if(a_init){ unsigned int num = a_new_size-a_old_size; T* pos = pointer+a_old_size; for(unsigned int i=0;i