com.neva
Class Coroutine

java.lang.Object
  |
  +--com.neva.Coroutine

public class Coroutine
extends java.lang.Object


Constructor Summary
Coroutine()
          Creates a Coroutine
Coroutine(java.lang.String lib, java.lang.String rou)
          Creates a Coroutine for the specified dynamic link library and function name.
 
Method Summary
 void addArg(boolean arg)
          Adds a boolean argument to the argument list
 void addArg(byte[] arg)
          Adds a byte array to the argument list.
 void addArg(byte[] arg, int size)
          Adds first size elements of a byte array to the argument list
 void addArg(com.neva.CoroutineComplexParameter par)
          Adds a pointer to a CoroutineComplexParameter bytes to the argument list
 void addArg(double arg)
          Adds a double to the argument list
 void addArg(java.lang.Double arg)
          Adds a Double to the argument list
 void addArg(float arg)
          Adds a float to the argument list
 void addArg(java.lang.Float arg)
          Adds a Float to the argument list
 void addArg(int arg)
          Adds an 32-bit integer argument to the argument list
 void addArg(int[] iarr)
          Adds an integer array to the argument list
 void addArg(int[] iarr, int sz)
          Adds first size elements of an integer array to the argument list
 void addArg(long arg)
          Adds a 64-bit integer argument to the argument list
 void addArg(java.lang.String arg)
          Adds a String argument to the argument list as an ANSI string
 void addArgANSIString(java.lang.String str)
          Adds a String argument to the argument list as an ANSI string
 void addArgBSTR(java.lang.String str)
          Adds a String argument to the argument list as a length-prefixed 16-bit Unicode string
 void addArgBuffer(int size)
          Add an empty byte array of size bytes to the argument list
 void addArgByRef(boolean param)
          Add a boolean by reference to the argument list
 void addArgByRef(double param)
          Add a double by reference to the argument list
 void addArgByRef(float param)
          Add a float by reference to the argument list
 void addArgByRef(int param)
          Add an integer by reference to the argument list
 void addArgByRef(short param)
          Add a short by reference to the argument list
 void addArgByValue(byte[] arg)
          Adds a byte array to the argument list.
 void addArgByValue(byte[] arg, int size)
          Adds first size elements of a byte array to the argument list.
 void addArgNull()
          Adds null to the argument list.
 void addArgUnicodeString(java.lang.String str)
          Adds a String argument to the argument list as a Unicode string
 java.lang.String ANSIStringFromParameterAt(int offset)
          Answers a Java String returned via external function's outbound parameter at given offset.
