def initialize( val, options={} )
@member_cache = {}
options = {:autorelease => true}.merge!( options )
case val
when Hash
super(FFI::Buffer.new(size))
init_from_hash( val )
when ::Array
super(FFI::Buffer.new(size))
init_from_array( val )
when String
super(FFI::Buffer.new(size))
init_from_bytes( val )
when self.class
super(FFI::Buffer.new(size))
init_from_bytes( val.to_bytes )
when FFI::Pointer, FFI::Buffer
val = _make_autopointer( val, options[:autorelease] )
super( val )
else
raise TypeError, "cannot create new #{self.class} from #{val.inspect}"
end
end