Diffstat (limited to 'noncore/apps/opie-reader/CBuffer.h') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/apps/opie-reader/CBuffer.h | 62 |
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 | |||
@@ -7,39 +7,49 @@ | |||
7 | 7 | ||
8 | class CBuffer | 8 | |
9 | class CBufferBase | ||
9 | { | 10 | { |
11 | protected: | ||
10 | size_t len; | 12 | size_t len; |
11 | tchar *buffer; | 13 | unsigned char *buffer; |
12 | CBuffer(const CBuffer&); | 14 | size_t membersize; |
15 | CBufferBase(const CBufferBase&); | ||
13 | public: | 16 | public: |
14 | CBuffer& operator=(const tchar*sztmp); | 17 | CBufferBase& assign(const void* sztmp, size_t ms); |
15 | #ifdef _UNICODE | 18 | void* data() { return buffer; } |
16 | size_t length() { return ustrlen(buffer); } | 19 | CBufferBase(size_t ms, size_t n = 16); |
17 | #else | 20 | ~CBufferBase() { delete [] buffer; } |
18 | size_t length() { return strlen(buffer); } | 21 | void* operator[](int i); |
19 | #endif | 22 | size_t bstrlen(unsigned char* _buffer = NULL); |
20 | tchar* data() { return buffer; } | 23 | size_t totallen() { return len; } |
21 | CBuffer(size_t n = 16) : len(n) | ||
22 | { | ||
23 | buffer = new tchar[len]; | ||
24 | buffer[0] = '\0'; | ||
25 | } | ||
26 | ~CBuffer() { delete [] buffer; } | ||
27 | tchar& operator[](int i); | ||
28 | }; | 24 | }; |
29 | 25 | ||
30 | class CSizeBuffer | 26 | template<class T> |
27 | class CBufferFace | ||
31 | { | 28 | { |
32 | size_t len; | 29 | CBufferBase m_buffer; |
33 | size_t *buffer; | 30 | protected: |
34 | CSizeBuffer(const CSizeBuffer&); | 31 | CBufferFace(const CBufferFace&); |
35 | public: | 32 | public: |
36 | size_t* data() { return buffer; } | 33 | CBufferFace& operator=(const T* sztmp) |
37 | CSizeBuffer(size_t n = 16) : len(n) | ||
38 | { | 34 | { |
39 | buffer = new size_t[len]; | 35 | m_buffer.assign(sztmp, m_buffer.bstrlen(sztmp)); |
36 | return *this; | ||
37 | } | ||
38 | void assign(const T* sztmp, size_t n) | ||
39 | { | ||
40 | m_buffer.assign(sztmp, n); | ||
41 | } | ||
42 | size_t length() { return m_buffer.bstrlen(); } | ||
43 | size_t totallen() { return m_buffer.totallen(); } | ||
44 | T* data() { return (T*)m_buffer.data(); } | ||
45 | CBufferFace(size_t n = 16) : m_buffer(sizeof(T), n) {} | ||
46 | T& operator[](int i) | ||
47 | { | ||
48 | return *((T*)m_buffer[i]); | ||
40 | } | 49 | } |
41 | ~CSizeBuffer() { delete [] buffer; } | ||
42 | size_t& operator[](int i); | ||
43 | }; | 50 | }; |
44 | 51 | ||
52 | typedef CBufferFace<tchar> CBuffer; | ||
53 | typedef CBufferFace<size_t> CSizeBuffer; | ||
54 | |||
45 | #endif | 55 | #endif |