public class Struct extends MemoryObject implements StructLayout.Storage
| Modifier and Type | Class and Description |
|---|---|
private static class |
Struct.Allocator |
RubyObject.DataRubyBasicObject.Finalizer| Modifier and Type | Field and Description |
|---|---|
private StructLayout |
layout |
private AbstractMemory |
memory |
private java.lang.Object[] |
referenceCache |
private static java.util.concurrent.atomic.AtomicReferenceFieldUpdater<Struct,java.lang.Object[]> |
referenceCacheUpdater |
private IRubyObject[] |
valueCache |
private static java.util.concurrent.atomic.AtomicReferenceFieldUpdater<Struct,IRubyObject[]> |
valueCacheUpdater |
FIELD_ALLOCATED_CLASSES, FIELD_ALLOCATORS, IVAR_INSPECTING_OBJECT_ALLOCATOR, OBJECT_ALLOCATOR, OBJECT_VAR0_ALLOCATOR, OBJECT_VAR1_ALLOCATOR, OBJECT_VAR2_ALLOCATOR, OBJECT_VAR3_ALLOCATOR, OBJECT_VAR4_ALLOCATOR, OBJECT_VAR5_ALLOCATOR, OBJECT_VAR6_ALLOCATOR, OBJECT_VAR7_ALLOCATOR, OBJECT_VAR8_ALLOCATOR, OBJECT_VAR9_ALLOCATOR, REIFYING_OBJECT_ALLOCATORALL_F, BASICOBJECT_ALLOCATOR, COMPARE_BY_IDENTITY_F, ERR_INSECURE_SET_INST_VAR, FALSE_F, FL_USHIFT, flags, FROZEN_F, metaClass, NEVER, NIL_F, STAMP_OFFSET, TAINTED_F, UNDEF, UNTRUSTED_F, USER0_F, USER1_F, USER2_F, USER3_F, USER4_F, USER5_F, USER6_F, USER7_F, USER8_F, VAR_TABLE_OFFSET, varTable, varTableStampNULL_ARRAY| Constructor and Description |
|---|
Struct(Ruby runtime)
Creates a new StructLayout instance using defaults.
|
Struct(Ruby runtime,
RubyClass klass)
Creates a new StructLayout instance.
|
Struct(Ruby runtime,
RubyClass klass,
StructLayout layout,
IRubyObject memory)
Creates a new StructLayout instance.
|
getMemoryIO, setMemoryIOattachToObjectSpace, callInit, callInit, callInit, callInit, callInit, callInit, callInit, callInit, callInit, callInit, convertToType, createObjectClass, eqlInternal, equalInternal, equals, getNativeTypeIndex, hashCode, initialize, inspect, op_eqq, puts, specificEval, toStringaddFinalizer, anyToString, asJavaString, asString, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callSuper, checkArrayType, checkCallMethod, checkFrozen, checkStringType, checkStringType19, compareTo, convertToArray, convertToFloat, convertToHash, convertToInteger, convertToInteger, convertToInteger, convertToString, copyInstanceVariablesInto, copySpecialInstanceVariables, createBasicObjectClass, dataGetStruct, dataGetStructChecked, dataWrapStruct, display, dup, ensureInstanceVariablesSettable, eql_p, eql, equal_p, equal_p19, evalUnder, extend, fastGetInstanceVariable, fastGetInternalVariable, fastHasInstanceVariable, fastHasInternalVariable, fastSetInstanceVariable, fastSetInternalVariable, freeze, frozen_p, getFFIHandle, getFlag, getInstanceEvalClass, getInstanceVariable, getInstanceVariableList, getInstanceVariableNameList, getInstanceVariables, getInternalVariable, getInternalVariables, getJavaClass, getMetaClass, getNativeHandle, getObjectId, getRuntime, getSingletonClass, getSingletonClassClone, getType, getVariable, getVariableCount, getVariableList, getVariableNameList, hash, hashyInspect, hasInstanceVariable, hasInternalVariable, hasVariables, id_deprecated, id, infectBy, initialize_copy, initialize19, inspect, inspectHashCode, instance_eval, instance_eval, instance_eval, instance_eval, instance_eval19, instance_eval19, instance_eval19, instance_eval19, instance_exec, instance_exec19, instance_of_p, instance_variable_defined_p, instance_variable_get, instance_variable_set, instance_variables, instance_variables19, isBuiltin, isClass, isFalse, isFrozen, isImmediate, isModule, isNil, isTaint, isTrue, isUntrusted, kind_of_p, makeMetaClass, method_missing19, method, method19, methods, methods, methods19, nil_p, op_cmp, op_equal_19, op_equal, op_match, op_match19, op_not_equal, op_not_match, op_not, private_methods, private_methods19, protected_methods, protected_methods19, public_methods, public_methods19, rbClone, remove_instance_variable, removeFinalizers, removeInstanceVariable, removeInternalVariable, respond_to_p, respond_to_p, respond_to_p19, respond_to_p19, respondsTo, respondsToMissing, respondsToMissing, send, send, send, send, send, send19, send19, send19, send19, setFFIHandle, setFlag, setFrozen, setInstanceVariable, setInternalVariable, setMetaClass, setNativeHandle, setTaint, setUntrusted, setVariable, singleton_method_added19, singleton_method_removed19, singleton_method_undefined19, singleton_methods, singleton_methods19, specificEval, specificEval, specificEval, specificEval, syncVariables, syncVariables, taint, taint, tainted_p, testFrozen, testFrozen, to_a, to_s, toJava, trust, type_deprecated, type, untaint, untrust, untrusted_p, validateInstanceVariable, variableTableContains, variableTableFastContains, variableTableFastFetch, variableTableFastStore, variableTableFetch, variableTableRemove, variableTableStore, variableTableSync, yieldUnder, yieldUnderprivate StructLayout layout
private AbstractMemory memory
private volatile java.lang.Object[] referenceCache
private volatile IRubyObject[] valueCache
private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater<Struct,IRubyObject[]> valueCacheUpdater
private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater<Struct,java.lang.Object[]> referenceCacheUpdater
Struct(Ruby runtime)
runtime - The runtime for the StructLayoutpublic Struct(Ruby runtime, RubyClass klass)
runtime - The runtime for the StructLayoutklass - the ruby class to use for the StructLayoutStruct(Ruby runtime, RubyClass klass, StructLayout layout, IRubyObject memory)
runtime - The runtime for the StructLayoutklass - the ruby class to use for the StructLayoutpublic static RubyClass createStructClass(Ruby runtime, RubyModule module)
runtime - The JRuby runtime to register the new class in.static final int getStructSize(Ruby runtime, IRubyObject structClass)
static final StructLayout getStructLayout(Ruby runtime, IRubyObject structClass)
public IRubyObject initialize(ThreadContext context)
initialize in class RubyObjectpublic IRubyObject initialize(ThreadContext context, IRubyObject ptr)
public IRubyObject initialize(ThreadContext context, IRubyObject[] args)
public IRubyObject initialize_copy(ThreadContext context, IRubyObject other)
private static final Struct allocateStruct(ThreadContext context, IRubyObject klass, int flags)
public static IRubyObject allocateIn(ThreadContext context, IRubyObject klass)
public static IRubyObject allocateIn(ThreadContext context, IRubyObject klass, IRubyObject clearArg)
public static IRubyObject allocateOut(ThreadContext context, IRubyObject klass)
public static IRubyObject allocateOut(ThreadContext context, IRubyObject klass, IRubyObject clearArg)
public static IRubyObject allocateInOut(ThreadContext context, IRubyObject klass)
public static IRubyObject allocateInOut(ThreadContext context, IRubyObject klass, IRubyObject clearArg)
public static IRubyObject size(ThreadContext context, IRubyObject structClass)
public static IRubyObject alignment(ThreadContext context, IRubyObject structClass)
public static IRubyObject set_layout(ThreadContext context, IRubyObject structClass, IRubyObject layout)
public static IRubyObject members(ThreadContext context, IRubyObject structClass)
public static IRubyObject offsets(ThreadContext context, IRubyObject structClass)
public static IRubyObject offset_of(ThreadContext context, IRubyObject structClass, IRubyObject fieldName)
public IRubyObject getFieldValue(ThreadContext context, IRubyObject fieldName)
public IRubyObject setFieldValue(ThreadContext context, IRubyObject fieldName, IRubyObject fieldValue)
public IRubyObject getLayout(ThreadContext context)
public IRubyObject pointer(ThreadContext context)
public IRubyObject members(ThreadContext context)
public IRubyObject values(ThreadContext context)
public IRubyObject offsets(ThreadContext context)
public IRubyObject offset_of(ThreadContext context, IRubyObject fieldName)
public IRubyObject size(ThreadContext context)
public IRubyObject alignment(ThreadContext context)
public IRubyObject null_p(ThreadContext context)
public final IRubyObject order(ThreadContext context)
public final IRubyObject order(ThreadContext context, IRubyObject byte_order)
public IRubyObject clear(ThreadContext context)
public final AbstractMemory getMemory()
protected final MemoryIO allocateMemoryIO()
allocateMemoryIO in class MemoryObjectpublic final IRubyObject getCachedValue(StructLayout.Member member)
getCachedValue in interface StructLayout.Storagepublic final void putCachedValue(StructLayout.Member member, IRubyObject value)
putCachedValue in interface StructLayout.Storageprivate IRubyObject[] getValueCacheForWrite()
private IRubyObject[] initValueCache()
private java.lang.Object[] getReferenceCache()
private java.lang.Object[] initReferenceCache()
public void putReference(StructLayout.Member member, java.lang.Object value)
putReference in interface StructLayout.Storage