summaryrefslogtreecommitdiff
path: root/Examples/lua/class/runme.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/lua/class/runme.lua')
-rw-r--r--Examples/lua/class/runme.lua62
1 files changed, 62 insertions, 0 deletions
diff --git a/Examples/lua/class/runme.lua b/Examples/lua/class/runme.lua
new file mode 100644
index 0000000..2c3ad8c
--- /dev/null
+++ b/Examples/lua/class/runme.lua
@@ -0,0 +1,62 @@
+-- file: runme.lua
+
+-- This file illustrates class C++ interface generated
+-- by SWIG.
+
+---- importing ----
+if string.sub(_VERSION,1,7)=='Lua 5.0' then
+ -- lua5.0 doesnt have a nice way to do this
+ lib=loadlib('example.dll','luaopen_example') or loadlib('example.so','luaopen_example')
+ assert(lib)()
+else
+ -- lua 5.1 does
+ require('example')
+end
+
+----- Object creation -----
+
+print("Creating some objects:")
+c = example.Circle(10)
+print(" Created circle", c)
+s = example.Square(10)
+print(" Created square", s)
+
+----- Access a static member -----
+
+print("\nA total of",example.Shape_nshapes,"shapes were created")
+
+----- Member data access -----
+
+-- Set the location of the object
+
+c.x = 20
+c.y = 30
+
+s.x = -10
+s.y = 5
+
+print("\nHere is their current position:")
+print(string.format(" Circle = (%f, %f)",c.x,c.y))
+print(string.format(" Square = (%f, %f)",s.x,s.y))
+
+----- Call some methods -----
+
+print("\nHere are some properties of the shapes:")
+for _,o in pairs({c,s}) do
+ print(" ", o)
+ print(" area = ", o:area())
+ print(" perimeter = ", o:perimeter())
+end
+
+print("\nGuess I'll clean up now")
+
+-- Note: this invokes the virtual destructor
+c=nil
+s=nil
+s = 3
+
+-- call gc to make sure they are collected
+collectgarbage()
+
+print(example.Shape_nshapes,"shapes remain")
+print "Goodbye"