PhysicsFS 2.0.3 imported.
This commit is contained in:
parent
bcc0937726
commit
993311d151
459 changed files with 87785 additions and 0 deletions
77
lib/physfs-2.0.3/lzma/CPP/Common/Buffer.h
Normal file
77
lib/physfs-2.0.3/lzma/CPP/Common/Buffer.h
Normal file
|
@ -0,0 +1,77 @@
|
|||
// Common/Buffer.h
|
||||
|
||||
#ifndef __COMMON_BUFFER_H
|
||||
#define __COMMON_BUFFER_H
|
||||
|
||||
#include "Defs.h"
|
||||
|
||||
template <class T> class CBuffer
|
||||
{
|
||||
protected:
|
||||
size_t _capacity;
|
||||
T *_items;
|
||||
public:
|
||||
void Free()
|
||||
{
|
||||
delete []_items;
|
||||
_items = 0;
|
||||
_capacity = 0;
|
||||
}
|
||||
CBuffer(): _capacity(0), _items(0) {};
|
||||
CBuffer(const CBuffer &buffer): _capacity(0), _items(0) { *this = buffer; }
|
||||
CBuffer(size_t size): _items(0), _capacity(0) { SetCapacity(size); }
|
||||
virtual ~CBuffer() { delete []_items; }
|
||||
operator T *() { return _items; };
|
||||
operator const T *() const { return _items; };
|
||||
size_t GetCapacity() const { return _capacity; }
|
||||
void SetCapacity(size_t newCapacity)
|
||||
{
|
||||
if (newCapacity == _capacity)
|
||||
return;
|
||||
T *newBuffer;
|
||||
if (newCapacity > 0)
|
||||
{
|
||||
newBuffer = new T[newCapacity];
|
||||
if(_capacity > 0)
|
||||
memmove(newBuffer, _items, MyMin(_capacity, newCapacity) * sizeof(T));
|
||||
}
|
||||
else
|
||||
newBuffer = 0;
|
||||
delete []_items;
|
||||
_items = newBuffer;
|
||||
_capacity = newCapacity;
|
||||
}
|
||||
CBuffer& operator=(const CBuffer &buffer)
|
||||
{
|
||||
Free();
|
||||
if(buffer._capacity > 0)
|
||||
{
|
||||
SetCapacity(buffer._capacity);
|
||||
memmove(_items, buffer._items, buffer._capacity * sizeof(T));
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
template <class T>
|
||||
bool operator==(const CBuffer<T>& b1, const CBuffer<T>& b2)
|
||||
{
|
||||
if (b1.GetCapacity() != b2.GetCapacity())
|
||||
return false;
|
||||
for (size_t i = 0; i < b1.GetCapacity(); i++)
|
||||
if (b1[i] != b2[i])
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
template <class T>
|
||||
bool operator!=(const CBuffer<T>& b1, const CBuffer<T>& b2)
|
||||
{
|
||||
return !(b1 == b2);
|
||||
}
|
||||
|
||||
typedef CBuffer<char> CCharBuffer;
|
||||
typedef CBuffer<wchar_t> CWCharBuffer;
|
||||
typedef CBuffer<unsigned char> CByteBuffer;
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue