package org.jruby.ext.ffi;
import org.jruby.Ruby;
import org.jruby.RubyClass;
import org.jruby.RubyObject;
/**
*
*/
abstract public class MemoryObject extends RubyObject {
The Memory I/O object /** The Memory I/O object */
private MemoryIO memory;
protected MemoryObject(Ruby runtime, RubyClass metaClass) {
super(runtime, metaClass);
}
Gets the memory I/O accessor to read/write to the memory area.
Returns: A memory accessor.
/**
* Gets the memory I/O accessor to read/write to the memory area.
*
* @return A memory accessor.
*/
public final MemoryIO getMemoryIO() {
return memory != null ? memory : initMemoryIO();
}
Replaces the native memory object backing this ruby memory object
Params: - memory – The new memory I/O object
Returns: The old memory I/O object
/**
* Replaces the native memory object backing this ruby memory object
*
* @param memory The new memory I/O object
* @return The old memory I/O object
*/
protected final MemoryIO setMemoryIO(MemoryIO memory) {
MemoryIO old = this.memory;
this.memory = memory;
return old;
}
private MemoryIO initMemoryIO() {
return this.memory = allocateMemoryIO();
}
protected abstract MemoryIO allocateMemoryIO();
}