/trunk/Examples/test-suite/abstract_typedef2.i
Swig | 60 lines | 39 code | 17 blank | 4 comment | 0 complexity | 3b3fb938af3d9f14c6f76607a55c5492 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- %module abstract_typedef2
- /*
- After the fix for abstract_typedef, this simpler
- example got broken.
- */
- %inline %{
- enum FieldDim {
- UnaryField,
- BinaryField
- };
-
- template <FieldDim Dim>
- struct Facet;
-
- template <FieldDim Dim>
- struct Base
- {
- virtual ~Base() {}
-
- typedef unsigned int size_type;
- typedef Facet<Dim>* facet_ptr;
- // This works
- // virtual Facet<Dim>* set(size_type) = 0;
-
- // This doesn't
- virtual facet_ptr set(size_type) = 0;
- };
-
- template <FieldDim Dim>
- struct Facet
- {
- };
-
- template <FieldDim Dim>
- struct A : Base<Dim>
- {
- typedef Base<Dim> base;
- typedef typename base::size_type size_type;
- A(int a = 0)
- {
- }
-
- Facet<Dim>* set(size_type)
- {
- return 0;
- }
- };
- %}
- %template(Base_UF) Base<UnaryField>;
- %template(A_UF) A<UnaryField>;