include codegen stuff into spec-file
[libt2n] / examples / minimalistic-stub.hxx
1 #ifndef MINIMALISTIC_STUB_HXX
2 #define MINIMALISTIC_STUB_HXX
3
4
5 /*
6   stubs to be generated
7   header is used by the client library and the server
8 */
9
10 // todo: why do we have to include the boost headers first?
11 // do we have to know which archive format we will use?
12
13 #include <boost/archive/binary_oarchive.hpp>
14 #include <boost/archive/binary_iarchive.hpp>
15 #include <boost/archive/xml_oarchive.hpp>
16 #include <boost/archive/xml_iarchive.hpp>
17 #include <boost/serialization/serialization.hpp>
18 #include <boost/serialization/string.hpp>
19
20 #include <string>
21 #include <t2n_exception.hxx>
22 #include <command.hxx>
23
24 #ifdef __GCCXML__
25 #define LIBT2N_SET_DEFAULTGROUP(x) namespace { typedef __attribute((gccxml(#x))) int libt2n_default; }
26 #define LIBT2N_EXPORT __attribute((gccxml("libt2n-default")))
27 #define LIBT2N_EXPORT_GROUP(group) __attribute((gccxml("libt2n-"#group)))
28 #else
29 #define LIBT2N_SET_DEFAULTGROUP(x)
30 #define LIBT2N_EXPORT
31 #define LIBT2N_EXPORT_GROUP(group)
32 #endif
33
34 class cmd_group_example : public libt2n::command
35 {
36     private:
37         friend class boost::serialization::access;
38         template<class Archive>
39         void serialize(Archive & ar, const unsigned int version)
40         {
41             ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(libt2n::command);
42         }
43 };
44
45
46 class testfunc_res : public libt2n::result
47 {
48     private:
49         std::string res;
50
51         friend class boost::serialization::access;
52         template<class Archive>
53         void serialize(Archive & ar, const unsigned int version)
54         {
55             ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(libt2n::result);
56             ar & BOOST_SERIALIZATION_NVP(res);
57         }
58
59     public:
60         testfunc_res()
61             { }
62
63         testfunc_res(const std::string& str)
64         {
65             res=str;
66         }
67
68         std::string get_data()
69         {
70             return res;
71         }
72 };
73
74
75 class testfunc_cmd : public cmd_group_example
76 {
77     private:
78         std::string param;
79
80         friend class boost::serialization::access;
81         template<class Archive>
82         void serialize(Archive & ar, const unsigned int version)
83         {
84             ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(cmd_group_example);
85             ar & BOOST_SERIALIZATION_NVP(param);
86         }
87
88     public:
89         testfunc_cmd()
90             { }
91
92         testfunc_cmd(const std::string& str)
93         {
94             param=str;
95         }
96
97         libt2n::result* operator()();
98 };
99
100 void
101 extended_type_info_test();
102
103 #endif