| -- 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 |
| |
| -- call gc to make sure they are collected |
| collectgarbage() |
| |
| print(example.Shape_nshapes,"shapes remain") |
| print "Goodbye" |