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