File: template_template_template_parameters.i

package info (click to toggle)
swig 4.3.0-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 46,232 kB
  • sloc: cpp: 54,631; ansic: 29,122; java: 17,530; python: 12,505; cs: 10,369; ruby: 7,232; yacc: 6,477; makefile: 5,965; javascript: 5,520; sh: 5,415; perl: 4,187; php: 3,693; ml: 2,187; lisp: 2,056; tcl: 1,991; xml: 115
file content (46 lines) | stat: -rw-r--r-- 1,048 bytes parent folder | download | duplicates (2)
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
40
41
42
43
44
45
46
%module template_template_template_parameters

%inline %{
// Github issue #624
class CustomAttrs {
public:
  enum dattr1d {pos, vel, someCustomCaseVar, d1dLast};
};

template <class TT> 
class A {
public:
  TT attributes;
  virtual ~A() {}
};

template <template<class> class A, class T> 
class B : public A<T> {
public:
  virtual void BMethod(T t_parm, A<T> at_parm) {}
};

template <template<template<class> class, class> class Op, template<class> class X, class Y>
class C : public Op<X,Y> {
public:
  virtual void CMethod(Y y_parm, Op<X, Y> opxy_parm) {}
};

template <template<template<class K1> class K2, class K3> class L, template<class K4> class M, class N>
class D : public L<M,N> {
public:
  virtual void DMethod(N n_parm, L<M, N> lmn_parm) {}
};
%}

%{
template class A<CustomAttrs>;
template class B<A, CustomAttrs>;
template class C<B, A, CustomAttrs>;
template class D<B, A, CustomAttrs>;
%}

%template(AC) A<CustomAttrs>;
%template(BAC) B<A, CustomAttrs>;
%template(CBAC) C<B, A, CustomAttrs>;
%template(DBAC) D<B, A, CustomAttrs>;