File: template_template_parameters.i

package info (click to toggle)
swig 3.0.2-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 34,980 kB
  • ctags: 16,742
  • sloc: cpp: 54,566; ansic: 26,563; java: 9,485; python: 7,204; cs: 6,106; makefile: 5,709; yacc: 5,571; sh: 4,988; ruby: 3,742; perl: 3,224; lisp: 1,825; php: 1,670; tcl: 968; ml: 747; xml: 115
file content (39 lines) | stat: -rw-r--r-- 1,210 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
%module template_template_parameters


%inline %{
  namespace pfc {
    template<typename t_item, template <typename> class t_alloc> class array_t {};
    template<typename t_item> class alloc_fast {
      public:
        typedef t_item alloc_type;
    };
  }

  template<typename t_item, typename t2> class list_impl_t {};

  template<typename t_item, template<typename> class t_alloc = pfc::alloc_fast >
    class list_t : public list_impl_t<t_item,pfc::array_t<t_item,t_alloc> > { 
  public:
    t_item item;
//    typename t_alloc<t_item>::alloc_type allotype; // SWIG can't handle this yet
    void xx() {
      typename t_alloc<t_item>::alloc_type atype; // this type is the same as t_item type
      atype = true;
    }
  };

void TestInstantiations() {
  pfc::array_t<int, pfc::alloc_fast> myArrayInt;
  list_impl_t<int, pfc::array_t<int, pfc::alloc_fast> > myListImplInt;
  (void) myArrayInt;
  (void) myListImplInt;
}
%}

%template(ListImplFastBool) list_impl_t<bool, pfc::array_t<bool, pfc::alloc_fast> >;
%template(ListFastBool) list_t<bool, pfc::alloc_fast>;

%template(ListImplFastDouble) list_impl_t<double, pfc::array_t<double, pfc::alloc_fast> >;
%template(ListDefaultDouble) list_t<double>;