aboutsummaryrefslogtreecommitdiff
path: root/Examples/test-suite/python_annotations_c.i
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/python_annotations_c.i')
-rw-r--r--Examples/test-suite/python_annotations_c.i40
1 files changed, 40 insertions, 0 deletions
diff --git a/Examples/test-suite/python_annotations_c.i b/Examples/test-suite/python_annotations_c.i
new file mode 100644
index 000000000..c023e4d07
--- /dev/null
+++ b/Examples/test-suite/python_annotations_c.i
@@ -0,0 +1,40 @@
+%module python_annotations_c
+
+// Tests the C/C++ annotations that were automatically added by using -py3 before swig-4.1.0
+// In swig-4.1.0 and later, the feature below is needed as the -py3 option was dropped
+%feature("python:annotations", "c") mymethod;
+%feature("python:annotations", "c") makeT<short>;
+%feature("python:annotations", "c") global_ints;
+
+%inline %{
+namespace Space {
+template<class T>
+struct Template {
+ void mymethod(int, Template* tt) {}
+};
+}
+template<typename T>
+Space::Template<T> makeT(int x) {
+ return Space::Template<T>();
+};
+int *global_ints(int &ri, Space::Template<short> t) { return &ri; }
+int *global_overloaded(int &ri) { return &ri; }
+int *global_overloaded() { return NULL; }
+int *no_annotations(int &ri, const char *c) { return NULL; }
+%}
+%template(TemplateShort) Space::Template<short>;
+%template(MakeShort) makeT<short>;
+
+%inline %{
+#ifdef SWIGPYTHON_BUILTIN
+int is_python_builtin() { return 1; }
+#else
+int is_python_builtin() { return 0; }
+#endif
+
+#if defined SWIGPYTHON_FASTPROXY
+int is_python_fastproxy() { return 1; }
+#else
+int is_python_fastproxy() { return 0; }
+#endif
+%}