summaryrefslogtreecommitdiff
path: root/trunk/Examples/test-suite/python_kwargs.i
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/Examples/test-suite/python_kwargs.i')
-rw-r--r--trunk/Examples/test-suite/python_kwargs.i112
1 files changed, 112 insertions, 0 deletions
diff --git a/trunk/Examples/test-suite/python_kwargs.i b/trunk/Examples/test-suite/python_kwargs.i
new file mode 100644
index 000000000..28089bbf1
--- /dev/null
+++ b/trunk/Examples/test-suite/python_kwargs.i
@@ -0,0 +1,112 @@
+%module python_kwargs
+
+%nocopyctor;
+%kwargs;
+
+%rename(myDel) del;
+%inline
+{
+ struct s { int del; };
+}
+
+
+// Simple class
+%extend Foo
+{
+ int efoo(int a = 1, int b = 0) {return a + b; }
+ static int sfoo(int a = 1, int b = 0) { return a + b; }
+}
+
+%newobject Foo::create;
+
+%inline %{
+
+ struct Foo
+ {
+ Foo(int a, int b = 0) {}
+
+ virtual int foo(int a = 1, int b = 0) {return a + b; }
+ static int statfoo(int a = 1, int b = 0) {return a + b; }
+
+ static Foo *create(int a = 1, int b = 0)
+ {
+ return new Foo(a, b);
+ }
+
+ virtual ~Foo() {
+ }
+
+ };
+
+%}
+
+
+// Templated class
+%extend Bar
+{
+ T ebar(T a = 1, T b = 0) {return a + b; }
+ static T sbar(T a = 1, T b = 0) { return a + b; }
+}
+
+%inline %{
+ template <typename T> struct Bar
+ {
+ Bar(T a, T b = 0){}
+
+ T bar(T a = 1, T b = 0) {return a + b; }
+ static T statbar(T a = 1, T b = 0) {return a + b; }
+ };
+
+%}
+
+%template(BarInt) Bar<int>;
+
+
+// Functions
+%inline %{
+ int foo(int a = 1, int b = 0) {return a + b; }
+
+
+ template<typename T> T templatedfunction(T a = 1, T b = 0) { return a + b; }
+%}
+
+%template(templatedfunction) templatedfunction<int>;
+
+
+// Deafult args with references
+%inline
+%{
+
+ typedef int size_type;
+
+ struct Hello
+ {
+ static const size_type hello = 3;
+ };
+
+
+
+ int rfoo( const size_type& x = Hello::hello, const Hello& y = Hello() )
+ {
+ return x;
+ }
+
+%}
+%{
+ const int Hello::hello;
+%}
+
+
+// Functions with keywords
+%warnfilter(SWIGWARN_PARSE_KEYWORD);
+%inline %{
+ /* silently rename the parameter names in python */
+
+ int foo_kw(int from = 1, int except = 2) {return from + except; }
+
+
+ int foo_nu(int from = 1, int = 0) {return from; }
+
+ int foo_mm(int min = 1, int max = 2) {return min + max; }
+
+%}