Index: third_party/lzma/v4_65/files/CPP/Common/MyVector.h |
diff --git a/third_party/lzma/v4_65/files/CPP/Common/MyVector.h b/third_party/lzma/v4_65/files/CPP/Common/MyVector.h |
deleted file mode 100644 |
index 079e8ae4831a1b571c2cdf05b6f23ae525944c3a..0000000000000000000000000000000000000000 |
--- a/third_party/lzma/v4_65/files/CPP/Common/MyVector.h |
+++ /dev/null |
@@ -1,250 +0,0 @@ |
-// Common/Vector.h |
- |
-#ifndef __COMMON_VECTOR_H |
-#define __COMMON_VECTOR_H |
- |
-#include "Defs.h" |
- |
-class CBaseRecordVector |
-{ |
- void MoveItems(int destIndex, int srcIndex); |
-protected: |
- int _capacity; |
- int _size; |
- void *_items; |
- size_t _itemSize; |
- |
- void ReserveOnePosition(); |
- void InsertOneItem(int index); |
- void TestIndexAndCorrectNum(int index, int &num) const |
- { if (index + num > _size) num = _size - index; } |
-public: |
- CBaseRecordVector(size_t itemSize): _capacity(0), _size(0), _items(0), _itemSize(itemSize) {} |
- virtual ~CBaseRecordVector(); |
- void ClearAndFree(); |
- int Size() const { return _size; } |
- bool IsEmpty() const { return (_size == 0); } |
- void Reserve(int newCapacity); |
- void ReserveDown(); |
- virtual void Delete(int index, int num = 1); |
- void Clear(); |
- void DeleteFrom(int index); |
- void DeleteBack(); |
-}; |
- |
-template <class T> |
-class CRecordVector: public CBaseRecordVector |
-{ |
-public: |
- CRecordVector(): CBaseRecordVector(sizeof(T)){}; |
- CRecordVector(const CRecordVector &v): CBaseRecordVector(sizeof(T)) { *this = v; } |
- CRecordVector& operator=(const CRecordVector &v) |
- { |
- Clear(); |
- return (*this += v); |
- } |
- CRecordVector& operator+=(const CRecordVector &v) |
- { |
- int size = v.Size(); |
- Reserve(Size() + size); |
- for (int i = 0; i < size; i++) |
- Add(v[i]); |
- return *this; |
- } |
- int Add(T item) |
- { |
- ReserveOnePosition(); |
- ((T *)_items)[_size] = item; |
- return _size++; |
- } |
- void Insert(int index, T item) |
- { |
- InsertOneItem(index); |
- ((T *)_items)[index] = item; |
- } |
- // T* GetPointer() const { return (T*)_items; } |
- // operator const T *() const { return _items; }; |
- const T& operator[](int index) const { return ((T *)_items)[index]; } |
- T& operator[](int index) { return ((T *)_items)[index]; } |
- const T& Front() const { return operator[](0); } |
- T& Front() { return operator[](0); } |
- const T& Back() const { return operator[](_size - 1); } |
- T& Back() { return operator[](_size - 1); } |
- |
- void Swap(int i, int j) |
- { |
- T temp = operator[](i); |
- operator[](i) = operator[](j); |
- operator[](j) = temp; |
- } |
- |
- int FindInSorted(const T& item) const |
- { |
- int left = 0, right = Size(); |
- while (left != right) |
- { |
- int mid = (left + right) / 2; |
- const T& midValue = (*this)[mid]; |
- if (item == midValue) |
- return mid; |
- if (item < midValue) |
- right = mid; |
- else |
- left = mid + 1; |
- } |
- return -1; |
- } |
- |
- int AddToUniqueSorted(const T& item) |
- { |
- int left = 0, right = Size(); |
- while (left != right) |
- { |
- int mid = (left + right) / 2; |
- const T& midValue = (*this)[mid]; |
- if (item == midValue) |
- return mid; |
- if (item < midValue) |
- right = mid; |
- else |
- left = mid + 1; |
- } |
- Insert(right, item); |
- return right; |
- } |
- |
- static void SortRefDown(T* p, int k, int size, int (*compare)(const T*, const T*, void *), void *param) |
- { |
- T temp = p[k]; |
- for (;;) |
- { |
- int s = (k << 1); |
- if (s > size) |
- break; |
- if (s < size && compare(p + s + 1, p + s, param) > 0) |
- s++; |
- if (compare(&temp, p + s, param) >= 0) |
- break; |
- p[k] = p[s]; |
- k = s; |
- } |
- p[k] = temp; |
- } |
- |
- void Sort(int (*compare)(const T*, const T*, void *), void *param) |
- { |
- int size = _size; |
- if (size <= 1) |
- return; |
- T* p = (&Front()) - 1; |
- { |
- int i = size / 2; |
- do |
- SortRefDown(p, i, size, compare, param); |
- while (--i != 0); |
- } |
- do |
- { |
- T temp = p[size]; |
- p[size--] = p[1]; |
- p[1] = temp; |
- SortRefDown(p, 1, size, compare, param); |
- } |
- while (size > 1); |
- } |
-}; |
- |
-typedef CRecordVector<int> CIntVector; |
-typedef CRecordVector<unsigned int> CUIntVector; |
-typedef CRecordVector<bool> CBoolVector; |
-typedef CRecordVector<unsigned char> CByteVector; |
-typedef CRecordVector<void *> CPointerVector; |
- |
-template <class T> |
-class CObjectVector: public CPointerVector |
-{ |
-public: |
- CObjectVector() {}; |
- ~CObjectVector() { Clear(); }; |
- CObjectVector(const CObjectVector &v) { *this = v; } |
- CObjectVector& operator=(const CObjectVector &v) |
- { |
- Clear(); |
- return (*this += v); |
- } |
- CObjectVector& operator+=(const CObjectVector &v) |
- { |
- int size = v.Size(); |
- Reserve(Size() + size); |
- for (int i = 0; i < size; i++) |
- Add(v[i]); |
- return *this; |
- } |
- const T& operator[](int index) const { return *((T *)CPointerVector::operator[](index)); } |
- T& operator[](int index) { return *((T *)CPointerVector::operator[](index)); } |
- T& Front() { return operator[](0); } |
- const T& Front() const { return operator[](0); } |
- T& Back() { return operator[](_size - 1); } |
- const T& Back() const { return operator[](_size - 1); } |
- int Add(const T& item) { return CPointerVector::Add(new T(item)); } |
- void Insert(int index, const T& item) { CPointerVector::Insert(index, new T(item)); } |
- virtual void Delete(int index, int num = 1) |
- { |
- TestIndexAndCorrectNum(index, num); |
- for (int i = 0; i < num; i++) |
- delete (T *)(((void **)_items)[index + i]); |
- CPointerVector::Delete(index, num); |
- } |
- int Find(const T& item) const |
- { |
- for (int i = 0; i < Size(); i++) |
- if (item == (*this)[i]) |
- return i; |
- return -1; |
- } |
- int FindInSorted(const T& item) const |
- { |
- int left = 0, right = Size(); |
- while (left != right) |
- { |
- int mid = (left + right) / 2; |
- const T& midValue = (*this)[mid]; |
- if (item == midValue) |
- return mid; |
- if (item < midValue) |
- right = mid; |
- else |
- left = mid + 1; |
- } |
- return -1; |
- } |
- int AddToSorted(const T& item) |
- { |
- int left = 0, right = Size(); |
- while (left != right) |
- { |
- int mid = (left + right) / 2; |
- const T& midValue = (*this)[mid]; |
- if (item == midValue) |
- { |
- right = mid + 1; |
- break; |
- } |
- if (item < midValue) |
- right = mid; |
- else |
- left = mid + 1; |
- } |
- Insert(right, item); |
- return right; |
- } |
- |
- void Sort(int (*compare)(void *const *, void *const *, void *), void *param) |
- { CPointerVector::Sort(compare, param); } |
- |
- static int CompareObjectItems(void *const *a1, void *const *a2, void * /* param */) |
- { return MyCompare(*(*((const T **)a1)), *(*((const T **)a2))); } |
- void Sort() { CPointerVector::Sort(CompareObjectItems, 0); } |
-}; |
- |
-#endif |