summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-reader/CBuffer.h
Side-by-side diff
Diffstat (limited to 'noncore/apps/opie-reader/CBuffer.h') (more/less context) (show whitespace changes)
-rw-r--r--noncore/apps/opie-reader/CBuffer.h62
1 files changed, 36 insertions, 26 deletions
diff --git a/noncore/apps/opie-reader/CBuffer.h b/noncore/apps/opie-reader/CBuffer.h
index 9807d27..252f3ac 100644
--- a/noncore/apps/opie-reader/CBuffer.h
+++ b/noncore/apps/opie-reader/CBuffer.h
@@ -5,41 +5,51 @@
#include <string.h>
#include "config.h"
-class CBuffer
+
+class CBufferBase
{
+ protected:
size_t len;
- tchar *buffer;
- CBuffer(const CBuffer&);
+ unsigned char *buffer;
+ size_t membersize;
+ CBufferBase(const CBufferBase&);
public:
- CBuffer& operator=(const tchar*sztmp);
-#ifdef _UNICODE
- size_t length() { return ustrlen(buffer); }
-#else
- size_t length() { return strlen(buffer); }
-#endif
- tchar* data() { return buffer; }
- CBuffer(size_t n = 16) : len(n)
- {
- buffer = new tchar[len];
- buffer[0] = '\0';
- }
- ~CBuffer() { delete [] buffer; }
- tchar& operator[](int i);
+ CBufferBase& assign(const void* sztmp, size_t ms);
+ void* data() { return buffer; }
+ CBufferBase(size_t ms, size_t n = 16);
+ ~CBufferBase() { delete [] buffer; }
+ void* operator[](int i);
+ size_t bstrlen(unsigned char* _buffer = NULL);
+ size_t totallen() { return len; }
};
-class CSizeBuffer
+template<class T>
+class CBufferFace
{
- size_t len;
- size_t *buffer;
- CSizeBuffer(const CSizeBuffer&);
+ CBufferBase m_buffer;
+ protected:
+ CBufferFace(const CBufferFace&);
public:
- size_t* data() { return buffer; }
- CSizeBuffer(size_t n = 16) : len(n)
+ CBufferFace& operator=(const T* sztmp)
{
- buffer = new size_t[len];
+ m_buffer.assign(sztmp, m_buffer.bstrlen(sztmp));
+ return *this;
+ }
+ void assign(const T* sztmp, size_t n)
+ {
+ m_buffer.assign(sztmp, n);
+ }
+ size_t length() { return m_buffer.bstrlen(); }
+ size_t totallen() { return m_buffer.totallen(); }
+ T* data() { return (T*)m_buffer.data(); }
+ CBufferFace(size_t n = 16) : m_buffer(sizeof(T), n) {}
+ T& operator[](int i)
+ {
+ return *((T*)m_buffer[i]);
}
- ~CSizeBuffer() { delete [] buffer; }
- size_t& operator[](int i);
};
+typedef CBufferFace<tchar> CBuffer;
+typedef CBufferFace<size_t> CSizeBuffer;
+
#endif