55 lines
1.3 KiB
Ruby
55 lines
1.3 KiB
Ruby
|
|
#!/usr/bin/env ruby
|
||
|
|
#
|
||
|
|
# Example using pointers to member functions
|
||
|
|
#
|
||
|
|
#
|
||
|
|
#
|
||
|
|
|
||
|
|
require 'swig_assert'
|
||
|
|
|
||
|
|
require 'member_pointer'
|
||
|
|
|
||
|
|
include Member_pointer
|
||
|
|
|
||
|
|
def check(what, expected, actual)
|
||
|
|
if not expected == actual
|
||
|
|
raise RuntimeError, "Failed: #{what} Expected: #{expected} Actual: #{actual}"
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
# Get the pointers
|
||
|
|
|
||
|
|
area_pt = Member_pointer::areapt
|
||
|
|
perim_pt = Member_pointer::perimeterpt
|
||
|
|
|
||
|
|
# Create some objects
|
||
|
|
|
||
|
|
s = Member_pointer::Square.new(10)
|
||
|
|
|
||
|
|
# Do some calculations
|
||
|
|
|
||
|
|
check "Square area ", 100.0, Member_pointer::do_op(s, area_pt)
|
||
|
|
check "Square perim", 40.0, Member_pointer::do_op(s, perim_pt)
|
||
|
|
|
||
|
|
memberPtr = Member_pointer::areavar
|
||
|
|
memberPtr = Member_pointer::perimetervar
|
||
|
|
|
||
|
|
# Try the variables
|
||
|
|
check "Square area ", 100.0, Member_pointer::do_op(s, Member_pointer::areavar)
|
||
|
|
check "Square perim", 40.0, Member_pointer::do_op(s, Member_pointer::perimetervar)
|
||
|
|
|
||
|
|
# Modify one of the variables
|
||
|
|
Member_pointer::areavar = perim_pt
|
||
|
|
|
||
|
|
check "Square perimeter", 40.0, Member_pointer::do_op(s, Member_pointer::areavar)
|
||
|
|
|
||
|
|
# Try the constants
|
||
|
|
|
||
|
|
memberPtr = Member_pointer::AREAPT
|
||
|
|
memberPtr = Member_pointer::PERIMPT
|
||
|
|
memberPtr = Member_pointer::NULLPT
|
||
|
|
|
||
|
|
check "Square area ", 100.0, Member_pointer::do_op(s, Member_pointer::AREAPT)
|
||
|
|
check "Square perim", 40.0, Member_pointer::do_op(s, Member_pointer::PERIMPT)
|
||
|
|
|