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) (unidiff)
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 @@
5#include <string.h> 5#include <string.h>
6#include "config.h" 6#include "config.h"
7 7
8class CBuffer 8
9class 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
30class CSizeBuffer 26template<class T>
27class 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) 34 {
38 { 35 m_buffer.assign(sztmp, m_buffer.bstrlen(sztmp));
39 buffer = new size_t[len]; 36 return *this;
40 } 37 }
41 ~CSizeBuffer() { delete [] buffer; } 38 void assign(const T* sztmp, size_t n)
42 size_t& operator[](int i); 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]);
49 }
43}; 50};
44 51
52typedef CBufferFace<tchar> CBuffer;
53typedef CBufferFace<size_t> CSizeBuffer;
54
45#endif 55#endif