Class: FFI::ManagedStruct
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
| Class Chain: 
          self,
           Struct | |
| Instance Chain: 
          self,
           Struct | |
| Inherits: | FFI::Struct 
 | 
| Defined in: | lib/ffi/managedstruct.rb | 
Overview
ManagedStruct allows custom garbage-collection of your FFI::Structs.
The typical use case would be when interacting with a library that has a nontrivial memory management design, such as a linked list or a binary tree.
When the Struct instance is garbage collected, ManagedStruct will invoke the class’s release() method during object finalization.
Class Attribute Summary
Class Method Summary
- 
    
      .new(pointer)  ⇒ ManagedStruct 
    
    constructor
    A new instance of ManagedStruct.
Struct - Inherited
| .alignment, .auto_ptr, .by_ref, .by_value, .in, .layout, .members, | |
| .offset_of | Get the offset of a field. | 
| .offsets | Get an array of tuples (field name, offset of the field). | 
| .out, .ptr, .val, | |
| .array_layout | Add array  | 
| .hash_layout | Add hash  | 
Instance Method Summary
Struct - Inherited
| #align | Alias for Struct#alignment. | 
| #alignment, | |
| #clear | Clear the struct content. | 
| #members, | |
| #offset_of | Get the offset of a field. | 
| #offsets | Get an array of tuples (field name, offset of the field). | 
| #size | Get struct size. | 
| #to_ptr | Get  | 
| #values | Get array of values from  | 
Constructor Details
    
      .new(pointer)  ⇒ ManagedStruct 
      .new  ⇒ ManagedStruct 
    
  
ManagedStruct 
      .new  ⇒ ManagedStruct 
    A new instance of ManagedStruct.
# File 'lib/ffi/managedstruct.rb', line 77
def initialize(pointer=nil) raise NoMethodError, "release() not implemented for class #{self}" unless self.class.respond_to?(:release, true) raise ArgumentError, "Must supply a pointer to memory for the Struct" unless pointer super AutoPointer.new(pointer, self.class.method(:release)) end