summaryrefslogtreecommitdiff
path: root/trunk/Examples/test-suite/cpp_typedef.i
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/Examples/test-suite/cpp_typedef.i')
-rw-r--r--trunk/Examples/test-suite/cpp_typedef.i46
1 files changed, 46 insertions, 0 deletions
diff --git a/trunk/Examples/test-suite/cpp_typedef.i b/trunk/Examples/test-suite/cpp_typedef.i
new file mode 100644
index 000000000..f869f4d9c
--- /dev/null
+++ b/trunk/Examples/test-suite/cpp_typedef.i
@@ -0,0 +1,46 @@
+// This file tests SWIG's tracking of C++ typedef declarations
+
+%module cpp_typedef
+
+%{
+
+class Bar {
+public:
+};
+%}
+
+%inline %{
+class Foo {
+public:
+ typedef Bar SomeBar;
+ typedef SomeBar SomeOtherBar;
+ SomeOtherBar bar() {
+ SomeOtherBar b;
+ return b;
+ }
+ static SomeOtherBar sbar() {
+ SomeOtherBar b;
+ return b;
+ }
+};
+
+// Test that the correct types are used for typedef struct declarations
+typedef struct {
+} UnnamedStruct;
+
+typedef struct NamedStruct {
+} TypedefNamedStruct;
+
+typedef TypedefNamedStruct DoubleTypedef;
+
+class Test {
+public:
+ UnnamedStruct test1(UnnamedStruct a) {return a;};
+ struct NamedStruct test2(struct NamedStruct a) {return a;};
+ TypedefNamedStruct test3(TypedefNamedStruct a) {return a;};
+ DoubleTypedef test4(DoubleTypedef a) {return a;};
+};
+
+%}
+
+