added test using own class as argument
[libt2n] / example-codegen / server.hxx
index 027e313..16068a0 100644 (file)
@@ -1,13 +1,36 @@
 #include <string>
-#include "codegen_common.hxx"
+// serialization of string
+#include <boost/serialization/string.hpp>
+// serialization of pair
+#include <boost/serialization/utility.hpp>
 
-using namespace std;
+// std::vector
+#include <vector>
+#include <boost/serialization/vector.hpp>
+
+#include "foo.hxx"
+
+#include "codegen_common.hxx"
 
-LIBT2N_SET_DEFAULTGROUP(example);
+LIBT2N_SET_DEFAULTGROUP(default);
 
+//! test pass by copy
 LIBT2N_EXPORT std::string testfunc(std::string str) 
 {
-    string ret;
+    std::string ret;
+    if (str=="throw")
+        throw libt2n::t2n_runtime_error("throw me around");
+    if (str=="big")
+        ret.insert(0,100*1024,'x');
+    else
+        ret=str+", testfunc() was here";
+    return ret;
+}
+
+//! test pass by const reference
+LIBT2N_EXPORT std::string testfunc_ref(const std::string &str) 
+{
+    std::string ret;
     if (str=="throw")
         throw libt2n::t2n_runtime_error("throw me around");
     if (str=="big")
@@ -16,3 +39,32 @@ LIBT2N_EXPORT std::string testfunc(std::string str)
         ret=str+", testfunc() was here";
     return ret;
 }
+
+//! test builtin type
+LIBT2N_EXPORT int t2(int i) 
+{
+    return i;
+}
+
+using namespace std;
+
+//! test pair, multiple arguments and namespace
+LIBT2N_EXPORT_GROUP(other) bool t3(int i, float f, const string &s, const pair<int, float> &p)
+{
+    return (i==p.first) && (f==p.second) && (s=="hello");
+}
+
+//! test function overload
+LIBT2N_EXPORT_GROUP(other) int t3(int i)
+{
+    return i;
+}
+
+//! test std::vector
+LIBT2N_EXPORT_GROUP(other) bool t3(const std::vector<int> &i)
+{
+    return (i.size()==1) && (i[0]==10);
+}
+
+//! test own type and seperate declaration and definition
+LIBT2N_EXPORT_GROUP(other) bool t3(const Foo &foo);