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