%module features // This testcase checks that %feature is working for templates and non user supplied constructors/destructors // If the default %exception is used it will not compile. It shouldn't get used. %exception "this_will_not_compile"; // Test 1: Test for no user supplied constructors and destructor %exception Simple::Simple() "$action /*Simple::Simple*/"; %exception Simple::~Simple() "$action /*Simple::~Simple*/"; %inline %{ class Simple {}; %} %exception NS::SimpleNS::SimpleNS() "$action /*Simple::Simple*/"; %exception NS::SimpleNS::~SimpleNS() "$action /*Simple::~Simple*/"; %inline %{ namespace NS { class SimpleNS {}; } %} // Test 2: Test templated functions %exception foobar "caca"; %exception foobar(int) "$action /*foobar*/"; %inline %{ template void foobar(T t) {} %} %template(FooBarInt) foobar; // Test 3: Test templates with no user supplied constructors and destructor %exception SimpleTemplate::SimpleTemplate() "$action /*SimpleTemplate::SimpleTemplate*/"; %exception SimpleTemplate::~SimpleTemplate() "$action /*SimpleTemplate::~SimpleTemplate*/"; %inline %{ template class SimpleTemplate { public: }; %} %template(SimpleInt) SimpleTemplate; // Test 4: Test templates with user supplied constructors and destructor %exception Template::Template() "$action /*Template::Template*/"; %exception Template::Template(const Template&) "$action /*Template::Template(const Template&)*/"; %exception Template::~Template() "$action /*Template::~Template*/"; %exception Template::foo "$action /*Template::foo*/"; %inline %{ template class Template { public: Template(){} Template(const Template&){} ~Template(){} void foo(){} }; %} %template(TemplateInt) Template;