// Common/CommandLineParser.h | |
#ifndef __COMMON_COMMAND_LINE_PARSER_H | |
#define __COMMON_COMMAND_LINE_PARSER_H | |
#include "MyString.h" | |
namespace NCommandLineParser { | |
bool SplitCommandLine(const UString &src, UString &dest1, UString &dest2); | |
void SplitCommandLine(const UString &s, UStringVector &parts); | |
namespace NSwitchType | |
{ | |
enum EEnum | |
{ | |
kSimple, | |
kMinus, | |
kString, | |
kChar | |
}; | |
} | |
struct CSwitchForm | |
{ | |
const char *Key; | |
Byte Type; | |
bool Multi; | |
Byte MinLen; | |
// int MaxLen; | |
const char *PostCharSet; | |
}; | |
struct CSwitchResult | |
{ | |
bool ThereIs; | |
bool WithMinus; | |
int PostCharIndex; | |
UStringVector PostStrings; | |
CSwitchResult(): ThereIs(false) {}; | |
}; | |
class CParser | |
{ | |
unsigned _numSwitches; | |
CSwitchResult *_switches; | |
bool ParseString(const UString &s, const CSwitchForm *switchForms); | |
public: | |
UStringVector NonSwitchStrings; | |
AString ErrorMessage; | |
UString ErrorLine; | |
CParser(unsigned numSwitches); | |
~CParser(); | |
bool ParseStrings(const CSwitchForm *switchForms, const UStringVector &commandStrings); | |
const CSwitchResult& operator[](size_t index) const { return _switches[index]; } | |
}; | |
} | |
#endif |