org.jruby.ext.ffi
Class SwappedMemoryIO

java.lang.Object
  extended by org.jruby.ext.ffi.SwappedMemoryIO
All Implemented Interfaces:
DirectMemoryIO, MemoryIO

public final class SwappedMemoryIO
extends java.lang.Object
implements MemoryIO, DirectMemoryIO


Field Summary
protected static int ADDRESS_SIZE
           
protected static int LONG_SIZE
           
 
Method Summary
 java.nio.ByteBuffer asByteBuffer()
          Creates a view of this memory object as a java NIO byte buffer.
 SwappedMemoryIO dup()
          Duplicates this MemoryIO, including its contents.
 boolean equals(java.lang.Object obj)
           
 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 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.
 int hashCode()
           
 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.
 java.nio.ByteOrder order()
          Gets the ByteOrder this MemoryIO instance will read/write values to memory in.
 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.
 SwappedMemoryIO slice(long offset)
          Creates a new MemoryIO pointing to a subset of the memory area of this MemoryIO.
 SwappedMemoryIO slice(long offset, long size)
          Creates a new MemoryIO pointing to a subset of the memory area of this MemoryIO.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LONG_SIZE

protected static final int LONG_SIZE

ADDRESS_SIZE

protected static final int ADDRESS_SIZE
Method Detail

order

public final java.nio.ByteOrder order()
Description copied from interface: MemoryIO
Gets the ByteOrder this MemoryIO instance will read/write values to memory in.

Specified by:
order in interface MemoryIO
Returns:
The current ByteOrder

getAddress

public final long getAddress()
Specified by:
getAddress in interface DirectMemoryIO

slice

public SwappedMemoryIO 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.

slice

public SwappedMemoryIO slice(long offset,
                             long size)
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.
size - The size of the new slice.
Returns:
A MemoryIO instance.

dup

public SwappedMemoryIO dup()
Description copied from interface: MemoryIO
Duplicates this MemoryIO, including its contents.

Specified by:
dup in interface MemoryIO
Returns:
A MemoryIO instance.

asByteBuffer

public final 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

equals

public final boolean equals(java.lang.Object obj)
Overrides:
equals in class java.lang.Object

hashCode

public final int hashCode()
Overrides:
hashCode in class java.lang.Object

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.

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.

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.

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.

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.

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.

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.

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.


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