summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins/element/file/FileElement.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/uscxml/plugins/element/file/FileElement.h')
-rw-r--r--src/uscxml/plugins/element/file/FileElement.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/uscxml/plugins/element/file/FileElement.h b/src/uscxml/plugins/element/file/FileElement.h
new file mode 100644
index 0000000..b9e43bc
--- /dev/null
+++ b/src/uscxml/plugins/element/file/FileElement.h
@@ -0,0 +1,65 @@
+#ifndef FILEELEMENT_H_VJ3JIMEJ
+#define FILEELEMENT_H_VJ3JIMEJ
+
+#include <uscxml/Interpreter.h>
+#include <sys/stat.h>
+
+#ifdef BUILD_AS_PLUGINS
+#include "uscxml/plugins/Plugins.h"
+#endif
+
+namespace uscxml {
+
+class FileElement : public ExecutableContentImpl {
+public:
+ enum Operation {
+ READ,
+ WRITE,
+ APPEND
+ };
+
+ enum Type {
+ XML,
+ JSON,
+ TEXT,
+ BINARY
+ };
+
+ FileElement() {
+ _sandBoxed = true;
+ }
+ virtual ~FileElement();
+ boost::shared_ptr<ExecutableContentImpl> create(InterpreterImpl* interpreter);
+
+ std::string getLocalName() {
+ return "file";
+ }
+
+ std::string getNamespace() {
+ return "http://www.w3.org/2005/07/scxml";
+ }
+
+ bool processChildren() {
+ return false;
+ }
+
+ void enterElement(const Arabica::DOM::Node<std::string>& node);
+ void exitElement(const Arabica::DOM::Node<std::string>& node);
+
+protected:
+
+ bool _sandBoxed;
+ std::string _givenUrl;
+ URL _actualUrl;
+ std::string _filename;
+ Operation _operation;
+ Type _type;
+};
+
+#ifdef BUILD_AS_PLUGINS
+PLUMA_INHERIT_PROVIDER(FileElement, ExecutableContentImpl);
+#endif
+
+}
+
+#endif /* end of include guard: FILEELEMENT_H_VJ3JIMEJ */