summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-reader/CBuffer.h
authorllornkcor <llornkcor>2002-09-14 02:19:09 (UTC)
committer llornkcor <llornkcor>2002-09-14 02:19:09 (UTC)
commit2d0c1ffcb39f9fac8193ed2e9e93794de0bd7975 (patch) (side-by-side diff)
treeeeed16b5f80dd5883991a7a06133f5f7a6936256 /noncore/apps/opie-reader/CBuffer.h
parent5a95ed6a000a56849b8f093deea500214856c626 (diff)
downloadopie-2d0c1ffcb39f9fac8193ed2e9e93794de0bd7975.zip
opie-2d0c1ffcb39f9fac8193ed2e9e93794de0bd7975.tar.gz
opie-2d0c1ffcb39f9fac8193ed2e9e93794de0bd7975.tar.bz2
update by Tim
Diffstat (limited to 'noncore/apps/opie-reader/CBuffer.h') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-reader/CBuffer.h66
1 files changed, 38 insertions, 28 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)
- {
- buffer = new size_t[len];
- }
- ~CSizeBuffer() { delete [] buffer; }
- size_t& operator[](int i);
+ CBufferFace& operator=(const T* sztmp)
+ {
+ 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]);
+ }
};
+typedef CBufferFace<tchar> CBuffer;
+typedef CBufferFace<size_t> CSizeBuffer;
+
#endif