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;
}
|