tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

CommandLineParser.h (1290B)


      1 // Common/CommandLineParser.h
      2 
      3 #ifndef __COMMON_COMMAND_LINE_PARSER_H
      4 #define __COMMON_COMMAND_LINE_PARSER_H
      5 
      6 #include "MyString.h"
      7 
      8 namespace NCommandLineParser {
      9 
     10 bool SplitCommandLine(const UString &src, UString &dest1, UString &dest2);
     11 void SplitCommandLine(const UString &s, UStringVector &parts);
     12 
     13 namespace NSwitchType
     14 {
     15  enum EEnum
     16  {
     17    kSimple,
     18    kMinus,
     19    kString,
     20    kChar
     21  };
     22 }
     23 
     24 struct CSwitchForm
     25 {
     26  const char *Key;
     27  Byte Type;
     28  bool Multi;
     29  Byte MinLen;
     30  // int MaxLen;
     31  const char *PostCharSet;
     32 };
     33 
     34 struct CSwitchResult
     35 {
     36  bool ThereIs;
     37  bool WithMinus;
     38  int PostCharIndex;
     39  UStringVector PostStrings;
     40  
     41  CSwitchResult(): ThereIs(false) {};
     42 };
     43  
     44 class CParser
     45 {
     46  CSwitchResult *_switches;
     47 
     48  bool ParseString(const UString &s, const CSwitchForm *switchForms, unsigned numSwitches);
     49 public:
     50  UStringVector NonSwitchStrings;
     51  int StopSwitchIndex;  // NonSwitchStrings[StopSwitchIndex+] are after "--"
     52  AString ErrorMessage;
     53  UString ErrorLine;
     54  
     55  CParser();
     56  ~CParser();
     57  bool ParseStrings(const CSwitchForm *switchForms, unsigned numSwitches, const UStringVector &commandStrings);
     58  const CSwitchResult& operator[](unsigned index) const { return _switches[index]; }
     59 };
     60 
     61 }
     62 
     63 #endif