examples/cshadow-example.rb
#!/usr/env/bin ruby
require 'cgen/cshadow'
class Test
include CShadow
shadow_attr_accessor\
:i => "int ii",
:d => "double d"
shadow_attr_reader :obj => Object
end
class SubTest < Test
shadow_attr :hidden_array => Array
shadow_attr_accessor\
:foo => "char *foo",
:bar => Symbol,
:test => [Test]
end
class OtherSubTest < Test
shadow_attr_accessor :j => "int j"
def initialize j_init
self.j = j_init
end
end
class SubSubTest < SubTest
shadow_attr_accessor :z => Object
end
require 'ftools'
dir = File.join("tmp", RUBY_VERSION)
File.mkpath dir
Dir.chdir dir
SubTest.commit # same as Test.commit
x = SubTest.new
puts "i = #{x.i}, d = #{x.d}, " +
"foo = #{x.foo.inspect}, bar = #{x.bar.inspect}"
x.i = 7.5; x.d = 3; x.foo = "fred"; x.bar = :WILMA
puts "i = #{x.i}, d = #{x.d}, " +
"foo = #{x.foo.inspect}, bar = #{x.bar.inspect}"
y = OtherSubTest.new -123456789
puts y.j, y.d
# make sure ShadowAttribute works
puts "x.test = #{x.test || 'nil'}"
x.test = y
puts "x.test = #{x.test || 'nil'}"
puts x.test.j
SubSubTest.each_shadow_attr {|x| p x}
Generated by GNU enscript 1.6.4.