mirror of https://github.com/swig/swig.git
48 lines
1.2 KiB
Lua
48 lines
1.2 KiB
Lua
-- This file illustrates the proxy class C++ interface generated by SWIG.
|
|
require("example")
|
|
|
|
-- ----- Object creation -----
|
|
print("Creating some objects:")
|
|
local cc = example.Circle(10)
|
|
local c = example.ShapePtr(cc)
|
|
print(" Created circles", c)
|
|
local ss = example.Square(10)
|
|
local s = example.ShapePtr(ss)
|
|
print(" Created square", s)
|
|
|
|
-- ----- Access a static member -----
|
|
print(string.format("\nA total of %d shapes were created", example.Shape.nshapes))
|
|
|
|
-- ----- 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 ipairs({c, s}) do
|
|
print(" ", o)
|
|
print(" area =", o:area())
|
|
print(" perimeter =", o:perimeter())
|
|
end
|
|
|
|
print("\nGuess I'll clean up now")
|
|
|
|
c=nil
|
|
s=nil
|
|
cc=nil
|
|
ss=nil
|
|
-- Note: this invokes the virtual destructors
|
|
collectgarbage() -- performs a full garbage-collection cycle.
|
|
|
|
print(string.format("%d shapes remain", example.Shape.nshapes))
|
|
print("Goodbye")
|