| GNU Classpath Native State API - Version 0.99.1 |
| Written by Paul Fisher (rao@gnu.org) |
| |
| For all function calls, if an error occurs, such that `NULL' or a |
| negative value is returned, it's very possible that an exception has |
| been thrown from within the function. The exception is not cleared, |
| and you are responsible for dealing with the thrown exception. |
| |
| High level API: |
| |
| For using the highlevel API, in all cases, OBJ must contain a `final |
| int' field called "native_state", which has been previously set to the |
| value of java.lang.System.identityHashCode(OBJ). |
| |
| Function: struct state_table * init_state_table (JNIEnv *ENV, |
| jclass CLAZZ) |
| |
| Creates a state table of default size. Returns `NULL' on error. |
| |
| Function: struct state_table * init_state_table_with_size (JNIEnv *ENV, |
| jclass CLAZZ, |
| jint SIZE) |
| |
| Creates a state table, with a tablesize of SIZE. SIZE should |
| always be prime. Returns `NULL' on error. |
| |
| Function: jint set_state (JNIEnv *ENV, jobject OBJ, |
| struct state_table *TABLE, void *STATE) |
| |
| Associates STATE with OBJ, in TABLE. Returns 0 on success, and a |
| negative value on failure. STATE must not be `NULL'. set_state is |
| reentrant, and calls to set_state/get_state/remove_state_slot may be |
| made at the same time. |
| |
| Function: void * get_state (JNIEnv *ENV, jobject OBJ, |
| struct state_table *TABLE) |
| |
| Retrieves the state associated with OBJ, in TABLE. Returns `NULL' |
| if no value is associated with OBJ, or if a failure occurs. |
| get_state is reentrant, and calls to |
| get_state/set_state/remove_state_slot may be made at the same time. |
| |
| Function: void * remove_state_slot (JNIEnv *ENV, jobject OBJ, |
| struct state_table *TABLE) |
| |
| Removes the internal slot associated with OBJ, in TABLE. Returns a |
| pointer to the C state if a state was associated with OBJ, |
| otherwise, `NULL' is returned. After `remove_state' is called, |
| `get_state' passing OBJ, will result in `NULL' being returned. This |
| function is generally called in the `finalize' method of a class. |
| remove_state_slot is reentrant, and calls to |
| get_state/set_state/remove_state_slot may be made at the same time. |
| |
| Low level API: |
| |
| Function: void set_state_oid (JNIEnv *ENV, jobject LOCK, |
| struct state_table *TABLE, |
| jint OBJECT_ID, void *STATE) |
| |
| Associates STATE with OBJECT_ID, in TABLE. STATE must not be |
| `NULL'. On entering, a lock is obtained on LOCK. On exiting, the |
| lock is released. |
| |
| Function: void * get_state_oid (JNIEnv *ENV, jobject LOCK, |
| struct state_table *TABLE, |
| jint OBJECT_ID) |
| |
| Retrieves the state associated with OBJECT_ID, in TABLE. Returns |
| `NULL' if no value is associated with OBJECT_ID. On entering, a |
| lock is obtained on LOCK. On exiting, the lock is released. |
| |
| Function: void * remove_state_oid (JNIEnv *ENV, jobject LOCK, |
| struct state_table *TABLE, |
| jint OBJECT_ID) |
| |
| Removes the value associated with OBJECT_ID, in TABLE. Returns a |
| pointer to the C state if a state was associated with OBJECT_ID, |
| otherwise, `NULL' is returned. After `remove_state_oid' is called, |
| `get_state_oid' passing OBJECT_ID, will result in `NULL' being |
| returned. On entering, a lock is obtained on LOCK. On exiting, the |
| lock is released. |