| Index: third_party/lzma/v4_65/files/CPP/Common/CommandLineParser.cpp
|
| diff --git a/third_party/lzma/v4_65/files/CPP/Common/CommandLineParser.cpp b/third_party/lzma/v4_65/files/CPP/Common/CommandLineParser.cpp
|
| deleted file mode 100644
|
| index 6de5e63b620d88f717cf7465613b3d1e7f84608c..0000000000000000000000000000000000000000
|
| --- a/third_party/lzma/v4_65/files/CPP/Common/CommandLineParser.cpp
|
| +++ /dev/null
|
| @@ -1,232 +0,0 @@
|
| -// CommandLineParser.cpp
|
| -
|
| -#include "StdAfx.h"
|
| -
|
| -#include "CommandLineParser.h"
|
| -
|
| -namespace NCommandLineParser {
|
| -
|
| -void SplitCommandLine(const UString &src, UString &dest1, UString &dest2)
|
| -{
|
| - dest1.Empty();
|
| - dest2.Empty();
|
| - bool quoteMode = false;
|
| - int i;
|
| - for (i = 0; i < src.Length(); i++)
|
| - {
|
| - wchar_t c = src[i];
|
| - if (c == L'\"')
|
| - quoteMode = !quoteMode;
|
| - else if (c == L' ' && !quoteMode)
|
| - {
|
| - i++;
|
| - break;
|
| - }
|
| - else
|
| - dest1 += c;
|
| - }
|
| - dest2 = src.Mid(i);
|
| -}
|
| -
|
| -void SplitCommandLine(const UString &s, UStringVector &parts)
|
| -{
|
| - UString sTemp = s;
|
| - sTemp.Trim();
|
| - parts.Clear();
|
| - for (;;)
|
| - {
|
| - UString s1, s2;
|
| - SplitCommandLine(sTemp, s1, s2);
|
| - // s1.Trim();
|
| - // s2.Trim();
|
| - if (!s1.IsEmpty())
|
| - parts.Add(s1);
|
| - if (s2.IsEmpty())
|
| - break;
|
| - sTemp = s2;
|
| - }
|
| -}
|
| -
|
| -
|
| -static const wchar_t kSwitchID1 = '-';
|
| -// static const wchar_t kSwitchID2 = '/';
|
| -
|
| -static const wchar_t kSwitchMinus = '-';
|
| -static const wchar_t *kStopSwitchParsing = L"--";
|
| -
|
| -static bool IsItSwitchChar(wchar_t c)
|
| -{
|
| - return (c == kSwitchID1 /*|| c == kSwitchID2 */);
|
| -}
|
| -
|
| -CParser::CParser(int numSwitches):
|
| - _numSwitches(numSwitches)
|
| -{
|
| - _switches = new CSwitchResult[_numSwitches];
|
| -}
|
| -
|
| -CParser::~CParser()
|
| -{
|
| - delete []_switches;
|
| -}
|
| -
|
| -void CParser::ParseStrings(const CSwitchForm *switchForms,
|
| - const UStringVector &commandStrings)
|
| -{
|
| - int numCommandStrings = commandStrings.Size();
|
| - bool stopSwitch = false;
|
| - for (int i = 0; i < numCommandStrings; i++)
|
| - {
|
| - const UString &s = commandStrings[i];
|
| - if (stopSwitch)
|
| - NonSwitchStrings.Add(s);
|
| - else
|
| - if (s == kStopSwitchParsing)
|
| - stopSwitch = true;
|
| - else
|
| - if (!ParseString(s, switchForms))
|
| - NonSwitchStrings.Add(s);
|
| - }
|
| -}
|
| -
|
| -// if string contains switch then function updates switch structures
|
| -// out: (string is a switch)
|
| -bool CParser::ParseString(const UString &s, const CSwitchForm *switchForms)
|
| -{
|
| - int len = s.Length();
|
| - if (len == 0)
|
| - return false;
|
| - int pos = 0;
|
| - if (!IsItSwitchChar(s[pos]))
|
| - return false;
|
| - while (pos < len)
|
| - {
|
| - if (IsItSwitchChar(s[pos]))
|
| - pos++;
|
| - const int kNoLen = -1;
|
| - int matchedSwitchIndex = 0; // GCC Warning
|
| - int maxLen = kNoLen;
|
| - for (int switchIndex = 0; switchIndex < _numSwitches; switchIndex++)
|
| - {
|
| - int switchLen = MyStringLen(switchForms[switchIndex].IDString);
|
| - if (switchLen <= maxLen || pos + switchLen > len)
|
| - continue;
|
| -
|
| - UString temp = s + pos;
|
| - temp = temp.Left(switchLen);
|
| - if (temp.CompareNoCase(switchForms[switchIndex].IDString) == 0)
|
| - // if (_strnicmp(switchForms[switchIndex].IDString, LPCSTR(s) + pos, switchLen) == 0)
|
| - {
|
| - matchedSwitchIndex = switchIndex;
|
| - maxLen = switchLen;
|
| - }
|
| - }
|
| - if (maxLen == kNoLen)
|
| - throw "maxLen == kNoLen";
|
| - CSwitchResult &matchedSwitch = _switches[matchedSwitchIndex];
|
| - const CSwitchForm &switchForm = switchForms[matchedSwitchIndex];
|
| - if ((!switchForm.Multi) && matchedSwitch.ThereIs)
|
| - throw "switch must be single";
|
| - matchedSwitch.ThereIs = true;
|
| - pos += maxLen;
|
| - int tailSize = len - pos;
|
| - NSwitchType::EEnum type = switchForm.Type;
|
| - switch(type)
|
| - {
|
| - case NSwitchType::kPostMinus:
|
| - {
|
| - if (tailSize == 0)
|
| - matchedSwitch.WithMinus = false;
|
| - else
|
| - {
|
| - matchedSwitch.WithMinus = (s[pos] == kSwitchMinus);
|
| - if (matchedSwitch.WithMinus)
|
| - pos++;
|
| - }
|
| - break;
|
| - }
|
| - case NSwitchType::kPostChar:
|
| - {
|
| - if (tailSize < switchForm.MinLen)
|
| - throw "switch is not full";
|
| - UString set = switchForm.PostCharSet;
|
| - const int kEmptyCharValue = -1;
|
| - if (tailSize == 0)
|
| - matchedSwitch.PostCharIndex = kEmptyCharValue;
|
| - else
|
| - {
|
| - int index = set.Find(s[pos]);
|
| - if (index < 0)
|
| - matchedSwitch.PostCharIndex = kEmptyCharValue;
|
| - else
|
| - {
|
| - matchedSwitch.PostCharIndex = index;
|
| - pos++;
|
| - }
|
| - }
|
| - break;
|
| - }
|
| - case NSwitchType::kLimitedPostString:
|
| - case NSwitchType::kUnLimitedPostString:
|
| - {
|
| - int minLen = switchForm.MinLen;
|
| - if (tailSize < minLen)
|
| - throw "switch is not full";
|
| - if (type == NSwitchType::kUnLimitedPostString)
|
| - {
|
| - matchedSwitch.PostStrings.Add(s.Mid(pos));
|
| - return true;
|
| - }
|
| - int maxLen = switchForm.MaxLen;
|
| - UString stringSwitch = s.Mid(pos, minLen);
|
| - pos += minLen;
|
| - for (int i = minLen; i < maxLen && pos < len; i++, pos++)
|
| - {
|
| - wchar_t c = s[pos];
|
| - if (IsItSwitchChar(c))
|
| - break;
|
| - stringSwitch += c;
|
| - }
|
| - matchedSwitch.PostStrings.Add(stringSwitch);
|
| - break;
|
| - }
|
| - case NSwitchType::kSimple:
|
| - break;
|
| - }
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -const CSwitchResult& CParser::operator[](size_t index) const
|
| -{
|
| - return _switches[index];
|
| -}
|
| -
|
| -/////////////////////////////////
|
| -// Command parsing procedures
|
| -
|
| -int ParseCommand(int numCommandForms, const CCommandForm *commandForms,
|
| - const UString &commandString, UString &postString)
|
| -{
|
| - for (int i = 0; i < numCommandForms; i++)
|
| - {
|
| - const UString id = commandForms[i].IDString;
|
| - if (commandForms[i].PostStringMode)
|
| - {
|
| - if (commandString.Find(id) == 0)
|
| - {
|
| - postString = commandString.Mid(id.Length());
|
| - return i;
|
| - }
|
| - }
|
| - else
|
| - if (commandString == id)
|
| - {
|
| - postString.Empty();
|
| - return i;
|
| - }
|
| - }
|
| - return -1;
|
| -}
|
| -
|
| -}
|
|
|