Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

CBuffer.cpp

Go to the documentation of this file.
00001 #include "CBuffer.h"
00002 
00003 CBufferBase& CBufferBase::assign(const void* sztmp, size_t ms)
00004 {
00005     if (ms*membersize > len)
00006     {
00007         delete [] buffer;
00008         buffer = new unsigned char[len = ms*membersize];
00009     }
00010     memcpy(buffer, sztmp, len);
00011     return *this;
00012 }
00013 
00014 CBufferBase::CBufferBase(size_t ms, size_t n) : len(n*ms), membersize(ms)
00015 {
00016     buffer = new unsigned char[len];
00017     memset(buffer, 0, len);
00018 }
00019 
00020 void* CBufferBase::operator[](int i)
00021 {
00022     if ((i+1)*membersize > len)
00023     {
00024         unsigned char* oldbuffer = buffer;
00025         buffer = new unsigned char[(i+1)*membersize];
00026         memcpy(buffer, oldbuffer, len);
00027         memset(buffer+len, 0, (i+1)*membersize-len);
00028         len = (i+1)*membersize;
00029         delete [] oldbuffer;
00030     }
00031     return buffer+i*membersize;
00032 }
00033 
00034 size_t CBufferBase::bstrlen(unsigned char* _buffer)
00035 {
00036     if (_buffer == NULL) _buffer = buffer;
00037     unsigned char* zero = new unsigned char[membersize];
00038     memset(zero,0,membersize);
00039     unsigned char* element = _buffer;
00040     while (memcmp(element, zero, membersize) != 0)
00041     {
00042         element += membersize;
00043     }
00044     delete [] zero;
00045     return (element - _buffer)/membersize;
00046 }

Generated on Sat Nov 5 16:16:53 2005 for OPIE by  doxygen 1.4.2