PageRenderTime 39ms CodeModel.GetById 21ms app.highlight 16ms RepoModel.GetById 0ms app.codeStats 0ms

/tags/rel-1-3-15/SWIG/Examples/test-suite/template_ns4.i

#
Swig | 66 lines | 55 code | 11 blank | 0 comment | 0 complexity | 99634660bf0d8aac347340d8d91144ae MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
 1%module template_ns4
 2
 3%inline %{
 4    namespace hello {
 5
 6    class Double {
 7    };
 8   
 9    template <class ArgType, class ResType>
10    struct Function
11    {     
12	char *test() { return (char *) "test"; }
13    };
14   
15    template <class AF, class RF>
16    struct ArithFunction : Function<AF, RF>
17    {
18    };
19   
20    template <class ArgType, class ResType>
21    struct traits
22    {
23    }; 
24
25    template <class ArgType>
26    struct traits<ArgType, double>
27    {
28      typedef ArgType arg_type;
29      typedef double res_type;
30      typedef ArithFunction<ArgType, double> base;
31    };   
32
33    template <class ArgType>
34    struct traits<ArgType, Double>
35    {
36      typedef ArgType arg_type;
37      typedef Double res_type;
38      typedef ArithFunction<ArgType, Double> base;
39    };   
40
41    template <class AF, class RF>
42    class Class : public ArithFunction< typename traits<AF, RF>::arg_type,
43                    typename traits<AF, RF>::res_type >
44    {
45    };
46 
47    template <class AF, class RF>
48    typename traits<AF, RF>::base
49    make_Class()
50    {
51      return Class<AF, RF>();
52    }
53   
54  }  
55%}
56 namespace hello {
57  //
58  // This complains only when using a namespace
59  //
60  %template() traits<Double,Double>;
61  %template(Function_DD) Function <Double, Double>;
62  %template(ArithFunction_DD) ArithFunction <Double, Double>;
63  %template(Class_DD) Class <Double, Double>;
64  %template(make_Class_DD) make_Class <Double, Double>;
65 }
66