class FDB::LazyFuture

def initialize(fpointer)

def initialize(fpointer)
  super(fpointer)
  @set = false
  @value = nil
end

def method_missing( *args, &block )

def method_missing( *args, &block )
  value.__send__( *args, &block )
end

def respond_to?(message)

def respond_to?(message)
  message = message.to_sym
  message == :__result__ or
    message == :to_ptr or
    value.respond_to? message
end

def value

def value
  if !@set
    block_until_ready
    begin
      getter
      release_memory
    rescue Error => e
      if e.code != 1102 # future_released
        raise
      end
    end
    @set = true
  end
  @value
end