171d3990f6c5166401cbb274f4ced5404bbb34b6
[libt2n] / codegen / codegen-stubhead.hxx
1 #ifndef MINIMALISTIC_STUB_HXX
2 #define MINIMALISTIC_STUB_HXX
3
4 #include <boost/archive/binary_oarchive.hpp>
5 #include <boost/archive/binary_iarchive.hpp>
6 #include <boost/archive/xml_oarchive.hpp>
7 #include <boost/archive/xml_iarchive.hpp>
8 #include <boost/serialization/serialization.hpp>
9
10 #include <string>
11 #include <t2n_exception.hxx>
12 #include <command.hxx>
13
14 #ifdef __GCCXML__
15 // used during parsing run with gccxml
16
17 /** @brief mark a function to export it via libt2n
18     @par Example
19     @code
20     LIBT2N_EXPORT std::string testfunc(const std::string &str)
21     {
22         // your code here
23     }
24     @endcode
25 */
26 #define LIBT2N_EXPORT __attribute((gccxml("libt2n-default")))
27
28
29 /** @brief tell libt2n about a default argument
30     @param type type of the default argument
31     @param value default value
32     @par Example
33     @code
34     LIBT2N_EXPORT std::string testfunc(LIBT2N_DEFAULT_ARG(const std::string str&,"hello world"))
35     {
36         // your code here
37     }
38     @endcode
39     @remarks Codegen gets default arguments via this define (gccxml-attribute) because gccxml
40              does not correctly output them (e.g. the namespace is ambiguous)
41 */
42 #define LIBT2N_DEFAULT_ARG(type,value) __attribute((gccxml("libt2n-default-arg",#value))) type = value
43
44 #else
45 // used during regular compile
46
47 #define LIBT2N_EXPORT
48 #define LIBT2N_DEFAULT_ARG(type,value) type = value
49
50 #endif
51
52 #endif