mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
98 lines
3 KiB
C
98 lines
3 KiB
C
/*-
|
|
* 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_ */
|