/* * * Copyright (c) 1994 * Hewlett-Packard Company * */ #ifndef PAP_AUXBUFFER_H #define PAP_AUXBUFFER_H #include template struct PAP_auxBuffer { size_t len; T* ptr; PAP_auxBuffer(size_t); ~PAP_auxBuffer() { delete [] ptr; } }; template PAP_auxBuffer::PAP_auxBuffer(size_t n) : ptr(0), len(n) { while (len) { ptr = new T[len]; if (ptr) break; // cout << " more virtual memory space\n"; len >>= 1; } } struct PAP_auxBuffer { size_t len; void* ptr; PAP_auxBuffer(size_t); ~PAP_auxBuffer() { ::delete ptr; } }; PAP_auxBuffer::PAP_auxBuffer(size_t n) : ptr(0), len(n) { while (len) { ptr = ::operator new (len); if (ptr) break; len >>= 1; } } #endif