diff options
Diffstat (limited to 'src/uscxml/plugins/datamodel/null/NULLDataModel.cpp')
-rw-r--r-- | src/uscxml/plugins/datamodel/null/NULLDataModel.cpp | 108 |
1 files changed, 0 insertions, 108 deletions
diff --git a/src/uscxml/plugins/datamodel/null/NULLDataModel.cpp b/src/uscxml/plugins/datamodel/null/NULLDataModel.cpp deleted file mode 100644 index efa77fa..0000000 --- a/src/uscxml/plugins/datamodel/null/NULLDataModel.cpp +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @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 <boost/algorithm/string.hpp> - -#include "uscxml/Common.h" -#include "NullDataModel.h" -#include "uscxml/util/DOM.h" - -#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 NullDataModelProvider() ); - return true; -} -#endif - -NullDataModel::NullDataModel() { -} - -std::shared_ptr<DataModelImpl> NullDataModel::create(DataModelCallbacks* callbacks) { - std::shared_ptr<NullDataModel> dm(new NullDataModel()); - dm->_callbacks = callbacks; - return dm; -} - -NullDataModel::~NullDataModel() { -} - -Data NullDataModel::getAsData(const std::string& content) { - Data data = Data::fromJSON(content); - if (data.empty()) { - data = Data(content, Data::VERBATIM); - } - return data; -} - -/** - * The boolean expression language consists of the In predicate only. It has the - * form 'In(id)', where id is the id of a state in the enclosing state machine. - * 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) { - std::string trimmedExpr = expr; - boost::trim(trimmedExpr); - if (!boost::istarts_with(trimmedExpr, "in")) - return false; - - // find string in between brackets - size_t start = trimmedExpr.find_first_of("("); - size_t end = trimmedExpr.find_last_of(")"); - if (start == std::string::npos || end == std::string::npos || start >= end) - return false; - start++; - - // split at comma - std::stringstream ss(trimmedExpr.substr(start, end - start)); - std::list<std::string> stateExprs; - std::string item; - while(std::getline(ss, item, ',')) { - stateExprs.push_back(item); - } - - for (std::list<std::string>::const_iterator stateIter = stateExprs.begin(); stateIter != stateExprs.end(); stateIter++) { - // remove ticks - size_t start = stateIter->find_first_of("'"); - size_t end = stateIter->find_last_of("'"); - - std::string stateName; - if (start != std::string::npos && end != std::string::npos && start < end) { - start++; - stateName = stateIter->substr(start, end - start); - } else { - stateName = *stateIter; - } - - if (_callbacks->isInState(stateName)) { - continue; - } - return false; - } - return true; -} - -} |