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

CBuffer.h

Go to the documentation of this file.
00001 #ifndef __CBUFFER_H
00002 #define __CBUFFER_H
00003 
00004 #include <stdlib.h>
00005 #include <string.h>
00006 #include "config.h"
00007 
00008 
00009 class CBufferBase
00010 {
00011  protected:
00012   size_t len;
00013   unsigned char *buffer;
00014   size_t membersize;
00015   CBufferBase(const CBufferBase&);
00016  public:
00017   CBufferBase& assign(const void* sztmp, size_t ms);
00018   void* data() { return buffer; }
00019   CBufferBase(size_t ms, size_t n = 16);
00020   ~CBufferBase() { delete [] buffer; }
00021   void* operator[](int i);
00022   size_t bstrlen(unsigned char* _buffer = NULL);
00023   size_t totallen() { return len; }
00024 };
00025 
00026 template<class T>
00027 class CBufferFace
00028 {
00029     CBufferBase m_buffer;
00030  protected:
00031   CBufferFace(const CBufferFace&);
00032  public:
00033   CBufferFace& operator=(const T* sztmp)
00034       {
00035           m_buffer.assign(sztmp, m_buffer.bstrlen(sztmp));
00036           return *this;
00037       }
00038   void assign(const T* sztmp, size_t n)
00039       {
00040           m_buffer.assign(sztmp, n);
00041       }
00042   size_t length() { return m_buffer.bstrlen(); }
00043   size_t totallen() { return m_buffer.totallen(); }
00044   T* data() { return (T*)m_buffer.data(); }
00045   CBufferFace(size_t n = 16) : m_buffer(sizeof(T), n) {}
00046   T& operator[](int i)
00047       {
00048           return *((T*)m_buffer[i]);
00049       }
00050 };
00051 
00052 typedef CBufferFace<tchar> CBuffer;
00053 typedef CBufferFace<unsigned long> CSizeBuffer;
00054 
00055 #endif

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