summaryrefslogtreecommitdiff
path: root/Examples/lua/owner/example.i
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/lua/owner/example.i')
-rw-r--r--Examples/lua/owner/example.i35
1 files changed, 35 insertions, 0 deletions
diff --git a/Examples/lua/owner/example.i b/Examples/lua/owner/example.i
new file mode 100644
index 000000000..0be5bccc3
--- /dev/null
+++ b/Examples/lua/owner/example.i
@@ -0,0 +1,35 @@
+/* File : example.i */
+%module example
+
+%{
+#include "example.h"
+%}
+
+// before we grab the header file, we must warn SWIG about some of these functions.
+
+// these functions create data, so must be managed
+%newobject createCircle;
+%newobject createSquare;
+
+// this method returns as pointer which must be managed
+%newobject ShapeOwner::remove;
+
+// you cannot use %delobject on ShapeOwner::add()
+// as this disowns the ShapeOwner, not the Shape (oops)
+//%delobject ShapeOwner::add(Shape*); DO NOT USE
+
+// either you can use a new function (such as this)
+/*%delobject add_Shape;
+%inline %{
+void add_Shape(Shape* s,ShapeOwner* own){own->add(s);}
+%}*/
+
+// or a better solution is a typemap
+%apply SWIGTYPE *DISOWN {Shape* ptr};
+
+
+//%ignore ShapeOwner::add;
+
+// now we can grab the header file
+%include "example.h"
+