other-licenses/7zstub/src/Common/CommandLineParser.h

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:9cdb81450ed4
1 // Common/CommandLineParser.h
2
3 #ifndef __COMMON_COMMANDLINEPARSER_H
4 #define __COMMON_COMMANDLINEPARSER_H
5
6 #include "Common/String.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

mercurial