Source code
Revision control
Copy as Markdown
Other Tools
// 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↩
{↩
CSwitchResult *_switches;↩
↩
bool ParseString(const UString &s, const CSwitchForm *switchForms, unsigned numSwitches);↩
public:↩
UStringVector NonSwitchStrings;↩
int StopSwitchIndex; // NonSwitchStrings[StopSwitchIndex+] are after "--"↩
AString ErrorMessage;↩
UString ErrorLine;↩
↩
CParser();↩
~CParser();↩
bool ParseStrings(const CSwitchForm *switchForms, unsigned numSwitches, const UStringVector &commandStrings);↩
const CSwitchResult& operator[](unsigned index) const { return _switches[index]; }↩
};↩
↩
}↩
↩
#endif↩