[an error occurred while processing this directive]
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

Generated on Mon Sep 20 01:01:27 2010 for Hugintrunk by doxygen 1.3.9.1