summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/uscxml/Factory.cpp59
-rw-r--r--src/uscxml/Factory.h4
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;