64 lines
1.1 KiB
C
64 lines
1.1 KiB
C
|
// 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
|