| Index: third_party/lzma/v4_65/files/CPP/Common/MyString.h
|
| diff --git a/third_party/lzma/v4_65/files/CPP/Common/MyString.h b/third_party/lzma/v4_65/files/CPP/Common/MyString.h
|
| deleted file mode 100644
|
| index bae239daba8472cc88b9de21e2a4b8ac359f3fdd..0000000000000000000000000000000000000000
|
| --- a/third_party/lzma/v4_65/files/CPP/Common/MyString.h
|
| +++ /dev/null
|
| @@ -1,628 +0,0 @@
|
| -// Common/String.h
|
| -
|
| -#ifndef __COMMON_STRING_H
|
| -#define __COMMON_STRING_H
|
| -
|
| -#include <string.h>
|
| -// #include <wchar.h>
|
| -
|
| -#include "MyVector.h"
|
| -
|
| -#ifdef _WIN32
|
| -#include "MyWindows.h"
|
| -#endif
|
| -
|
| -template <class T>
|
| -inline int MyStringLen(const T *s)
|
| -{
|
| - int i;
|
| - for (i = 0; s[i] != '\0'; i++);
|
| - return i;
|
| -}
|
| -
|
| -template <class T>
|
| -inline T * MyStringCopy(T *dest, const T *src)
|
| -{
|
| - T *destStart = dest;
|
| - while ((*dest++ = *src++) != 0);
|
| - return destStart;
|
| -}
|
| -
|
| -inline wchar_t* MyStringGetNextCharPointer(wchar_t *p)
|
| - { return (p + 1); }
|
| -inline const wchar_t* MyStringGetNextCharPointer(const wchar_t *p)
|
| - { return (p + 1); }
|
| -inline wchar_t* MyStringGetPrevCharPointer(const wchar_t *, wchar_t *p)
|
| - { return (p - 1); }
|
| -inline const wchar_t* MyStringGetPrevCharPointer(const wchar_t *, const wchar_t *p)
|
| - { return (p - 1); }
|
| -
|
| -#ifdef _WIN32
|
| -
|
| -inline char* MyStringGetNextCharPointer(char *p)
|
| - { return CharNextA(p); }
|
| -inline const char* MyStringGetNextCharPointer(const char *p)
|
| - { return CharNextA(p); }
|
| -
|
| -inline char* MyStringGetPrevCharPointer(char *base, char *p)
|
| - { return CharPrevA(base, p); }
|
| -inline const char* MyStringGetPrevCharPointer(const char *base, const char *p)
|
| - { return CharPrevA(base, p); }
|
| -
|
| -inline char MyCharUpper(char c)
|
| - { return (char)(unsigned int)(UINT_PTR)CharUpperA((LPSTR)(UINT_PTR)(unsigned int)(unsigned char)c); }
|
| -#ifdef _UNICODE
|
| -inline wchar_t MyCharUpper(wchar_t c)
|
| - { return (wchar_t)(unsigned int)(UINT_PTR)CharUpperW((LPWSTR)(UINT_PTR)(unsigned int)c); }
|
| -#else
|
| -wchar_t MyCharUpper(wchar_t c);
|
| -#endif
|
| -
|
| -inline char MyCharLower(char c)
|
| - { return (char)(unsigned int)(UINT_PTR)CharLowerA((LPSTR)(UINT_PTR)(unsigned int)(unsigned char)c); }
|
| -#ifdef _UNICODE
|
| -inline wchar_t MyCharLower(wchar_t c)
|
| - { return (wchar_t)(unsigned int)(UINT_PTR)CharLowerW((LPWSTR)(UINT_PTR)(unsigned int)c); }
|
| -#else
|
| -wchar_t MyCharLower(wchar_t c);
|
| -#endif
|
| -
|
| -inline char * MyStringUpper(char *s) { return CharUpperA(s); }
|
| -#ifdef _UNICODE
|
| -inline wchar_t * MyStringUpper(wchar_t *s) { return CharUpperW(s); }
|
| -#else
|
| -wchar_t * MyStringUpper(wchar_t *s);
|
| -#endif
|
| -
|
| -inline char * MyStringLower(char *s) { return CharLowerA(s); }
|
| -#ifdef _UNICODE
|
| -inline wchar_t * MyStringLower(wchar_t *s) { return CharLowerW(s); }
|
| -#else
|
| -wchar_t * MyStringLower(wchar_t *s);
|
| -#endif
|
| -
|
| -#else // Standard-C
|
| -wchar_t MyCharUpper(wchar_t c);
|
| -#endif
|
| -
|
| -//////////////////////////////////////
|
| -// Compare
|
| -
|
| -/*
|
| -#ifndef _WIN32_WCE
|
| -int MyStringCollate(const char *s1, const char *s2);
|
| -int MyStringCollateNoCase(const char *s1, const char *s2);
|
| -#endif
|
| -int MyStringCollate(const wchar_t *s1, const wchar_t *s2);
|
| -int MyStringCollateNoCase(const wchar_t *s1, const wchar_t *s2);
|
| -*/
|
| -
|
| -int MyStringCompare(const char *s1, const char *s2);
|
| -int MyStringCompare(const wchar_t *s1, const wchar_t *s2);
|
| -
|
| -// int MyStringCompareNoCase(const char *s1, const char *s2);
|
| -int MyStringCompareNoCase(const wchar_t *s1, const wchar_t *s2);
|
| -
|
| -template <class T>
|
| -class CStringBase
|
| -{
|
| - void TrimLeftWithCharSet(const CStringBase &charSet)
|
| - {
|
| - const T *p = _chars;
|
| - while (charSet.Find(*p) >= 0 && (*p != 0))
|
| - p = GetNextCharPointer(p);
|
| - Delete(0, (int)(p - _chars));
|
| - }
|
| - void TrimRightWithCharSet(const CStringBase &charSet)
|
| - {
|
| - const T *p = _chars;
|
| - const T *pLast = NULL;
|
| - while (*p != 0)
|
| - {
|
| - if (charSet.Find(*p) >= 0)
|
| - {
|
| - if (pLast == NULL)
|
| - pLast = p;
|
| - }
|
| - else
|
| - pLast = NULL;
|
| - p = GetNextCharPointer(p);
|
| - }
|
| - if (pLast != NULL)
|
| - {
|
| - int i = (int)(pLast - _chars);
|
| - Delete(i, _length - i);
|
| - }
|
| -
|
| - }
|
| - void MoveItems(int destIndex, int srcIndex)
|
| - {
|
| - memmove(_chars + destIndex, _chars + srcIndex,
|
| - sizeof(T) * (_length - srcIndex + 1));
|
| - }
|
| -
|
| - void InsertSpace(int &index, int size)
|
| - {
|
| - CorrectIndex(index);
|
| - GrowLength(size);
|
| - MoveItems(index + size, index);
|
| - }
|
| -
|
| - static T *GetNextCharPointer(T *p)
|
| - { return MyStringGetNextCharPointer(p); }
|
| - static const T *GetNextCharPointer(const T *p)
|
| - { return MyStringGetNextCharPointer(p); }
|
| - static T *GetPrevCharPointer(T *base, T *p)
|
| - { return MyStringGetPrevCharPointer(base, p); }
|
| - static const T *GetPrevCharPointer(const T *base, const T *p)
|
| - { return MyStringGetPrevCharPointer(base, p); }
|
| -protected:
|
| - T *_chars;
|
| - int _length;
|
| - int _capacity;
|
| -
|
| - void SetCapacity(int newCapacity)
|
| - {
|
| - int realCapacity = newCapacity + 1;
|
| - if (realCapacity == _capacity)
|
| - return;
|
| - /*
|
| - const int kMaxStringSize = 0x20000000;
|
| - #ifndef _WIN32_WCE
|
| - if (newCapacity > kMaxStringSize || newCapacity < _length)
|
| - throw 1052337;
|
| - #endif
|
| - */
|
| - T *newBuffer = new T[realCapacity];
|
| - if (_capacity > 0)
|
| - {
|
| - for (int i = 0; i < _length; i++)
|
| - newBuffer[i] = _chars[i];
|
| - delete []_chars;
|
| - }
|
| - _chars = newBuffer;
|
| - _chars[_length] = 0;
|
| - _capacity = realCapacity;
|
| - }
|
| -
|
| - void GrowLength(int n)
|
| - {
|
| - int freeSize = _capacity - _length - 1;
|
| - if (n <= freeSize)
|
| - return;
|
| - int delta;
|
| - if (_capacity > 64)
|
| - delta = _capacity / 2;
|
| - else if (_capacity > 8)
|
| - delta = 16;
|
| - else
|
| - delta = 4;
|
| - if (freeSize + delta < n)
|
| - delta = n - freeSize;
|
| - SetCapacity(_capacity + delta);
|
| - }
|
| -
|
| - void CorrectIndex(int &index) const
|
| - {
|
| - if (index > _length)
|
| - index = _length;
|
| - }
|
| -
|
| -public:
|
| - CStringBase(): _chars(0), _length(0), _capacity(0) { SetCapacity(3); }
|
| - CStringBase(T c): _chars(0), _length(0), _capacity(0)
|
| - {
|
| - SetCapacity(1);
|
| - _chars[0] = c;
|
| - _chars[1] = 0;
|
| - _length = 1;
|
| - }
|
| - CStringBase(const T *chars): _chars(0), _length(0), _capacity(0)
|
| - {
|
| - int length = MyStringLen(chars);
|
| - SetCapacity(length);
|
| - MyStringCopy(_chars, chars); // can be optimized by memove()
|
| - _length = length;
|
| - }
|
| - CStringBase(const CStringBase &s): _chars(0), _length(0), _capacity(0)
|
| - {
|
| - SetCapacity(s._length);
|
| - MyStringCopy(_chars, s._chars);
|
| - _length = s._length;
|
| - }
|
| - ~CStringBase() { delete []_chars; }
|
| -
|
| - operator const T*() const { return _chars;}
|
| -
|
| - // The minimum size of the character buffer in characters.
|
| - // This value does not include space for a null terminator.
|
| - T* GetBuffer(int minBufLength)
|
| - {
|
| - if (minBufLength >= _capacity)
|
| - SetCapacity(minBufLength);
|
| - return _chars;
|
| - }
|
| - void ReleaseBuffer() { ReleaseBuffer(MyStringLen(_chars)); }
|
| - void ReleaseBuffer(int newLength)
|
| - {
|
| - /*
|
| - #ifndef _WIN32_WCE
|
| - if (newLength >= _capacity)
|
| - throw 282217;
|
| - #endif
|
| - */
|
| - _chars[newLength] = 0;
|
| - _length = newLength;
|
| - }
|
| -
|
| - CStringBase& operator=(T c)
|
| - {
|
| - Empty();
|
| - SetCapacity(1);
|
| - _chars[0] = c;
|
| - _chars[1] = 0;
|
| - _length = 1;
|
| - return *this;
|
| - }
|
| - CStringBase& operator=(const T *chars)
|
| - {
|
| - Empty();
|
| - int length = MyStringLen(chars);
|
| - SetCapacity(length);
|
| - MyStringCopy(_chars, chars);
|
| - _length = length;
|
| - return *this;
|
| - }
|
| - CStringBase& operator=(const CStringBase& s)
|
| - {
|
| - if (&s == this)
|
| - return *this;
|
| - Empty();
|
| - SetCapacity(s._length);
|
| - MyStringCopy(_chars, s._chars);
|
| - _length = s._length;
|
| - return *this;
|
| - }
|
| -
|
| - CStringBase& operator+=(T c)
|
| - {
|
| - GrowLength(1);
|
| - _chars[_length] = c;
|
| - _chars[++_length] = 0;
|
| - return *this;
|
| - }
|
| - CStringBase& operator+=(const T *s)
|
| - {
|
| - int len = MyStringLen(s);
|
| - GrowLength(len);
|
| - MyStringCopy(_chars + _length, s);
|
| - _length += len;
|
| - return *this;
|
| - }
|
| - CStringBase& operator+=(const CStringBase &s)
|
| - {
|
| - GrowLength(s._length);
|
| - MyStringCopy(_chars + _length, s._chars);
|
| - _length += s._length;
|
| - return *this;
|
| - }
|
| - void Empty()
|
| - {
|
| - _length = 0;
|
| - _chars[0] = 0;
|
| - }
|
| - int Length() const { return _length; }
|
| - bool IsEmpty() const { return (_length == 0); }
|
| -
|
| - CStringBase Mid(int startIndex) const
|
| - { return Mid(startIndex, _length - startIndex); }
|
| - CStringBase Mid(int startIndex, int count ) const
|
| - {
|
| - if (startIndex + count > _length)
|
| - count = _length - startIndex;
|
| -
|
| - if (startIndex == 0 && startIndex + count == _length)
|
| - return *this;
|
| -
|
| - CStringBase<T> result;
|
| - result.SetCapacity(count);
|
| - // MyStringNCopy(result._chars, _chars + startIndex, count);
|
| - for (int i = 0; i < count; i++)
|
| - result._chars[i] = _chars[startIndex + i];
|
| - result._chars[count] = 0;
|
| - result._length = count;
|
| - return result;
|
| - }
|
| - CStringBase Left(int count) const
|
| - { return Mid(0, count); }
|
| - CStringBase Right(int count) const
|
| - {
|
| - if (count > _length)
|
| - count = _length;
|
| - return Mid(_length - count, count);
|
| - }
|
| -
|
| - void MakeUpper()
|
| - { MyStringUpper(_chars); }
|
| - void MakeLower()
|
| - { MyStringLower(_chars); }
|
| -
|
| - int Compare(const CStringBase& s) const
|
| - { return MyStringCompare(_chars, s._chars); }
|
| -
|
| - int Compare(const T *s) const
|
| - { return MyStringCompare(_chars, s); }
|
| -
|
| - int CompareNoCase(const CStringBase& s) const
|
| - { return MyStringCompareNoCase(_chars, s._chars); }
|
| -
|
| - int CompareNoCase(const T *s) const
|
| - { return MyStringCompareNoCase(_chars, s); }
|
| -
|
| - /*
|
| - int Collate(const CStringBase& s) const
|
| - { return MyStringCollate(_chars, s._chars); }
|
| - int CollateNoCase(const CStringBase& s) const
|
| - { return MyStringCollateNoCase(_chars, s._chars); }
|
| - */
|
| -
|
| - int Find(T c) const { return Find(c, 0); }
|
| - int Find(T c, int startIndex) const
|
| - {
|
| - T *p = _chars + startIndex;
|
| - for (;;)
|
| - {
|
| - if (*p == c)
|
| - return (int)(p - _chars);
|
| - if (*p == 0)
|
| - return -1;
|
| - p = GetNextCharPointer(p);
|
| - }
|
| - }
|
| - int Find(const CStringBase &s) const { return Find(s, 0); }
|
| - int Find(const CStringBase &s, int startIndex) const
|
| - {
|
| - if (s.IsEmpty())
|
| - return startIndex;
|
| - for (; startIndex < _length; startIndex++)
|
| - {
|
| - int j;
|
| - for (j = 0; j < s._length && startIndex + j < _length; j++)
|
| - if (_chars[startIndex+j] != s._chars[j])
|
| - break;
|
| - if (j == s._length)
|
| - return startIndex;
|
| - }
|
| - return -1;
|
| - }
|
| - int ReverseFind(T c) const
|
| - {
|
| - if (_length == 0)
|
| - return -1;
|
| - T *p = _chars + _length - 1;
|
| - for (;;)
|
| - {
|
| - if (*p == c)
|
| - return (int)(p - _chars);
|
| - if (p == _chars)
|
| - return -1;
|
| - p = GetPrevCharPointer(_chars, p);
|
| - }
|
| - }
|
| - int FindOneOf(const CStringBase &s) const
|
| - {
|
| - for (int i = 0; i < _length; i++)
|
| - if (s.Find(_chars[i]) >= 0)
|
| - return i;
|
| - return -1;
|
| - }
|
| -
|
| - void TrimLeft(T c)
|
| - {
|
| - const T *p = _chars;
|
| - while (c == *p)
|
| - p = GetNextCharPointer(p);
|
| - Delete(0, p - _chars);
|
| - }
|
| - private:
|
| - CStringBase GetTrimDefaultCharSet()
|
| - {
|
| - CStringBase<T> charSet;
|
| - charSet += (T)' ';
|
| - charSet += (T)'\n';
|
| - charSet += (T)'\t';
|
| - return charSet;
|
| - }
|
| - public:
|
| -
|
| - void TrimLeft()
|
| - {
|
| - TrimLeftWithCharSet(GetTrimDefaultCharSet());
|
| - }
|
| - void TrimRight()
|
| - {
|
| - TrimRightWithCharSet(GetTrimDefaultCharSet());
|
| - }
|
| - void TrimRight(T c)
|
| - {
|
| - const T *p = _chars;
|
| - const T *pLast = NULL;
|
| - while (*p != 0)
|
| - {
|
| - if (*p == c)
|
| - {
|
| - if (pLast == NULL)
|
| - pLast = p;
|
| - }
|
| - else
|
| - pLast = NULL;
|
| - p = GetNextCharPointer(p);
|
| - }
|
| - if (pLast != NULL)
|
| - {
|
| - int i = pLast - _chars;
|
| - Delete(i, _length - i);
|
| - }
|
| - }
|
| - void Trim()
|
| - {
|
| - TrimRight();
|
| - TrimLeft();
|
| - }
|
| -
|
| - int Insert(int index, T c)
|
| - {
|
| - InsertSpace(index, 1);
|
| - _chars[index] = c;
|
| - _length++;
|
| - return _length;
|
| - }
|
| - int Insert(int index, const CStringBase &s)
|
| - {
|
| - CorrectIndex(index);
|
| - if (s.IsEmpty())
|
| - return _length;
|
| - int numInsertChars = s.Length();
|
| - InsertSpace(index, numInsertChars);
|
| - for (int i = 0; i < numInsertChars; i++)
|
| - _chars[index + i] = s[i];
|
| - _length += numInsertChars;
|
| - return _length;
|
| - }
|
| -
|
| - // !!!!!!!!!!!!!!! test it if newChar = '\0'
|
| - int Replace(T oldChar, T newChar)
|
| - {
|
| - if (oldChar == newChar)
|
| - return 0;
|
| - int number = 0;
|
| - int pos = 0;
|
| - while (pos < Length())
|
| - {
|
| - pos = Find(oldChar, pos);
|
| - if (pos < 0)
|
| - break;
|
| - _chars[pos] = newChar;
|
| - pos++;
|
| - number++;
|
| - }
|
| - return number;
|
| - }
|
| - int Replace(const CStringBase &oldString, const CStringBase &newString)
|
| - {
|
| - if (oldString.IsEmpty())
|
| - return 0;
|
| - if (oldString == newString)
|
| - return 0;
|
| - int oldStringLength = oldString.Length();
|
| - int newStringLength = newString.Length();
|
| - int number = 0;
|
| - int pos = 0;
|
| - while (pos < _length)
|
| - {
|
| - pos = Find(oldString, pos);
|
| - if (pos < 0)
|
| - break;
|
| - Delete(pos, oldStringLength);
|
| - Insert(pos, newString);
|
| - pos += newStringLength;
|
| - number++;
|
| - }
|
| - return number;
|
| - }
|
| - int Delete(int index, int count = 1 )
|
| - {
|
| - if (index + count > _length)
|
| - count = _length - index;
|
| - if (count > 0)
|
| - {
|
| - MoveItems(index, index + count);
|
| - _length -= count;
|
| - }
|
| - return _length;
|
| - }
|
| -};
|
| -
|
| -template <class T>
|
| -CStringBase<T> operator+(const CStringBase<T>& s1, const CStringBase<T>& s2)
|
| -{
|
| - CStringBase<T> result(s1);
|
| - result += s2;
|
| - return result;
|
| -}
|
| -
|
| -template <class T>
|
| -CStringBase<T> operator+(const CStringBase<T>& s, T c)
|
| -{
|
| - CStringBase<T> result(s);
|
| - result += c;
|
| - return result;
|
| -}
|
| -
|
| -template <class T>
|
| -CStringBase<T> operator+(T c, const CStringBase<T>& s)
|
| -{
|
| - CStringBase<T> result(c);
|
| - result += s;
|
| - return result;
|
| -}
|
| -
|
| -template <class T>
|
| -CStringBase<T> operator+(const CStringBase<T>& s, const T * chars)
|
| -{
|
| - CStringBase<T> result(s);
|
| - result += chars;
|
| - return result;
|
| -}
|
| -
|
| -template <class T>
|
| -CStringBase<T> operator+(const T * chars, const CStringBase<T>& s)
|
| -{
|
| - CStringBase<T> result(chars);
|
| - result += s;
|
| - return result;
|
| -}
|
| -
|
| -template <class T>
|
| -bool operator==(const CStringBase<T>& s1, const CStringBase<T>& s2)
|
| - { return (s1.Compare(s2) == 0); }
|
| -
|
| -template <class T>
|
| -bool operator<(const CStringBase<T>& s1, const CStringBase<T>& s2)
|
| - { return (s1.Compare(s2) < 0); }
|
| -
|
| -template <class T>
|
| -bool operator==(const T *s1, const CStringBase<T>& s2)
|
| - { return (s2.Compare(s1) == 0); }
|
| -
|
| -template <class T>
|
| -bool operator==(const CStringBase<T>& s1, const T *s2)
|
| - { return (s1.Compare(s2) == 0); }
|
| -
|
| -template <class T>
|
| -bool operator!=(const CStringBase<T>& s1, const CStringBase<T>& s2)
|
| - { return (s1.Compare(s2) != 0); }
|
| -
|
| -template <class T>
|
| -bool operator!=(const T *s1, const CStringBase<T>& s2)
|
| - { return (s2.Compare(s1) != 0); }
|
| -
|
| -template <class T>
|
| -bool operator!=(const CStringBase<T>& s1, const T *s2)
|
| - { return (s1.Compare(s2) != 0); }
|
| -
|
| -typedef CStringBase<char> AString;
|
| -typedef CStringBase<wchar_t> UString;
|
| -
|
| -typedef CObjectVector<AString> AStringVector;
|
| -typedef CObjectVector<UString> UStringVector;
|
| -
|
| -#ifdef _UNICODE
|
| - typedef UString CSysString;
|
| -#else
|
| - typedef AString CSysString;
|
| -#endif
|
| -
|
| -typedef CObjectVector<CSysString> CSysStringVector;
|
| -
|
| -#endif
|
|
|