summaryrefslogtreecommitdiff
path: root/Examples/test-suite/extern_declaration.i
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/extern_declaration.i')
-rw-r--r--Examples/test-suite/extern_declaration.i31
1 files changed, 31 insertions, 0 deletions
diff --git a/Examples/test-suite/extern_declaration.i b/Examples/test-suite/extern_declaration.i
new file mode 100644
index 0000000..eca97b5
--- /dev/null
+++ b/Examples/test-suite/extern_declaration.i
@@ -0,0 +1,31 @@
+%module extern_declaration
+
+// Test different calling conventions on Windows. Old versions of SWIG generated
+// an incorrect extern declaration that wouldn't compile with Windows compilers.
+#define SWIGEXPORT
+#define SWIGSTDCALL
+#define MYDLLIMPORT
+
+%{
+#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+# define MYDLLIMPORT __declspec(dllimport)
+#else
+# define MYDLLIMPORT
+#endif
+%}
+
+MYDLLIMPORT extern int externimport(int i);
+SWIGEXPORT extern int externexport(int);
+extern int SWIGSTDCALL externstdcall(int);
+
+%{
+/*
+ externimport ought to be using MYDLLIMPORT and compiled into another dll, but that is
+ a bit tricky to do in the test framework
+*/
+SWIGEXPORT extern int externimport(int i) { return i; }
+SWIGEXPORT extern int externexport(int i) { return i; }
+extern int SWIGSTDCALL externstdcall(int i) { return i; }
+%}
+
+