diff --git a/Examples/test-suite/java/member_pointer_const_runme.java b/Examples/test-suite/java/member_pointer_const_runme.java index 06e0bbcb3..89735d3eb 100644 --- a/Examples/test-suite/java/member_pointer_const_runme.java +++ b/Examples/test-suite/java/member_pointer_const_runme.java @@ -49,6 +49,8 @@ public class member_pointer_const_runme { check( "Square area ", 100.0, member_pointer_const.do_op(s,member_pointer_const.AREAPT) ); check( "Square perim", 40.0, member_pointer_const.do_op(s,member_pointer_const.PERIMPT) ); + // Typedefs + check( "Square perim", 40.0, member_pointer_const.do_op_td(s,perim_pt) ); } private static void check(String what, double expected, double actual) { diff --git a/Examples/test-suite/java/member_pointer_runme.java b/Examples/test-suite/java/member_pointer_runme.java index f8dcfbcb8..d0520a99c 100644 --- a/Examples/test-suite/java/member_pointer_runme.java +++ b/Examples/test-suite/java/member_pointer_runme.java @@ -49,6 +49,8 @@ public class member_pointer_runme { check( "Square area ", 100.0, member_pointer.do_op(s,member_pointer.AREAPT) ); check( "Square perim", 40.0, member_pointer.do_op(s,member_pointer.PERIMPT) ); + // Typedefs + check( "Square perim", 40.0, member_pointer.do_op_td(s,perim_pt) ); } private static void check(String what, double expected, double actual) { diff --git a/Examples/test-suite/member_pointer.i b/Examples/test-suite/member_pointer.i index fe454302a..e3b4f85ab 100644 --- a/Examples/test-suite/member_pointer.i +++ b/Examples/test-suite/member_pointer.i @@ -44,17 +44,22 @@ public: virtual double perimeter(void); }; +/* Typedef */ +typedef double (Shape::*PerimeterFunc_td)(void); + extern double do_op(Shape *s, double (Shape::*m)(void)); +extern double do_op_td(Shape *s, PerimeterFunc_td m); /* Functions that return member pointers */ extern double (Shape::*areapt())(void); extern double (Shape::*perimeterpt())(void); +extern PerimeterFunc_td perimeterpt_td(); /* Global variables that are member pointers */ extern double (Shape::*areavar)(void); extern double (Shape::*perimetervar)(void); - +extern PerimeterFunc_td perimetervar_td; %} %{ @@ -88,6 +93,10 @@ double do_op(Shape *s, double (Shape::*m)(void)) { return (s->*m)(); } +double do_op_td(Shape *s, PerimeterFunc_td m) { + return (s->*m)(); +} + double (Shape::*areapt())(void) { return &Shape::area; } @@ -96,9 +105,14 @@ double (Shape::*perimeterpt())(void) { return &Shape::perimeter; } +PerimeterFunc_td perimeterpt_td() { + return &Shape::perimeter; +} + /* Member pointer variables */ double (Shape::*areavar)(void) = &Shape::area; double (Shape::*perimetervar)(void) = &Shape::perimeter; +PerimeterFunc_td perimetervar_td = &Shape::perimeter; %} diff --git a/Examples/test-suite/member_pointer_const.i b/Examples/test-suite/member_pointer_const.i index 39caa3bad..4af712f7f 100644 --- a/Examples/test-suite/member_pointer_const.i +++ b/Examples/test-suite/member_pointer_const.i @@ -45,17 +45,22 @@ public: virtual double perimeter(void) const; }; +/* Typedef */ +typedef double (Shape::*PerimeterFunc_td)(void) const; + extern double do_op(Shape *s, double (Shape::*m)(void) const); +extern double do_op_td(Shape *s, PerimeterFunc_td m); /* Functions that return member pointers */ extern double (Shape::*areapt())(void) const; extern double (Shape::*perimeterpt())(void) const; +extern PerimeterFunc_td perimeterpt_td(); /* Global variables that are member pointers */ extern double (Shape::*areavar)(void) const; extern double (Shape::*perimetervar)(void) const; - +extern PerimeterFunc_td perimetervar_td; %} %{ @@ -89,6 +94,10 @@ double do_op(Shape *s, double (Shape::*m)(void) const) { return (s->*m)(); } +double do_op_td(Shape *s, PerimeterFunc_td m) { + return (s->*m)(); +} + double (Shape::*areapt())(void) const { return &Shape::area; } @@ -97,9 +106,14 @@ double (Shape::*perimeterpt())(void) const { return &Shape::perimeter; } +PerimeterFunc_td perimeterpt_td() { + return &Shape::perimeter; +} + /* Member pointer variables */ double (Shape::*areavar)(void) const = &Shape::area; double (Shape::*perimetervar)(void) const = &Shape::perimeter; +PerimeterFunc_td perimetervar_td = &Shape::perimeter; %} diff --git a/Examples/test-suite/python/member_pointer_const_runme.py b/Examples/test-suite/python/member_pointer_const_runme.py index 0e56c1574..ad6c2df99 100644 --- a/Examples/test-suite/python/member_pointer_const_runme.py +++ b/Examples/test-suite/python/member_pointer_const_runme.py @@ -43,6 +43,9 @@ memberPtr = NULLPT check("Square area ", 100.0, do_op(s, AREAPT)) check("Square perim", 40.0, do_op(s, PERIMPT)) +# Typedefs +check("Square perim", 40.0, do_op_td(s, perim_pt)); + check("Add by value", 3, call1(ADD_BY_VALUE, 1, 2)) #check("Add by pointer", 7, call2(ADD_BY_POINTER, 3, 4)) #check("Add by reference", 11, call3(ADD_BY_REFERENCE, 5, 6)) diff --git a/Examples/test-suite/python/member_pointer_runme.py b/Examples/test-suite/python/member_pointer_runme.py index 5ae7ab9a4..f6f165863 100644 --- a/Examples/test-suite/python/member_pointer_runme.py +++ b/Examples/test-suite/python/member_pointer_runme.py @@ -43,6 +43,9 @@ memberPtr = NULLPT check("Square area ", 100.0, do_op(s, AREAPT)) check("Square perim", 40.0, do_op(s, PERIMPT)) +# Typedefs +check("Square perim", 40.0, do_op_td(s, perim_pt)); + check("Add by value", 3, call1(ADD_BY_VALUE, 1, 2)) check("Add by pointer", 7, call2(ADD_BY_POINTER, 3, 4)) check("Add by reference", 11, call3(ADD_BY_REFERENCE, 5, 6))