/trunk/Examples/test-suite/template_ns4.i
Swig | 77 lines | 62 code | 15 blank | 0 comment | 0 complexity | 4910b28eec9b9ceb0fb70e256f48aefd MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- %module template_ns4
- %inline %{
- namespace hello {
- class Double {
- };
-
- template <class ArgType, class ResType>
- struct Function_
- {
- char *test() { return (char *) "test"; }
- };
-
- template <class AF, class RF>
- struct ArithFunction : Function_<AF, RF>
- {
- };
-
- template <class ArgType, class ResType>
- struct traits
- {
- };
- template <class ArgType>
- struct traits<ArgType, double>
- {
- typedef ArgType arg_type;
- typedef double res_type;
- typedef ArithFunction<ArgType, double> base;
- };
- template <class ArgType>
- struct traits<ArgType, Double>
- {
- typedef ArgType arg_type;
- typedef Double res_type;
- typedef ArithFunction<ArgType, Double> base;
- };
- template <class AF, class RF>
- class Class_ : public ArithFunction< typename traits<AF, RF>::arg_type,
- typename traits<AF, RF>::res_type >
- {
- };
-
- template <class AF, class RF>
- typename traits<AF, RF>::base
- make_Class()
- {
- return Class_<AF, RF>();
- }
- }
- %}
- %{
- namespace hello {
- template struct Function_ <Double, Double>;
- template struct ArithFunction <Double, Double>;
- template class Class_ <Double, Double>;
- }
- %}
- namespace hello {
- //
- // This complains only when using a namespace
- //
- %template() traits<Double,Double>;
- %template(Function_DD) Function_ <Double, Double>;
- %template(ArithFunction_DD) ArithFunction <Double, Double>;
- %template(Class_DD) Class_ <Double, Double>;
- %template(make_Class_DD) make_Class <Double, Double>;
- }