summaryrefslogtreecommitdiffstats
path: root/src/uscxml/Message.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/uscxml/Message.h')
-rw-r--r--src/uscxml/Message.h60
1 files changed, 43 insertions, 17 deletions
diff --git a/src/uscxml/Message.h b/src/uscxml/Message.h
index 3008a99..59d3471 100644
--- a/src/uscxml/Message.h
+++ b/src/uscxml/Message.h
@@ -1,3 +1,22 @@
+/**
+ * @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
+ */
+
#ifndef EVENT_H_XZAQ4HR
#define EVENT_H_XZAQ4HR
@@ -14,6 +33,8 @@
#include <boost/lexical_cast.hpp>
#include <inttypes.h>
+#include "uscxml/Common.h"
+
#include "uscxml/Convenience.h"
#include "uscxml/util/MD5.h"
@@ -26,7 +47,7 @@
namespace uscxml {
-class Blob {
+class USCXML_API Blob {
public:
~Blob();
Blob(size_t size);
@@ -38,18 +59,18 @@ public:
std::string md5() {
return uscxml::md5(data, size);
}
-
+
std::string base64() {
return base64_encode((char* const)data, size);
}
-
+
Blob* fromBase64(const std::string base64) {
std::string decoded = base64_decode(base64);
return new Blob((void*)decoded.c_str(), decoded.length());
}
};
-
-class Data {
+
+class USCXML_API Data {
public:
enum Type {
VERBATIM,
@@ -67,7 +88,7 @@ public:
}
}
template <typename T> Data(T value) : atom(toStr(value)), type(INTERPRETED) {}
-
+
explicit Data(const Arabica::DOM::Node<std::string>& dom);
virtual ~Data() {}
@@ -89,11 +110,11 @@ public:
Data data;
return data;
}
-
+
operator std::string() const {
return atom;
}
-
+
operator std::map<std::string, Data>() {
return compound;
}
@@ -101,7 +122,7 @@ public:
operator std::list<Data>() {
return array;
}
-
+
static Data fromJSON(const std::string& jsonString);
static std::string toJSON(const Data& data);
static Data fromXML(const std::string& xmlString);
@@ -153,10 +174,10 @@ protected:
protected:
Arabica::DOM::Document<std::string> toNode(const Arabica::DOM::Document<std::string>& factory, const Data& data);
- friend std::ostream& operator<< (std::ostream& os, const Data& data);
+ friend USCXML_API std::ostream& operator<< (std::ostream& os, const Data& data);
};
-class Event {
+class USCXML_API Event {
public:
enum Type {
INTERNAL = 1,
@@ -313,7 +334,7 @@ public:
}
return false;
}
-
+
#ifdef SWIGIMPORTED
protected:
@@ -334,10 +355,10 @@ protected:
std::map<std::string, Data> namelist;
std::multimap<std::string, Data> params;
- friend std::ostream& operator<< (std::ostream& os, const Event& event);
+ friend USCXML_API std::ostream& operator<< (std::ostream& os, const Event& event);
};
-class InvokeRequest : public Event {
+class USCXML_API InvokeRequest : public Event {
public:
InvokeRequest(Event event) : Event(event) {}
InvokeRequest() {}
@@ -378,11 +399,11 @@ protected:
std::string src;
bool autoForward;
- friend std::ostream& operator<< (std::ostream& os, const InvokeRequest& sendReq);
+ friend USCXML_API std::ostream& operator<< (std::ostream& os, const InvokeRequest& sendReq);
};
-class SendRequest : public Event {
+class USCXML_API SendRequest : public Event {
public:
SendRequest() {}
SendRequest(Event event) : Event(event) {}
@@ -424,10 +445,15 @@ protected:
std::string type;
uint32_t delayMs;
- friend std::ostream& operator<< (std::ostream& os, const SendRequest& sendReq);
+ friend USCXML_API std::ostream& operator<< (std::ostream& os, const SendRequest& sendReq);
};
+USCXML_API std::ostream& operator<< (std::ostream& os, const InvokeRequest& invokeReq);
+USCXML_API std::ostream& operator<< (std::ostream& os, const SendRequest& sendReq);
+USCXML_API std::ostream& operator<< (std::ostream& os, const Event& event);
+USCXML_API std::ostream& operator<< (std::ostream& os, const Data& data);
+
}