| #!/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) |
| |