org.jruby.ext.ffi
Class StructLayout

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

public final class StructLayout
extends Type

Defines the memory layout for a native structure.

See Also:
Serialized Form

Nested Class Summary
static interface StructLayout.Aggregate
           
static class StructLayout.Array
           
static class StructLayout.Member
          A struct member.
static interface StructLayout.Storage
           
 
Nested classes/interfaces inherited from class org.jruby.ext.ffi.Type
Type.Builtin
 
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
 
Fields inherited from class org.jruby.ext.ffi.Type
alignment, nativeType, size
 
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
 
Method Summary
 IRubyObject alignment(ThreadContext context)
          Gets the minimum alignment of the struct.
 IRubyObject aref(ThreadContext context, IRubyObject fieldName)
           
static RubyClass createStructLayoutClass(Ruby runtime, RubyModule module)
          Registers the StructLayout class in the JRuby runtime.
 IRubyObject fields(ThreadContext context)
           
 IRubyObject get(ThreadContext context, IRubyObject ptr, IRubyObject name)
          Gets the value of the struct member corresponding to name.
 int getFieldCount()
           
 java.util.Collection<StructLayout.Member> getFields()
           
 int getMinimumAlignment()
           
 int getSize()
           
 IRubyObject members(ThreadContext context)
          Gets a ruby array of the names of all members of this struct.
 IRubyObject offset_of(ThreadContext context, IRubyObject fieldName)
          Gets the offset of a member of the struct.
 IRubyObject offsets(ThreadContext context)
          Gets a ruby array of the offsets of all members of this struct.
 IRubyObject put(ThreadContext context, IRubyObject ptr, IRubyObject name, IRubyObject value)
          Sets the native value of the struct member corresponding to name.
 IRubyObject size(ThreadContext context)
          Gets the total size of the struct.
 
Methods inherited from class org.jruby.ext.ffi.Type
createTypeClass, getNativeAlignment, getNativeSize, getNativeType, getTypeClass
 
Methods inherited from class org.jruby.RubyObject
as, attachToObjectSpace, callInit, checkFrozen, convertToType, createObjectClass, display, dup, eql_p, eqlInternal, equal_p, equalInternal, equals, evalUnder, evalUnder, extend, freeze, frozen_p, getNativeTypeIndex, hash, hashCode, 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
 

Method Detail

createStructLayoutClass

public static RubyClass createStructLayoutClass(Ruby runtime,
                                                RubyModule module)
Registers the StructLayout class in the JRuby runtime.

Parameters:
runtime - The JRuby runtime to register the new class in.
Returns:
The new class

get

public IRubyObject get(ThreadContext context,
                       IRubyObject ptr,
                       IRubyObject name)
Gets the value of the struct member corresponding to name.

Parameters:
ptr - The address of the structure in memory.
name - The name of the member.
Returns:
A ruby value for the native value of the struct member.

put

public IRubyObject put(ThreadContext context,
                       IRubyObject ptr,
                       IRubyObject name,
                       IRubyObject value)
Sets the native value of the struct member corresponding to name.

Parameters:
ptr - The address of the structure in memory.
name - The name of the member.
Returns:
A ruby value for the native value of the struct member.

members

public IRubyObject members(ThreadContext context)
Gets a ruby array of the names of all members of this struct.

Returns:
a RubyArray containing the names of all members.

offsets

public IRubyObject offsets(ThreadContext context)
Gets a ruby array of the offsets of all members of this struct.

Returns:
a RubyArray containing the offsets of all members.

size

public IRubyObject size(ThreadContext context)
Gets the total size of the struct.

Overrides:
size in class Type
Parameters:
context - The Ruby thread context.
Returns:
The size of the struct in bytes.

alignment

public IRubyObject alignment(ThreadContext context)
Gets the minimum alignment of the struct.

Overrides:
alignment in class Type
Parameters:
context - The Ruby thread context.
Returns:
The minimum alignment of the struct in bytes.

offset_of

public IRubyObject offset_of(ThreadContext context,
                             IRubyObject fieldName)
Gets the offset of a member of the struct.

Returns:
The offset of the member within the struct memory, in bytes.

aref

public IRubyObject aref(ThreadContext context,
                        IRubyObject fieldName)

fields

public IRubyObject fields(ThreadContext context)

getMinimumAlignment

public final int getMinimumAlignment()

getSize

public final int getSize()

getFieldCount

public final int getFieldCount()

getFields

public final java.util.Collection<StructLayout.Member> getFields()


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