org.jruby.ext.ffi
Class StructLayout.Member

java.lang.Object
  extended by org.jruby.RubyBasicObject
      extended by org.jruby.RubyObject
          extended by org.jruby.ext.ffi.StructLayout.Member
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, java.lang.Comparable<IRubyObject>, InstanceVariables, InternalVariables, IRubyObject, CoreObjectType
Enclosing class:
StructLayout

public abstract static class StructLayout.Member
extends RubyObject

A struct member. This defines the offset within a chunk of memory to use when reading/writing the member, as well as how to convert between the native representation of the member and the JRuby representation.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.jruby.RubyObject
RubyObject.Data, RubyObject.ObjectMethods
 
Nested classes/interfaces inherited from class org.jruby.RubyBasicObject
RubyBasicObject.BasicObjectMethods, RubyBasicObject.Finalizer
 
Field Summary
protected  int index
          The index of this member within the struct
protected  IRubyObject name
          The name of this member.
protected  long offset
          The offset within the memory area of this member
protected  Type type
          The Type of this member.
 
Fields inherited from class org.jruby.RubyObject
OBJECT_ALLOCATOR
 
Fields inherited from class org.jruby.RubyBasicObject
ALL_F, COMPARE_BY_IDENTITY_F, ERR_INSECURE_SET_INST_VAR, FALSE_F, FL_USHIFT, flags, FROZEN_F, metaClass, NEVER, NIL_F, TAINTED_F, UNDEF, UNTRUSTED_F, USER0_F, USER1_F, USER2_F, USER3_F, USER4_F, USER5_F, USER6_F, USER7_F
 
Fields inherited from interface org.jruby.runtime.builtin.IRubyObject
NULL_ARRAY
 
Constructor Summary
protected StructLayout.Member(IRubyObject name, Type type, int index, long offset)
          Initializes a new Member instance
 
Method Summary
 IRubyObject alignment(ThreadContext context)
           
 boolean equals(java.lang.Object obj)
          This method is just a wrapper around the Ruby "==" method, provided so that RubyObjects can be used as keys in the Java HashMap object underlying RubyHash.
 IRubyObject ffi_type(ThreadContext context)
           
abstract  IRubyObject get(Ruby runtime, StructLayout.Storage cache, IRubyObject ptr)
          Reads a ruby value from the struct member.
 NativeType getNativeType()
           
 int hashCode()
          Override the Object#hashCode method to make sure that the Ruby hash is actually used as the hashcode for Ruby objects.
protected  boolean isCacheable()
          Gets the cacheable status of this Struct member
protected  boolean isValueReferenceNeeded()
          Checks if a reference to the ruby object assigned to this field needs to be stored
 IRubyObject offset(ThreadContext context)
           
abstract  void put(Ruby runtime, StructLayout.Storage cache, IRubyObject ptr, IRubyObject value)
          Writes a ruby value to the native struct member as the appropriate native value.
 IRubyObject size(ThreadContext context)
           
 
Methods inherited from class org.jruby.RubyObject
as, attachToObjectSpace, callInit, checkFrozen, convertToType, createObjectClass, display, dup, eql_p, eqlInternal, equal_p, equalInternal, evalUnder, evalUnder, extend, freeze, frozen_p, getNativeTypeIndex, hash, id_deprecated, id, initialize_copy, initialize, inspect, instance_eval, instance_eval, instance_eval, instance_eval, instance_eval, instance_exec, instance_of_p, instance_variable_defined_p, instance_variable_get, instance_variable_set, instance_variables, kind_of_p, method, methods, methods, methods19, nil_p, op_eqq, op_equal, op_match, op_not_match, private_methods, private_methods19, protected_methods, protected_methods19, public_methods, public_methods19, puts, rbClone, remove_instance_variable, respond_to_p, respond_to_p, send, send, send, send, send, singleton_methods, singleton_methods19, singletonMethods, specificEval, specificEval, specificEval, specificEval, specificEval, taint, tainted_p, to_a, to_java, to_s, toString, trust, type_deprecated, type, untaint, untrust, untrusted_p, validateInstanceVariable
 
