Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(178)

Side by Side Diff: third_party/lzma/v4_65/files/CPP/Common/Buffer.h

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Common/Buffer.h
2
3 #ifndef __COMMON_BUFFER_H
4 #define __COMMON_BUFFER_H
5
6 #include "Defs.h"
7
8 template <class T> class CBuffer
9 {
10 protected:
11 size_t _capacity;
12 T *_items;
13 public:
14 void Free()
15 {
16 delete []_items;
17 _items = 0;
18 _capacity = 0;
19 }
20 CBuffer(): _capacity(0), _items(0) {};
21 CBuffer(const CBuffer &buffer): _capacity(0), _items(0) { *this = buffer; }
22 CBuffer(size_t size): _items(0), _capacity(0) { SetCapacity(size); }
23 virtual ~CBuffer() { delete []_items; }
24 operator T *() { return _items; };
25 operator const T *() const { return _items; };
26 size_t GetCapacity() const { return _capacity; }
27 void SetCapacity(size_t newCapacity)
28 {
29 if (newCapacity == _capacity)
30 return;
31 T *newBuffer;
32 if (newCapacity > 0)
33 {
34 newBuffer = new T[newCapacity];
35 if (_capacity > 0)
36 memmove(newBuffer, _items, MyMin(_capacity, newCapacity) * sizeof(T));
37 }
38 else
39 newBuffer = 0;
40 delete []_items;
41 _items = newBuffer;
42 _capacity = newCapacity;
43 }
44 CBuffer& operator=(const CBuffer &buffer)
45 {
46 Free();
47 if (buffer._capacity > 0)
48 {
49 SetCapacity(buffer._capacity);
50 memmove(_items, buffer._items, buffer._capacity * sizeof(T));
51 }
52 return *this;
53 }
54 };
55
56 template <class T>
57 bool operator==(const CBuffer<T>& b1, const CBuffer<T>& b2)
58 {
59 if (b1.GetCapacity() != b2.GetCapacity())
60 return false;
61 for (size_t i = 0; i < b1.GetCapacity(); i++)
62 if (b1[i] != b2[i])
63 return false;
64 return true;
65 }
66
67 template <class T>
68 bool operator!=(const CBuffer<T>& b1, const CBuffer<T>& b2)
69 {
70 return !(b1 == b2);
71 }
72
73 typedef CBuffer<char> CCharBuffer;
74 typedef CBuffer<wchar_t> CWCharBuffer;
75 typedef CBuffer<unsigned char> CByteBuffer;
76
77 #endif
OLDNEW
« no previous file with comments | « third_party/lzma/v4_65/files/CPP/Common/AutoPtr.h ('k') | third_party/lzma/v4_65/files/CPP/Common/CRC.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698