%module template_typedef_funcptr //Bug #1832613 #if !defined(SWIGR) // R Swig fails on this test. Because it tries to return a nil SEXP in // an error %include <std_string.i> %inline %{ #include <string> template<typename T> class Ptr {}; class MCContract {}; typedef Ptr<MCContract> MCContractPtr; %} %template() Ptr<MCContract>; %inline %{ template <class Contract, typename ContractID, typename CallbackType> class ContractFactory { public: static ContractFactory<Contract,ContractID,CallbackType> &getInstance() { static ContractFactory<Contract, ContractID, CallbackType> instance; return instance; } }; /** * CreateXXContractCallback is a pointer to a function taking no arguments and * returning a pointer to an XXContract. */ typedef MCContractPtr (*CreateMCContractCallback)(); %} //Get around it by changing this: %template(MCContractFactory) ContractFactory<MCContract, std::string, CreateMCContractCallback>; //to a form which expands the typedef: //%template(MCContractFactory) ContractFactory<MCContract, std::string, Ptr<MCContract>(*)()>; %inline %{ typedef MCContractPtr* ContractPtrPtr; %} // Plain pointers were also causing problems... %template(MCContractFactory2) ContractFactory<MCContract, std::string, ContractPtrPtr>; #endif
Generated by dwww version 1.15 on Tue Jul 2 00:19:59 CEST 2024.