1 //------------------------------------------------------------------------- 2 // 3 // This code was taken from Open Scene Graph and incorporated from into 4 // OSSIM. 5 // 6 //------------------------------------------------------------------------- 7 // $Id: ossimApplicationUsage.h 19692 2011-05-31 16:55:47Z dburken $ 8 #ifndef ossimApplicationUsage_HEADER 9 #define ossimApplicationUsage_HEADER 1 10 11 #include <ossim/base/ossimConstants.h> 12 #include <ossim/base/ossimString.h> 13 #include <map> 14 15 class OSSIMDLLEXPORT ossimApplicationUsage 16 { 17 public: 18 19 static ossimApplicationUsage* instance(); 20 ossimApplicationUsage()21 ossimApplicationUsage() {} 22 23 ossimApplicationUsage(const ossimString& commandLineUsage); 24 25 typedef std::map<ossimString,ossimString,ossimStringLtstr> UsageMap; 26 27 void setApplicationName(const ossimString& name); 28 const ossimString& getApplicationName() const; 29 30 void setDescription(const ossimString& desc); 31 const ossimString& getDescription() const; 32 33 enum Type 34 { 35 OSSIM_COMMAND_LINE_OPTION = 0x1, 36 OSSIM_ENVIRONMENTAL_VARIABLE = 0x2 37 }; 38 39 void addUsageExplanation(Type type,const ossimString& option,const ossimString& explanation); 40 41 void setCommandLineUsage(const ossimString& explanation); 42 43 const ossimString& getCommandLineUsage() const; 44 45 46 void addCommandLineOption(const ossimString& option,const ossimString& explanation); 47 48 const UsageMap& getCommandLineOptions() const; 49 50 51 void addEnvironmentalVariable(const ossimString& option,const ossimString& explanation); 52 53 const UsageMap& getEnvironmentalVariables() const; 54 55 56 void write(std::ostream& output, const UsageMap& um); 57 58 void write(std::ostream& output, 59 unsigned int type=OSSIM_COMMAND_LINE_OPTION|OSSIM_ENVIRONMENTAL_VARIABLE); 60 61 protected: 62 void getFormatedString(ossimString& str, 63 const UsageMap& um); 64 65 ossimString theApplicationName; 66 ossimString theDescription; 67 ossimString theCommandLineUsage; 68 UsageMap theCommandLineOptions; 69 UsageMap theEnvironmentalVariables; 70 }; 71 72 class ApplicationUsageProxy 73 { 74 public: 75 76 /** register an explanation of commandline/evironmentalvaraible/keyboard mouse usage.*/ ApplicationUsageProxy(ossimApplicationUsage::Type type,const ossimString & option,const ossimString & explanation)77 ApplicationUsageProxy(ossimApplicationUsage::Type type,const ossimString& option,const ossimString& explanation) 78 { 79 ossimApplicationUsage::instance()->addUsageExplanation(type,option,explanation); 80 } 81 }; 82 83 84 #endif 85