Annotation of elwix/tools/oldlzma/SRC/Common/CommandLineParser.h, revision 1.1
1.1 ! misho 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: struct CCommandSubCharsSet
! 71: {
! 72: wchar_t *Chars;
! 73: bool EmptyAllowed;
! 74: };
! 75:
! 76: // Returns: indices of finded chars; -1 if there is no match
! 77: bool ParseSubCharsCommand(int numForms, const CCommandSubCharsSet *forms,
! 78: const UString &commandString, CIntVector &indices);
! 79:
! 80: }
! 81:
! 82: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>