summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins
diff options
context:
space:
mode:
authorStefan Radomski <github@mintwerk.de>2017-01-27 21:54:43 (GMT)
committerStefan Radomski <github@mintwerk.de>2017-01-27 21:54:43 (GMT)
commit7f83038a1ef642b883417cc984d1f8ca9f0bc64b (patch)
treefd9236e866a06b250992e84bbf41324adf93a9fd /src/uscxml/plugins
parentb450411ee8f0a57f3ec3909d65ecc289189e2b35 (diff)
downloaduscxml-7f83038a1ef642b883417cc984d1f8ca9f0bc64b.zip
uscxml-7f83038a1ef642b883417cc984d1f8ca9f0bc64b.tar.gz
uscxml-7f83038a1ef642b883417cc984d1f8ca9f0bc64b.tar.bz2
Reactivated BUILD_AS_PLUGINS
Diffstat (limited to 'src/uscxml/plugins')
-rw-r--r--src/uscxml/plugins/Factory.cpp92
-rw-r--r--src/uscxml/plugins/Factory.h4
-rw-r--r--src/uscxml/plugins/Plugins.cpp31
-rw-r--r--src/uscxml/plugins/Plugins.h41
-rw-r--r--src/uscxml/plugins/datamodel/CMakeLists.txt94
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp11
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.h2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp12
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.h1
-rw-r--r--src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp31
-rw-r--r--src/uscxml/plugins/datamodel/lua/LuaDataModel.h3
-rw-r--r--src/uscxml/plugins/datamodel/null/NULLDataModel.cpp18
-rw-r--r--src/uscxml/plugins/datamodel/null/NULLDataModel.h9
-rw-r--r--src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp6
-rw-r--r--src/uscxml/plugins/datamodel/promela/PromelaDataModel.h3
-rw-r--r--src/uscxml/plugins/datamodel/promela/PromelaParser.cpp4
-rw-r--r--src/uscxml/plugins/datamodel/promela/PromelaParser.h2
-rw-r--r--src/uscxml/plugins/invoker/CMakeLists.txt22
-rw-r--r--src/uscxml/plugins/invoker/dirmon/DirMonInvoker.cpp4
-rw-r--r--src/uscxml/plugins/invoker/dirmon/DirMonInvoker.h3
-rw-r--r--src/uscxml/plugins/invoker/scxml/USCXMLInvoker.cpp6
-rw-r--r--src/uscxml/plugins/invoker/scxml/USCXMLInvoker.h3
-rw-r--r--src/uscxml/plugins/ioprocessor/CMakeLists.txt27
-rw-r--r--src/uscxml/plugins/ioprocessor/basichttp/BasicHTTPIOProcessor.h9
-rw-r--r--src/uscxml/plugins/ioprocessor/scxml/SCXMLIOProcessor.cpp12
-rw-r--r--src/uscxml/plugins/ioprocessor/scxml/SCXMLIOProcessor.h9
26 files changed, 381 insertions, 78 deletions
diff --git a/src/uscxml/plugins/Factory.cpp b/src/uscxml/plugins/Factory.cpp
index b609955..0b9104e 100644
--- a/src/uscxml/plugins/Factory.cpp
+++ b/src/uscxml/plugins/Factory.cpp
@@ -33,10 +33,21 @@
#include "uscxml/plugins/InvokerImpl.h"
#include "uscxml/plugins/DataModelImpl.h"
+#include <xercesc/dom/DOM.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
+#include "uscxml/util/DOM.h"
+
+#include <iostream>
// see http://nadeausoftware.com/articles/2012/01/c_c_tip_how_use_compiler_predefined_macros_detect_operating_system
+/*** BEGIN PLUGINS ***/
+
+#ifdef BUILD_AS_PLUGINS
+# include "uscxml/plugins/Plugins.h"
+#else
+
#ifdef WITH_IOPROC_SCXML
# include "uscxml/plugins/ioprocessor/scxml/SCXMLIOProcessor.h"
#endif
@@ -45,10 +56,9 @@
# include "uscxml/plugins/ioprocessor/basichttp/BasicHTTPIOProcessor.h"
#endif
+#include "uscxml/plugins/datamodel/null/NullDataModel.h"
-#include "uscxml/plugins/datamodel/null/NULLDataModel.h"
-
-#ifdef WITH_DM_ECMA_V8
+#if defined WITH_DM_ECMA_V8
# include "uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.h"
#endif
@@ -77,6 +87,9 @@
# include "uscxml/plugins/invoker/dirmon/DirMonInvoker.h"
#endif
+#endif
+/*** END PLUGINS ***/
+
namespace uscxml {
@@ -98,8 +111,62 @@ std::string Factory::getDefaultPluginPath() {
return _defaultPluginPath;
}
+Factory::~Factory() {
+#ifdef BUILD_AS_PLUGINS
+ pluma.unloadAll();
+#endif
+}
+
void Factory::registerPlugins() {
+ /*** PLUGINS ***/
+#ifdef BUILD_AS_PLUGINS
+
+ if (_pluginPath.length() == 0) {
+ // try to read USCXML_PLUGIN_PATH environment variable
+ _pluginPath = (getenv("USCXML_PLUGIN_PATH") != NULL ? getenv("USCXML_PLUGIN_PATH") : "");
+ }
+ if (_pluginPath.length() > 0) {
+ pluma.acceptProviderType<InvokerImplProvider>();
+ pluma.acceptProviderType<IOProcessorImplProvider>();
+ pluma.acceptProviderType<DataModelImplProvider>();
+ pluma.acceptProviderType<ExecutableContentImplProvider>();
+ pluma.loadFromFolder(_pluginPath, true);
+
+ std::vector<InvokerImplProvider*> invokerProviders;
+ pluma.getProviders(invokerProviders);
+ for (auto provider : invokerProviders) {
+ InvokerImpl* invoker = provider->create();
+ registerInvoker(invoker);
+ }
+
+ std::vector<IOProcessorImplProvider*> ioProcessorProviders;
+ pluma.getProviders(ioProcessorProviders);
+ for (auto provider : ioProcessorProviders) {
+ IOProcessorImpl* ioProcessor = provider->create();
+ registerIOProcessor(ioProcessor);
+ }
+
+ std::vector<DataModelImplProvider*> dataModelProviders;
+ pluma.getProviders(dataModelProviders);
+ for (auto provider : dataModelProviders) {
+ DataModelImpl* dataModel = provider->create();
+ registerDataModel(dataModel);
+ }
+
+ std::vector<ExecutableContentImplProvider*> execContentProviders;
+ pluma.getProviders(execContentProviders);
+ for (auto provider : execContentProviders) {
+ ExecutableContentImpl* execContent = provider->create();
+ registerExecutableContent(execContent);
+ }
+
+ } else {
+ ERROR_EXECUTION_THROW("No path to plugins known, export USCXML_PLUGIN_PATH or pass path as parameter");
+ }
+
+#else
+
#ifdef WITH_IOPROC_SCXML
{
SCXMLIOProcessor* ioProcessor = new SCXMLIOProcessor();
@@ -150,11 +217,10 @@ void Factory::registerPlugins() {
#endif
{
- NULLDataModel* dataModel = new NULLDataModel();
+ NullDataModel* dataModel = new NullDataModel();
registerDataModel(dataModel);
}
-
#ifdef WITH_INV_SCXML
{
USCXMLInvoker* invoker = new USCXMLInvoker();
@@ -169,12 +235,9 @@ void Factory::registerPlugins() {
}
#endif
-}
-
-Factory::~Factory() {
-#ifdef BUILD_AS_PLUGINS
- pluma.unloadAll();
#endif
+ /*** PLUGINS ***/
+
}
#define LIST_COMPONENTS(type, name) \
@@ -476,6 +539,13 @@ size_t DataModelImpl::replaceExpressions(std::string& content) {
Factory* Factory::getInstance() {
+ // this needs to be here as some plugins use xercesc
+ try {
+ ::xercesc_3_1::XMLPlatformUtils::Initialize();
+ } catch (const XERCESC_NS::XMLException& toCatch) {
+ ERROR_PLATFORM_THROW("Cannot initialize XercesC: " + X(toCatch.getMessage()).str());
+ }
+
if (_instance == NULL) {
_instance = new Factory(Factory::_defaultPluginPath);
}
@@ -530,6 +600,6 @@ void InvokerImpl::eventToSCXML(Event& event,
}
}
-Factory* Factory::_instance = NULL;
std::string Factory::_defaultPluginPath;
+Factory* Factory::_instance = NULL;
}
diff --git a/src/uscxml/plugins/Factory.h b/src/uscxml/plugins/Factory.h
index 48bfae8..0026df1 100644
--- a/src/uscxml/plugins/Factory.h
+++ b/src/uscxml/plugins/Factory.h
@@ -92,10 +92,10 @@ protected:
Factory(const std::string&);
~Factory();
- Factory* _parentFactory;
+ Factory* _parentFactory = NULL;
std::string _pluginPath;
- static Factory* _instance;
static std::string _defaultPluginPath;
+ static Factory* _instance;
};
diff --git a/src/uscxml/plugins/Plugins.cpp b/src/uscxml/plugins/Plugins.cpp
new file mode 100644
index 0000000..0c9a23c
--- /dev/null
+++ b/src/uscxml/plugins/Plugins.cpp
@@ -0,0 +1,31 @@
+/**
+ * @file
+ * @author 2012-2013 Stefan Radomski (stefan.radomski@cs.tu-darmstadt.de)
+ * @copyright Simplified BSD
+ *
+ * @cond
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the FreeBSD license as published by the FreeBSD
+ * project.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * You should have received a copy of the FreeBSD license along with this
+ * program. If not, see <http://www.opensource.org/licenses/bsd-license>.
+ * @endcond
+ */
+
+#include "Plugins.h"
+
+namespace uscxml {
+
+#ifdef BUILD_AS_PLUGINS
+PLUMA_PROVIDER_SOURCE(DataModelImpl, 1, 1)
+PLUMA_PROVIDER_SOURCE(IOProcessorImpl, 1, 1)
+PLUMA_PROVIDER_SOURCE(InvokerImpl, 1, 1)
+PLUMA_PROVIDER_SOURCE(ExecutableContentImpl, 1, 1)
+#endif
+
+}
diff --git a/src/uscxml/plugins/Plugins.h b/src/uscxml/plugins/Plugins.h
new file mode 100644
index 0000000..eb1c9cb
--- /dev/null
+++ b/src/uscxml/plugins/Plugins.h
@@ -0,0 +1,41 @@
+/**
+ * @file
+ * @author 2012-2013 Stefan Radomski (stefan.radomski@cs.tu-darmstadt.de)
+ * @copyright Simplified BSD
+ *
+ * @cond
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the FreeBSD license as published by the FreeBSD
+ * project.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * You should have received a copy of the FreeBSD license along with this
+ * program. If not, see <http://www.opensource.org/licenses/bsd-license>.
+ * @endcond
+ */
+
+#ifndef PLUGINS_H_M6G1NF1E
+#define PLUGINS_H_M6G1NF1E
+
+#include "uscxml/config.h"
+#include <Pluma/Pluma.hpp>
+#include "uscxml/plugins/DataModelImpl.h"
+#include "uscxml/plugins/IOProcessorImpl.h"
+#include "uscxml/plugins/InvokerImpl.h"
+#include "uscxml/plugins/ExecutableContentImpl.h"
+
+namespace uscxml {
+
+#ifdef BUILD_AS_PLUGINS
+PLUMA_PROVIDER_HEADER(IOProcessorImpl)
+PLUMA_PROVIDER_HEADER(InvokerImpl)
+PLUMA_PROVIDER_HEADER(ExecutableContentImpl)
+PLUMA_PROVIDER_HEADER(DataModelImpl)
+#endif
+
+}
+
+#endif /* end of include guard: PLUGINS_H_M6G1NF1E */
diff --git a/src/uscxml/plugins/datamodel/CMakeLists.txt b/src/uscxml/plugins/datamodel/CMakeLists.txt
index a208856..24a1ea0 100644
--- a/src/uscxml/plugins/datamodel/CMakeLists.txt
+++ b/src/uscxml/plugins/datamodel/CMakeLists.txt
@@ -5,8 +5,19 @@ file(GLOB NULL_DATAMODEL
null/*.cpp
null/*.h
)
-list (APPEND USCXML_FILES ${NULL_DATAMODEL})
-
+if (BUILD_AS_PLUGINS)
+ source_group("Null" FILES ${NULL_DATAMODEL})
+ add_library(
+ datamodel_null SHARED
+ ${NULL_DATAMODEL}
+ "../Plugins.cpp")
+ target_link_libraries(datamodel_null uscxml)
+ set_target_properties(datamodel_null PROPERTIES FOLDER "Plugins//DataModel")
+ set_target_properties(datamodel_null PROPERTIES COMPILE_FLAGS "-DPLUMA_EXPORTS")
+ set_target_properties(datamodel_null PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/plugins")
+else()
+ list (APPEND USCXML_FILES ${NULL_DATAMODEL})
+endif()
if (JSC_FOUND)
set(USCXML_DATAMODELS "ecmascript(JSC) ${USCXML_DATAMODELS}")
@@ -17,8 +28,20 @@ if (JSC_FOUND)
ecmascript/*.cpp
ecmascript/*.h
)
- list (APPEND USCXML_FILES ${JSC_DATAMODEL})
- list (APPEND USCXML_OPT_LIBS ${JSC_LIBRARY})
+ if (BUILD_AS_PLUGINS)
+ source_group("JavaScriptCore" FILES ${JSC_DATAMODEL})
+ add_library(
+ datamodel_jsc SHARED
+ ${JSC_DATAMODEL}
+ "../Plugins.cpp")
+ target_link_libraries(datamodel_jsc uscxml ${JSC_LIBRARY})
+ set_target_properties(datamodel_jsc PROPERTIES FOLDER "Plugins//DataModel")
+ set_target_properties(datamodel_jsc PROPERTIES COMPILE_FLAGS "-DPLUMA_EXPORTS")
+ set_target_properties(datamodel_jsc PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/plugins")
+ else()
+ list (APPEND USCXML_FILES ${JSC_DATAMODEL})
+ list (APPEND USCXML_OPT_LIBS ${JSC_LIBRARY})
+ endif()
endif()
@@ -31,8 +54,21 @@ if (V8_FOUND)
ecmascript/*.cpp
ecmascript/*.h
)
- list (APPEND USCXML_FILES ${V8_DATAMODEL})
- list (APPEND USCXML_OPT_LIBS ${V8_LIBRARY})
+ if (BUILD_AS_PLUGINS)
+ source_group("V8" FILES ${V8_DATAMODEL})
+
+ add_library(
+ datamodel_v8 SHARED
+ ${V8_DATAMODEL}
+ "../Plugins.cpp")
+ target_link_libraries(datamodel_v8 uscxml ${V8_LIBRARY})
+ set_target_properties(datamodel_v8 PROPERTIES FOLDER "Plugins//DataModel")
+ set_target_properties(datamodel_v8 PROPERTIES COMPILE_FLAGS "-DPLUMA_EXPORTS")
+ set_target_properties(datamodel_v8 PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/plugins")
+ else()
+ list (APPEND USCXML_FILES ${V8_DATAMODEL})
+ list (APPEND USCXML_OPT_LIBS ${V8_LIBRARY})
+ endif()
endif()
@@ -43,8 +79,20 @@ if (LUA51_FOUND AND WITH_DM_LUA)
lua/*.cpp
lua/*.h
)
- list (APPEND USCXML_FILES ${LUA_DATAMODEL})
- list (APPEND USCXML_OPT_LIBS ${LUA_LIBRARY})
+ if (BUILD_AS_PLUGINS)
+ source_group("" FILES ${LUA_DATAMODEL})
+ add_library(datamodel_lua SHARED ${LUA_DATAMODEL} "../Plugins.cpp")
+ target_link_libraries(datamodel_lua
+ uscxml
+ ${LUA_LIBRARIES}
+ )
+ set_target_properties(datamodel_lua PROPERTIES FOLDER "Plugins//DataModel")
+ set_target_properties(datamodel_lua PROPERTIES COMPILE_FLAGS "-DPLUMA_EXPORTS")
+ set_target_properties(datamodel_lua PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/plugins")
+ else()
+ list (APPEND USCXML_FILES ${LUA_DATAMODEL})
+ list (APPEND USCXML_OPT_LIBS ${LUA_LIBRARY})
+ endif()
endif()
if (WITH_DM_C89)
@@ -55,7 +103,18 @@ if (WITH_DM_C89)
c89/*.c
c89/*.h
)
- list (APPEND USCXML_FILES ${C89_DATAMODEL})
+ if (BUILD_AS_PLUGINS)
+ source_group("" FILES ${C89_DATAMODEL})
+ add_library(datamodel_c89 SHARED ${C89_DATAMODEL} "../Plugins.cpp")
+ target_link_libraries(datamodel_c89
+ uscxml
+ )
+ set_target_properties(datamodel_c89 PROPERTIES FOLDER "Plugins//DataModel")
+ set_target_properties(datamodel_c89 PROPERTIES COMPILE_FLAGS "-DPLUMA_EXPORTS")
+ set_target_properties(datamodel_c89 PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/plugins")
+ else()
+ list (APPEND USCXML_FILES ${C89_DATAMODEL})
+ endif()
endif()
if (WITH_DM_PROMELA)
@@ -66,7 +125,22 @@ if (WITH_DM_PROMELA)
promela/*.c
promela/*.h
)
- list (APPEND USCXML_FILES ${PROMELA_DATAMODEL})
+ if (BUILD_AS_PLUGINS)
+ source_group("" FILES ${PROMELA_DATAMODEL})
+ add_library(datamodel_promela SHARED ${PROMELA_DATAMODEL} "../Plugins.cpp")
+ target_link_libraries(datamodel_promela
+ uscxml
+ )
+ # SET_SOURCE_FILES_PROPERTIES is directory scope
+ if (${CMAKE_CXX_COMPILER_ID} STREQUAL Clang)
+ SET_SOURCE_FILES_PROPERTIES(promela/parser/promela.lex.yy.cpp PROPERTIES COMPILE_FLAGS -Wno-deprecated-register )
+ endif()
+ set_target_properties(datamodel_promela PROPERTIES FOLDER "Plugins//DataModel")
+ set_target_properties(datamodel_promela PROPERTIES COMPILE_FLAGS "-DPLUMA_EXPORTS")
+ set_target_properties(datamodel_promela PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/plugins")
+ else()
+ list (APPEND USCXML_FILES ${PROMELA_DATAMODEL})
+ endif()
endif()
if (NOT SWIG_FOUND)
diff --git a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
index 5ce6128..66bf45a 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
@@ -22,7 +22,6 @@
#include "uscxml/util/String.h"
#include "JSCDataModel.h"
-//#include "JSCSCXMLEvent.h"
#include "uscxml/messages/Event.h"
#include "uscxml/util/DOM.h"
@@ -32,6 +31,10 @@
#include <string>
#include <boost/algorithm/string.hpp>
+#ifdef BUILD_AS_PLUGINS
+#include <Pluma/Connector.hpp>
+#endif
+
#define EVENT_STRING_OR_UNDEF(field, cond) \
JSStringRef field##Name = JSStringCreateWithUTF8CString( #field ); \
JSStringRef field##Val = JSStringCreateWithUTF8CString(event.field.c_str()); \
@@ -193,7 +196,7 @@ bool JSCNodeListHasPropertyCallback(JSContextRef ctx, JSObjectRef object, JSStri
return false;
}
- int index = strTo<int>(propName);
+ size_t index = strTo<size_t>(propName);
SwigPrivData* t = (SwigPrivData*) JSObjectGetPrivate(object);
DOMNodeList* nodeList = (DOMNodeList*)t->swigCObject;
@@ -216,7 +219,7 @@ JSValueRef JSCNodeListGetPropertyCallback(JSContextRef context, JSObjectRef obje
return JSValueMakeUndefined(context);
}
- int index = strTo<int>(propName);
+ size_t index = strTo<size_t>(propName);
SwigPrivData* t = (SwigPrivData*) JSObjectGetPrivate(object);
DOMNodeList* nodeList = (DOMNodeList*)t->swigCObject;
@@ -316,7 +319,7 @@ void JSCDataModel::setEvent(const Event& event) {
case Event::INTERNAL:
eventTypeVal = JSStringCreateWithUTF8CString("internal");
break;
- case Event::PLATFORM:
+ default:
eventTypeVal = JSStringCreateWithUTF8CString("platform");
break;
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.h b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.h
index 3a53da2..cd992ea 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.h
@@ -126,7 +126,7 @@ protected:
};
#ifdef BUILD_AS_PLUGINS
-PLUMA_INHERIT_PROVIDER(JSCDataModel, DataModelImpl);
+PLUMA_INHERIT_PROVIDER(JSCDataModel, DataModelImpl)
#endif
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
index 61eb815..84cfa81 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
@@ -35,6 +35,10 @@
#include <boost/algorithm/string.hpp>
+#ifdef BUILD_AS_PLUGINS
+#include <Pluma/Connector.hpp>
+#endif
+
using namespace XERCESC_NS;
static v8::Local<v8::Value> XMLString2JS(const XMLCh* input) {
@@ -56,6 +60,14 @@ static XMLCh* JS2XMLString(const v8::Local<v8::Value>& value) {
namespace uscxml {
+#ifdef BUILD_AS_PLUGINS
+PLUMA_CONNECTOR
+bool pluginConnect(pluma::Host& host) {
+ host.add( new V8DataModelProvider() );
+ return true;
+}
+#endif
+
V8DataModel::V8DataModel() {
// _contexts.push_back(v8::Context::New());
}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.h b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.h
index a9dbca1..00a871b 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.h
@@ -20,6 +20,7 @@
#ifndef V8DATAMODEL_H_KN8TWG0V
#define V8DATAMODEL_H_KN8TWG0V
+#include "uscxml/config.h"
#include "uscxml/plugins/DataModelImpl.h"
#include <list>
diff --git a/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp b/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp
index fccc5f0..607f994 100644
--- a/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp
@@ -42,8 +42,20 @@
//#include "LuaDOM.cpp.inc"
+#ifdef BUILD_AS_PLUGINS
+#include <Pluma/Connector.hpp>
+#endif
+
namespace uscxml {
+#ifdef BUILD_AS_PLUGINS
+PLUMA_CONNECTOR
+bool pluginConnect(pluma::Host& host) {
+ host.add( new LuaDataModelProvider() );
+ return true;
+}
+#endif
+
//static int luaInspect(lua_State * l) {
// return 0;
//}
@@ -194,20 +206,23 @@ int LuaDataModel::luaInFunction(lua_State * l) {
std::shared_ptr<DataModelImpl> LuaDataModel::create(DataModelCallbacks* callbacks) {
std::shared_ptr<LuaDataModel> dm(new LuaDataModel());
+
dm->_callbacks = callbacks;
dm->_luaState = luaL_newstate();
luaL_openlibs(dm->_luaState);
try {
const luabridge::LuaRef& requireFunc = luabridge::getGlobal(dm->_luaState, "require");
- const luabridge::LuaRef& resultLxp = requireFunc("lxp");
- const luabridge::LuaRef& resultLxpLOM = requireFunc("lxp.lom");
-
- // MSVC compiler bug with implicit cast operators, see comments in LuaRef class
- if ((bool)resultLxp && (bool)resultLxpLOM) {
- _luaHasXMLParser = true;
- luabridge::setGlobal(dm->_luaState, resultLxp, "lxp");
- luabridge::setGlobal(dm->_luaState, resultLxpLOM, "lxp.lom");
+ if (requireFunc.isFunction()) {
+ const luabridge::LuaRef& resultLxp = requireFunc("lxp");
+ const luabridge::LuaRef& resultLxpLOM = requireFunc("lxp.lom");
+
+ // MSVC compiler bug with implicit cast operators, see comments in LuaRef class
+ if ((bool)resultLxp && (bool)resultLxpLOM) {
+ _luaHasXMLParser = true;
+ luabridge::setGlobal(dm->_luaState, resultLxp, "lxp");
+ luabridge::setGlobal(dm->_luaState, resultLxpLOM, "lxp.lom");
+ }
}
} catch (luabridge::LuaException e) {
LOG(_callbacks->getLogger(), USCXML_INFO) << e.what();
diff --git a/src/uscxml/plugins/datamodel/lua/LuaDataModel.h b/src/uscxml/plugins/datamodel/lua/LuaDataModel.h
index 85d7b53..ad86872 100644
--- a/src/uscxml/plugins/datamodel/lua/LuaDataModel.h
+++ b/src/uscxml/plugins/datamodel/lua/LuaDataModel.h
@@ -20,6 +20,7 @@
#ifndef LUADATAMODEL_H_113E014C
#define LUADATAMODEL_H_113E014C
+#include "uscxml/config.h"
#include "uscxml/plugins/DataModelImpl.h"
#include <list>
@@ -92,7 +93,7 @@ protected:
};
#ifdef BUILD_AS_PLUGINS
-PLUMA_INHERIT_PROVIDER(LuaDataModel, DataModelImpl);
+PLUMA_INHERIT_PROVIDER(LuaDataModel, DataModelImpl)
#endif
}
diff --git a/src/uscxml/plugins/datamodel/null/NULLDataModel.cpp b/src/uscxml/plugins/datamodel/null/NULLDataModel.cpp
index 53c414f..efa77fa 100644
--- a/src/uscxml/plugins/datamodel/null/NULLDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/null/NULLDataModel.cpp
@@ -20,7 +20,7 @@
#include <boost/algorithm/string.hpp>
#include "uscxml/Common.h"
-#include "NULLDataModel.h"
+#include "NullDataModel.h"
#include "uscxml/util/DOM.h"
#ifdef BUILD_AS_PLUGINS
@@ -32,24 +32,24 @@ namespace uscxml {
#ifdef BUILD_AS_PLUGINS
PLUMA_CONNECTOR
bool pluginConnect(pluma::Host& host) {
- host.add( new NULLDataModelProvider() );
+ host.add( new NullDataModelProvider() );
return true;
}
#endif
-NULLDataModel::NULLDataModel() {
+NullDataModel::NullDataModel() {
}
-std::shared_ptr<DataModelImpl> NULLDataModel::create(DataModelCallbacks* callbacks) {
- std::shared_ptr<NULLDataModel> dm(new NULLDataModel());
+std::shared_ptr<DataModelImpl> NullDataModel::create(DataModelCallbacks* callbacks) {
+ std::shared_ptr<NullDataModel> dm(new NullDataModel());
dm->_callbacks = callbacks;
return dm;
}
-NULLDataModel::~NULLDataModel() {
+NullDataModel::~NullDataModel() {
}
-Data NULLDataModel::getAsData(const std::string& content) {
+Data NullDataModel::getAsData(const std::string& content) {
Data data = Data::fromJSON(content);
if (data.empty()) {
data = Data(content, Data::VERBATIM);
@@ -63,7 +63,7 @@ Data NULLDataModel::getAsData(const std::string& content) {
* The predicate must return 'true' if and only if that state is in the current
* state configuration.
*/
-bool NULLDataModel::evalAsBool(const XERCESC_NS::DOMElement* scriptNode, const std::string& expr) {
+bool NullDataModel::evalAsBool(const XERCESC_NS::DOMElement* scriptNode, const std::string& expr) {
std::string trimmedExpr = expr;
boost::trim(trimmedExpr);
if (!boost::istarts_with(trimmedExpr, "in"))
@@ -105,4 +105,4 @@ bool NULLDataModel::evalAsBool(const XERCESC_NS::DOMElement* scriptNode, const s
return true;
}
-} \ No newline at end of file
+}
diff --git a/src/uscxml/plugins/datamodel/null/NULLDataModel.h b/src/uscxml/plugins/datamodel/null/NULLDataModel.h
index fba8577..8c9f5b9 100644
--- a/src/uscxml/plugins/datamodel/null/NULLDataModel.h
+++ b/src/uscxml/plugins/datamodel/null/NULLDataModel.h
@@ -20,6 +20,7 @@
#ifndef NULLDATAMODEL_H_KN8TWG0V
#define NULLDATAMODEL_H_KN8TWG0V
+#include "uscxml/config.h"
#include "uscxml/plugins/DataModelImpl.h"
#include <list>
@@ -38,10 +39,10 @@ namespace uscxml {
* @ingroup datamodel
* NULL data-model.
*/
-class NULLDataModel : public DataModelImpl {
+class NullDataModel : public DataModelImpl {
public:
- NULLDataModel();
- virtual ~NULLDataModel();
+ NullDataModel();
+ virtual ~NullDataModel();
virtual std::shared_ptr<DataModelImpl> create(DataModelCallbacks* callbacks);
virtual std::list<std::string> getNames() {
@@ -104,7 +105,7 @@ protected:
};
#ifdef BUILD_AS_PLUGINS
-PLUMA_INHERIT_PROVIDER(NULLDataModel, DataModelImpl);
+PLUMA_INHERIT_PROVIDER(NullDataModel, DataModelImpl)
#endif
}
diff --git a/src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp b/src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp
index 14d24c3..5adf337 100644
--- a/src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp
@@ -17,15 +17,13 @@
* @endcond
*/
-#include <boost/algorithm/string.hpp>
-
#include "uscxml/Common.h"
-#include "uscxml/config.h"
#include "uscxml/util/String.h"
#include "PromelaDataModel.h"
#include "uscxml/util/DOM.h"
#include <cctype>
+#include <boost/algorithm/string.hpp>
#include "PromelaParser.h"
#include "parser/promela.tab.hpp"
@@ -337,7 +335,7 @@ void PromelaDataModel::setEvent(const Event& event) {
int size = dataToInt(evaluateExpr(*opIterAsgn++));
variable.compound["size"] = Data(size);
- for (size_t i = 0; i < size; i++) {
+ for (int i = 0; i < size; i++) {
variable.compound["value"].array.push_back(Data(0, Data::INTERPRETED));
}
diff --git a/src/uscxml/plugins/datamodel/promela/PromelaDataModel.h b/src/uscxml/plugins/datamodel/promela/PromelaDataModel.h
index 4a763ac..f19bd5d 100644
--- a/src/uscxml/plugins/datamodel/promela/PromelaDataModel.h
+++ b/src/uscxml/plugins/datamodel/promela/PromelaDataModel.h
@@ -20,6 +20,7 @@
#ifndef PROMELADATAMODEL_H_4VG0TDMU
#define PROMELADATAMODEL_H_4VG0TDMU
+#include "uscxml/config.h"
#include "uscxml/plugins/DataModelImpl.h"
#include <list>
@@ -96,7 +97,7 @@ protected:
};
#ifdef BUILD_AS_PLUGINS
-PLUMA_INHERIT_PROVIDER(PromelaDataModel, DataModelImpl);
+PLUMA_INHERIT_PROVIDER(PromelaDataModel, DataModelImpl)
#endif
}
diff --git a/src/uscxml/plugins/datamodel/promela/PromelaParser.cpp b/src/uscxml/plugins/datamodel/promela/PromelaParser.cpp
index 57f694a..44f8bdd 100644
--- a/src/uscxml/plugins/datamodel/promela/PromelaParser.cpp
+++ b/src/uscxml/plugins/datamodel/promela/PromelaParser.cpp
@@ -43,7 +43,7 @@ void promela_error (void* yylloc_param, uscxml::PromelaParser* ctx, void* yyscan
excEvent.data.compound["col"] = uscxml::Data(yylloc->first_column, uscxml::Data::VERBATIM);
std::stringstream ssUnderline;
- for (size_t i = 0; i < yylloc->first_column; i++)
+ for (int i = 0; i < yylloc->first_column; i++)
ssUnderline << " ";
ssUnderline << "^";
excEvent.data.compound["sourcemark"] = uscxml::Data(ssUnderline.str(), uscxml::Data::VERBATIM);
@@ -196,7 +196,7 @@ void PromelaParserNode::push(PromelaParserNode* node) {
operands.push_back(node);
}
-void PromelaParserNode::dump(int indent) {
+void PromelaParserNode::dump(size_t indent) {
std::string padding;
for (size_t i = 0; i < indent; i++) {
padding += " ";
diff --git a/src/uscxml/plugins/datamodel/promela/PromelaParser.h b/src/uscxml/plugins/datamodel/promela/PromelaParser.h
index 236233d..45ea341 100644
--- a/src/uscxml/plugins/datamodel/promela/PromelaParser.h
+++ b/src/uscxml/plugins/datamodel/promela/PromelaParser.h
@@ -48,7 +48,7 @@ public:
void merge(PromelaParserNode* node);
void push(PromelaParserNode* node);
- void dump(int indent = 0);
+ void dump(size_t indent = 0);
static std::string typeToDesc(int type);
diff --git a/src/uscxml/plugins/invoker/CMakeLists.txt b/src/uscxml/plugins/invoker/CMakeLists.txt
index 5500e3f..9f50684 100644
--- a/src/uscxml/plugins/invoker/CMakeLists.txt
+++ b/src/uscxml/plugins/invoker/CMakeLists.txt
@@ -6,7 +6,18 @@ if (WITH_INV_SCXML)
file(GLOB_RECURSE USCXML_INVOKER
scxml/*.cpp
scxml/*.h)
+ if (BUILD_AS_PLUGINS)
+ source_group("" FILES ${USCXML_INVOKER})
+ add_library(invoker_uscxml SHARED ${USCXML_INVOKER} "../Plugins.cpp")
+ target_link_libraries(invoker_uscxml
+ uscxml
+ )
+ set_target_properties(invoker_uscxml PROPERTIES FOLDER "Plugins//Invoker")
+ set_target_properties(invoker_uscxml PROPERTIES COMPILE_FLAGS "-DPLUMA_EXPORTS")
+ set_target_properties(invoker_uscxml PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/plugins")
+ else()
list (APPEND USCXML_FILES ${USCXML_INVOKER})
+ endif()
endif()
# Directoy Monitor
@@ -17,7 +28,18 @@ if (WITH_INV_DIRMON)
file(GLOB_RECURSE DIRMON_INVOKER
dirmon/*.cpp
dirmon/*.h)
+ if (BUILD_AS_PLUGINS)
+ source_group("" FILES ${DIRMON_INVOKER})
+ add_library(invoker_dirmon SHARED ${DIRMON_INVOKER} "../Plugins.cpp")
+ target_link_libraries(invoker_dirmon
+ uscxml
+ )
+ set_target_properties(invoker_dirmon PROPERTIES FOLDER "Plugins//Invoker")
+ set_target_properties(invoker_dirmon PROPERTIES COMPILE_FLAGS "-DPLUMA_EXPORTS")
+ set_target_properties(invoker_dirmon PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/plugins")
+ else()
list (APPEND USCXML_FILES ${DIRMON_INVOKER})
+ endif()
endif()
set(USCXML_INCLUDE_DIRS ${USCXML_INCLUDE_DIRS} PARENT_SCOPE)
diff --git a/src/uscxml/plugins/invoker/dirmon/DirMonInvoker.cpp b/src/uscxml/plugins/invoker/dirmon/DirMonInvoker.cpp
index be13bf4..e9cf702 100644
--- a/src/uscxml/plugins/invoker/dirmon/DirMonInvoker.cpp
+++ b/src/uscxml/plugins/invoker/dirmon/DirMonInvoker.cpp
@@ -19,8 +19,6 @@
#include "DirMonInvoker.h"
-#include "uscxml/config.h"
-
#ifdef BUILD_AS_PLUGINS
#include <Pluma/Connector.hpp>
#endif
@@ -62,7 +60,7 @@ DirMonInvoker::~DirMonInvoker() {
}
if (_watcher)
delete(_watcher);
-};
+}
std::shared_ptr<InvokerImpl> DirMonInvoker::create(InvokerCallbacks* callbacks) {
std::shared_ptr<DirMonInvoker> invoker(new DirMonInvoker());
diff --git a/src/uscxml/plugins/invoker/dirmon/DirMonInvoker.h b/src/uscxml/plugins/invoker/dirmon/DirMonInvoker.h
index dffbe14..6d9911f 100644
--- a/src/uscxml/plugins/invoker/dirmon/DirMonInvoker.h
+++ b/src/uscxml/plugins/invoker/dirmon/DirMonInvoker.h
@@ -20,6 +20,7 @@
#ifndef DIRMONINVOKER_H_W09J90F0
#define DIRMONINVOKER_H_W09J90F0
+#include "uscxml/config.h"
#include "uscxml/plugins/InvokerImpl.h"
#include "uscxml/interpreter/Logging.h"
@@ -139,7 +140,7 @@ protected:
};
#ifdef BUILD_AS_PLUGINS
-PLUMA_INHERIT_PROVIDER(DirMonInvoker, InvokerImpl);
+PLUMA_INHERIT_PROVIDER(DirMonInvoker, InvokerImpl)
#endif
}
diff --git a/src/uscxml/plugins/invoker/scxml/USCXMLInvoker.cpp b/src/uscxml/plugins/invoker/scxml/USCXMLInvoker.cpp
index b035993..d3bc5bf 100644
--- a/src/uscxml/plugins/invoker/scxml/USCXMLInvoker.cpp
+++ b/src/uscxml/plugins/invoker/scxml/USCXMLInvoker.cpp
@@ -19,8 +19,6 @@
#include "USCXMLInvoker.h"
-#include "uscxml/config.h"
-
#ifdef BUILD_AS_PLUGINS
#include <Pluma/Connector.hpp>
#endif
@@ -52,7 +50,7 @@ USCXMLInvoker::USCXMLInvoker() {
USCXMLInvoker::~USCXMLInvoker() {
stop();
-};
+}
void USCXMLInvoker::start() {
_isStarted = true;
@@ -184,7 +182,7 @@ void USCXMLInvoker::invoke(const std::string& source, const Event& invokeEvent)
InterpreterImpl* invoked = _invokedInterpreter.getImpl().get();
ActionLanguage al = _callbacks->getActionLanguage();
- // create new instances
+ // create new instances
al.execContent = al.execContent.getImpl()->create(invoked);
al.delayQueue = al.delayQueue.getImplDelayed()->create(invoked);
al.internalQueue = al.internalQueue.getImplBase()->create();
diff --git a/src/uscxml/plugins/invoker/scxml/USCXMLInvoker.h b/src/uscxml/plugins/invoker/scxml/USCXMLInvoker.h
index d37d2af..61931c6 100644
--- a/src/uscxml/plugins/invoker/scxml/USCXMLInvoker.h
+++ b/src/uscxml/plugins/invoker/scxml/USCXMLInvoker.h
@@ -20,6 +20,7 @@
#ifndef USCXMLINVOKER_H_OQFA21IO
#define USCXMLINVOKER_H_OQFA21IO
+#include "uscxml/config.h"
#include "uscxml/interpreter/InterpreterImpl.h"
#include "uscxml/interpreter/BasicEventQueue.h"
@@ -88,7 +89,7 @@ protected:
};
#ifdef BUILD_AS_PLUGINS
-PLUMA_INHERIT_PROVIDER(USCXMLInvoker, InvokerImpl);
+PLUMA_INHERIT_PROVIDER(USCXMLInvoker, InvokerImpl)
#endif
}
diff --git a/src/uscxml/plugins/ioprocessor/CMakeLists.txt b/src/uscxml/plugins/ioprocessor/CMakeLists.txt
index 3505920..fb4315b 100644
--- a/src/uscxml/plugins/ioprocessor/CMakeLists.txt
+++ b/src/uscxml/plugins/ioprocessor/CMakeLists.txt
@@ -7,7 +7,18 @@ if (WITH_IOPROC_SCXML)
scxml/*.cpp
scxml/*.h
)
- list (APPEND USCXML_FILES ${SCXML_IOPROCESSOR})
+ if (BUILD_AS_PLUGINS)
+ source_group("" FILES ${SCXML_IOPROCESSOR})
+ add_library(ioproc_scxml SHARED ${SCXML_IOPROCESSOR} "../Plugins.cpp")
+ target_link_libraries(ioproc_scxml
+ uscxml
+ )
+ set_target_properties(ioproc_scxml PROPERTIES FOLDER "Plugins//IO Processors")
+ set_target_properties(ioproc_scxml PROPERTIES COMPILE_FLAGS "-DPLUMA_EXPORTS")
+ set_target_properties(ioproc_scxml PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/plugins")
+ else()
+ list (APPEND USCXML_FILES ${SCXML_IOPROCESSOR})
+ endif()
endif()
OPTION(WITH_IOPROC_BASICHTTP "Build the basichttp i/o processor" ON)
@@ -17,8 +28,18 @@ if (WITH_IOPROC_BASICHTTP)
basichttp/*.cpp
basichttp/*.h
)
- list (APPEND BASICHTTP_IOPROCESSOR "")
- list (APPEND USCXML_FILES ${BASICHTTP_IOPROCESSOR})
+ if (BUILD_AS_PLUGINS)
+ source_group("" FILES ${BASICHTTP_IOPROCESSOR})
+ add_library(ioproc_basichttp SHARED ${BASICHTTP_IOPROCESSOR} "../Plugins.cpp")
+ target_link_libraries(ioproc_basichttp
+ uscxml
+ )
+ set_target_properties(ioproc_basichttp PROPERTIES FOLDER "Plugins//IO Processors")
+ set_target_properties(ioproc_basichttp PROPERTIES COMPILE_FLAGS "-DPLUMA_EXPORTS")
+ set_target_properties(ioproc_basichttp PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/plugins")
+ else()
+ list (APPEND USCXML_FILES ${BASICHTTP_IOPROCESSOR})
+ endif()
endif()
set(USCXML_INCLUDE_DIRS ${USCXML_INCLUDE_DIRS} PARENT_SCOPE)
diff --git a/src/uscxml/plugins/ioprocessor/basichttp/BasicHTTPIOProcessor.h b/src/uscxml/plugins/ioprocessor/basichttp/BasicHTTPIOProcessor.h
index dec22fe..5ec66ec 100644
--- a/src/uscxml/plugins/ioprocessor/basichttp/BasicHTTPIOProcessor.h
+++ b/src/uscxml/plugins/ioprocessor/basichttp/BasicHTTPIOProcessor.h
@@ -20,6 +20,8 @@
#ifndef BASICHTTPIOPROCESSOR_H_2CUY93KU
#define BASICHTTPIOPROCESSOR_H_2CUY93KU
+#include "uscxml/config.h"
+
extern "C" {
#include <event2/http.h>
#include <event2/http_struct.h>
@@ -93,11 +95,8 @@ protected:
std::map<std::string, std::pair<URL, Event> > _sendRequests;
};
-// do not implement pluma plugins if we build an inherited plugin
-#ifdef ioprocessor_basichttp_EXPORTS
-# ifdef BUILD_AS_PLUGINS
-PLUMA_INHERIT_PROVIDER(BasicHTTPIOProcessor, IOProcessorImpl);
-# endif
+#ifdef BUILD_AS_PLUGINS
+PLUMA_INHERIT_PROVIDER(BasicHTTPIOProcessor, IOProcessorImpl)
#endif
}
diff --git a/src/uscxml/plugins/ioprocessor/scxml/SCXMLIOProcessor.cpp b/src/uscxml/plugins/ioprocessor/scxml/SCXMLIOProcessor.cpp
index 5a82860..33a725e 100644
--- a/src/uscxml/plugins/ioprocessor/scxml/SCXMLIOProcessor.cpp
+++ b/src/uscxml/plugins/ioprocessor/scxml/SCXMLIOProcessor.cpp
@@ -30,8 +30,20 @@
#include <arpa/inet.h>
#endif
+#ifdef BUILD_AS_PLUGINS
+#include <Pluma/Connector.hpp>
+#endif
+
namespace uscxml {
+#ifdef BUILD_AS_PLUGINS
+PLUMA_CONNECTOR
+bool pluginConnect(pluma::Host& host) {
+ host.add( new SCXMLIOProcessorProvider() );
+ return true;
+}
+#endif
+
// see http://www.w3.org/TR/scxml/#SCXMLEventProcessor
SCXMLIOProcessor::SCXMLIOProcessor() {
diff --git a/src/uscxml/plugins/ioprocessor/scxml/SCXMLIOProcessor.h b/src/uscxml/plugins/ioprocessor/scxml/SCXMLIOProcessor.h
index 6494873..328e18e 100644
--- a/src/uscxml/plugins/ioprocessor/scxml/SCXMLIOProcessor.h
+++ b/src/uscxml/plugins/ioprocessor/scxml/SCXMLIOProcessor.h
@@ -20,8 +20,13 @@
#ifndef SCXMLIOProcessor_H_2CUY93KU
#define SCXMLIOProcessor_H_2CUY93KU
+#include "uscxml/config.h"
#include "uscxml/plugins/IOProcessorImpl.h"
+#ifdef BUILD_AS_PLUGINS
+#include "uscxml/plugins/Plugins.h"
+#endif
+
namespace uscxml {
/**
@@ -45,12 +50,10 @@ public:
virtual bool isValidTarget(const std::string& target);
Data getDataModelVariables();
-protected:
- IOProcessorCallbacks* _callbacks;
};
#ifdef BUILD_AS_PLUGINS
-PLUMA_INHERIT_PROVIDER(SCXMLIOProcessor, IOProcessorImpl);
+PLUMA_INHERIT_PROVIDER(SCXMLIOProcessor, IOProcessorImpl)
#endif
}