diff options
author | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2012-12-16 00:12:53 (GMT) |
---|---|---|
committer | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2012-12-16 00:12:53 (GMT) |
commit | d779abe6ff76a78f92d229fcf1f006f5cf1f9295 (patch) | |
tree | 8eded727de91266ba90610cda760c5274e296886 /src | |
parent | c78b469790301e3353b561137839c4a2e2ba1673 (diff) | |
download | uscxml-d779abe6ff76a78f92d229fcf1f006f5cf1f9295.zip uscxml-d779abe6ff76a78f92d229fcf1f006f5cf1f9295.tar.gz uscxml-d779abe6ff76a78f92d229fcf1f006f5cf1f9295.tar.bz2 |
Take pluginpath as argument
Diffstat (limited to 'src')
-rw-r--r-- | src/uscxml/Factory.cpp | 59 | ||||
-rw-r--r-- | src/uscxml/Factory.h | 4 |
2 files changed, 33 insertions, 30 deletions
diff --git a/src/uscxml/Factory.cpp b/src/uscxml/Factory.cpp index fdbbbc3..9f16503 100644 --- a/src/uscxml/Factory.cpp +++ b/src/uscxml/Factory.cpp @@ -18,37 +18,38 @@ #endif namespace uscxml { - + Factory::Factory() { #ifdef BUILD_AS_PLUGINS - pluma.acceptProviderType<InvokerProvider>(); - pluma.acceptProviderType<IOProcessorProvider>(); - pluma.acceptProviderType<DataModelProvider>(); - pluma.loadFromFolder("/Users/sradomski/Documents/TK/Code/uscxml/build/xcode/lib"); - - std::vector<InvokerProvider*> invokerProviders; - pluma.getProviders(invokerProviders); - for (std::vector<InvokerProvider*>::iterator it = invokerProviders.begin() ; it != invokerProviders.end() ; ++it) { - Invoker* invoker = (*it)->create(); - registerInvoker(invoker); - } - - std::vector<IOProcessorProvider*> ioProcessorProviders; - pluma.getProviders(ioProcessorProviders); - for (std::vector<IOProcessorProvider*>::iterator it = ioProcessorProviders.begin() ; it != ioProcessorProviders.end() ; ++it) { - IOProcessor* ioProcessor = (*it)->create(); - registerIOProcessor(ioProcessor); + if (pluginPath.length() > 0) { + pluma.acceptProviderType<InvokerProvider>(); + pluma.acceptProviderType<IOProcessorProvider>(); + pluma.acceptProviderType<DataModelProvider>(); + pluma.loadFromFolder(pluginPath); + + std::vector<InvokerProvider*> invokerProviders; + pluma.getProviders(invokerProviders); + for (std::vector<InvokerProvider*>::iterator it = invokerProviders.begin() ; it != invokerProviders.end() ; ++it) { + Invoker* invoker = (*it)->create(); + registerInvoker(invoker); + } + + std::vector<IOProcessorProvider*> ioProcessorProviders; + pluma.getProviders(ioProcessorProviders); + for (std::vector<IOProcessorProvider*>::iterator it = ioProcessorProviders.begin() ; it != ioProcessorProviders.end() ; ++it) { + IOProcessor* ioProcessor = (*it)->create(); + registerIOProcessor(ioProcessor); + } + + std::vector<DataModelProvider*> dataModelProviders; + pluma.getProviders(dataModelProviders); + for (std::vector<DataModelProvider*>::iterator it = dataModelProviders.begin() ; it != dataModelProviders.end() ; ++it) { + DataModel* dataModel = (*it)->create(); + registerDataModel(dataModel); + } + + pluma.unloadAll(); } - - std::vector<DataModelProvider*> dataModelProviders; - pluma.getProviders(dataModelProviders); - for (std::vector<DataModelProvider*>::iterator it = dataModelProviders.begin() ; it != dataModelProviders.end() ; ++it) { - DataModel* dataModel = (*it)->create(); - registerDataModel(dataModel); - } - - pluma.unloadAll(); - #else #ifdef UMUNDO_FOUND { @@ -150,5 +151,5 @@ namespace uscxml { } Factory* Factory::_instance = NULL; - + std::string Factory::pluginPath; }
\ No newline at end of file diff --git a/src/uscxml/Factory.h b/src/uscxml/Factory.h index 24d74e3..fcd907e 100644 --- a/src/uscxml/Factory.h +++ b/src/uscxml/Factory.h @@ -11,7 +11,7 @@ #include <set> namespace uscxml { - + // see http://stackoverflow.com/questions/228005/alternative-to-itoa-for-converting-integer-to-string-c template <typename T> std::string toStr(T tmp) { std::ostringstream out; @@ -95,6 +95,8 @@ namespace uscxml { std::map<std::string, Invoker*> _invokers; std::map<std::string, ExecutableContent*> _executableContent; + static std::string pluginPath; + protected: #ifdef BUILD_AS_PLUGINS pluma::Pluma pluma; |