Methods inherited from class org.jruby.RubyBasicObject
addFinalizer, anyToString, asJavaString, asString, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callSuper, checkArrayType, checkStringType, compareTo, convertToArray, convertToFloat, convertToHash, convertToInteger, convertToInteger, convertToInteger, convertToString, copyInstanceVariablesInto, copySpecialInstanceVariables, createBasicObjectClass, dataGetStruct, dataGetStructChecked, dataWrapStruct, ensureInstanceVariablesSettable, eql, fastGetInstanceVariable, fastGetInternalVariable, fastHasInstanceVariable, fastHasInternalVariable, fastSetInstanceVariable, fastSetInternalVariable, getFlag, getInstanceVariable, getInstanceVariableList, getInstanceVariableNameList, getInstanceVariables, getInternalVariable, getInternalVariables, getJavaClass, getMetaClass, getRuntime, getSingletonClass, getSingletonClassClone, getType, getVariable, getVariableCount, getVariableList, getVariableNameList, hasInstanceVariable, hasInternalVariable, hasVariables, infectBy, isClass, isFalse, isFrozen, isImmediate, isModule, isNil, isTaint, isTrue, isUntrusted, makeMetaClass, op_not_equal, op_not, removeFinalizers, removeInstanceVariable, removeInternalVariable, respondsTo, setFlag, setFrozen, setInstanceVariable, setInternalVariable, setMetaClass, setTaint, setUntrusted, setVariable, syncVariables, taint, testFrozen, testFrozen, toJava, variableTableContains, variableTableFastContains, variableTableFastFetch, variableTableFastStore, variableTableFetch, variableTableGetSize, variableTableRemove, variableTableStore, variableTableSync
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

name

protected final IRubyObject name
The name of this member.


type

protected final Type type
The Type of this member.


offset

protected final long offset
The offset within the memory area of this member


index

protected final int index
The index of this member within the struct

Constructor Detail

StructLayout.Member

protected StructLayout.Member(IRubyObject name,
                              Type type,
                              int index,
                              long offset)
Initializes a new Member instance

Method Detail

getNativeType

public final NativeType getNativeType()

equals

public boolean equals(java.lang.Object obj)
Description copied from class: RubyObject
This method is just a wrapper around the Ruby "==" method, provided so that RubyObjects can be used as keys in the Java HashMap object underlying RubyHash.

Overrides:
equals in class RubyObject

hashCode

public int hashCode()
Description copied from class: RubyObject
Override the Object#hashCode method to make sure that the Ruby hash is actually used as the hashcode for Ruby objects. If the Ruby "hash" method doesn't return a number, the Object#hashCode implementation will be used instead.

Overrides:
hashCode in class RubyObject

put

public abstract void put(Ruby runtime,
                         StructLayout.Storage cache,
                         IRubyObject ptr,
                         IRubyObject value)
Writes a ruby value to the native struct member as the appropriate native value.

Parameters:
runtime - The ruby runtime
cache - The value cache
ptr - The struct memory area.
value - The ruby value to write to the native struct member.

get

public abstract IRubyObject get(Ruby runtime,
                                StructLayout.Storage cache,
                                IRubyObject ptr)
Reads a ruby value from the struct member.

Parameters:
cache - The cache used to store
ptr - The struct memory area.
Returns:
A ruby object equivalent to the native member value.

isCacheable

protected boolean isCacheable()
Gets the cacheable status of this Struct member

Returns:
true if this member type is cacheable

isValueReferenceNeeded

protected boolean isValueReferenceNeeded()
Checks if a reference to the ruby object assigned to this field needs to be stored

Returns:
true if this member type requires the ruby value to be stored.

size

public IRubyObject size(ThreadContext context)

alignment

public IRubyObject alignment(ThreadContext context)

offset

public IRubyObject offset(ThreadContext context)

ffi_type

public IRubyObject ffi_type(ThreadContext context)


Copyright © 2002-2009 JRuby Team. All Rights Reserved.