/trunk/Examples/ruby/free_function/runme.rb
# · Ruby · 46 lines · 31 code · 7 blank · 8 comment · 1 complexity · 21ca49dead6bd4fa2e93a7f48d3dae60 MD5 · raw file
- require 'example'
- begin
- begin
- # Create an animal and zoo
- tiger1 = Example::Animal.new("tiger1")
- zoo = Example::Zoo.new
-
- # At the animal to the zoo - this will transfer ownership
- # of the underlying C++ object to the C++ zoo object
- zoo.add_animal(tiger1)
- # get the id of the tiger
- id1 = tiger1.object_id
- # Unset the tiger
- tiger1 = nil
- end
- # Force a gc
- GC.start
- # Get the tiger and its id
- tiger2 = zoo.get_animal(0)
- id2 = tiger2.object_id
- # The ids should not be the same
- if id1==id2
- raise RuntimeError, "Id's should not be the same"
- end
- zoo = nil
- end
- GC.start
- # This method is no longer valid since the zoo freed the underlying
- # C++ object
- ok = false
- begin
- puts tiger2.get_name
- rescue ObjectPreviouslyDeleted => error
- ok = true
- end
- raise(RuntimeError, "Incorrect exception raised - should be ObjectPreviouslyDeleted") unless ok