From: Gonzalo A. <ga...@us...> - 2006-09-08 14:22:51
|
Update of /cvsroot/mod-c/ehtml/include In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv12336/include Added Files: MemBuf.h Log Message: A convenience Memory Buffer class. --- NEW FILE: MemBuf.h --- #ifndef __MEMBUF_H_ #define __MEMBUF_H_ #include <assert.h> #include <stddef.h> #include <stdlib.h> #include <string> //TODO: document class MemBuf { class Buf { void* _buf; size_t _size; size_t _refcnt; Buf(): _buf(NULL), _size(0), _refcnt(0) { ; } Buf(void* p, size_t s); ~Buf(); friend class MemBuf; }; Buf* _b; public: MemBuf(): _b(NULL) { ; } MemBuf(void* p, size_t l): _b(new Buf(p,l)) { ; } MemBuf(size_t l): _b(new Buf(malloc(l),l)) { ; } MemBuf(const MemBuf& mb): _b(mb._b) { _b->_refcnt++; } ~MemBuf(); static MemBuf Dup(const void* p, size_t l); void* Buffer() { return _b->_buf; } const void* Buffer() const { return _b->_buf; } size_t Size() const { return _b->_size; } char& operator[](int x) { return ((char*)_b->_buf)[x]; } char* Char() { return (char*)_b->_buf; } const char* Char() const { return (const char*)_b->_buf; } std::string AsString() throw (const char*); void resize(size_t s); }; #endif |