3 #ifndef __COMMON_BUFFER_H
\r
4 #define __COMMON_BUFFER_H
\r
8 template <class T> class CBuffer
\r
20 CBuffer(): _capacity(0), _items(0) {};
\r
21 CBuffer(const CBuffer &buffer): _capacity(0), _items(0) { *this = buffer; }
\r
22 CBuffer(size_t size): _items(0), _capacity(0) { SetCapacity(size); }
\r
23 virtual ~CBuffer() { delete []_items; }
\r
24 operator T *() { return _items; };
\r
25 operator const T *() const { return _items; };
\r
26 size_t GetCapacity() const { return _capacity; }
\r
27 void SetCapacity(size_t newCapacity)
\r
29 if (newCapacity == _capacity)
\r
32 if (newCapacity > 0)
\r
34 newBuffer = new T[newCapacity];
\r
36 memmove(newBuffer, _items, MyMin(_capacity, newCapacity) * sizeof(T));
\r
42 _capacity = newCapacity;
\r
44 CBuffer& operator=(const CBuffer &buffer)
\r
47 if (buffer._capacity > 0)
\r
49 SetCapacity(buffer._capacity);
\r
50 memmove(_items, buffer._items, buffer._capacity * sizeof(T));
\r
57 bool operator==(const CBuffer<T>& b1, const CBuffer<T>& b2)
\r
59 if (b1.GetCapacity() != b2.GetCapacity())
\r
61 for (size_t i = 0; i < b1.GetCapacity(); i++)
\r
68 bool operator!=(const CBuffer<T>& b1, const CBuffer<T>& b2)
\r
73 typedef CBuffer<char> CCharBuffer;
\r
74 typedef CBuffer<wchar_t> CWCharBuffer;
\r
75 typedef CBuffer<unsigned char> CByteBuffer;
\r