OSG  3.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ApplicationUsage.h
Go to the documentation of this file.
1 /* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
2  *
3  * This library is open source and may be redistributed and/or modified under
4  * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
5  * (at your option) any later version. The full license is in LICENSE file
6  * included with this distribution, and on the openscenegraph.org website.
7  *
8  * This library is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * OpenSceneGraph Public License for more details.
12 */
13 
14 #ifndef OSG_APPLICATIONUSAGE
15 #define OSG_APPLICATIONUSAGE 1
16 
17 #include <osg/Referenced>
18 
19 #include <map>
20 #include <string>
21 #include <ostream>
22 
23 namespace osg {
24 
26 {
27  public:
28 
29  static ApplicationUsage* instance();
30 
32 
33  ApplicationUsage(const std::string& commandLineUsage);
34 
35  typedef std::map<std::string,std::string> UsageMap;
36 
37 
39  void setApplicationName(const std::string& name) { _applicationName = name; }
40  const std::string& getApplicationName() const { return _applicationName; }
41 
44  void setDescription(const std::string& desc) { _description = desc; }
45  const std::string& getDescription() const { return _description; }
46 
47  enum Type
48  {
49  NO_HELP = 0x0,
50  COMMAND_LINE_OPTION = 0x1,
51  ENVIRONMENTAL_VARIABLE = 0x2,
52  KEYBOARD_MOUSE_BINDING = 0x4,
53  HELP_ALL = KEYBOARD_MOUSE_BINDING|ENVIRONMENTAL_VARIABLE|COMMAND_LINE_OPTION
54  };
55 
56  void addUsageExplanation(Type type,const std::string& option,const std::string& explanation);
57 
58  void setCommandLineUsage(const std::string& explanation) { _commandLineUsage=explanation; }
59  const std::string& getCommandLineUsage() const { return _commandLineUsage; }
60 
61 
62  void addCommandLineOption(const std::string& option,const std::string& explanation, const std::string &defaultValue = "");
63 
64  void setCommandLineOptions(const UsageMap& usageMap) { _commandLineOptions=usageMap; }
65  const UsageMap& getCommandLineOptions() const { return _commandLineOptions; }
66 
67  void setCommandLineOptionsDefaults(const UsageMap& usageMap) { _commandLineOptionsDefaults=usageMap; }
68  const UsageMap& getCommandLineOptionsDefaults() const { return _commandLineOptionsDefaults; }
69 
70 
71  void addEnvironmentalVariable(const std::string& option,const std::string& explanation, const std::string& defaultValue = "");
72 
73  void setEnvironmentalVariables(const UsageMap& usageMap) { _environmentalVariables=usageMap; }
74  const UsageMap& getEnvironmentalVariables() const { return _environmentalVariables; }
75 
76  void setEnvironmentalVariablesDefaults(const UsageMap& usageMap) { _environmentalVariablesDefaults=usageMap; }
77  const UsageMap& getEnvironmentalVariablesDefaults() const { return _environmentalVariablesDefaults; }
78 
79 
80  void addKeyboardMouseBinding(const std::string& prefix, int key, const std::string& explanation);
81  void addKeyboardMouseBinding(int key, const std::string& explanation);
82  void addKeyboardMouseBinding(const std::string& option,const std::string& explanation);
83 
84  void setKeyboardMouseBindings(const UsageMap& usageMap) { _keyboardMouse=usageMap; }
85  const UsageMap& getKeyboardMouseBindings() const { return _keyboardMouse; }
86 
87 
88  void getFormattedString(std::string& str, const UsageMap& um,unsigned int widthOfOutput=80,bool showDefaults=false,const UsageMap& ud=UsageMap());
89 
90  void write(std::ostream& output,const UsageMap& um,unsigned int widthOfOutput=80,bool showDefaults=false,const UsageMap& ud=UsageMap());
91 
92  void write(std::ostream& output,unsigned int type=COMMAND_LINE_OPTION, unsigned int widthOfOutput=80,bool showDefaults=false);
93 
94  void writeEnvironmentSettings(std::ostream& output);
95 
96  protected:
97 
98  virtual ~ApplicationUsage() {}
99 
100  std::string _applicationName;
101  std::string _description;
102  std::string _commandLineUsage;
105  UsageMap _keyboardMouse;
108 
109 };
110 
112 {
113  public:
114 
116  ApplicationUsageProxy(ApplicationUsage::Type type,const std::string& option,const std::string& explanation)
117  {
118  ApplicationUsage::instance()->addUsageExplanation(type,option,explanation);
119  }
120 };
121 
122 }
123 
124 #endif
#define OSG_EXPORT
Definition: Export.h:43
const std::string & getDescription() const
std::map< std::string, std::string > UsageMap
const UsageMap & getCommandLineOptions() const
void addUsageExplanation(Type type, const std::string &option, const std::string &explanation)
static ApplicationUsage * instance()
UsageMap _commandLineOptionsDefaults
void setEnvironmentalVariables(const UsageMap &usageMap)
const UsageMap & getCommandLineOptionsDefaults() const
const UsageMap & getKeyboardMouseBindings() const
void setCommandLineOptions(const UsageMap &usageMap)
const UsageMap & getEnvironmentalVariablesDefaults() const
const std::string & getCommandLineUsage() const
void setApplicationName(const std::string &name)
void setDescription(const std::string &desc)
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum type
Definition: GLU.h:71
void setKeyboardMouseBindings(const UsageMap &usageMap)
const UsageMap & getEnvironmentalVariables() const
const std::string & getApplicationName() const
ApplicationUsageProxy(ApplicationUsage::Type type, const std::string &option, const std::string &explanation)
Definition: AlphaFunc.h:19
UsageMap _environmentalVariablesDefaults
void setEnvironmentalVariablesDefaults(const UsageMap &usageMap)
void setCommandLineUsage(const std::string &explanation)
void setCommandLineOptionsDefaults(const UsageMap &usageMap)