1 /* This testcase checks whether SWIG correctly uses the new alternate functions
2    declarations and definitions introduced in C++11. */
3 %module cpp11_alternate_function_syntax
4 
5 %inline %{
6 struct SomeStruct {
7   int addNormal(int x, int y);
8   auto addAlternate(int x, int y) -> int;
9   auto addAlternateConst(int x, int y) const -> int;
10   auto addAlternateNoExcept(int x, int y) noexcept -> int;
11   auto addAlternateConstNoExcept(int x, int y) const noexcept -> int;
12   auto addAlternateMemberPtrParm(int x, int (SomeStruct::*mp)(int, int)) -> int;
13   auto addAlternateMemberPtrConstParm(int x, int (SomeStruct::*mp)(int, int) const) const -> int;
14 
15   virtual auto addFinal(int x, int y) const noexcept -> int final { return x + y; }
16   virtual ~SomeStruct() = default;
17 };
18 
addNormal(int x,int y)19 int SomeStruct::addNormal(int x, int y) { return x + y; }
20 auto SomeStruct::addAlternate(int x, int y) -> int { return x + y; }
21 auto SomeStruct::addAlternateConst(int x, int y) const -> int { return x + y; }
22 auto SomeStruct::addAlternateNoExcept(int x, int y) noexcept -> int { return x + y; }
23 auto SomeStruct::addAlternateConstNoExcept(int x, int y) const noexcept -> int { return x + y; }
24 auto SomeStruct::addAlternateMemberPtrParm(int x, int (SomeStruct::*mp)(int, int)) -> int {
25   return 100*x + (this->*mp)(x, x);
26 }
27 auto SomeStruct::addAlternateMemberPtrConstParm(int x, int (SomeStruct::*mp)(int, int) const) const -> int {
28   return 1000*x + (this->*mp)(x, x);
29 }
30 
31 %}
32