org.jruby.ext.ffi
Class ArrayMemoryIO

java.lang.Object
  extended by org.jruby.ext.ffi.ArrayMemoryIO
All Implemented Interfaces:
MemoryIO

public final class ArrayMemoryIO
extends java.lang.Object
implements MemoryIO


Nested Class Summary
protected static class ArrayMemoryIO.ArrayIO
           
 
Field Summary
protected static int ADDRESS_SIZE
           
protected  byte[] buffer
           
protected static ArrayMemoryIO.ArrayIO IO
           
protected  int length
           
protected static int LONG_SIZE
           
protected  int offset
           
protected  Ruby runtime
           
 
Constructor Summary
ArrayMemoryIO(Ruby runtime, byte[] buffer, int offset, int length)
           
ArrayMemoryIO(Ruby runtime, int size)
           
 
Method Summary
 byte[] array()
           
 int arrayLength()
           
 int arrayOffset()
           
 java.nio.ByteBuffer asByteBuffer()
          Creates a view of this memory object as a java NIO byte buffer.
 void clear()
           
 void get(long offset, byte[] dst, int off, int len)
          Reads an array of bytes from the memory area at the specified offset.
 void get(long offset, double[] dst, int off, int len)
          Reads an array of doubles from the memory area at the specified offset.
 void get(long offset, float[] dst, int off, int len)
          Reads an array of floats from the memory area at the specified offset.
 void get(long offset, int[] dst, int off, int len)
          Reads an array of ints from the memory area at the specified offset.
 void get(long offset, long[] dst, int off, int len)
          Reads an array of longs from the memory area at the specified offset.
 void get(long offset, short[] dst, int off, int len)
          Reads an array of shorts from the memory area at the specified offset.
 long getAddress(long offset)
          Reads a pointer value at the specified offset within the memory area.
 byte getByte(long offset)
          Reads an 8 bit integer value from the memory area.
 double getDouble(long offset)
          Reads a double value from the memory area.
 float getFloat(long offset)
          Reads a float value from the memory area.
 int getInt(long offset)
          Reads a 32 bit integer value from the memory area.
 long getLong(long offset)
          Reads a 64 bit integer value from the memory area.
 DirectMemoryIO getMemoryIO(long offset)
          Reads a pointer value at the specified offset within the memory area, and wraps it in an abstract memory accessor.
 long getNativeLong(long offset)
          Reads a native long integer value from the memory area.
 short getShort(long offset)
          Reads a 16 bit integer value from the memory area.
 byte[] getZeroTerminatedByteArray(long offset)
          Reads a zero terminated byte array (e.g.
 byte[] getZeroTerminatedByteArray(long offset, int maxlen)
          Reads a zero terminated byte array (e.g.
protected  int index(long off)
           
 int indexOf(long offset, byte value)
          Gets the first index within the memory area of a particular 8 bit value.
 int indexOf(long offset, byte value, int maxlen)
          Gets the first index within the memory area of a particular 8 bit value.
 boolean isDirect()
          Checks if the memory area is a native memory pointer.
 boolean isNull()
          Checks if the memory area is NULL.
 void put(long offset, byte[] src, int off, int len)
          Writes an array of bytes to the memory area at the specified offset.
 void put(long offset, double[] src, int off, int len)
          Writes an array of doubles to the memory area at the specified offset.
 void put(long offset, float[] src, int off, int len)
          Writes an array of floats to the memory area at the specified offset.
 void put(long offset, int[] src, int off, int len)
          Writes an array of ints to the memory area at the specified offset.
 void put(long offset, long[] src, int off, int len)
          Writes an array of longs to the memory area at the specified offset.
 void put(long offset, short[] src, int off, int len)
          Writes an array of shorts to the memory area at the specified offset.
 void putAddress(long offset, long value)
          Writes a pointer value to the memory area at the specified offset.
 void putByte(long offset, byte value)
          Writes an 8 bit integer value to the memory area at the specified offset.
 void putDouble(long offset, double value)
          Writes a 64 bit float value to the memory area at the specified offset.
 void putFloat(long offset, float value)
          Writes a 32 bit float value to the memory area at the specified offset.
 void putInt(long offset, int value)
          Writes a 32 bit integer value to the memory area at the specified offset.
 void putLong(long offset, long value)
          Writes a 64 bit integer value to the memory area at the specified offset.
 void putMemoryIO(long offset, MemoryIO value)
          Writes a pointer value to the memory area at the specified offset.
 void putNativeLong(long offset, long value)
          Writes a native long integer value to the memory area at the specified offset.
 void putShort(long offset, short value)
          Writes a 16 bit integer value to the memory area at the specified offset.
 void putZeroTerminatedByteArray(long offset, byte[] bytes, int off, int len)
          Writes a byte array to memory, and appends a zero terminator
 void setMemory(long offset, long size, byte value)
          Sets the contents of the memory area to the value.
 ArrayMemoryIO slice(long offset)
          Creates a new MemoryIO pointing to a subset of the memory area of this MemoryIO.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

IO

protected static final ArrayMemoryIO.ArrayIO IO

LONG_SIZE

protected static final int LONG_SIZE

ADDRESS_SIZE

protected static final int ADDRESS_SIZE

runtime

protected final Ruby runtime

buffer

protected final byte[] buffer

offset

protected final int offset

length

protected final int length
Constructor Detail

ArrayMemoryIO

public ArrayMemoryIO(Ruby runtime,
                     byte[] buffer,
                     int offset,
                     int length)

ArrayMemoryIO

public ArrayMemoryIO(Ruby runtime,
                     int size)
Method Detail

array

public final byte[] array()

arrayOffset

public final int arrayOffset()

arrayLength

public final int arrayLength()

index

protected final int index(long off)

isNull

public final boolean isNull()
Description copied from interface: MemoryIO
Checks if the memory area is NULL.

Specified by:
isNull in interface MemoryIO
Returns:
true if the memory area is invalid.

isDirect

public final boolean isDirect()
Description copied from interface: MemoryIO
Checks if the memory area is a native memory pointer.

Specified by:
isDirect in interface MemoryIO
Returns:
true if the memory area is a native pointer.

slice

public ArrayMemoryIO slice(long offset)
Description copied from interface: MemoryIO
Creates a new MemoryIO pointing to a subset of the memory area of this MemoryIO.

Specified by:
slice in interface MemoryIO
Parameters:
offset - The offset within the existing memory area to start the new MemoryIO at.
Returns:
A MemoryIO instance.

asByteBuffer

public java.nio.ByteBuffer asByteBuffer()
Description copied from interface: MemoryIO
Creates a view of this memory object as a java NIO byte buffer.

Specified by:
asByteBuffer in interface MemoryIO
Returns:
A ByteBuffer instance

getMemoryIO

public final DirectMemoryIO getMemoryIO(long offset)
Description copied from interface: MemoryIO
Reads a pointer value at the specified offset within the memory area, and wraps it in an abstract memory accessor.

Specified by:
getMemoryIO in interface MemoryIO
Parameters:
offset - The offset within the memory area to read the value.
Returns:
A DirectMemoryIO accessor that can be used to access the memory pointed to by the address.

putMemoryIO

public final void putMemoryIO(long offset,
                              MemoryIO value)
Description copied from interface: MemoryIO
Writes a pointer value to the memory area at the specified offset.

Specified by:
putMemoryIO in interface MemoryIO
Parameters:
offset - The offset within the memory area to write the value.
value - The pointer value to write to the memory location.

getByte

public final byte getByte(long offset)
Description copied from interface: MemoryIO
Reads an 8 bit integer value from the memory area.

Specified by:
getByte in interface MemoryIO
Parameters:
offset - The offset within the memory area to read the value.
Returns:
The 8 bit integer value read from offset

getShort

public final short getShort(long offset)
Description copied from interface: MemoryIO
Reads a 16 bit integer value from the memory area.

Specified by:
getShort in interface MemoryIO
Parameters:
offset - The offset within the memory area to read the value.
Returns:
The 16 bit integer value read from offset

getInt

public final int getInt(long offset)
Description copied from interface: MemoryIO
Reads a 32 bit integer value from the memory area.

Specified by:
getInt in interface MemoryIO
Parameters:
offset - The offset within the memory area to read the value.
Returns:
The 32 bit integer value read from offset

getLong

public final long getLong(long offset)
Description copied from interface: MemoryIO
Reads a 64 bit integer value from the memory area.

Specified by:
getLong in interface MemoryIO
Parameters:
offset - The offset within the memory area to read the value.
Returns:
The 64 bit integer value read from offset

getNativeLong

public final long getNativeLong(long offset)
Description copied from interface: MemoryIO
Reads a native long integer value from the memory area.

A native long is 32bits on either ILP32 or LLP64 architectures, and 64 bits on an LP64 architecture.

This means that it will always read a 32bit value on Windows, but on Unix systems such as MacOS or Linux, it will read a 32bit value on 32bit systems, and a 64bit value on 64bit systems.

Specified by:
getNativeLong in interface MemoryIO
Parameters:
offset - The offset within the memory area to read the value.
Returns:
The native long value read from offset

getFloat

public final float getFloat(long offset)
Description copied from interface: MemoryIO
Reads a float value from the memory area.

Specified by:
getFloat in interface MemoryIO
Parameters:
offset - The offset within the memory area to read the value.
Returns:
The float value read from offset

getDouble

public final double getDouble(long offset)
Description copied from interface: MemoryIO
Reads a double value from the memory area.

Specified by:
getDouble in interface MemoryIO
Parameters:
offset - The offset within the memory area to read the value.
Returns:
The double value read from offset

getAddress

public final long getAddress(long offset)
Description copied from interface: MemoryIO
Reads a pointer value at the specified offset within the memory area.

Specified by:
getAddress in interface MemoryIO
Parameters:
offset - The offset within the memory area to read the value.
Returns:
A long value that represents the address.

putByte

public final void putByte(long offset,
                          byte value)
Description copied from interface: MemoryIO
Writes an 8 bit integer value to the memory area at the specified offset.

Specified by:
putByte in interface MemoryIO
Parameters:
offset - The offset within the memory area to write the value.
value - The 8 bit integer value to write to the memory location.

putShort

public final void putShort(long offset,
                           short value)
Description copied from interface: MemoryIO
Writes a 16 bit integer value to the memory area at the specified offset.

Specified by:
putShort in interface MemoryIO
Parameters:
offset - The offset within the memory area to write the value.
value - The 16 bit integer value to write to the memory location.

putInt

public final void putInt(long offset,
                         int value)
Description copied from interface: MemoryIO
Writes a 32 bit integer value to the memory area at the specified offset.

Specified by:
putInt in interface MemoryIO
Parameters:
offset - The offset within the memory area to write the value.
value - The 32 bit integer value to write to the memory location.

putLong

public final void putLong(long offset,
                          long value)
Description copied from interface: MemoryIO
Writes a 64 bit integer value to the memory area at the specified offset.

Specified by:
putLong in interface MemoryIO
Parameters:
offset - The offset within the memory area to write the value.
value - The 64 bit integer value to write to the memory location.

putNativeLong

public final void putNativeLong(long offset,
                                long value)
Description copied from interface: MemoryIO
Writes a native long integer value to the memory area at the specified offset.

Specified by:
putNativeLong in interface MemoryIO
Parameters:
offset - The offset within the memory area to write the value.
value - The native long integer value to write to the memory location.

putFloat

public final void putFloat(long offset,
                           float value)
Description copied from interface: MemoryIO
Writes a 32 bit float value to the memory area at the specified offset.

Specified by:
putFloat in interface MemoryIO
Parameters:
offset - The offset within the memory area to write the value.
value - The 32 bit float value to write to the memory location.

putDouble

public final void putDouble(long offset,
                            double value)
Description copied from interface: MemoryIO
Writes a 64 bit float value to the memory area at the specified offset.

Specified by:
putDouble in interface MemoryIO
Parameters:
offset - The offset within the memory area to write the value.
value - The 64 bit float value to write to the memory location.

putAddress

public final void putAddress(long offset,
                             long value)
Description copied from interface: MemoryIO
Writes a pointer value to the memory area at the specified offset.

Specified by:
putAddress in interface MemoryIO
Parameters:
offset - The offset within the memory area to write the value.
value - The pointer value to write to the memory location.

get

public final void get(long offset,
                      byte[] dst,
                      int off,
                      int len)
Description copied from interface: MemoryIO
Reads an array of bytes from the memory area at the specified offset.

Specified by:
get in interface MemoryIO
Parameters:
offset - The offset within the memory area to read the bytes.
dst - The output byte array to place the data.
off - The offset within the byte array to start copying.
len - The length of data to read.

put

public final void put(long offset,
                      byte[] src,
                      int off,
                      int len)
Description copied from interface: MemoryIO
Writes an array of bytes to the memory area at the specified offset.

Specified by:
put in interface MemoryIO
Parameters:
offset - The offset within the memory area to start writing the bytes.
src - The byte array to write to the memory area.
off - The offset within the byte array to start copying.
len - The length of data to write.

get

public final void get(long offset,
                      short[] dst,
                      int off,
                      int len)
Description copied from interface: MemoryIO
Reads an array of shorts from the memory area at the specified offset.

Specified by:
get in interface MemoryIO
Parameters:
offset - The offset within the memory area to read the shorts.
dst - The output array to place the data in.
off - The offset within the array to start copying.
len - The number of shorts to read.

put

public final void put(long offset,
                      short[] src,
                      int off,
                      int len)
Description copied from interface: MemoryIO
Writes an array of shorts to the memory area at the specified offset.

Specified by:
put in interface MemoryIO
Parameters:
offset - The offset within the memory area to start writing the shorts.
src - The array to write to the memory area.
off - The offset within the array to start copying.
len - The number of shorts to write.

get

public final void get(long offset,
                      int[] dst,
                      int off,
                      int len)
Description copied from interface: MemoryIO
Reads an array of ints from the memory area at the specified offset.

Specified by:
get in interface MemoryIO
Parameters:
offset - The offset within the memory area to read the ints.
dst - The output array to place the data in.
off - The offset within the array to start copying.
len - The number of ints to read.

put

public final void put(long offset,
                      int[] src,
                      int off,
                      int len)
Description copied from interface: MemoryIO
Writes an array of ints to the memory area at the specified offset.

Specified by:
put in interface MemoryIO
Parameters:
offset - The offset within the memory area to start writing the ints.
src - The array to write to the memory area.
off - The offset within the array to start copying.
len - The number of ints to write.

get

public final void get(long offset,
                      long[] dst,
                      int off,
                      int len)
Description copied from interface: MemoryIO
Reads an array of longs from the memory area at the specified offset.

Specified by:
get in interface MemoryIO
Parameters:
offset - The offset within the memory area to read the longs.
dst - The output array to place the data in.
off - The offset within the array to start copying.
len - The number of longs to read.

put

public final void put(long offset,
                      long[] src,
                      int off,
                      int len)
Description copied from interface: MemoryIO
Writes an array of longs to the memory area at the specified offset.

Specified by:
put in interface MemoryIO
Parameters:
offset - The offset within the memory area to start writing the longs.
src - The array to write to the memory area.
off - The offset within the array to start copying.
len - The number of longs to write.

get

public final void get(long offset,
                      float[] dst,
                      int off,
                      int len)
Description copied from interface: MemoryIO
Reads an array of floats from the memory area at the specified offset.

Specified by:
get in interface MemoryIO
Parameters:
offset - The offset within the memory area to read the floats.
dst - The output array to place the data in.
off - The offset within the array to start copying.
len - The number of floats to read.

put

public final void put(long offset,
                      float[] src,
                      int off,
                      int len)
Description copied from interface: MemoryIO
Writes an array of floats to the memory area at the specified offset.

Specified by:
put in interface MemoryIO
Parameters:
offset - The offset within the memory area to start writing the floats.
src - The array to write to the memory area.
off - The offset within the array to start copying.
len - The number of floats to write.

get

public final void get(long offset,
                      double[] dst,
                      int off,
                      int len)
Description copied from interface: MemoryIO
Reads an array of doubles from the memory area at the specified offset.

Specified by:
get in interface MemoryIO
Parameters:
offset - The offset within the memory area to read the doubles.
dst - The output array to place the data in.
off - The offset within the array to start copying.
len - The number of doubles to read.

put

public final void put(long offset,
                      double[] src,
                      int off,
                      int len)
Description copied from interface: MemoryIO
Writes an array of doubles to the memory area at the specified offset.

Specified by:
put in interface MemoryIO
Parameters:
offset - The offset within the memory area to start writing the doubles.
src - The array to write to the memory area.
off - The offset within the array to start copying.
len - The number of doubles to write.

indexOf

public final int indexOf(long offset,
                         byte value)
Description copied from interface: MemoryIO
Gets the first index within the memory area of a particular 8 bit value.

Specified by:
indexOf in interface MemoryIO
Parameters:
offset - The offset within the memory area to start searching.
value - The value to search for.
Returns:
The index of the value, relative to offset.

indexOf

public final int indexOf(long offset,
                         byte value,
                         int maxlen)
Description copied from interface: MemoryIO
Gets the first index within the memory area of a particular 8 bit value.

Specified by:
indexOf in interface MemoryIO
Parameters:
offset - The offset within the memory area to start searching.
value - The value to search for.
Returns:
The index of the value, relative to offset.

setMemory

public final void setMemory(long offset,
                            long size,
                            byte value)
Description copied from interface: MemoryIO
Sets the contents of the memory area to the value.

Specified by:
setMemory in interface MemoryIO
Parameters:
offset - The offset within the memory area to start writing.
size - The number of bytes to set to the value.
value - The value to set each byte to.

getZeroTerminatedByteArray

public final byte[] getZeroTerminatedByteArray(long offset)
Description copied from interface: MemoryIO
Reads a zero terminated byte array (e.g. an ascii or utf-8 string)

Specified by:
getZeroTerminatedByteArray in interface MemoryIO
Parameters:
offset - The offset within the memory area of the start of the string.
Returns:
A byte array containing a copy of the data.

getZeroTerminatedByteArray

public final byte[] getZeroTerminatedByteArray(long offset,
                                               int maxlen)
Description copied from interface: MemoryIO
Reads a zero terminated byte array (e.g. an ascii or utf-8 string)

Specified by:
getZeroTerminatedByteArray in interface MemoryIO
Parameters:
offset - The offset within the memory area of the start of the string.
maxlen - The maximum length to search for the zero byte terminator.
Returns:
A byte array containing a copy of the data.

putZeroTerminatedByteArray

public void putZeroTerminatedByteArray(long offset,
                                       byte[] bytes,
                                       int off,
                                       int len)
Description copied from interface: MemoryIO
Writes a byte array to memory, and appends a zero terminator

Specified by:
putZeroTerminatedByteArray in interface MemoryIO
Parameters:
offset - The offset within the memory area of the start of the string.
bytes - The byte array to write to the memory.
off - The offset with the byte array to start copying.

clear

public final void clear()


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