java_locked.h
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:3k
- /*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: java_locked.h,v 11.9 2000/10/25 19:54:55 dda Exp $
- */
- #ifndef _JAVA_LOCKED_H_
- #define _JAVA_LOCKED_H_
- /*
- * Used internally by LockedDBT constructor.
- */
- typedef enum _OpKind {
- inOp, /* setting data in database (passing data in) */
- outOp, /* getting data from database to user memory */
- inOutOp /* both getting/setting data */
- } OpKind;
- /*
- *
- * Declaration of JDBT
- *
- * A JDBT object exists during a
- * single native call to the DB API. Its constructor's job is
- * to temporarily convert any java array found in the DBT_JAVAINFO
- * to actual bytes in memory that remain locked in place. These
- * bytes are used during the call to the underlying DB C layer,
- * and are released and/or copied back by the destructor.
- * Thus, a LockedDBT must be declared as a stack object to
- * function properly.
- */
- typedef struct _jdbt
- {
- /* these are accessed externally to ldbt_ functions */
- DBT_JAVAINFO *dbt;
- unsigned int java_array_len_;
- /* these are for used internally by ldbt_ functions */
- jobject obj_;
- jbyte *java_data_;
- jbyte *before_data_;
- int has_error_;
- int do_realloc_;
- OpKind kind_;
- } JDBT;
- extern int jdbt_lock(JDBT *, JNIEnv *jnienv, jobject obj, OpKind kind);
- extern void jdbt_unlock(JDBT *, JNIEnv *jnienv); /* this unlocks and frees the memory */
- extern int jdbt_realloc(JDBT *, JNIEnv *jnienv); /* returns 1 if reallocation took place */
- /****************************************************************
- *
- * Declaration of JSTR
- *
- * A JSTR exists temporarily to convert a java jstring object
- * to a char *. Because the memory for the char * string is
- * managed by the JVM, it must be released when we are done
- * looking at it. Typically, jstr_lock() is called at the
- * beginning of a function for each jstring object, and jstr_unlock
- * is called at the end of each function for each JSTR.
- */
- typedef struct _jstr
- {
- /* this accessed externally to jstr_ functions */
- const char *string;
- /* this is used internally by jstr_ functions */
- jstring jstr_;
- } JSTR;
- extern int jstr_lock(JSTR *, JNIEnv *jnienv, jstring jstr);
- extern void jstr_unlock(JSTR *, JNIEnv *jnienv); /* this unlocks and frees mem */
- /****************************************************************
- *
- * Declaration of class LockedStrarray
- *
- * Given a java jobjectArray object (that must be a String[]),
- * we extract the individual strings and build a const char **
- * When the LockedStrarray object is destroyed, the individual
- * strings are released.
- */
- typedef struct _jstrarray
- {
- /* this accessed externally to jstrarray_ functions */
- const char **array;
- /* this is used internally by jstrarray_ functions */
- jobjectArray arr_;
- } JSTRARRAY;
- extern int jstrarray_lock(JSTRARRAY *, JNIEnv *jnienv, jobjectArray arr);
- extern void jstrarray_unlock(JSTRARRAY *, JNIEnv *jnienv); /* this unlocks and frees mem */
- #endif /* !_JAVA_LOCKED_H_ */