class Prism::LibRubyParser::PrismBuffer

:nodoc:
so it doesn’t need to know the fields of pm_buffer_t.
This object represents a pm_buffer_t. We only use it as an opaque pointer,

def self.with

automatically freed when the block returns.
Initialize a new buffer and yield it to the block. The buffer will be
def self.with
  FFI::MemoryPointer.new(SIZEOF) do |pointer|
    raise unless LibRubyParser.pm_buffer_init(pointer)
    return yield new(pointer)
  ensure
    LibRubyParser.pm_buffer_free(pointer)
  end
end

def initialize(pointer)

def initialize(pointer)
  @pointer = pointer
end

def length

def length
  LibRubyParser.pm_buffer_length(pointer)
end

def read

def read
  value.read_string(length)
end

def value

def value
  LibRubyParser.pm_buffer_value(pointer)
end