mirror of https://github.com/swig/swig
84 lines
1.9 KiB
OpenEdge ABL
84 lines
1.9 KiB
OpenEdge ABL
%module template_default_class_parms
|
|
|
|
#ifdef SWIGOCAML
|
|
%warnfilter(SWIGWARN_PARSE_KEYWORD) method;
|
|
#endif
|
|
|
|
%inline %{
|
|
namespace Space {
|
|
struct SomeType {};
|
|
struct AnotherType {};
|
|
template<typename C, typename D = SomeType, typename E = int> class Bar {
|
|
public:
|
|
C CType;
|
|
D DType;
|
|
E EType;
|
|
Bar(C c, D d, E e) {}
|
|
C method(C c, D d, E e) { return c; }
|
|
};
|
|
template<typename T = SomeType> class Foo {
|
|
public:
|
|
T TType;
|
|
Foo(T t) {}
|
|
T method(T t) { return t; }
|
|
};
|
|
template<typename T = int> class ATemplate {};
|
|
}
|
|
%}
|
|
|
|
// Use defaults
|
|
%template(DefaultBar) Space::Bar<double>;
|
|
%template(DefaultFoo) Space::Foo<>;
|
|
|
|
// Don't use all defaults
|
|
%template(BarAnotherTypeBool) Space::Bar<Space::AnotherType, bool>;
|
|
%template(FooAnotherType) Space::Foo<Space::AnotherType>;
|
|
|
|
%template() Space::ATemplate<>;
|
|
|
|
|
|
// Github issue #280 segfault
|
|
%inline %{
|
|
namespace Teuchos {
|
|
class Describable {};
|
|
}
|
|
namespace KokkosClassic {
|
|
namespace DefaultNode {
|
|
struct DefaultNodeType {};
|
|
}
|
|
}
|
|
|
|
namespace Tpetra {
|
|
template <class LocalOrdinal = int,
|
|
class GlobalOrdinal = LocalOrdinal,
|
|
class Node = KokkosClassic::DefaultNode::DefaultNodeType>
|
|
class Map : public Teuchos::Describable {
|
|
public:
|
|
typedef LocalOrdinal local_ordinal_type;
|
|
typedef GlobalOrdinal global_ordinal_type;
|
|
typedef Node node_type;
|
|
void test_func(LocalOrdinal, GlobalOrdinal, Node) {}
|
|
};
|
|
}
|
|
%}
|
|
|
|
#ifdef SWIGJAVA
|
|
// Fixes still required for other languages
|
|
%template(MapDefaults) Tpetra::Map<>;
|
|
#endif
|
|
|
|
%inline %{
|
|
namespace Details {
|
|
template < class LO = ::Tpetra::Map<>::local_ordinal_type,
|
|
class GO = typename ::Tpetra::Map<LO>::global_ordinal_type,
|
|
class NT = typename ::Tpetra::Map<LO, GO>::node_type >
|
|
class Transfer : public Teuchos::Describable {
|
|
public:
|
|
void transfer_func(LO, GO, NT) {}
|
|
};
|
|
}
|
|
%}
|
|
|
|
// Below is not resolving correctly yet
|
|
//%template(TransferDefaults) Details::Transfer<>;
|