diff options
author | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2014-06-27 22:32:46 (GMT) |
---|---|---|
committer | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2014-06-27 22:32:46 (GMT) |
commit | c70d02010ea99e6c8e35da3b767f41f1ee5dce56 (patch) | |
tree | a0ef030204ec2eb656845d03876006d9cdc0760c /src/uscxml/Factory.h | |
parent | a4b506fd774ec50ad79b7531bd3698c5a6339407 (diff) | |
download | uscxml-c70d02010ea99e6c8e35da3b767f41f1ee5dce56.zip uscxml-c70d02010ea99e6c8e35da3b767f41f1ee5dce56.tar.gz uscxml-c70d02010ea99e6c8e35da3b767f41f1ee5dce56.tar.bz2 |
Major header movement
- Used IWYU to reorganize headers
- Dropped PHP support
- Updated tests
Diffstat (limited to 'src/uscxml/Factory.h')
-rw-r--r-- | src/uscxml/Factory.h | 407 |
1 files changed, 7 insertions, 400 deletions
diff --git a/src/uscxml/Factory.h b/src/uscxml/Factory.h index ff08754..a0f5178 100644 --- a/src/uscxml/Factory.h +++ b/src/uscxml/Factory.h @@ -21,8 +21,13 @@ #define FACTORY_H_5WKLGPRB #include "uscxml/Common.h" -#include "uscxml/Message.h" -#include "uscxml/Convenience.h" + +#include "uscxml/plugins/ExecutableContent.h" +#include "uscxml/plugins/EventHandler.h" +#include "uscxml/plugins/IOProcessor.h" +#include "uscxml/plugins/Invoker.h" +#include "uscxml/plugins/DataModel.h" + #include <string.h> #ifdef BUILD_AS_PLUGINS @@ -38,404 +43,6 @@ namespace uscxml { class InterpreterImpl; -class USCXML_API ExecutableContentImpl { -public: - ExecutableContentImpl() {}; - virtual ~ExecutableContentImpl() {}; - virtual boost::shared_ptr<ExecutableContentImpl> create(InterpreterImpl* interpreter) = 0; - - virtual void setInterpreter(InterpreterImpl* interpreter) { - _interpreter = interpreter; - } - - virtual std::string getLocalName() = 0; ///< The name of the element. - virtual std::string getNamespace() { - return "http://www.w3.org/2005/07/scxml"; ///< The namespace of the element. - } - virtual void enterElement(const Arabica::DOM::Node<std::string>& node) = 0; ///< Invoked when entering the element as part of evaluating executable content. - virtual void exitElement(const Arabica::DOM::Node<std::string>& node) = 0; ///< Invoked when exiting the element as part of evaluating executable content. - virtual bool processChildren() = 0; ///< Whether or not the interpreter should process this elements children. - -protected: - InterpreterImpl* _interpreter; -}; - -class USCXML_API ExecutableContent { -public: - ExecutableContent() : _impl() {} - ExecutableContent(boost::shared_ptr<ExecutableContentImpl> const impl) : _impl(impl) { } - ExecutableContent(const ExecutableContent& other) : _impl(other._impl) { } - virtual ~ExecutableContent() {}; - - operator bool() const { - return _impl; - } - bool operator< (const ExecutableContent& other) const { - return _impl < other._impl; - } - bool operator==(const ExecutableContent& other) const { - return _impl == other._impl; - } - bool operator!=(const ExecutableContent& other) const { - return _impl != other._impl; - } - ExecutableContent& operator= (const ExecutableContent& other) { - _impl = other._impl; - return *this; - } - - void setInterpreter(InterpreterImpl* interpreter) { - _impl->setInterpreter(interpreter); - } - - std::string getLocalName() { - return _impl->getLocalName(); - } - std::string getNamespace() { - return _impl->getNamespace(); - } - void enterElement(const Arabica::DOM::Node<std::string>& node) { - return _impl->enterElement(node); - } - void exitElement(const Arabica::DOM::Node<std::string>& node) { - return _impl->exitElement(node); - } - bool processChildren() { - return _impl->processChildren(); - } -protected: - boost::shared_ptr<ExecutableContentImpl> _impl; - -}; - -class USCXML_API EventHandlerImpl { -public: - virtual ~EventHandlerImpl() {} - - virtual std::list<std::string> getNames() = 0; - - virtual void setInterpreter(InterpreterImpl* interpreter) { - _interpreter = interpreter; - } - void setInvokeId(const std::string& invokeId) { - _invokeId = invokeId; - } - void setType(const std::string& type) { - _type = type; - } - - void setElement(const Arabica::DOM::Element<std::string>& element) { - _element = element; - } - - Arabica::DOM::Element<std::string> getElement() { - return _element; - } - - virtual Data getDataModelVariables() = 0; - virtual void send(const SendRequest& req) = 0; - - virtual void runOnMainThread() {}; - void returnEvent(Event& event); - void returnErrorExecution(const std::string&); - void returnErrorPlatform(const std::string&); - -protected: - InterpreterImpl* _interpreter; - Arabica::DOM::Element<std::string> _element; - std::string _invokeId; - std::string _type; - -}; - -class USCXML_API EventHandler { -public: - EventHandler() : _impl() {} - EventHandler(boost::shared_ptr<EventHandlerImpl> const impl) : _impl(impl) { } - EventHandler(const EventHandler& other) : _impl(other._impl) { } - virtual ~EventHandler() {}; - - virtual std::list<std::string> getNames() { - return _impl->getNames(); - } - - virtual Data getDataModelVariables() const { - return _impl->getDataModelVariables(); - }; - virtual void send(const SendRequest& req) { - return _impl->send(req); - }; - virtual void runOnMainThread() { - return _impl->runOnMainThread(); - } - - void setInterpreter(InterpreterImpl* interpreter) { - _impl->setInterpreter(interpreter); - } - void setInvokeId(const std::string& invokeId) { - _impl->setInvokeId(invokeId); - } - void setType(const std::string& type) { - _impl->setType(type); - } - - void setElement(const Arabica::DOM::Element<std::string>& element) { - _impl->setElement(element); - } - - Arabica::DOM::Element<std::string> getElement() { - return _impl->getElement(); - } - -protected: - boost::shared_ptr<EventHandlerImpl> _impl; - friend class InterpreterImpl; -}; - -class USCXML_API IOProcessorImpl : public EventHandlerImpl { -public: - IOProcessorImpl() {}; - virtual ~IOProcessorImpl() {}; - virtual boost::shared_ptr<IOProcessorImpl> create(InterpreterImpl* interpreter) = 0; -}; - -class USCXML_API IOProcessor : public EventHandler { -public: - IOProcessor() : _impl() {} - IOProcessor(boost::shared_ptr<IOProcessorImpl> const impl) : EventHandler(impl), _impl(impl) { } - IOProcessor(const IOProcessor& other) : EventHandler(other._impl), _impl(other._impl) { } - virtual ~IOProcessor() {}; - - operator bool() const { - return _impl; - } - bool operator< (const IOProcessor& other) const { - return _impl < other._impl; - } - bool operator==(const IOProcessor& other) const { - return _impl == other._impl; - } - bool operator!=(const IOProcessor& other) const { - return _impl != other._impl; - } - IOProcessor& operator= (const IOProcessor& other) { - _impl = other._impl; - EventHandler::_impl = _impl; - return *this; - } - -protected: - boost::shared_ptr<IOProcessorImpl> _impl; - friend class InterpreterImpl; -}; - -class USCXML_API InvokerImpl : public EventHandlerImpl { -public: - virtual ~InvokerImpl() {} - virtual void invoke(const InvokeRequest& req) = 0; - virtual boost::shared_ptr<InvokerImpl> create(InterpreterImpl* interpreter) = 0; -}; - -class USCXML_API Invoker : public EventHandler { -public: - Invoker() : _impl() {} - Invoker(boost::shared_ptr<InvokerImpl> const impl) : EventHandler(impl), _impl(impl) { } - Invoker(const Invoker& other) : EventHandler(other._impl), _impl(other._impl) { } - virtual ~Invoker() {}; - - operator bool() const { - return _impl; - } - bool operator< (const Invoker& other) const { - return _impl < other._impl; - } - bool operator==(const Invoker& other) const { - return _impl == other._impl; - } - bool operator!=(const Invoker& other) const { - return _impl != other._impl; - } - Invoker& operator= (const Invoker& other) { - _impl = other._impl; - EventHandler::_impl = _impl; - return *this; - } - - virtual void invoke(InvokeRequest& req) { - _impl->invoke(req); - } - -protected: - boost::shared_ptr<InvokerImpl> _impl; -}; - -class USCXML_API DataModelImpl { -public: - virtual ~DataModelImpl() {} - virtual boost::shared_ptr<DataModelImpl> create(InterpreterImpl* interpreter) = 0; - virtual std::list<std::string> getNames() = 0; - - virtual bool validate(const std::string& location, const std::string& schema) = 0; - virtual void setEvent(const Event& event) = 0; - virtual Data getStringAsData(const std::string& content) = 0; - - size_t replaceExpressions(std::string& content); - - // foreach - virtual uint32_t getLength(const std::string& expr) = 0; - virtual void setForeach(const std::string& item, - const std::string& array, - const std::string& index, - uint32_t iteration) = 0; - virtual void pushContext() = 0; - virtual void popContext() = 0; - - virtual void eval(const Arabica::DOM::Element<std::string>& scriptElem, - const std::string& expr) = 0; - - virtual std::string evalAsString(const std::string& expr) = 0; - - virtual bool evalAsBool(const Arabica::DOM::Node<std::string>& scriptNode, - const std::string& expr) = 0; - virtual bool evalAsBool(const std::string& expr) { - return evalAsBool(Arabica::DOM::Node<std::string>(), expr); - } - - virtual bool isDeclared(const std::string& expr) = 0; - - virtual void assign(const Arabica::DOM::Element<std::string>& assignElem, - const Arabica::DOM::Node<std::string>& node, - const std::string& content) = 0; - virtual void assign(const std::string& location, const Data& data) = 0; - - virtual void init(const Arabica::DOM::Element<std::string>& dataElem, - const Arabica::DOM::Node<std::string>& node, - const std::string& content) = 0; - virtual void init(const std::string& location, const Data& data) = 0; - - virtual void setInterpreter(InterpreterImpl* interpreter) { - _interpreter = interpreter; - } - - virtual std::string andExpressions(std::list<std::string>) { - return ""; - } - - static void throwErrorExecution(const std::string& cause); - static void throwErrorPlatform(const std::string& cause); - - // we need it public for various static functions -protected: - InterpreterImpl* _interpreter; -}; - -class USCXML_API DataModel { -public: - DataModel() : _impl() {} - DataModel(const boost::shared_ptr<DataModelImpl> impl) : _impl(impl) { } - DataModel(const DataModel& other) : _impl(other._impl) { } - virtual ~DataModel() {}; - - operator bool() const { - return _impl; - } - bool operator< (const DataModel& other) const { - return _impl < other._impl; - } - bool operator==(const DataModel& other) const { - return _impl == other._impl; - } - bool operator!=(const DataModel& other) const { - return _impl != other._impl; - } - DataModel& operator= (const DataModel& other) { - _impl = other._impl; - return *this; - } - - virtual std::list<std::string> getNames() { - return _impl->getNames(); - } - - virtual bool validate(const std::string& location, const std::string& schema) { - return _impl->validate(location, schema); - } - virtual void setEvent(const Event& event) { - return _impl->setEvent(event); - } - virtual Data getStringAsData(const std::string& content) { - return _impl->getStringAsData(content); - } - - virtual void pushContext() { - return _impl->pushContext(); - } - virtual void popContext() { - return _impl->popContext(); - } - - virtual void eval(const Arabica::DOM::Element<std::string>& scriptElem, - const std::string& expr) { - return _impl->eval(scriptElem, expr); - } - virtual std::string evalAsString(const std::string& expr) { - return _impl->evalAsString(expr); - } - virtual bool evalAsBool(const std::string& expr) { - return _impl->evalAsBool(expr); - } - virtual bool evalAsBool(const Arabica::DOM::Node<std::string>& scriptNode, - const std::string& expr) { - return _impl->evalAsBool(scriptNode, expr); - } - - virtual uint32_t getLength(const std::string& expr) { - return _impl->getLength(expr); - } - virtual void setForeach(const std::string& item, - const std::string& array, - const std::string& index, - uint32_t iteration) { - return _impl->setForeach(item, array, index, iteration); - } - - virtual void assign(const Arabica::DOM::Element<std::string>& assignElem, - const Arabica::DOM::Node<std::string>& node, - const std::string& content) { - return _impl->assign(assignElem, node, content); - } - virtual void assign(const std::string& location, const Data& data) { - return _impl->assign(location, data); - } - - virtual void init(const Arabica::DOM::Element<std::string>& dataElem, - const Arabica::DOM::Node<std::string>& node, - const std::string& content) { - return _impl->init(dataElem, node, content); - } - virtual void init(const std::string& location, const Data& data) { - return _impl->init(location, data); - } - - virtual bool isDeclared(const std::string& expr) { - return _impl->isDeclared(expr); - } - - size_t replaceExpressions(std::string& content) { - return _impl->replaceExpressions(content); - } - - std::string andExpressions(std::list<std::string> expressions) { - return _impl->andExpressions(expressions); - } - - virtual void setInterpreter(InterpreterImpl* interpreter) { - _impl->setInterpreter(interpreter); - } - -protected: - boost::shared_ptr<DataModelImpl> _impl; -}; class USCXML_API Factory { public: |