aboutsummaryrefslogtreecommitdiff
path: root/Examples/test-suite/member_pointer.i
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/member_pointer.i')
-rw-r--r--Examples/test-suite/member_pointer.i16
1 files changed, 15 insertions, 1 deletions
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;
%}