%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<>;
Generated by dwww version 1.15 on Tue Jul 2 00:21:45 CEST 2024.