summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2013-04-25 20:36:03 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2013-04-25 20:36:03 (GMT)
commit00f5d8af3c8e42ba8a0d0c206d2c2e8f1867a61e (patch)
treeafa4183b1bb4ee777cad27475c3d7679822c8046 /src
parent4d6fb580b1c1378cb1441fff4adeca889cbba58e (diff)
downloaduscxml-00f5d8af3c8e42ba8a0d0c206d2c2e8f1867a61e.zip
uscxml-00f5d8af3c8e42ba8a0d0c206d2c2e8f1867a61e.tar.gz
uscxml-00f5d8af3c8e42ba8a0d0c206d2c2e8f1867a61e.tar.bz2
Refactored CMakeLists and updated W3C tests
Diffstat (limited to 'src')
-rw-r--r--src/bindings/swig/php/uscxmlNativePHP.php16
-rw-r--r--src/uscxml/CMakeLists.txt58
-rw-r--r--src/uscxml/Common.h2
-rw-r--r--src/uscxml/plugins/datamodel/CMakeLists.txt132
-rw-r--r--src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp70
-rw-r--r--src/uscxml/plugins/datamodel/xpath/XPathDataModel.cpp28
-rw-r--r--src/uscxml/plugins/element/CMakeLists.txt53
-rw-r--r--src/uscxml/plugins/invoker/CMakeLists.txt272
-rw-r--r--src/uscxml/plugins/ioprocessor/CMakeLists.txt53
9 files changed, 666 insertions, 18 deletions
diff --git a/src/bindings/swig/php/uscxmlNativePHP.php b/src/bindings/swig/php/uscxmlNativePHP.php
index 86eba7b..e7ef93d 100644
--- a/src/bindings/swig/php/uscxmlNativePHP.php
+++ b/src/bindings/swig/php/uscxmlNativePHP.php
@@ -224,6 +224,22 @@ class Event {
Event_setDOM($this->_cPtr,$dom);
}
+ function getFirstDOMElement() {
+ return Event_getFirstDOMElement($this->_cPtr);
+ }
+
+ function getStrippedDOM() {
+ return Event_getStrippedDOM($this->_cPtr);
+ }
+
+ function getRaw() {
+ return Event_getRaw($this->_cPtr);
+ }
+
+ function setRaw($raw) {
+ Event_setRaw($this->_cPtr,$raw);
+ }
+
function getContent() {
return Event_getContent($this->_cPtr);
}
diff --git a/src/uscxml/CMakeLists.txt b/src/uscxml/CMakeLists.txt
new file mode 100644
index 0000000..3167405
--- /dev/null
+++ b/src/uscxml/CMakeLists.txt
@@ -0,0 +1,58 @@
+############################################################
+# Actual files of core library
+############################################################
+
+file(GLOB_RECURSE USCXML_SERVER
+ src/uscxml/server/*.cpp
+ src/uscxml/server/*.h
+)
+source_group("Interpreter" FILES ${USCXML_SERVER})
+list (APPEND USCXML_FILES ${USCXML_SERVER})
+
+file(GLOB_RECURSE USCXML_CONCURRENCY
+ src/uscxml/concurrency/*.cpp
+ src/uscxml/concurrency/*.h
+)
+source_group("Interpreter" FILES ${USCXML_CONCURRENCY})
+list (APPEND USCXML_FILES ${USCXML_CONCURRENCY})
+
+file(GLOB_RECURSE USCXML_DEBUG
+ src/uscxml/debug/*.cpp
+ src/uscxml/debug/*.h
+)
+source_group("Interpreter" FILES ${USCXML_DEBUG})
+list (APPEND USCXML_FILES ${USCXML_DEBUG})
+
+file(GLOB_RECURSE USCXML_INTERPRETERS
+ src/uscxml/interpreter/*.cpp
+ src/uscxml/interpreter/*.h
+)
+source_group("Interpreter" FILES ${USCXML_INTERPRETERS})
+list (APPEND USCXML_FILES ${USCXML_INTERPRETERS})
+
+file(GLOB USCXML_CORE
+ ${CMAKE_SOURCE_DIR}/contrib/src/jsmn/jsmn.c
+ src/uscxml/*.cpp
+ src/uscxml/*.h
+)
+source_group("Interpreter" FILES ${USCXML_CORE})
+list (APPEND USCXML_FILES ${USCXML_CORE})
+
+if (BUILD_AS_PLUGINS)
+ list (APPEND USCXML_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/src/uscxml/plugins)
+ file(GLOB PLUMA
+ src/uscxml/plugins/Pluma/*.cpp
+ src/uscxml/plugins/Pluma/*.h
+ src/uscxml/plugins/*.cpp
+ src/uscxml/plugins/*.h
+ )
+ source_group("Interpreter" FILES ${PLUMA})
+ list (APPEND USCXML_FILES ${PLUMA})
+ add_definitions("-DBUILD_AS_PLUGINS")
+endif()
+
+include(src/uscxml/plugins/datamodel/CMakeLists.txt)
+include(src/uscxml/plugins/element/CMakeLists.txt)
+include(src/uscxml/plugins/invoker/CMakeLists.txt)
+include(src/uscxml/plugins/ioprocessor/CMakeLists.txt)
+
diff --git a/src/uscxml/Common.h b/src/uscxml/Common.h
index 0b0a628..5840d97 100644
--- a/src/uscxml/Common.h
+++ b/src/uscxml/Common.h
@@ -14,7 +14,7 @@
// possible loss of data
#pragma warning (disable : 4244)
#pragma warning (disable : 4267)
-// 'this' : used in base member initializer list (TypedSubscriber)
+// 'this' : used in base member initializer list
#pragma warning (disable : 4355)
// is thrown alot in arabica headers
diff --git a/src/uscxml/plugins/datamodel/CMakeLists.txt b/src/uscxml/plugins/datamodel/CMakeLists.txt
new file mode 100644
index 0000000..0634984
--- /dev/null
+++ b/src/uscxml/plugins/datamodel/CMakeLists.txt
@@ -0,0 +1,132 @@
+# JavaScriptCore ecmascript datamodel
+if (APPLE AND IOS AND OFF)
+ FIND_LIBRARY(JSC_LIBRARY JavaScriptCore)
+ set(JSC_FOUND ON)
+ file(GLOB JSC_DATAMODEL
+ src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/*.cpp
+ src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/*.h
+ )
+ source_group("Datamodel\\jsc" FILES ${JSC_DATAMODEL})
+ file(GLOB_RECURSE JSC_DOM
+ src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/dom/*.cpp
+ src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/dom/*.h
+ )
+ source_group("Datamodel\\DOM" FILES ${JSC_DOM})
+ if (BUILD_AS_PLUGINS)
+ add_library(
+ datamodel_jsc SHARED
+ ${JSC_DATAMODEL}
+ ${JSC_DOM})
+ target_link_libraries(datamodel_jsc
+ uscxml
+ ${JSC_LIBRARY})
+ set_target_properties(datamodel_jsc PROPERTIES FOLDER "Plugin DataModel")
+ else()
+ list (APPEND USCXML_FILES ${JSC_DATAMODEL})
+ list (APPEND USCXML_FILES ${JSC_DOM})
+ list (APPEND USCXML_OPT_LIBS ${JSC_LIBRARY})
+ endif()
+
+endif()
+
+
+# NULL datamodel
+
+file(GLOB NULL_DATAMODEL
+ src/uscxml/plugins/datamodel/null/*.cpp
+ src/uscxml/plugins/datamodel/null/*.h
+)
+source_group("Datamodel\\null" FILES ${NULL_DATAMODEL})
+if (BUILD_AS_PLUGINS)
+ add_library(datamodel_null SHARED ${NULL_DATAMODEL})
+ target_link_libraries(datamodel_null uscxml)
+ set_target_properties(datamodel_null PROPERTIES FOLDER "Plugin DataModel")
+else()
+ list (APPEND USCXML_FILES ${NULL_DATAMODEL})
+endif()
+
+
+# XPath datamodel
+
+file(GLOB XPATH_DATAMODEL
+ src/uscxml/plugins/datamodel/xpath/*.cpp
+ src/uscxml/plugins/datamodel/xpath/*.h
+)
+source_group("Datamodel\\xpath" FILES ${XPATH_DATAMODEL})
+if (BUILD_AS_PLUGINS)
+ add_library(datamodel_xpath SHARED ${XPATH_DATAMODEL})
+ target_link_libraries(datamodel_xpath uscxml)
+ set_target_properties(datamodel_xpath PROPERTIES FOLDER "Plugin DataModel")
+else()
+ list (APPEND USCXML_FILES ${XPATH_DATAMODEL})
+endif()
+
+
+# GOOGLE V8 ecmascript datamodel
+
+#if (NOT APPLE OR IOS)
+ # set(ENV{V8_SRC} ${CMAKE_SOURCE_DIR}/../v8)
+ find_package(V8)
+ if (V8_FOUND)
+ list (APPEND USCXML_INCLUDE_DIRS ${V8_INCLUDE_DIR})
+ file(GLOB V8_DATAMODEL
+ src/uscxml/plugins/datamodel/ecmascript/v8/*.cpp
+ src/uscxml/plugins/datamodel/ecmascript/v8/*.h
+ )
+ source_group("Datamodel\\v8" FILES ${V8_DATAMODEL})
+ file(GLOB_RECURSE V8_DOM
+ src/uscxml/plugins/datamodel/ecmascript/v8/dom/*.cpp
+ src/uscxml/plugins/datamodel/ecmascript/v8/dom/*.h
+ )
+ source_group("Datamodel\\v8\\DOM" FILES ${V8_DOM})
+
+ if (BUILD_AS_PLUGINS)
+ add_library(
+ datamodel_v8 SHARED
+ ${V8_DATAMODEL}
+ ${V8_DOM})
+ target_link_libraries(datamodel_v8
+ uscxml
+ ${V8_LIBRARY})
+ set_target_properties(datamodel_v8 PROPERTIES FOLDER "Plugin DataModel")
+ else()
+ list (APPEND USCXML_FILES ${V8_DATAMODEL})
+ list (APPEND USCXML_FILES ${V8_DOM})
+ list (APPEND USCXML_OPT_LIBS ${V8_LIBRARY})
+ endif()
+ endif()
+#endif()
+
+
+# SWI PROLOG datamodel
+
+#set(SWI_INCLUDE_HINT ${CMAKE_SOURCE_DIR}/../pl-devel/include)
+#set(SWI_LIBRARY_HINT ${CMAKE_SOURCE_DIR}/../pl-devel/lib/x86_64-darwin12.2.0)
+find_package(SWI)
+#find_package(GMP)
+#find_package(CURSES)
+if (SWI_FOUND)
+ list (APPEND USCXML_INCLUDE_DIRS ${SWI_INCLUDE_DIR})
+# message(FATAL_ERROR "SWI_INCLUDE_DIR: ${SWI_INCLUDE_DIR}")
+# include_directories(${GMP_INCLUDE_DIR})
+# include_directories(${CURSES_INCLUDE_DIR})
+ file(GLOB_RECURSE SWI_DATAMODEL
+ src/uscxml/plugins/datamodel/prolog/swi/*.cpp
+ src/uscxml/plugins/datamodel/prolog/swi/*.h
+ )
+ source_group("Datamodel\\swi" FILES ${SWI_DATAMODEL})
+ if (BUILD_AS_PLUGINS)
+ add_library(
+ datamodel_swi SHARED
+ ${SWI_DATAMODEL})
+ target_link_libraries(datamodel_swi
+ uscxml
+# ${GMP_LIBRARY}
+# ${CURSES_LIBRARIES}
+ ${SWI_LIBRARY})
+ set_target_properties(datamodel_swi PROPERTIES FOLDER "Plugin DataModel")
+ else()
+ list (APPEND USCXML_FILES ${SWI_DATAMODEL})
+ list (APPEND USCXML_OPT_LIBS ${SWI_LIBRARY}) # ${GMP_LIBRARY} ${CURSES_LIBRARIES})
+ endif()
+endif()
diff --git a/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp b/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp
index db91869..5d6455f 100644
--- a/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp
@@ -43,6 +43,12 @@ boost::shared_ptr<DataModelImpl> SWIDataModel::create(InterpreterImpl* interpret
return boost::shared_ptr<DataModelImpl>();
}
+ // load SWI XML parser
+ PlCall("use_module", PlCompound("library", PlTerm("sgml")));
+ PlCall("assert", PlCompound("sessionId", PlTerm(PlString(dm->_interpreter->getSessionId().c_str()))));
+ PlCall("assert", PlCompound("name", PlTerm(PlString(dm->_interpreter->getName().c_str()))));
+
+ PlCall("assert(eventName(X) :- event(Y,_), arg(1, Y, X)).");
return dm;
}
@@ -76,8 +82,55 @@ void SWIDataModel::initialize() {
}
void SWIDataModel::setEvent(const Event& event) {
-// std::cout << "SWIDataModel::setEvent" << std::endl;
- _event = event;
+ // remove old event
+ PlCall("system", "retractall", PlTermv("event"));
+
+ PlTermv plEvent(7);
+ plEvent[0] = PlCompound("name", PlTerm(PlString(event.name.c_str())));
+ plEvent[1] = PlCompound("raw", PlTerm(PlString(event.raw.c_str())));
+ plEvent[2] = PlCompound("origin", PlTerm(PlString(event.origin.c_str())));
+ plEvent[3] = PlCompound("origintype", PlTerm(PlString(event.origintype.c_str())));
+ plEvent[4] = PlCompound("data", PlTerm(PlString(event.content.c_str())));
+
+ Event::params_t::const_iterator paramIter;
+ // count unique keys in params
+ paramIter = event.params.begin();
+ size_t uniqueKeys = 0;
+ while(paramIter != event.params.end()) {
+ uniqueKeys++;
+ paramIter = event.params.upper_bound(paramIter->first);
+ }
+
+ // create a compund for every unique key
+ PlTermv paramTerm(uniqueKeys);
+ paramIter = event.params.begin();
+ for(int i = 0; paramIter != event.params.end(); i++) {
+ Event::params_t::const_iterator lastValueIter = event.params.upper_bound(paramIter->first);
+ size_t items = event.params.count(paramIter->first);
+ PlTermv keyTerm(items);
+ for (int j = 0; paramIter != lastValueIter; j++) {
+ keyTerm[j] = PlString(paramIter->second.c_str());
+ paramIter++;
+ }
+ paramTerm[i] = PlCompound(paramIter->first.c_str(), keyTerm);
+ paramIter = lastValueIter;
+ }
+ plEvent[5] = PlCompound("params", paramTerm);
+
+ PlTerm type;
+ switch (event.type) {
+ case Event::PLATFORM:
+ type = "platform";
+ break;
+ case Event::INTERNAL:
+ type = "internal";
+ break;
+ case Event::EXTERNAL:
+ type = "external";
+ break;
+ }
+ plEvent[6] = PlCompound("type", type);
+ PlCall("assert", PlCompound("event", plEvent));
}
Data SWIDataModel::getStringAsData(const std::string& content) {
@@ -128,13 +181,12 @@ std::string SWIDataModel::evalAsString(const std::string& expr) {
PlQuery query(compound.name(), termv);
std::stringstream ss;
+ const char* separator = "";
while (query.next_solution()) {
for (int i = 0; i < compound.arity(); i++) {
- const char* separator = "";
ss << separator << (char *)termv[i];
separator = ", ";
}
- ss << std::endl;
}
return ss.str();
}
@@ -158,7 +210,15 @@ void SWIDataModel::assign(const std::string& location, const Data& data) {
void SWIDataModel::init(const Arabica::DOM::Element<std::string>& dataElem,
const Arabica::DOM::Document<std::string>& doc,
- const std::string& content) {}
+ const std::string& content) {
+ std::string key;
+ if (HAS_ATTR(dataElem, "id")) {
+ key = ATTR(dataElem, "id");
+ } else if (HAS_ATTR(dataElem, "location")) {
+ key = ATTR(dataElem, "location");
+ }
+ assign(dataElem, doc, content);
+}
void SWIDataModel::init(const std::string& location, const Data& data) {}
bool SWIDataModel::isDeclared(const std::string& expr) {
diff --git a/src/uscxml/plugins/datamodel/xpath/XPathDataModel.cpp b/src/uscxml/plugins/datamodel/xpath/XPathDataModel.cpp
index 6377af2..1af56b5 100644
--- a/src/uscxml/plugins/datamodel/xpath/XPathDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/xpath/XPathDataModel.cpp
@@ -380,19 +380,23 @@ void XPathDataModel::assign(const Element<std::string>& assignElem,
// test 326ff
XPathValue<std::string> key = _xpath.evaluate_expr(location, _doc);
+#if 0
if (key.type() == NODE_SET) {
- for (int i = 0; i < key.asNodeSet().size(); i++) {
- Node<std::string> node = key.asNodeSet()[i];
- if (node == _varResolver.resolveVariable("", "_ioprocessors").asNodeSet()[0])
- throw Event("error.execution", Event::PLATFORM);
- if (node == _varResolver.resolveVariable("", "_sessionid").asNodeSet()[0])
- throw Event("error.execution", Event::PLATFORM);
- if (node == _varResolver.resolveVariable("", "_name").asNodeSet()[0])
- throw Event("error.execution", Event::PLATFORM);
- if (node == _varResolver.resolveVariable("", "_event").asNodeSet()[0])
- throw Event("error.execution", Event::PLATFORM);
- }
+ try {
+ for (int i = 0; i < key.asNodeSet().size(); i++) {
+ Node<std::string> node = key.asNodeSet()[i];
+ if (node == _varResolver.resolveVariable("", "_ioprocessors").asNodeSet()[0])
+ throw Event("error.execution", Event::PLATFORM);
+ if (node == _varResolver.resolveVariable("", "_sessionid").asNodeSet()[0])
+ throw Event("error.execution", Event::PLATFORM);
+ if (node == _varResolver.resolveVariable("", "_name").asNodeSet()[0])
+ throw Event("error.execution", Event::PLATFORM);
+ if (node == _varResolver.resolveVariable("", "_event").asNodeSet()[0])
+ throw Event("error.execution", Event::PLATFORM);
+ }
+ } catch (Event e) {}
}
+#endif
NodeSet<std::string> nodeSet;
if (doc) {
if (doc.getDocumentElement()) {
@@ -495,7 +499,7 @@ void XPathDataModel::init(const Element<std::string>& dataElem,
// put data element into nodeset and bind to xpath variable
NodeSet<std::string> nodeSet;
-#if 1
+#if 0
nodeSet.push_back(container);
#else
Node<std::string> node = container.getFirstChild();
diff --git a/src/uscxml/plugins/element/CMakeLists.txt b/src/uscxml/plugins/element/CMakeLists.txt
new file mode 100644
index 0000000..fa54fc3
--- /dev/null
+++ b/src/uscxml/plugins/element/CMakeLists.txt
@@ -0,0 +1,53 @@
+# Fetch element
+
+file(GLOB_RECURSE FETCH_ELEMENT
+ src/uscxml/plugins/element/fetch/*.cpp
+ src/uscxml/plugins/element/fetch/*.h
+)
+source_group("Element\\fetch" FILES ${FETCH_ELEMENT})
+if (BUILD_AS_PLUGINS)
+ add_library(
+ element_fetch SHARED
+ ${FETCH_ELEMENT})
+ target_link_libraries(element_fetch uscxml)
+ set_target_properties(element_fetch PROPERTIES FOLDER "Plugin Element")
+else()
+ list (APPEND USCXML_FILES ${FETCH_ELEMENT})
+endif()
+
+
+# Postpone element
+
+file(GLOB_RECURSE POSTPONE_ELEMENT
+ src/uscxml/plugins/element/postpone/*.cpp
+ src/uscxml/plugins/element/postpone/*.h
+)
+source_group("Element\\postpone" FILES ${POSTPONE_ELEMENT})
+if (BUILD_AS_PLUGINS)
+ add_library(
+ element_postpone SHARED
+ ${POSTPONE_ELEMENT})
+ target_link_libraries(element_postpone uscxml)
+ set_target_properties(element_postpone PROPERTIES FOLDER "Plugin Element")
+else()
+ list (APPEND USCXML_FILES ${POSTPONE_ELEMENT})
+endif()
+
+
+# Respond element
+
+file(GLOB_RECURSE RESPOND_ELEMENT
+ src/uscxml/plugins/element/respond/*.cpp
+ src/uscxml/plugins/element/respond/*.h
+)
+source_group("Element\\respond" FILES ${RESPOND_ELEMENT})
+if (BUILD_AS_PLUGINS)
+ add_library(
+ element_respond SHARED
+ ${RESPOND_ELEMENT})
+ target_link_libraries(element_respond uscxml)
+ set_target_properties(element_respond PROPERTIES FOLDER "Plugin Element")
+else()
+ list (APPEND USCXML_FILES ${RESPOND_ELEMENT})
+endif()
+
diff --git a/src/uscxml/plugins/invoker/CMakeLists.txt b/src/uscxml/plugins/invoker/CMakeLists.txt
new file mode 100644
index 0000000..4d38199
--- /dev/null
+++ b/src/uscxml/plugins/invoker/CMakeLists.txt
@@ -0,0 +1,272 @@
+# sample invoker - include to make sure it compiles
+file(GLOB_RECURSE SAMPLE_INVOKER
+ src/uscxml/plugins/invoker/sample/*.cpp
+ src/uscxml/plugins/invoker/sample/*.h
+)
+source_group("Invoker\\sample" FILES ${SAMPLE_INVOKER})
+if (BUILD_AS_PLUGINS)
+ add_library(
+ invoker_sample SHARED
+ ${SAMPLE_INVOKER})
+ target_link_libraries(invoker_sample uscxml)
+ set_target_properties(invoker_sample PROPERTIES FOLDER "Plugin Invoker")
+else()
+ list (APPEND USCXML_FILES ${SAMPLE_INVOKER})
+endif()
+
+
+# DirMon invoker to watch for filesystem changes
+
+file(GLOB_RECURSE DIRMON_INVOKER
+ src/uscxml/plugins/invoker/filesystem/dirmon/*.cpp
+ src/uscxml/plugins/invoker/filesystem/dirmon/*.h
+)
+source_group("Invoker\\dirmon" FILES ${DIRMON_INVOKER})
+if (BUILD_AS_PLUGINS)
+ add_library(
+ invoker_dirmon SHARED
+ ${DIRMON_INVOKER})
+ target_link_libraries(invoker_dirmon uscxml)
+ set_target_properties(invoker_dirmon PROPERTIES FOLDER "Plugin Invoker")
+else()
+ list (APPEND USCXML_FILES ${DIRMON_INVOKER})
+endif()
+
+
+# System invoker to open a native command
+
+file(GLOB_RECURSE SYSTEM_INVOKER
+ src/uscxml/plugins/invoker/system/*.cpp
+ src/uscxml/plugins/invoker/system/*.h
+)
+source_group("Invoker\\system" FILES ${SYSTEM_INVOKER})
+if (BUILD_AS_PLUGINS)
+ add_library(
+ invoker_system SHARED
+ ${SYSTEM_INVOKER})
+ target_link_libraries(invoker_system uscxml)
+ set_target_properties(invoker_system PROPERTIES FOLDER "Plugin Invoker")
+else()
+ list (APPEND USCXML_FILES ${SYSTEM_INVOKER})
+endif()
+
+
+# SQLite3 SQL Invoker
+
+find_package(Sqlite3)
+if (SQLITE3_FOUND)
+ file(GLOB_RECURSE SQLITE3_INVOKER
+ src/uscxml/plugins/invoker/sqlite3/*.cpp
+ src/uscxml/plugins/invoker/sqlite3/*.h
+ )
+ source_group("Invoker\\sqlite" FILES ${SQLITE3_INVOKER})
+ if (BUILD_AS_PLUGINS)
+ add_library(
+ invoker_sqlite3 SHARED
+ ${SQLITE3_INVOKER})
+ target_link_libraries(invoker_sqlite3 uscxml)
+ set_target_properties(invoker_sqlite3 PROPERTIES FOLDER "Plugin Invoker")
+ else()
+ list (APPEND USCXML_FILES ${SQLITE3_INVOKER})
+ endif()
+endif()
+
+
+# ffmpeg invoker
+
+find_package(FFMPEG)
+if (FFMPEG_FOUND)
+ list (APPEND USCXML_INCLUDE_DIRS ${FFMPEG_INCLUDE_DIR})
+ file(GLOB_RECURSE FFMPEG_INVOKER
+ src/uscxml/plugins/invoker/ffmpeg/*.cpp
+ src/uscxml/plugins/invoker/ffmpeg/*.h
+ )
+ source_group("Invoker\\ffmpeg" FILES ${FFMPEG_INVOKER})
+ if (BUILD_AS_PLUGINS)
+ add_library(
+ invoker_ffmpeg SHARED
+ ${FFMPEG_INVOKER})
+ target_link_libraries(invoker_ffmpeg uscxml)
+ set_target_properties(invoker_ffmpeg PROPERTIES FOLDER "Plugin Invoker")
+ else()
+ list (APPEND USCXML_FILES ${FFMPEG_INVOKER})
+ endif()
+endif()
+
+
+# UMUNDO invoker
+
+if (WIN32)
+ find_package(UMUNDO COMPONENTS convenience)
+else()
+ find_package(UMUNDO COMPONENTS rpc serial core)
+endif()
+if (UMUNDO_FOUND)
+ list (APPEND USCXML_INCLUDE_DIRS ${UMUNDO_INCLUDE_DIR})
+ file(GLOB_RECURSE UMUNDO_INVOKER
+ src/uscxml/plugins/invoker/umundo/*.cpp
+ src/uscxml/plugins/invoker/umundo/*.h)
+ source_group("Invoker\\umundo" FILES ${UMUNDO_INVOKER})
+ if (BUILD_AS_PLUGINS)
+ add_library(
+ invoker_umundo SHARED
+ ${UMUNDO_INVOKER})
+ target_link_libraries(invoker_umundo
+ uscxml
+ ${UMUNDO_LIBRARIES})
+ set_target_properties(invoker_umundo PROPERTIES FOLDER "Plugin Invoker")
+ else()
+ list (APPEND USCXML_FILES ${UMUNDO_INVOKER})
+ list (APPEND USCXML_OPT_LIBS ${UMUNDO_LIBRARIES})
+ endif()
+ add_definitions("-DUMUNDO_STATIC")
+endif()
+
+
+# USCXML invoker
+
+file(GLOB_RECURSE USCXML_INVOKER
+ src/uscxml/plugins/invoker/scxml/*.cpp
+ src/uscxml/plugins/invoker/scxml/*.h)
+source_group("Invoker\\uscxml" FILES ${USCXML_INVOKER})
+if (BUILD_AS_PLUGINS)
+ add_library(
+ invoker_uscxml SHARED
+ ${USCXML_INVOKER})
+ target_link_libraries(invoker_uscxml
+ uscxml)
+ set_target_properties(invoker_uscxml PROPERTIES FOLDER "Plugin Invoker")
+else()
+ list (APPEND USCXML_FILES ${USCXML_INVOKER})
+endif()
+
+
+# HTTP server invoker
+
+file(GLOB_RECURSE HTTPSERVLET_INVOKER
+ src/uscxml/plugins/invoker/http/*.cpp
+ src/uscxml/plugins/invoker/http/*.h)
+source_group("Invoker\\httpservlet" FILES ${HTTPSERVLET_INVOKER})
+if (BUILD_AS_PLUGINS)
+ add_library(
+ invoker_httpserver SHARED
+ ${HTTPSERVLET_INVOKER})
+ target_link_libraries(invoker_httpserver
+ uscxml)
+ set_target_properties(invoker_httpserver PROPERTIES FOLDER "Plugin Invoker")
+else()
+ list (APPEND USCXML_FILES ${HTTPSERVLET_INVOKER})
+endif()
+
+
+# Heartbeat invoker
+
+file(GLOB_RECURSE HEARTBEAT_INVOKER
+ src/uscxml/plugins/invoker/heartbeat/*.cpp
+ src/uscxml/plugins/invoker/heartbeat/*.h
+)
+source_group("Invoker\\heartbeat" FILES ${HEARTBEAT_INVOKER})
+if (BUILD_AS_PLUGINS)
+ add_library(
+ invoker_heartbeat SHARED
+ ${HEARTBEAT_INVOKER})
+ target_link_libraries(invoker_heartbeat uscxml)
+ set_target_properties(invoker_heartbeat PROPERTIES FOLDER "Plugin Invoker")
+else()
+ list (APPEND USCXML_FILES ${HEARTBEAT_INVOKER})
+endif()
+
+
+# OpenSceneGraph invoker
+if (UNIX)
+ set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_ORIG}) # link dynamically!
+elseif(WIN32)
+ if (ENV{OSG_ROOT} STREQUAL "")
+ set(ENV{OSG_ROOT} "C:/Program Files/OpenSceneGraph-3.0.1")
+ endif()
+endif()
+find_package(OpenSceneGraph COMPONENTS osgViewer osgGA osgText osgFX osgManipulator osgDB osgUtil OpenThreads)
+find_package(OpenGL)
+if (OPENSCENEGRAPH_FOUND AND OPENGL_FOUND)
+ list (APPEND USCXML_INCLUDE_DIRS ${OPENSCENEGRAPH_INCLUDE_DIRS})
+ list (APPEND USCXML_INCLUDE_DIRS ${OPENGL_INCLUDE_DIR})
+
+ file(GLOB OPENSCENEGRAPH_INVOKER
+ src/uscxml/plugins/invoker/graphics/openscenegraph/*.cpp
+ src/uscxml/plugins/invoker/graphics/openscenegraph/*.h)
+ source_group("Invoker\\scenegraph" FILES ${OPENSCENEGRAPH_INVOKER})
+
+ if (BUILD_AS_PLUGINS)
+ add_library(
+ invoker_openscenegraph SHARED
+ ${OPENSCENEGRAPH_INVOKER})
+ target_link_libraries(invoker_openscenegraph
+ ${OPENSCENEGRAPH_LIBRARIES}
+ ${OPENGL_LIBRARIES}
+ uscxml)
+ set_target_properties(invoker_openscenegraph PROPERTIES FOLDER "Plugin Invoker")
+ else()
+ list (APPEND USCXML_FILES ${OPENSCENEGRAPH_INVOKER})
+ list (APPEND USCXML_OPT_LIBS ${OPENSCENEGRAPH_LIBRARIES} ${OPENGL_LIBRARIES})
+ endif()
+
+ file(GLOB OPENSCENEGRAPH_CONVERTER_INVOKER
+ src/uscxml/plugins/invoker/graphics/openscenegraph/converter/*.cpp
+ src/uscxml/plugins/invoker/graphics/openscenegraph/converter/*.h)
+ source_group("Invoker\\scenegraph\\convert" FILES ${OPENSCENEGRAPH_CONVERTER_INVOKER})
+
+ if (BUILD_AS_PLUGINS)
+ add_library(
+ invoker_openscenegraph_convert SHARED
+ ${OPENSCENEGRAPH_CONVERTER_INVOKER})
+ target_link_libraries(invoker_openscenegraph_convert
+ ${OPENSCENEGRAPH_LIBRARIES}
+ ${OPENGL_LIBRARIES}
+ uscxml)
+ set_target_properties(invoker_openscenegraph_convert PROPERTIES FOLDER "Plugin Invoker")
+ else()
+ list (APPEND USCXML_FILES ${OPENSCENEGRAPH_CONVERTER_INVOKER})
+ list (APPEND USCXML_OPT_LIBS ${OPENSCENEGRAPH_LIBRARIES} ${OPENGL_LIBRARIES})
+ endif()
+
+endif()
+if (UNIX)
+ set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
+endif()
+
+
+# MILES modality components
+
+find_package(MILES)
+if (MILES_FOUND AND OFF)
+ list (APPEND USCXML_INCLUDE_DIRS ${MILES_INCLUDE_DIR})
+
+ # openal is only needed for miles
+ find_package(OpenAL REQUIRED)
+# find_package(JPEG REQUIRED)
+ list (APPEND MILES_LIBRARIES "iconv")
+ list (APPEND MILES_LIBRARIES ${JPEG_LIBRARIES})
+ list (APPEND USCXML_INCLUDE_DIRS ${OPENAL_INCLUDE_DIR})
+
+ file(GLOB_RECURSE MILES_INVOKER
+ src/uscxml/plugins/invoker/miles/*.cpp
+ src/uscxml/plugins/invoker/miles/*.h)
+ source_group("Invoker\\miles" FILES ${MILES_INVOKER})
+# message("MILES_INVOKER ${MILES_INVOKER}")
+
+ if (BUILD_AS_PLUGINS)
+ add_library(
+ invoker_miles SHARED
+ ${MILES_INVOKER})
+ target_link_libraries(invoker_miles
+ ${MILES_LIBRARIES}
+ ${OPENAL_LIBRARY}
+ uscxml)
+ set_target_properties(invoker_miles PROPERTIES FOLDER "Plugin Invoker")
+ else()
+ list (APPEND USCXML_FILES ${MILES_INVOKER})
+ list (APPEND USCXML_OPT_LIBS ${MILES_LIBRARIES})
+ list (APPEND USCXML_OPT_LIBS ${OPENAL_LIBRARY})
+ endif()
+endif()
+
diff --git a/src/uscxml/plugins/ioprocessor/CMakeLists.txt b/src/uscxml/plugins/ioprocessor/CMakeLists.txt
new file mode 100644
index 0000000..c5f46e8
--- /dev/null
+++ b/src/uscxml/plugins/ioprocessor/CMakeLists.txt
@@ -0,0 +1,53 @@
+# LIBEVENT basichttp ioprocessor - this one is already required above
+
+file(GLOB_RECURSE BASICHTTP_IOPROCESSOR
+ src/uscxml/plugins/ioprocessor/basichttp/*.cpp
+ src/uscxml/plugins/ioprocessor/basichttp/*.h
+)
+source_group("IOProcessor\\basichttp" FILES ${BASICHTTP_IOPROCESSOR})
+if (BUILD_AS_PLUGINS)
+ add_library(
+ ioprocessor_basichttp SHARED
+ ${BASICHTTP_IOPROCESSOR})
+ target_link_libraries(ioprocessor_basichttp uscxml)
+ set_target_properties(ioprocessor_basichttp PROPERTIES FOLDER "Plugin IOProcessor")
+else()
+ list (APPEND USCXML_FILES ${BASICHTTP_IOPROCESSOR})
+endif()
+
+
+# scxml ioprocessor - this one is already required above
+
+file(GLOB_RECURSE SCXML_IOPROCESSOR
+ src/uscxml/plugins/ioprocessor/scxml/*.cpp
+ src/uscxml/plugins/ioprocessor/scxml/*.h
+)
+source_group("IOProcessor\\scxml" FILES ${SCXML_IOPROCESSOR})
+if (BUILD_AS_PLUGINS)
+ add_library(
+ ioprocessor_scxml SHARED
+ ${SCXML_IOPROCESSOR})
+ target_link_libraries(ioprocessor_scxml uscxml)
+ set_target_properties(ioprocessor_scxml PROPERTIES FOLDER "Plugin IOProcessor")
+else()
+ list (APPEND USCXML_FILES ${SCXML_IOPROCESSOR})
+endif()
+
+
+# mmi ioprocessor
+
+file(GLOB_RECURSE MMI_IOPROCESSOR
+ src/uscxml/plugins/ioprocessor/modality/*.cpp
+ src/uscxml/plugins/ioprocessor/modality/*.h
+)
+source_group("IOProcessor\\modality" FILES ${MMI_IOPROCESSOR})
+if (BUILD_AS_PLUGINS)
+ add_library(
+ ioprocessor_mmi SHARED
+ ${MMI_IOPROCESSOR})
+ target_link_libraries(ioprocessor_mmi uscxml)
+ set_target_properties(ioprocessor_mmi PROPERTIES FOLDER "Plugin IOProcessor")
+else()
+ list (APPEND USCXML_FILES ${MMI_IOPROCESSOR})
+endif()
+