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
|