diff options
author | Stefan Radomski <github@mintwerk.de> | 2017-01-27 21:54:43 (GMT) |
---|---|---|
committer | Stefan Radomski <github@mintwerk.de> | 2017-01-27 21:54:43 (GMT) |
commit | 7f83038a1ef642b883417cc984d1f8ca9f0bc64b (patch) | |
tree | fd9236e866a06b250992e84bbf41324adf93a9fd /src/uscxml/plugins/datamodel | |
parent | b450411ee8f0a57f3ec3909d65ecc289189e2b35 (diff) | |
download | uscxml-7f83038a1ef642b883417cc984d1f8ca9f0bc64b.zip uscxml-7f83038a1ef642b883417cc984d1f8ca9f0bc64b.tar.gz uscxml-7f83038a1ef642b883417cc984d1f8ca9f0bc64b.tar.bz2 |
Reactivated BUILD_AS_PLUGINS
Diffstat (limited to 'src/uscxml/plugins/datamodel')
13 files changed, 151 insertions, 45 deletions
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); |