From: Gonzalo A. <ga...@us...> - 2006-09-08 14:22:50
|
Update of /cvsroot/mod-c/ehtml/src In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv12336/src Added Files: MemBuf.cpp Log Message: A convenience Memory Buffer class. --- NEW FILE: MemBuf.cpp --- #include "MemBuf.h" #include "Common.h" #include <stdlib.h> MemBuf::Buf::Buf(void* p, size_t s): _buf(p), _size(s), _refcnt(1) { } MemBuf::Buf::~Buf() { free(_buf); } MemBuf::~MemBuf() { if (_b && _b->_refcnt == 1) { delete _b; } else { _b->_refcnt--; } } void MemBuf::resize(size_t s) { assert(_b != NULL); void* p = realloc(_b->_buf, s); if (p == NULL) throw "Not enough memory"; _b->_buf = p; _b->_size = s; } MemBuf MemBuf::Dup(const void* p, size_t l) { return MemBuf(xmemdup(p,l),l); } using namespace std; string MemBuf::AsString() throw (const char*) { string dev(Char()); if (Size()-1 != dev.length()) throw "Invalid string representation"; return dev; } |