Main Page | Modules | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members | Related Pages
hugin_base/appbase/ExternalProgramSetup.h
Go to the documentation of this file.00001 // -*- c-basic-offset: 4 -*- 00031 #ifndef _APPBASE_EXTERNALPROGRAMSETUP_H 00032 #define _APPBASE_EXTERNALPROGRAMSETUP_H 00033 00034 00035 #include <set> 00036 #include <string> 00037 00038 #include <appbase/ExternalProgram.h> 00039 00040 00041 namespace AppBase { 00042 00044 class ExternalProgramSetup : public virtual ArgumentQuotator 00045 { 00046 public: 00047 typedef std::string String; 00048 typedef std::set<std::string> StringSet; 00049 00050 00051 public: 00053 ExternalProgramSetup() 00054 : m_quotator(m_defaultQuotator) 00055 {} 00056 00058 ExternalProgramSetup(ArgumentQuotator& quotator) 00059 : m_quotator(quotator) 00060 {} 00061 00063 virtual ~ExternalProgramSetup() {}; 00064 00065 00066 public: 00068 virtual String defaultCommand() const =0; 00069 00071 virtual String defaultArgumentTemplate() const =0; 00072 00074 virtual void setCommand(const String& command) 00075 { 00076 m_command = command; 00077 m_defaultCommand = false; 00078 }; 00079 00081 virtual String getCommand() const 00082 { 00083 return (m_defaultCommand)? defaultCommand() : m_command; 00084 }; 00085 00087 virtual void setArgumentTemplate(const String& argumentTemplate) 00088 { 00089 m_argumentTemplate = argumentTemplate; 00090 m_defaultArg = false; 00091 }; 00092 00094 virtual String getArgumentTemplate() const 00095 { 00096 return (m_defaultArg)? defaultArgumentTemplate() : m_argumentTemplate; 00097 }; 00098 00099 00100 public: 00102 virtual StringSet getAvailableStringKeywords() const =0; 00103 00105 virtual String getStringKeywordPrefix() const 00106 { return "{"; }; 00107 00109 virtual String getStringKeywordSuffix() const 00110 { return "}"; }; 00111 00112 protected: 00114 virtual String getStringForKeyword(const String& keyword) =0; 00115 00116 00117 public: 00119 virtual bool setupExternalProgram(ExternalProgram* externalProgram); 00120 00122 virtual String parseArgumentsFromTemplate(const String& argumentTemplate); 00123 00125 virtual String parseArgumentsFromTemplate(const String& argumentTemplate, 00126 ArgumentQuotator& quotator); 00127 00128 protected: 00130 virtual String quoteArgument(const String& argument) 00131 {return m_quotator.quoteArgument(argument);} 00132 00134 virtual String quoteFilename(const String& filename) 00135 {return m_quotator.quoteFilename(filename);} 00136 00137 00138 private: 00139 String m_command; 00140 String m_argumentTemplate; 00141 bool m_defaultCommand; 00142 bool m_defaultArg; 00143 00144 ArgumentQuotator& m_quotator; 00145 StandardArgumentQuotator m_defaultQuotator; 00146 }; 00147 00148 00149 } //namespace 00150 #endif //_H
1.3.9.1