mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-07 07:14:56 -06:00
Initialer Commit
This commit is contained in:
63
CPP/Common/CommandLineParser.h
Normal file
63
CPP/Common/CommandLineParser.h
Normal file
@@ -0,0 +1,63 @@
|
||||
// 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
|
||||
Reference in New Issue
Block a user