FONTAINE  1.0
CLP.h
Go to the documentation of this file.
1 //
3 // This file is part of the MADELINE 2 program
4 // written by Edward H. Trager and Ritu Khanna
5 // Copyright (c) 2005 by the
6 // Regents of the University of Michigan.
7 // All Rights Reserved.
8 //
9 // The latest version of this program is available from:
10 //
11 // http://eyegene.ophthy.med.umich.edu/madeline/
12 //
13 // Released under the GNU General Public License.
14 // A copy of the GPL is included in the distribution
15 // package of this software, or see:
16 //
17 // http://www.gnu.org/copyleft/
18 //
19 // ... for licensing details.
20 //
22 
23 #ifndef CLP_INCLUDED
24 #define CLP_INCLUDED
25 
26 #include <iostream>
27 #include <map>
28 #include <set>
29 #include <vector>
30 
31 class CLS{
32 private:
33  std::string _name;
34  std::string _shortName;
35  std::string _description;
37  std::vector<std::string> _switchArguments;
38  bool _isSet;
39 
40 public:
41  CLS(std::string name, std::string shortName, std::string description, unsigned numberOfSwitchArguments);
42  void setSwitch(void) { _isSet = true; }
43  void addSwitchArgument(std::string argument) { _switchArguments.push_back(argument); }
44  void resetSwitch() { _isSet = false; }
46  bool isSet(void){ return _isSet; }
47  std::string getSwitchArgument(unsigned index){ return _switchArguments[index]; }
48  const std::string getDescription(void) const{ return _description; }
49  const std::string getShortName(void) const{ return _shortName; }
50 };
51 
52 class CLP{
53 
54 private:
55 
56  std::string _name;
57  std::string _version;
58  std::string _copyright;
59  std::string _url;
60  std::string _usage;
61 
62  std::map<std::string,std::string> _shortSwitchMapping;
63  std::map<std::string, CLS> _switches;
64  std::vector<std::string> _arguments;
65  std::vector<std::string> _networkArguments;
66  std::vector<std::string> _mysqlArguments;
67  const static std::string _NETWORK_TYPE;
68  const static std::string _NETWORK_TYPE_SECURE;
69  const static std::string _MYSQL_TYPE;
70  void _setSwitchArguments(std::string currentSwitch,unsigned int argc,const char* argv[],unsigned int& currentIndex,CLS& cls);
71  void _processMysqlArguments(std::string argument);
72  std::string _getShortSwitchNameMapping(const std::string& shortName);
73  bool _shortNameExists(const std::string& shortName);
74 
75 public:
76 
77  // CONSTRUCTOR:
78  CLP(std::string name,std::string version,std::string copyright,std::string url,std::string usage);
79 
80  void addUsage(const std::string usage);
81  void addSwitch(std::string name,std::string shortName,std::string description,unsigned numberOfArguments=0);
82  std::string getSwitchArgument(std::string name,unsigned index);
83  bool parse(unsigned int argc,const char* argv[]);
84  bool hasSwitchSet(std::string name);
85  const std::vector<std::string>& getArguments();
86  const std::vector<std::string>& getNetworkArguments();
87  const std::vector<std::string>& getMysqlArguments();
88  bool hasMysqlArguments(){ if(_mysqlArguments.size()) return true; return false; }
89 
90  void printCopyrightNotice() const;
91  void printHelp() const;
92  void printArguments() const;
93 
94 };
95 
96 #endif
void setSwitch(void)
Definition: CLP.h:42
const std::string getShortName(void) const
Definition: CLP.h:49
std::string _shortName
Definition: CLP.h:34
std::vector< std::string > _switchArguments
Definition: CLP.h:37
const std::string getDescription(void) const
Definition: CLP.h:48
static const std::string _MYSQL_TYPE
Definition: CLP.h:69
static const std::string _NETWORK_TYPE_SECURE
Definition: CLP.h:68
std::string getSwitchArgument(unsigned index)
Definition: CLP.h:47
Definition: CLP.h:31
std::string _name
Definition: CLP.h:56
bool hasMysqlArguments()
Definition: CLP.h:88
std::vector< std::string > _networkArguments
Definition: CLP.h:65
std::string _description
Definition: CLP.h:35
unsigned _numberOfSwitchArguments
Definition: CLP.h:36
void resetSwitch()
Definition: CLP.h:44
bool _isSet
Definition: CLP.h:38
CLS(std::string name, std::string shortName, std::string description, unsigned numberOfSwitchArguments)
Definition: CLP.cpp:390
std::string _usage
Definition: CLP.h:60
std::string _copyright
Definition: CLP.h:58
unsigned getNumberOfSwitchArguments(void)
Definition: CLP.h:45
bool isSet(void)
Definition: CLP.h:46
std::string _version
Definition: CLP.h:57
std::string _url
Definition: CLP.h:59
void addSwitchArgument(std::string argument)
Definition: CLP.h:43
static const std::string _NETWORK_TYPE
Definition: CLP.h:67
std::vector< std::string > _mysqlArguments
Definition: CLP.h:66
std::string _name
Definition: CLP.h:33
std::map< std::string, std::string > _shortSwitchMapping
Definition: CLP.h:62
Definition: CLP.h:52
std::map< std::string, CLS > _switches
Definition: CLP.h:63
std::vector< std::string > _arguments
Definition: CLP.h:64