class RLTK::CG::MemoryBuffer

This class is used by the {Module} class to dump and load LLVM bitcode.

Constants

CLASS_FINALIZER

The Proc object called by the garbage collector to free resources used by LLVM.

Public Class Methods

new(overloaded = nil) click to toggle source

Create a new memory buffer.

@param [FFI::Pointer, String, nil] overloaded This parameter may be either a pointer to an existing memory

buffer, the name of a file containing LLVM bitcode or IR, or nil.  If it is nil the memory buffer will read
from standard in.
# File lib/rltk/cg/memory_buffer.rb, line 31
def initialize(overloaded = nil)
        @ptr =
        case overloaded
        when FFI::Pointer
                overloaded
        else
                buf_ptr = FFI::MemoryPointer.new(:pointer)
                msg_ptr = FFI::MemoryPointer.new(:pointer)

                status =
                case overloaded
                when String
                        Bindings.create_memory_buffer_with_contents_of_file(overloaded, buf_ptr, msg_ptr)
                else
                        Bindings.create_memory_buffer_with_stdin(buf_ptr, msg_ptr)
                end

                if status.zero?
                        buf_ptr.get_pointer(0)
                else
                        raise msg_ptr.get_pointer(0).get_string(0)
                end
        end

        # Define a finalizer to free the memory used by LLVM for this
        # memory buffer.
        ObjectSpace.define_finalizer(self, CLASS_FINALIZER)
end

Public Instance Methods

size() click to toggle source

Get the size of the memory buffer.

@return [Integer] Size of memory buffer

# File lib/rltk/cg/memory_buffer.rb, line 63
def size
        Bindings.get_buffer_size(@ptr)
end
start() click to toggle source

Get a copy of the memory buffer, from the beginning, as a sequence of characters.

@return [String]

# File lib/rltk/cg/memory_buffer.rb, line 71
def start
        Bindings.get_buffer_start(@ptr)
end