static java.lang.String ANSIStringFromPtr(int ptr)
          Answers a Java String created from a raw pointer to an 8-bit ANSI string (C++'s char*)
 boolean answerAsBoolean()
          Answers external function's return value as a boolean
 byte[] answerAsBytes(int size)
          Answers the external function's return value as a byte array.
 double answerAsDouble()
          Answers external function's return value as a double
 float answerAsFloat()
          Answers external function's return value as a float
 int answerAsInteger()
          Answers external function's return value as a integer
 long answerAsLong()
          Answers external function's return value as a 64-bit long
 java.lang.String answerAsString()
          Answers external function's return value as a String
 void atput(int addr, int data)
          Stores a 4-byte integer
 boolean booleanFromParameterAt(int offset)
          Answers a boolean returned via external function's outbound parameter.
 java.lang.String BSTRFromParameterAt(int offset)
          Answers a Java String returned via external function's outbound parameter at given offset.
static java.lang.String BSTRFromPtr(int ptr)
          Answers a Java String created from a raw pointer to a length-prefixed 16-bit Unicode string (OLE's BSTR)
static com.neva.Coroutine BuildCoroutineFromObjectPtr(long objPtr, int offset)
          Answers an instance of Coroutine built to acces COM interface member function.
static com.neva.Coroutine BuildCoroutineFromPtr(int ptr)
          Answers an instance of Coroutine built from a pointer to external function
 byte[] byteArrayFromParameterAt(int offset, int sz)
          Answers a byte array returned via external function's outbound parameter at offset off.
static byte[] byteArrayFromPtr(int ptr, int sz)
          Answers a byte array created from a raw pointer ptr (C++'s BYTE*)
 int byteAt(int ptr)
          Answers a byte from location ptr
 void byteAtPut(int ptr, int by)
          Stores a byte
static byte byteFromPtr(int ptr)
          Answers a byte that is pointed to by a raw pointer ptr (C++'s BYTE*)
 void copyByte(int to, byte from)
          Copies one byte.
 void copyMemory(int to, int from, int size)
          Copies size bytes of src to dest.
 double doubleFromParameterAt(int offset)
          Answers a double returned via external function's outbound parameter.
static double doubleFromPtr(int ptr)
          Answers a double that is pointed to by a raw pointer ptr (C++'s double*)
 float floatFromParameterAt(int offset)
          Answers a float returned via external function's outbound parameter.
static float floatFromPtr(int ptr)
          Answers a float that is pointed to by a raw pointer ptr (C++'s float*)
 void freeArg()
          Removes all arguments from the argument list
static int getBYTEAtOffset(byte[] bytes, int offset)
          Answers an 8-bit BYTE value at offset offset
static int getDWORDAtOffset(byte[] bytes, int offset)
          Answers a 32-bit DWORD value at offset offset
 java.lang.String getExceptionNativeStackTrace()
          Answers the last exception's native stack trace
static long getINT64AtOffset(byte[] bytes, int offset)
          Answers a 64-bit integer value at offset offset
static java.lang.String getOSErrorDescription(int errno)
          Answers error description found in system's message table resource.
static int getWORDAtOffset(byte[] bytes, int offset)
          Answers a 16-bit DWORD value at offset offset
static boolean ifInitialized()
          Answers whether Coroutine native library was properly initialized
 int[] intArrayFromParameterAt(int offset, int sz)
          Answers an integer array returned via external function's outbound parameter at given offset.
static int[] intArrayFromPtr(int ptr, int sz)
          Answers an integer array created from a raw pointer ptr (C++'s int*)
 int intAt(int addr)
          Answers an integer value at location addr
 void intAtPut(int addr, int val)
          Stores a 4-byte integer
 int intFromParameterAt(int offset)
          Answers an integer returned via external function's outbound parameter.
static int intFromPtr(int ptr)
          Answers an integer that is pointed to by a raw pointer ptr (C++'s long*)
 int invoke()
          Invokes external function.
 java.lang.String lastError()
          Answers Coroutine's last error description
 int lastOsError()
          Answers the error code set by external function during this Coroutine invocation
static int LastOsError()
          Answers the error code set by the last Coroutine invocation performed on the current thread
 long longFromParameterAt(int offset)
          Answers a long integer returned via external function's outbound parameter.
static long longFromPtr(int ptr)
          Answers a long integer that is pointed to by a raw pointer ptr (C++'s __int64*)
 int ptrFromParameterAt(int offset)
          Answers an integer pointer returned via external function's outbound parameter.
static void setBYTEAtOffset(byte[] bytes, int dword, int offset)
          Stores an 8-bit BYTE value in a byte array bytes at offset offset
static void setDWORDAtOffset(byte[] bytes, int dword, int offset)
          Stores a 32-bit DWORD value in a byte array bytes at offset offset.
 void setFunction(java.lang.String rou)
          Sets the function.
static void setINT64AtOffset(byte[] bytes, long int64, int offset)
          Stores a 64-bit integer value in a byte array bytes at offset offset.
 void setLibrary(java.lang.String lib)
          Sets the library.
static void setWORDAtOffset(byte[] bytes, int word, int offset)
          Answers a 16-bit DWORD value at offset offset
 void shortAtPut(int addr, int val)
          Stores a 2-byte short integer
 short shortFromParameterAt(int offset)
          Answers a short integer returned via external function's outbound parameter.
static short shortFromPtr(int ptr)
          Answers a short that is pointed to by a raw pointer ptr (C++'s short*)
 java.lang.String StringFromParameterAt(int offset)
          Answers a Java String returned via external function's outbound parameter at given offset.
static java.lang.String StringFromPtr(int ptr)
          Answers a Java String created from a raw pointer to an 8-bit ANSI string (C++'s char*)
 java.lang.String UnicodeStringFromParameterAt(int offset)
          Answers a Java String returned via external function's outbound parameter at given offset.
static java.lang.String UnicodeStringFromPtr(int ptr)
          Answers a Java String created from a raw pointer to a 16-bit Unicode string (C++'s WCHAR*)
static void UnloadLibraries()
          Close all previously open dynamic link libraries
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Coroutine

public Coroutine()
Creates a Coroutine


Coroutine

public Coroutine(java.lang.String lib,
                 java.lang.String rou)
Creates a Coroutine for the specified dynamic link library and function name.

Method Detail

addArg

public void addArg(boolean arg)
Adds a boolean argument to the argument list


addArg

public void addArg(byte[] arg)
Adds a byte array to the argument list.


addArg

public void addArg(byte[] arg,
                   int size)
Adds first size elements of a byte array to the argument list


addArg

public void addArg(com.neva.CoroutineComplexParameter par)
Adds a pointer to a CoroutineComplexParameter bytes to the argument list


addArg

public void addArg(double arg)
Adds a double to the argument list


addArg

public void addArg(java.lang.Double arg)
Adds a Double to the argument list


addArg

public void addArg(float arg)
Adds a float to the argument list


addArg

public void addArg(java.lang.Float arg)
Adds a Float to the argument list


addArg

public void addArg(int arg)
Adds an 32-bit integer argument to the argument list


addArg

public void addArg(int[] iarr)
Adds an integer array to the argument list


addArg

public void addArg(int[] iarr,
                   int sz)
Adds first size elements of an integer array to the argument list


addArg

public void addArg(long arg)
Adds a 64-bit integer argument to the argument list


addArg

public void addArg(java.lang.String arg)
Adds a String argument to the argument list as an ANSI string


addArgANSIString

public void addArgANSIString(java.lang.String str)
Adds a String argument to the argument list as an ANSI string


addArgBSTR

public void addArgBSTR(java.lang.String str)
Adds a String argument to the argument list as a length-prefixed 16-bit Unicode string


addArgBuffer

public void addArgBuffer(int size)
Add an empty byte array of size bytes to the argument list


addArgByRef

public void addArgByRef(boolean param)
Add a boolean by reference to the argument list


addArgByRef

public void addArgByRef(double param)
Add a double by reference to the argument list


addArgByRef

public void addArgByRef(float param)
Add a float by reference to the argument list


addArgByRef

public void addArgByRef(int param)
Add an integer by reference to the argument list


addArgByRef

public void addArgByRef(short param)
Add a short by reference to the argument list


addArgByValue

public void addArgByValue(byte[] arg)
Adds a byte array to the argument list. Array's bytes are passed by-value


addArgByValue

public void addArgByValue(byte[] arg,
                          int size)
Adds first size elements of a byte array to the argument list. Array's bytes are passed by-value


addArgNull

public void addArgNull()
Adds null to the argument list. Null is passed to the external function as (void*)0


addArgUnicodeString

public void addArgUnicodeString(java.lang.String str)
Adds a String argument to the argument list as a Unicode string


ANSIStringFromParameterAt

public java.lang.String ANSIStringFromParameterAt(int offset)
                                           throws java.lang.NullPointerException
Answers a Java String returned via external function's outbound parameter at given offset. Parameter is defined as char*.

java.lang.NullPointerException

ANSIStringFromPtr

public static java.lang.String ANSIStringFromPtr(int ptr)
                                          throws java.lang.NullPointerException
Answers a Java String created from a raw pointer to an 8-bit ANSI string (C++'s char*)

java.lang.NullPointerException

answerAsBoolean

public boolean answerAsBoolean()
Answers external function's return value as a boolean


answerAsBytes

public byte[] answerAsBytes(int size)
                     throws java.lang.NullPointerException
Answers the external function's return value as a byte array.

Parameters:
size - specifies the size of array
java.lang.NullPointerException

answerAsDouble

public double answerAsDouble()
Answers external function's return value as a double


answerAsFloat

public float answerAsFloat()
Answers external function's return value as a float


answerAsInteger

public int answerAsInteger()
Answers external function's return value as a integer


answerAsLong

public long answerAsLong()
Answers external function's return value as a 64-bit long


answerAsString

public java.lang.String answerAsString()
                                throws java.lang.NullPointerException
Answers external function's return value as a String

java.lang.NullPointerException

atput

public void atput(int addr,
                  int data)
Stores a 4-byte integer

Parameters:
addr - specifies the raw address to store 4-byte integer value

booleanFromParameterAt

public boolean booleanFromParameterAt(int offset)
                               throws java.lang.NullPointerException
Answers a boolean returned via external function's outbound parameter. Parameter is defined as BOOL*.

Parameters:
offset - specifies parameter's offset in parameter list
java.lang.NullPointerException

BSTRFromParameterAt

public java.lang.String BSTRFromParameterAt(int offset)
                                     throws java.lang.NullPointerException
Answers a Java String returned via external function's outbound parameter at given offset. Parameter is defined as BSTR*.

java.lang.NullPointerException

BSTRFromPtr

public static java.lang.String BSTRFromPtr(int ptr)
                                    throws java.lang.NullPointerException
Answers a Java String created from a raw pointer to a length-prefixed 16-bit Unicode string (OLE's BSTR)

java.lang.NullPointerException

BuildCoroutineFromObjectPtr

public static com.neva.Coroutine BuildCoroutineFromObjectPtr(long objPtr,
                                                             int offset)
Answers an instance of Coroutine built to acces COM interface member function.

Parameters:
objPtr - specifies COM object interface pointer
offset - specifies the offset in Interface Function Table (vtable).
Returns:
a Coroutine object that has COM object's this pointer already added as a first parameter.

BuildCoroutineFromPtr

public static com.neva.Coroutine BuildCoroutineFromPtr(int ptr)
Answers an instance of Coroutine built from a pointer to external function

Parameters:
ptr - specifies address of external function
Returns:
a Coroutine object

byteArrayFromParameterAt

public byte[] byteArrayFromParameterAt(int offset,
                                       int sz)
                                throws java.lang.NullPointerException
Answers a byte array returned via external function's outbound parameter at offset off. Parameter is defined as BYTE*

java.lang.NullPointerException

byteArrayFromPtr

public static byte[] byteArrayFromPtr(int ptr,
                                      int sz)
                               throws java.lang.NullPointerException
Answers a byte array created from a raw pointer ptr (C++'s BYTE*)

Parameters:
ptr - specifies raw pointer
sz - specifies the size of array
Returns:
byte array created from a raw pointer
java.lang.NullPointerException

byteAt

public int byteAt(int ptr)
Answers a byte from location ptr


byteAtPut

public void byteAtPut(int ptr,
                      int by)
Stores a byte


byteFromPtr

public static byte byteFromPtr(int ptr)
                        throws java.lang.NullPointerException
Answers a byte that is pointed to by a raw pointer ptr (C++'s BYTE*)

java.lang.NullPointerException

copyByte

public void copyByte(int to,
                     byte from)
              throws java.lang.NullPointerException
Copies one byte. Both to and from are raw pointers

java.lang.NullPointerException

copyMemory

public void copyMemory(int to,
                       int from,
                       int size)
                throws java.lang.NullPointerException
Copies size bytes of src to dest. Both src and dest are raw pointers

java.lang.NullPointerException

doubleFromParameterAt

public double doubleFromParameterAt(int offset)
                             throws java.lang.NullPointerException
Answers a double returned via external function's outbound parameter. Parameter is defined as double*.

Parameters:
offset - specifies parameter's offset in parameter list
java.lang.NullPointerException

doubleFromPtr

public static double doubleFromPtr(int ptr)
                            throws java.lang.NullPointerException
Answers a double that is pointed to by a raw pointer ptr (C++'s double*)

java.lang.NullPointerException

floatFromParameterAt

public float floatFromParameterAt(int offset)
                           throws java.lang.NullPointerException
Answers a float returned via external function's outbound parameter. Parameter is defined as float*.

Parameters:
offset - specifies parameter's offset in parameter list
java.lang.NullPointerException

floatFromPtr

public static float floatFromPtr(int ptr)
                          throws java.lang.NullPointerException
Answers a float that is pointed to by a raw pointer ptr (C++'s float*)

java.lang.NullPointerException

freeArg

public void freeArg()
Removes all arguments from the argument list


getBYTEAtOffset

public static int getBYTEAtOffset(byte[] bytes,
                                  int offset)
Answers an 8-bit BYTE value at offset offset


getDWORDAtOffset

public static int getDWORDAtOffset(byte[] bytes,
                                   int offset)
Answers a 32-bit DWORD value at offset offset


getExceptionNativeStackTrace

public java.lang.String getExceptionNativeStackTrace()
Answers the last exception's native stack trace


getINT64AtOffset

public static long getINT64AtOffset(byte[] bytes,
                                    int offset)
Answers a 64-bit integer value at offset offset


getOSErrorDescription

public static java.lang.String getOSErrorDescription(int errno)
Answers error description found in system's message table resource. Answers null when there is no message description associated with this error


getWORDAtOffset

public static int getWORDAtOffset(byte[] bytes,
                                  int offset)
Answers a 16-bit DWORD value at offset offset


ifInitialized

public static boolean ifInitialized()
Answers whether Coroutine native library was properly initialized


intArrayFromParameterAt

public int[] intArrayFromParameterAt(int offset,
                                     int sz)
                              throws java.lang.NullPointerException
Answers an integer array returned via external function's outbound parameter at given offset. Parameter is defined as long*

java.lang.NullPointerException

intArrayFromPtr

public static int[] intArrayFromPtr(int ptr,
                                    int sz)
                             throws java.lang.NullPointerException
Answers an integer array created from a raw pointer ptr (C++'s int*)

Parameters:
ptr - specifies raw pointer
sz - specifies the size of array
Returns:
integer array created from a raw pointer
java.lang.NullPointerException

intAt

public int intAt(int addr)
          throws java.lang.NullPointerException
Answers an integer value at location addr

java.lang.NullPointerException

intAtPut

public void intAtPut(int addr,
                     int val)
              throws java.lang.NullPointerException
Stores a 4-byte integer

Parameters:
addr - specifies the raw address to store 4-byte integer
val - specifies an integer value to store
java.lang.NullPointerException

intFromParameterAt

public int intFromParameterAt(int offset)
                       throws java.lang.NullPointerException
Answers an integer returned via external function's outbound parameter. Parameter is defined as int*.

Parameters:
offset - specifies parameter's offset in parameter list
java.lang.NullPointerException

intFromPtr

public static int intFromPtr(int ptr)
                      throws java.lang.NullPointerException
Answers an integer that is pointed to by a raw pointer ptr (C++'s long*)

java.lang.NullPointerException

invoke

public int invoke()
           throws java.lang.SecurityException
Invokes external function.

Returns:
0 when successful. Otherwise answers an integer error code. Use lastError() method to retrieve error description.
Throws:
java.lang.SecurityException - when the external function is not authorized (see Security Issues).

lastError

public java.lang.String lastError()
                           throws java.lang.NullPointerException
Answers Coroutine's last error description

java.lang.NullPointerException

lastOsError

public int lastOsError()
Answers the error code set by external function during this Coroutine invocation


LastOsError

public static int LastOsError()
Answers the error code set by the last Coroutine invocation performed on the current thread


longFromParameterAt

public long longFromParameterAt(int offset)
                         throws java.lang.NullPointerException
Answers a long integer returned via external function's outbound parameter. Parameter is defined as __int64*.

Parameters:
offset - specifies parameter's offset in parameter list
java.lang.NullPointerException

longFromPtr

public static long longFromPtr(int ptr)
                        throws java.lang.NullPointerException
Answers a long integer that is pointed to by a raw pointer ptr (C++'s __int64*)

java.lang.NullPointerException

ptrFromParameterAt

public int ptrFromParameterAt(int offset)
                       throws java.lang.NullPointerException
Answers an integer pointer returned via external function's outbound parameter. Parameter is defined as void*.

Parameters:
offset - specifies parameter's offset in parameter list
java.lang.NullPointerException

setBYTEAtOffset

public static void setBYTEAtOffset(byte[] bytes,
                                   int dword,
                                   int offset)
Stores an 8-bit BYTE value in a byte array bytes at offset offset


setDWORDAtOffset

public static void setDWORDAtOffset(byte[] bytes,
                                    int dword,
                                    int offset)
Stores a 32-bit DWORD value in a byte array bytes at offset offset. Offset is zero relative


setFunction

public void setFunction(java.lang.String rou)
Sets the function.

Parameters:
rou - specifies external function's name as function's exported name or symbol '@' followed by function's ordinal number.

setINT64AtOffset

public static void setINT64AtOffset(byte[] bytes,
                                    long int64,
                                    int offset)
Stores a 64-bit integer value in a byte array bytes at offset offset. Offset is zero relative


setLibrary

public void setLibrary(java.lang.String lib)
Sets the library.

Parameters:
lib - specifies DLL file name without path and extension.

setWORDAtOffset

public static void setWORDAtOffset(byte[] bytes,
                                   int word,
                                   int offset)
Answers a 16-bit DWORD value at offset offset


shortAtPut

public void shortAtPut(int addr,
                       int val)
                throws java.lang.NullPointerException
Stores a 2-byte short integer

Parameters:
addr - specifies the raw address to store short integer
val - specifies an short integer value to store
java.lang.NullPointerException

shortFromParameterAt

public short shortFromParameterAt(int offset)
                           throws java.lang.NullPointerException
Answers a short integer returned via external function's outbound parameter. Parameter is defined as short*.

Parameters:
offset - specifies parameter's offset in parameter list
java.lang.NullPointerException

shortFromPtr

public static short shortFromPtr(int ptr)
                          throws java.lang.NullPointerException
Answers a short that is pointed to by a raw pointer ptr (C++'s short*)

java.lang.NullPointerException

StringFromParameterAt

public java.lang.String StringFromParameterAt(int offset)
                                       throws java.lang.NullPointerException
Answers a Java String returned via external function's outbound parameter at given offset. Parameter is defined as char*.

java.lang.NullPointerException

StringFromPtr

public static java.lang.String StringFromPtr(int ptr)
                                      throws java.lang.NullPointerException
Answers a Java String created from a raw pointer to an 8-bit ANSI string (C++'s char*)

java.lang.NullPointerException

UnicodeStringFromParameterAt

public java.lang.String UnicodeStringFromParameterAt(int offset)
                                              throws java.lang.NullPointerException
Answers a Java String returned via external function's outbound parameter at given offset. Parameter is defined as WCHAR*.

java.lang.NullPointerException

UnicodeStringFromPtr

public static java.lang.String UnicodeStringFromPtr(int ptr)
                                             throws java.lang.NullPointerException
Answers a Java String created from a raw pointer to a 16-bit Unicode string (C++'s WCHAR*)

java.lang.NullPointerException

UnloadLibraries

public static void UnloadLibraries()
Close all previously open dynamic link libraries