704 lines
17 KiB
OpenEdge ABL
704 lines
17 KiB
OpenEdge ABL
%module db_java
|
|
|
|
%include "various.i"
|
|
%include "typemaps.i"
|
|
|
|
%include "java_util.i"
|
|
%include "java_except.i"
|
|
%include "java_typemaps.i"
|
|
%include "java_stat.i"
|
|
%include "java_callbacks.i"
|
|
|
|
/*
|
|
* No finalize methods in general - most classes have "destructor" methods
|
|
* that applications must call explicitly.
|
|
*/
|
|
%typemap(javafinalize) SWIGTYPE ""
|
|
|
|
/*
|
|
* These are the exceptions - when there is no "close" method, we need to free
|
|
* the native part at finalization time. These are exactly the cases where C
|
|
* applications manage the memory for the handles.
|
|
*/
|
|
%typemap(javafinalize) struct DbLsn, struct DbLock %{
|
|
protected void finalize() {
|
|
try {
|
|
delete();
|
|
} catch(Exception e) {
|
|
System.err.println("Exception during finalization: " + e);
|
|
e.printStackTrace(System.err);
|
|
}
|
|
}
|
|
%}
|
|
|
|
%typemap(javaimports) SWIGTYPE %{
|
|
import com.sleepycat.db.*;
|
|
import java.util.Comparator;
|
|
%}
|
|
|
|
/* Class names */
|
|
%rename(LogSequenceNumber) DbLsn;
|
|
|
|
/* Destructors */
|
|
%rename(close0) close;
|
|
%rename(remove0) remove;
|
|
%rename(rename0) rename;
|
|
%rename(verify0) verify;
|
|
%rename(abort0) abort;
|
|
%rename(commit0) commit;
|
|
%rename(discard0) discard;
|
|
|
|
/* Special case methods */
|
|
%rename(set_tx_timestamp0) set_tx_timestamp;
|
|
|
|
/* Extra code in the Java classes */
|
|
%typemap(javacode) struct DbEnv %{
|
|
/*
|
|
* Internally, the JNI layer creates a global reference to each DbEnv,
|
|
* which can potentially be different to this. We keep a copy here so
|
|
* we can clean up after destructors.
|
|
*/
|
|
private long dbenv_ref;
|
|
public Environment wrapper;
|
|
|
|
private LogRecordHandler app_dispatch_handler;
|
|
private EventHandler event_notify_handler;
|
|
private FeedbackHandler env_feedback_handler;
|
|
private ErrorHandler error_handler;
|
|
private String errpfx;
|
|
private MessageHandler message_handler;
|
|
private PanicHandler panic_handler;
|
|
private ReplicationTransport rep_transport_handler;
|
|
private java.io.OutputStream error_stream;
|
|
private java.io.OutputStream message_stream;
|
|
private ThreadLocal errBuf;
|
|
|
|
public static class RepProcessMessage {
|
|
public int envid;
|
|
}
|
|
|
|
/*
|
|
* Called by the public DbEnv constructor and for private environments
|
|
* by the Db constructor.
|
|
*/
|
|
void initialize() {
|
|
dbenv_ref = db_java.initDbEnvRef0(this, this);
|
|
errBuf = new ThreadLocal();
|
|
/* Start with System.err as the default error stream. */
|
|
set_error_stream(System.err);
|
|
set_message_stream(System.out);
|
|
}
|
|
|
|
void cleanup() {
|
|
swigCPtr = 0;
|
|
db_java.deleteRef0(dbenv_ref);
|
|
dbenv_ref = 0L;
|
|
}
|
|
|
|
public synchronized void close(int flags) throws DatabaseException {
|
|
try {
|
|
close0(flags);
|
|
} finally {
|
|
cleanup();
|
|
}
|
|
}
|
|
|
|
private final int handle_app_dispatch(DatabaseEntry dbt,
|
|
LogSequenceNumber lsn,
|
|
int recops) {
|
|
return app_dispatch_handler.handleLogRecord(wrapper, dbt, lsn,
|
|
RecoveryOperation.fromFlag(recops));
|
|
}
|
|
|
|
public LogRecordHandler get_app_dispatch() {
|
|
return app_dispatch_handler;
|
|
}
|
|
|
|
private final void handle_panic_event_notify() {
|
|
event_notify_handler.handlePanicEvent();
|
|
}
|
|
|
|
private final void handle_rep_client_event_notify() {
|
|
event_notify_handler.handleRepClientEvent();
|
|
}
|
|
|
|
private final void handle_rep_elected_event_notify() {
|
|
event_notify_handler.handleRepElectedEvent();
|
|
}
|
|
|
|
private final void handle_rep_master_event_notify() {
|
|
event_notify_handler.handleRepMasterEvent();
|
|
}
|
|
|
|
private final void handle_rep_new_master_event_notify(int envid) {
|
|
event_notify_handler.handleRepNewMasterEvent(envid);
|
|
}
|
|
|
|
private final void handle_rep_perm_failed_event_notify() {
|
|
event_notify_handler.handleRepPermFailedEvent();
|
|
}
|
|
|
|
private final void handle_rep_startup_done_event_notify() {
|
|
event_notify_handler.handleRepStartupDoneEvent();
|
|
}
|
|
|
|
private final void handle_write_failed_event_notify(int errno) {
|
|
event_notify_handler.handleWriteFailedEvent(errno);
|
|
}
|
|
|
|
public EventHandler get_event_notify() {
|
|
return event_notify_handler;
|
|
}
|
|
|
|
private final void handle_env_feedback(int opcode, int percent) {
|
|
if (opcode == DbConstants.DB_RECOVER)
|
|
env_feedback_handler.recoveryFeedback(wrapper, percent);
|
|
/* No other environment feedback type supported. */
|
|
}
|
|
|
|
public FeedbackHandler get_feedback() {
|
|
return env_feedback_handler;
|
|
}
|
|
|
|
public void set_errpfx(String errpfx) {
|
|
this.errpfx = errpfx;
|
|
}
|
|
|
|
public String get_errpfx() {
|
|
return errpfx;
|
|
}
|
|
|
|
private final void handle_error(String msg) {
|
|
com.sleepycat.util.ErrorBuffer ebuf = (com.sleepycat.util.ErrorBuffer)errBuf.get();
|
|
if (ebuf == null) {
|
|
/*
|
|
* Populate the errBuf ThreadLocal on demand, since the
|
|
* callback can be made from different threads.
|
|
*/
|
|
ebuf = new com.sleepycat.util.ErrorBuffer(3);
|
|
errBuf.set(ebuf);
|
|
}
|
|
ebuf.append(msg);
|
|
error_handler.error(wrapper, this.errpfx, msg);
|
|
}
|
|
|
|
private final String get_err_msg(String orig_msg) {
|
|
com.sleepycat.util.ErrorBuffer ebuf = (com.sleepycat.util.ErrorBuffer)errBuf.get();
|
|
String ret = null;
|
|
if (ebuf != null) {
|
|
ret = ebuf.get();
|
|
ebuf.clear();
|
|
}
|
|
if (ret != null && ret.length() > 0)
|
|
return orig_msg + ": " + ret;
|
|
return orig_msg;
|
|
}
|
|
|
|
public ErrorHandler get_errcall() {
|
|
return error_handler;
|
|
}
|
|
|
|
private final void handle_message(String msg) {
|
|
message_handler.message(wrapper, msg);
|
|
}
|
|
|
|
public MessageHandler get_msgcall() {
|
|
return message_handler;
|
|
}
|
|
|
|
private final void handle_panic(DatabaseException e) {
|
|
panic_handler.panic(wrapper, e);
|
|
}
|
|
|
|
public PanicHandler get_paniccall() {
|
|
return panic_handler;
|
|
}
|
|
|
|
private final int handle_rep_transport(DatabaseEntry control,
|
|
DatabaseEntry rec,
|
|
LogSequenceNumber lsn,
|
|
int envid, int flags)
|
|
throws DatabaseException {
|
|
return rep_transport_handler.send(wrapper,
|
|
control, rec, lsn, envid,
|
|
(flags & DbConstants.DB_REP_NOBUFFER) != 0,
|
|
(flags & DbConstants.DB_REP_PERMANENT) != 0,
|
|
(flags & DbConstants.DB_REP_ANYWHERE) != 0,
|
|
(flags & DbConstants.DB_REP_REREQUEST) != 0);
|
|
}
|
|
|
|
public void lock_vec(/*u_int32_t*/ int locker, int flags,
|
|
LockRequest[] list, int offset, int count)
|
|
throws DatabaseException {
|
|
db_javaJNI.DbEnv_lock_vec(swigCPtr, this, locker, flags, list,
|
|
offset, count);
|
|
}
|
|
|
|
public synchronized void remove(String db_home, int flags)
|
|
throws DatabaseException, java.io.FileNotFoundException {
|
|
try {
|
|
remove0(db_home, flags);
|
|
} finally {
|
|
cleanup();
|
|
}
|
|
}
|
|
|
|
public void set_error_stream(java.io.OutputStream stream) {
|
|
error_stream = stream;
|
|
final java.io.PrintWriter pw = new java.io.PrintWriter(stream);
|
|
set_errcall(new ErrorHandler() {
|
|
public void error(Environment env,
|
|
String prefix, String buf) /* no exception */ {
|
|
if (prefix != null)
|
|
pw.print(prefix + ": ");
|
|
pw.println(buf);
|
|
pw.flush();
|
|
}
|
|
});
|
|
}
|
|
|
|
public java.io.OutputStream get_error_stream() {
|
|
return error_stream;
|
|
}
|
|
|
|
public void set_message_stream(java.io.OutputStream stream) {
|
|
message_stream = stream;
|
|
final java.io.PrintWriter pw = new java.io.PrintWriter(stream);
|
|
set_msgcall(new MessageHandler() {
|
|
public void message(Environment env, String msg)
|
|
/* no exception */ {
|
|
pw.println(msg);
|
|
pw.flush();
|
|
}
|
|
});
|
|
}
|
|
|
|
public java.io.OutputStream get_message_stream() {
|
|
return message_stream;
|
|
}
|
|
|
|
public void set_tx_timestamp(java.util.Date timestamp) {
|
|
set_tx_timestamp0(timestamp.getTime()/1000);
|
|
}
|
|
%}
|
|
|
|
%typemap(javacode) struct Db %{
|
|
/* package */ static final int GIGABYTE = 1 << 30;
|
|
/*
|
|
* Internally, the JNI layer creates a global reference to each Db,
|
|
* which can potentially be different to this. We keep a copy here so
|
|
* we can clean up after destructors.
|
|
*/
|
|
private long db_ref;
|
|
private DbEnv dbenv;
|
|
private boolean private_dbenv;
|
|
|
|
public Database wrapper;
|
|
private RecordNumberAppender append_recno_handler;
|
|
private Comparator bt_compare_handler;
|
|
private BtreePrefixCalculator bt_prefix_handler;
|
|
private Comparator dup_compare_handler;
|
|
private FeedbackHandler db_feedback_handler;
|
|
private Comparator h_compare_handler;
|
|
private Hasher h_hash_handler;
|
|
private SecondaryKeyCreator seckey_create_handler;
|
|
private SecondaryMultiKeyCreator secmultikey_create_handler;
|
|
private ForeignKeyNullifier foreignkey_nullify_handler;
|
|
private ForeignMultiKeyNullifier foreignmultikey_nullify_handler;
|
|
|
|
/* Called by the Db constructor */
|
|
private void initialize(DbEnv dbenv) {
|
|
if (dbenv == null) {
|
|
private_dbenv = true;
|
|
dbenv = db_java.getDbEnv0(this);
|
|
dbenv.initialize();
|
|
}
|
|
this.dbenv = dbenv;
|
|
db_ref = db_java.initDbRef0(this, this);
|
|
}
|
|
|
|
private void cleanup() {
|
|
swigCPtr = 0;
|
|
db_java.deleteRef0(db_ref);
|
|
db_ref = 0L;
|
|
if (private_dbenv)
|
|
dbenv.cleanup();
|
|
dbenv = null;
|
|
}
|
|
|
|
public boolean getPrivateDbEnv() {
|
|
return private_dbenv;
|
|
}
|
|
|
|
public synchronized void close(int flags) throws DatabaseException {
|
|
try {
|
|
close0(flags);
|
|
} finally {
|
|
cleanup();
|
|
}
|
|
}
|
|
|
|
public DbEnv get_env() throws DatabaseException {
|
|
return dbenv;
|
|
}
|
|
|
|
private final void handle_append_recno(DatabaseEntry data, int recno)
|
|
throws DatabaseException {
|
|
append_recno_handler.appendRecordNumber(wrapper, data, recno);
|
|
}
|
|
|
|
public RecordNumberAppender get_append_recno() {
|
|
return append_recno_handler;
|
|
}
|
|
|
|
private final int handle_bt_compare(byte[] arr1, byte[] arr2) {
|
|
return bt_compare_handler.compare(arr1, arr2);
|
|
}
|
|
|
|
public Comparator get_bt_compare() {
|
|
return bt_compare_handler;
|
|
}
|
|
|
|
private final int handle_bt_prefix(DatabaseEntry dbt1,
|
|
DatabaseEntry dbt2) {
|
|
return bt_prefix_handler.prefix(wrapper, dbt1, dbt2);
|
|
}
|
|
|
|
public BtreePrefixCalculator get_bt_prefix() {
|
|
return bt_prefix_handler;
|
|
}
|
|
|
|
private final void handle_db_feedback(int opcode, int percent) {
|
|
if (opcode == DbConstants.DB_UPGRADE)
|
|
db_feedback_handler.upgradeFeedback(wrapper, percent);
|
|
else if (opcode == DbConstants.DB_VERIFY)
|
|
db_feedback_handler.upgradeFeedback(wrapper, percent);
|
|
/* No other database feedback types known. */
|
|
}
|
|
|
|
public FeedbackHandler get_feedback() {
|
|
return db_feedback_handler;
|
|
}
|
|
|
|
private final int handle_h_compare(byte[] arr1, byte[] arr2) {
|
|
return h_compare_handler.compare(arr1, arr2);
|
|
}
|
|
|
|
public Comparator get_h_compare() {
|
|
return h_compare_handler;
|
|
}
|
|
|
|
private final int handle_dup_compare(byte[] arr1, byte[] arr2) {
|
|
return dup_compare_handler.compare(arr1, arr2);
|
|
}
|
|
|
|
public Comparator get_dup_compare() {
|
|
return dup_compare_handler;
|
|
}
|
|
|
|
private final int handle_h_hash(byte[] data, int len) {
|
|
return h_hash_handler.hash(wrapper, data, len);
|
|
}
|
|
|
|
public Hasher get_h_hash() {
|
|
return h_hash_handler;
|
|
}
|
|
|
|
private final boolean handle_foreignkey_nullify(
|
|
DatabaseEntry key,
|
|
DatabaseEntry data,
|
|
DatabaseEntry seckey)
|
|
throws DatabaseException {
|
|
if (foreignmultikey_nullify_handler != null)
|
|
return foreignmultikey_nullify_handler.nullifyForeignKey(
|
|
(SecondaryDatabase)wrapper, key, data, seckey);
|
|
else
|
|
return foreignkey_nullify_handler.nullifyForeignKey(
|
|
(SecondaryDatabase)wrapper, data);
|
|
}
|
|
|
|
private final DatabaseEntry[] handle_seckey_create(
|
|
DatabaseEntry key,
|
|
DatabaseEntry data)
|
|
throws DatabaseException {
|
|
|
|
if (secmultikey_create_handler != null) {
|
|
java.util.HashSet keySet = new java.util.HashSet();
|
|
secmultikey_create_handler.createSecondaryKeys(
|
|
(SecondaryDatabase)wrapper, key, data, keySet);
|
|
if (!keySet.isEmpty())
|
|
return (DatabaseEntry[])keySet.toArray(
|
|
new DatabaseEntry[keySet.size()]);
|
|
} else {
|
|
DatabaseEntry result = new DatabaseEntry();
|
|
if (seckey_create_handler.createSecondaryKey(
|
|
(SecondaryDatabase)wrapper, key, data, result)) {
|
|
DatabaseEntry[] results = { result };
|
|
return results;
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public SecondaryKeyCreator get_seckey_create() {
|
|
return seckey_create_handler;
|
|
}
|
|
|
|
public SecondaryMultiKeyCreator get_secmultikey_create() {
|
|
return secmultikey_create_handler;
|
|
}
|
|
|
|
public void set_secmultikey_create(
|
|
SecondaryMultiKeyCreator secmultikey_create_handler) {
|
|
this.secmultikey_create_handler = secmultikey_create_handler;
|
|
}
|
|
|
|
public void set_foreignmultikey_nullifier(ForeignMultiKeyNullifier nullify){
|
|
this.foreignmultikey_nullify_handler = nullify;
|
|
}
|
|
|
|
public synchronized void remove(String file, String database, int flags)
|
|
throws DatabaseException, java.io.FileNotFoundException {
|
|
try {
|
|
remove0(file, database, flags);
|
|
} finally {
|
|
cleanup();
|
|
}
|
|
}
|
|
|
|
public synchronized void rename(String file, String database,
|
|
String newname, int flags)
|
|
throws DatabaseException, java.io.FileNotFoundException {
|
|
try {
|
|
rename0(file, database, newname, flags);
|
|
} finally {
|
|
cleanup();
|
|
}
|
|
}
|
|
|
|
public synchronized boolean verify(String file, String database,
|
|
java.io.OutputStream outfile, int flags)
|
|
throws DatabaseException, java.io.FileNotFoundException {
|
|
try {
|
|
return verify0(file, database, outfile, flags);
|
|
} finally {
|
|
cleanup();
|
|
}
|
|
}
|
|
|
|
public ErrorHandler get_errcall() {
|
|
return dbenv.get_errcall();
|
|
}
|
|
|
|
public void set_errcall(ErrorHandler db_errcall_fcn) {
|
|
dbenv.set_errcall(db_errcall_fcn);
|
|
}
|
|
|
|
public java.io.OutputStream get_error_stream() {
|
|
return dbenv.get_error_stream();
|
|
}
|
|
|
|
public void set_error_stream(java.io.OutputStream stream) {
|
|
dbenv.set_error_stream(stream);
|
|
}
|
|
|
|
public void set_errpfx(String errpfx) {
|
|
dbenv.set_errpfx(errpfx);
|
|
}
|
|
|
|
public String get_errpfx() {
|
|
return dbenv.get_errpfx();
|
|
}
|
|
|
|
public java.io.OutputStream get_message_stream() {
|
|
return dbenv.get_message_stream();
|
|
}
|
|
|
|
public void set_message_stream(java.io.OutputStream stream) {
|
|
dbenv.set_message_stream(stream);
|
|
}
|
|
|
|
public MessageHandler get_msgcall() {
|
|
return dbenv.get_msgcall();
|
|
}
|
|
|
|
public void set_msgcall(MessageHandler db_msgcall_fcn) {
|
|
dbenv.set_msgcall(db_msgcall_fcn);
|
|
}
|
|
|
|
public void set_paniccall(PanicHandler db_panic_fcn)
|
|
throws DatabaseException {
|
|
dbenv.set_paniccall(db_panic_fcn);
|
|
}
|
|
|
|
public PanicHandler get_paniccall() {
|
|
return dbenv.get_paniccall();
|
|
}
|
|
%}
|
|
|
|
%typemap(javacode) struct Dbc %{
|
|
public synchronized void close() throws DatabaseException {
|
|
try {
|
|
close0();
|
|
} finally {
|
|
swigCPtr = 0;
|
|
}
|
|
}
|
|
%}
|
|
|
|
%typemap(javacode) struct DbLock %{
|
|
public Lock wrapper;
|
|
%}
|
|
|
|
%typemap(javacode) struct DbLogc %{
|
|
public synchronized void close(int flags) throws DatabaseException {
|
|
try {
|
|
close0(flags);
|
|
} finally {
|
|
swigCPtr = 0;
|
|
}
|
|
}
|
|
%}
|
|
|
|
%typemap(javacode) struct DbSequence %{
|
|
public Sequence wrapper;
|
|
|
|
public synchronized void close(int flags) throws DatabaseException {
|
|
try {
|
|
close0(flags);
|
|
} finally {
|
|
swigCPtr = 0;
|
|
}
|
|
}
|
|
|
|
public synchronized void remove(DbTxn txn, int flags)
|
|
throws DatabaseException {
|
|
try {
|
|
remove0(txn, flags);
|
|
} finally {
|
|
swigCPtr = 0;
|
|
}
|
|
}
|
|
%}
|
|
|
|
%typemap(javacode) struct DbTxn %{
|
|
public void abort() throws DatabaseException {
|
|
try {
|
|
abort0();
|
|
} finally {
|
|
swigCPtr = 0;
|
|
}
|
|
}
|
|
|
|
public void commit(int flags) throws DatabaseException {
|
|
try {
|
|
commit0(flags);
|
|
} finally {
|
|
swigCPtr = 0;
|
|
}
|
|
}
|
|
|
|
public void discard(int flags) throws DatabaseException {
|
|
try {
|
|
discard0(flags);
|
|
} finally {
|
|
swigCPtr = 0;
|
|
}
|
|
}
|
|
|
|
/*
|
|
* We override Object.equals because it is possible for the Java API to
|
|
* create multiple DbTxns that reference the same underlying object.
|
|
* This can happen for example during DbEnv.txn_recover().
|
|
*/
|
|
public boolean equals(Object obj)
|
|
{
|
|
if (this == obj)
|
|
return true;
|
|
|
|
if (obj != null && (obj instanceof DbTxn)) {
|
|
DbTxn that = (DbTxn)obj;
|
|
return (this.swigCPtr == that.swigCPtr);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/*
|
|
* We must override Object.hashCode whenever we override
|
|
* Object.equals() to enforce the maxim that equal objects have the
|
|
* same hashcode.
|
|
*/
|
|
public int hashCode()
|
|
{
|
|
return ((int)swigCPtr ^ (int)(swigCPtr >> 32));
|
|
}
|
|
%}
|
|
|
|
%native(initDbEnvRef0) jlong initDbEnvRef0(DB_ENV *self, void *handle);
|
|
%native(initDbRef0) jlong initDbRef0(DB *self, void *handle);
|
|
%native(deleteRef0) void deleteRef0(jlong ref);
|
|
%native(getDbEnv0) DB_ENV *getDbEnv0(DB *self);
|
|
|
|
%{
|
|
SWIGEXPORT jlong JNICALL
|
|
Java_com_sleepycat_db_internal_db_1javaJNI_initDbEnvRef0(
|
|
JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jobject jarg2) {
|
|
DB_ENV *self = *(DB_ENV **)(void *)&jarg1;
|
|
jlong ret;
|
|
COMPQUIET(jcls, NULL);
|
|
COMPQUIET(jarg1_, NULL);
|
|
|
|
DB_ENV_INTERNAL(self) = (void *)(*jenv)->NewGlobalRef(jenv, jarg2);
|
|
*(jobject *)(void *)&ret = (jobject)DB_ENV_INTERNAL(self);
|
|
return (ret);
|
|
}
|
|
|
|
SWIGEXPORT jlong JNICALL
|
|
Java_com_sleepycat_db_internal_db_1javaJNI_initDbRef0(
|
|
JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jobject jarg2) {
|
|
DB *self = *(DB **)(void *)&jarg1;
|
|
jlong ret;
|
|
COMPQUIET(jcls, NULL);
|
|
COMPQUIET(jarg1_, NULL);
|
|
|
|
DB_INTERNAL(self) = (void *)(*jenv)->NewGlobalRef(jenv, jarg2);
|
|
*(jobject *)(void *)&ret = (jobject)DB_INTERNAL(self);
|
|
return (ret);
|
|
}
|
|
|
|
SWIGEXPORT void JNICALL
|
|
Java_com_sleepycat_db_internal_db_1javaJNI_deleteRef0(
|
|
JNIEnv *jenv, jclass jcls, jlong jarg1) {
|
|
jobject jref = *(jobject *)(void *)&jarg1;
|
|
COMPQUIET(jcls, NULL);
|
|
|
|
if (jref != 0L)
|
|
(*jenv)->DeleteGlobalRef(jenv, jref);
|
|
}
|
|
|
|
SWIGEXPORT jlong JNICALL
|
|
Java_com_sleepycat_db_internal_db_1javaJNI_getDbEnv0(
|
|
JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
|
DB *self = *(DB **)(void *)&jarg1;
|
|
jlong ret;
|
|
|
|
COMPQUIET(jenv, NULL);
|
|
COMPQUIET(jcls, NULL);
|
|
COMPQUIET(jarg1_, NULL);
|
|
|
|
*(DB_ENV **)(void *)&ret = self->dbenv;
|
|
return (ret);
|
|
}
|
|
|
|
SWIGEXPORT jboolean JNICALL
|
|
Java_com_sleepycat_db_internal_DbUtil_is_1big_1endian(
|
|
JNIEnv *jenv, jclass clazz)
|
|
{
|
|
COMPQUIET(jenv, NULL);
|
|
COMPQUIET(clazz, NULL);
|
|
|
|
return (__db_isbigendian() ? JNI_TRUE : JNI_FALSE);
|
|
}
|
|
%}
|