| OLD | NEW |
| (Empty) |
| 1 // Common/CommandLineParser.h | |
| 2 | |
| 3 #ifndef __COMMON_COMMANDLINEPARSER_H | |
| 4 #define __COMMON_COMMANDLINEPARSER_H | |
| 5 | |
| 6 #include "MyString.h" | |
| 7 | |
| 8 namespace NCommandLineParser { | |
| 9 | |
| 10 void SplitCommandLine(const UString &src, UString &dest1, UString &dest2); | |
| 11 void SplitCommandLine(const UString &s, UStringVector &parts); | |
| 12 | |
| 13 namespace NSwitchType { | |
| 14 enum EEnum | |
| 15 { | |
| 16 kSimple, | |
| 17 kPostMinus, | |
| 18 kLimitedPostString, | |
| 19 kUnLimitedPostString, | |
| 20 kPostChar | |
| 21 }; | |
| 22 } | |
| 23 | |
| 24 struct CSwitchForm | |
| 25 { | |
| 26 const wchar_t *IDString; | |
| 27 NSwitchType::EEnum Type; | |
| 28 bool Multi; | |
| 29 int MinLen; | |
| 30 int MaxLen; | |
| 31 const wchar_t *PostCharSet; | |
| 32 }; | |
| 33 | |
| 34 struct CSwitchResult | |
| 35 { | |
| 36 bool ThereIs; | |
| 37 bool WithMinus; | |
| 38 UStringVector PostStrings; | |
| 39 int PostCharIndex; | |
| 40 CSwitchResult(): ThereIs(false) {}; | |
| 41 }; | |
| 42 | |
| 43 class CParser | |
| 44 { | |
| 45 int _numSwitches; | |
| 46 CSwitchResult *_switches; | |
| 47 bool ParseString(const UString &s, const CSwitchForm *switchForms); | |
| 48 public: | |
| 49 UStringVector NonSwitchStrings; | |
| 50 CParser(int numSwitches); | |
| 51 ~CParser(); | |
| 52 void ParseStrings(const CSwitchForm *switchForms, | |
| 53 const UStringVector &commandStrings); | |
| 54 const CSwitchResult& operator[](size_t index) const; | |
| 55 }; | |
| 56 | |
| 57 ///////////////////////////////// | |
| 58 // Command parsing procedures | |
| 59 | |
| 60 struct CCommandForm | |
| 61 { | |
| 62 wchar_t *IDString; | |
| 63 bool PostStringMode; | |
| 64 }; | |
| 65 | |
| 66 // Returns: Index of form and postString; -1, if there is no match | |
| 67 int ParseCommand(int numCommandForms, const CCommandForm *commandForms, | |
| 68 const UString &commandString, UString &postString); | |
| 69 | |
| 70 } | |
| 71 | |
| 72 #endif | |
| OLD | NEW |