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