java_locked.h
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:3k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*-
  2.  * See the file LICENSE for redistribution information.
  3.  *
  4.  * Copyright (c) 1997, 1998, 1999, 2000
  5.  * Sleepycat Software.  All rights reserved.
  6.  *
  7.  * $Id: java_locked.h,v 11.9 2000/10/25 19:54:55 dda Exp $
  8.  */
  9. #ifndef _JAVA_LOCKED_H_
  10. #define _JAVA_LOCKED_H_
  11. /*
  12.  * Used internally by LockedDBT constructor.
  13.  */
  14. typedef enum _OpKind {
  15. inOp,     /* setting data in database (passing data in) */
  16. outOp,    /* getting data from database to user memory */
  17. inOutOp   /* both getting/setting data */
  18. } OpKind;
  19. /*
  20.  *
  21.  * Declaration of JDBT
  22.  *
  23.  * A JDBT object exists during a
  24.  * single native call to the DB API.  Its constructor's job is
  25.  * to temporarily convert any java array found in the DBT_JAVAINFO
  26.  * to actual bytes in memory that remain locked in place.  These
  27.  * bytes are used during the call to the underlying DB C layer,
  28.  * and are released and/or copied back by the destructor.
  29.  * Thus, a LockedDBT must be declared as a stack object to
  30.  * function properly.
  31.  */
  32. typedef struct _jdbt
  33. {
  34. /* these are accessed externally to ldbt_ functions */
  35. DBT_JAVAINFO *dbt;
  36. unsigned int java_array_len_;
  37. /* these are for used internally by ldbt_ functions */
  38. jobject obj_;
  39. jbyte *java_data_;
  40. jbyte *before_data_;
  41. int has_error_;
  42. int do_realloc_;
  43. OpKind kind_;
  44. } JDBT;
  45. extern int jdbt_lock(JDBT *, JNIEnv *jnienv, jobject obj, OpKind kind);
  46. extern void jdbt_unlock(JDBT *, JNIEnv *jnienv); /* this unlocks and frees the memory */
  47. extern int jdbt_realloc(JDBT *, JNIEnv *jnienv); /* returns 1 if reallocation took place */
  48. /****************************************************************
  49.  *
  50.  * Declaration of JSTR
  51.  *
  52.  * A JSTR exists temporarily to convert a java jstring object
  53.  * to a char *.  Because the memory for the char * string is
  54.  * managed by the JVM, it must be released when we are done
  55.  * looking at it.  Typically, jstr_lock() is called at the
  56.  * beginning of a function for each jstring object, and jstr_unlock
  57.  * is called at the end of each function for each JSTR.
  58.  */
  59. typedef struct _jstr
  60. {
  61. /* this accessed externally to jstr_ functions */
  62. const char *string;
  63. /* this is used internally by jstr_ functions */
  64. jstring jstr_;
  65. } JSTR;
  66. extern int jstr_lock(JSTR *, JNIEnv *jnienv, jstring jstr);
  67. extern void jstr_unlock(JSTR *, JNIEnv *jnienv);  /* this unlocks and frees mem */
  68. /****************************************************************
  69.  *
  70.  * Declaration of class LockedStrarray
  71.  *
  72.  * Given a java jobjectArray object (that must be a String[]),
  73.  * we extract the individual strings and build a const char **
  74.  * When the LockedStrarray object is destroyed, the individual
  75.  * strings are released.
  76.  */
  77. typedef struct _jstrarray
  78. {
  79. /* this accessed externally to jstrarray_ functions */
  80. const char **array;
  81. /* this is used internally by jstrarray_ functions */
  82. jobjectArray arr_;
  83. } JSTRARRAY;
  84. extern int jstrarray_lock(JSTRARRAY *, JNIEnv *jnienv, jobjectArray arr);
  85. extern void jstrarray_unlock(JSTRARRAY *, JNIEnv *jnienv);  /* this unlocks and frees mem */
  86. #endif /* !_JAVA_LOCKED_H_ */