b15ccee6b18ad5baaf64d79e69d9c547e14213ba
[libt2n] / example-codegen / server.hxx
1 #include <string>
2 // serialization of string
3 #include <boost/serialization/string.hpp>
4 // serialization of pair
5 #include <boost/serialization/utility.hpp>
6
7 // std::vector
8 #include <vector>
9 #include <boost/serialization/vector.hpp>
10
11 #include "codegen_common.hxx"
12
13 LIBT2N_SET_DEFAULTGROUP(default);
14
15 //! test pass by copy
16 LIBT2N_EXPORT std::string testfunc(std::string str) 
17 {
18     std::string ret;
19     if (str=="throw")
20         throw libt2n::t2n_runtime_error("throw me around");
21     if (str=="big")
22         ret.insert(0,100*1024,'x');
23     else
24         ret=str+", testfunc() was here";
25     return ret;
26 }
27
28 //! test pass by const reference
29 LIBT2N_EXPORT std::string testfunc_ref(const std::string &str) 
30 {
31     std::string ret;
32     if (str=="throw")
33         throw libt2n::t2n_runtime_error("throw me around");
34     if (str=="big")
35         ret.insert(0,100*1024,'x');
36     else
37         ret=str+", testfunc() was here";
38     return ret;
39 }
40
41 //! test builtin type
42 LIBT2N_EXPORT int t2(int i) 
43 {
44     return i;
45 }
46
47 using namespace std;
48
49 //! test pair, multiple arguments and namespace
50 LIBT2N_EXPORT_GROUP(other) bool t3(int i, float f, const string &s, const pair<int, float> &p)
51 {
52     return (i==p.first) && (f==p.second) && (s=="hello");
53 }
54
55 //! test function overload
56 LIBT2N_EXPORT_GROUP(other) int t3(int i)
57 {
58     return i;
59 }
60
61 //! test std::vector
62 LIBT2N_EXPORT_GROUP(other) bool t3(const std::vector<int> &i)
63 {
64     return (i.size()==1) && (i[0]==10);
65 }