
org.fusesource.lmdbjni.JNI Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of lmdbjni-osx64 Show documentation
Show all versions of lmdbjni-osx64 Show documentation
The lmdbjni osx 64 bit native libraries
The newest version!
/**
* Copyright (C) 2013, RedHat, Inc.
*
* http://www.redhat.com/
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.fusesource.lmdbjni;
import org.fusesource.hawtjni.runtime.*;
import static org.fusesource.hawtjni.runtime.ClassFlag.STRUCT;
import static org.fusesource.hawtjni.runtime.ClassFlag.TYPEDEF;
import static org.fusesource.hawtjni.runtime.FieldFlag.CONSTANT;
import static org.fusesource.hawtjni.runtime.MethodFlag.CONSTANT_GETTER;
import static org.fusesource.hawtjni.runtime.MethodFlag.CONSTANT_INITIALIZER;
import static org.fusesource.hawtjni.runtime.ArgFlag.*;
/**
* This class holds all the native constant, structure and function mappings.
*
* @author Hiram Chirino
*/
@JniClass
class JNI {
public static final Library LIBRARY = new Library("lmdbjni", JNI.class);
static {
JNI.LIBRARY.load();
init();
}
@JniMethod(flags = {CONSTANT_INITIALIZER})
private static final native void init();
///////////////////////////////////////////////////////////////////////
//
// Posix APIs:
//
///////////////////////////////////////////////////////////////////////
@JniMethod(flags = {CONSTANT_GETTER})
public static final native int errno();
@JniMethod(cast = "char *")
public static final native long strerror(int errnum);
public static final native int strlen(
@JniArg(cast = "const char *") long s);
@JniMethod(cast = "void *")
public static final native long malloc(
@JniArg(cast = "size_t") long size);
public static final native void free(
@JniArg(cast = "void *") long self);
///////////////////////////////////////////////////////////////////////
//
// Additional Helpers
//
///////////////////////////////////////////////////////////////////////
public static final native void buffer_copy(
@JniArg(cast = "const void *", flags = {NO_OUT, CRITICAL}) byte[] src,
@JniArg(cast = "size_t") long srcPos,
@JniArg(cast = "void *") long dest,
@JniArg(cast = "size_t") long destPos,
@JniArg(cast = "size_t") long length);
public static final native void buffer_copy(
@JniArg(cast = "const void *") long src,
@JniArg(cast = "size_t") long srcPos,
@JniArg(cast = "void *", flags = {NO_IN, CRITICAL}) byte[] dest,
@JniArg(cast = "size_t") long destPos,
@JniArg(cast = "size_t") long length);
///////////////////////////////////////////////////////////////////////
//
// The lmdb API
//
///////////////////////////////////////////////////////////////////////
//====================================================//
// Version Info
//====================================================//
@JniField(flags = {CONSTANT})
static public int MDB_VERSION_MAJOR;
@JniField(flags = {CONSTANT})
static public int MDB_VERSION_MINOR;
@JniField(flags = {CONSTANT})
static public int MDB_VERSION_PATCH;
@JniField(flags = {CONSTANT})
static public int MDB_VERSION_FULL;
@JniField(cast = "const char *", flags = {CONSTANT})
static long MDB_VERSION_DATE;
@JniField(cast = "const char *", flags = {CONSTANT})
static long MDB_VERSION_STRING;
//====================================================//
// Environment Flags
//====================================================//
@JniField(flags = {CONSTANT})
static public int MDB_FIXEDMAP;
@JniField(flags = {CONSTANT})
static public int MDB_NOSUBDIR;
@JniField(flags = {CONSTANT})
static public int MDB_NOSYNC;
@JniField(flags = {CONSTANT})
static public int MDB_RDONLY;
@JniField(flags = {CONSTANT})
static public int MDB_NOMETASYNC;
@JniField(flags = {CONSTANT})
static public int MDB_WRITEMAP;
@JniField(flags = {CONSTANT})
static public int MDB_MAPASYNC;
@JniField(flags = {CONSTANT})
static public int MDB_NOTLS;
@JniField(flags = {CONSTANT})
static public int MDB_NOLOCK;
@JniField(flags = {CONSTANT})
static public int MDB_NORDAHEAD;
@JniField(flags = {CONSTANT})
static public int MDB_NOMEMINIT;
//====================================================//
// Database Flags
//====================================================//
@JniField(flags = {CONSTANT})
static public int MDB_REVERSEKEY;
@JniField(flags = {CONSTANT})
static public int MDB_DUPSORT;
@JniField(flags = {CONSTANT})
static public int MDB_INTEGERKEY;
@JniField(flags = {CONSTANT})
static public int MDB_DUPFIXED;
@JniField(flags = {CONSTANT})
static public int MDB_INTEGERDUP;
@JniField(flags = {CONSTANT})
static public int MDB_REVERSEDUP;
@JniField(flags = {CONSTANT})
static public int MDB_CREATE;
//====================================================//
// Write Flags
//====================================================//
@JniField(flags = {CONSTANT})
static public int MDB_NOOVERWRITE;
@JniField(flags = {CONSTANT})
static public int MDB_NODUPDATA;
@JniField(flags = {CONSTANT})
static public int MDB_CURRENT;
@JniField(flags = {CONSTANT})
static public int MDB_RESERVE;
@JniField(flags = {CONSTANT})
static public int MDB_APPEND;
@JniField(flags = {CONSTANT})
static public int MDB_APPENDDUP;
@JniField(flags = {CONSTANT})
static public int MDB_MULTIPLE;
//====================================================//
// enum MDB_cursor_op:
//====================================================//
@JniField(flags = {CONSTANT})
static public int MDB_FIRST;
@JniField(flags = {CONSTANT})
static public int MDB_FIRST_DUP;
@JniField(flags = {CONSTANT})
static public int MDB_GET_BOTH;
@JniField(flags = {CONSTANT})
static public int MDB_GET_BOTH_RANGE;
@JniField(flags = {CONSTANT})
static public int MDB_GET_CURRENT;
@JniField(flags = {CONSTANT})
static public int MDB_GET_MULTIPLE;
@JniField(flags = {CONSTANT})
static public int MDB_LAST;
@JniField(flags = {CONSTANT})
static public int MDB_LAST_DUP;
@JniField(flags = {CONSTANT})
static public int MDB_NEXT;
@JniField(flags = {CONSTANT})
static public int MDB_NEXT_DUP;
@JniField(flags = {CONSTANT})
static public int MDB_NEXT_MULTIPLE;
@JniField(flags = {CONSTANT})
static public int MDB_NEXT_NODUP;
@JniField(flags = {CONSTANT})
static public int MDB_PREV;
@JniField(flags = {CONSTANT})
static public int MDB_PREV_DUP;
@JniField(flags = {CONSTANT})
static public int MDB_PREV_NODUP;
@JniField(flags = {CONSTANT})
static public int MDB_SET;
@JniField(flags = {CONSTANT})
static public int MDB_SET_KEY;
@JniField(flags = {CONSTANT})
static public int MDB_SET_RANGE;
//====================================================//
// Return Codes
//====================================================//
@JniField(flags = {CONSTANT})
static public int MDB_SUCCESS;
@JniField(flags = {CONSTANT})
static public int MDB_KEYEXIST;
@JniField(flags = {CONSTANT})
static public int MDB_NOTFOUND;
@JniField(flags = {CONSTANT})
static public int MDB_PAGE_NOTFOUND;
@JniField(flags = {CONSTANT})
static public int MDB_CORRUPTED;
@JniField(flags = {CONSTANT})
static public int MDB_PANIC;
@JniField(flags = {CONSTANT})
static public int MDB_VERSION_MISMATCH;
@JniField(flags = {CONSTANT})
static public int MDB_INVALID;
@JniField(flags = {CONSTANT})
static public int MDB_MAP_FULL;
@JniField(flags = {CONSTANT})
static public int MDB_DBS_FULL;
@JniField(flags = {CONSTANT})
static public int MDB_READERS_FULL;
@JniField(flags = {CONSTANT})
static public int MDB_TLS_FULL;
@JniField(flags = {CONSTANT})
static public int MDB_TXN_FULL;
@JniField(flags = {CONSTANT})
static public int MDB_CURSOR_FULL;
@JniField(flags = {CONSTANT})
static public int MDB_PAGE_FULL;
@JniField(flags = {CONSTANT})
static public int MDB_MAP_RESIZED;
@JniField(flags = {CONSTANT})
static public int MDB_INCOMPATIBLE;
@JniField(flags = {CONSTANT})
static public int MDB_BAD_RSLOT;
@JniField(flags = {CONSTANT})
static public int MDB_BAD_TXN;
@JniField(flags = {CONSTANT})
static public int MDB_BAD_VALSIZE;
@JniField(flags = {CONSTANT})
static public int MDB_BAD_DBI;
@JniField(flags = {CONSTANT})
static public int MDB_LAST_ERRCODE;
/**
* details
*/
@JniClass(flags = {STRUCT, TYPEDEF})
static public class MDB_envinfo {
@JniField(cast = "void *")
public long me_mapaddr;
@JniField(cast = "size_t")
public long me_mapsize;
@JniField(cast = "size_t")
public long me_last_pgno;
@JniField(cast = "size_t")
public long me_last_txnid;
@JniField(cast = "unsigned int")
public long me_maxreaders;
@JniField(cast = "unsigned int")
public long me_numreaders;
@Override
public String toString() {
return "{" +
"me_last_pgno=" + me_last_pgno +
", me_mapaddr=" + me_mapaddr +
", me_mapsize=" + me_mapsize +
", me_last_txnid=" + me_last_txnid +
", me_maxreaders=" + me_maxreaders +
", me_numreaders=" + me_numreaders +
'}';
}
}
/**
* details
*/
@JniClass(flags = {STRUCT, TYPEDEF})
public static class MDB_stat {
@JniField(cast = "unsigned int")
public long ms_psize;
@JniField(cast = "unsigned int")
public long ms_depth;
@JniField(cast = "size_t")
public long ms_branch_pages;
@JniField(cast = "size_t")
public long ms_leaf_pages;
@JniField(cast = "size_t")
public long ms_overflow_pages;
@JniField(cast = "size_t")
public long ms_entries;
@Override
public String toString() {
return "{" +
"ms_branch_pages=" + ms_branch_pages +
", ms_psize=" + ms_psize +
", ms_depth=" + ms_depth +
", ms_leaf_pages=" + ms_leaf_pages +
", ms_overflow_pages=" + ms_overflow_pages +
", ms_entries=" + ms_entries +
'}';
}
}
/**
* details
*/
@JniClass(flags = {STRUCT, TYPEDEF})
public static class MDB_val {
@JniField(cast = "size_t")
public long mv_size;
@JniField(cast = "void *")
public long mv_data;
}
/**
* details
*/
@JniMethod(cast = "char *")
public static final native long mdb_strerror(int err);
/**
* details
*/
@JniMethod
public static final native int mdb_env_create(
@JniArg(cast = "MDB_env **", flags = {NO_IN}) long[] env);
/**
* details
*/
@JniMethod
public static final native int mdb_env_open(
@JniArg(cast = "MDB_env *") long env,
@JniArg(cast = "const char *") String path,
@JniArg(cast = "unsigned int") int flags,
@JniArg(cast = "mdb_mode_t") int mode
);
/**
* details
*/
@JniMethod
public static final native int mdb_env_copy(
@JniArg(cast = "MDB_env *") long env,
@JniArg(cast = "const char *") String path);
@JniMethod
public static final native int mdb_env_copy2(
@JniArg(cast = "MDB_env *") long env,
@JniArg(cast = "const char *") String path,
@JniArg(cast = "unsigned int") int flags);
/**
* details
*/
@JniMethod
public static final native int mdb_env_stat(
@JniArg(cast = "MDB_env *") long env,
@JniArg(cast = "MDB_stat *", flags = {NO_IN}) MDB_stat stat);
/**
* details
*/
@JniMethod
public static final native int mdb_env_info(
@JniArg(cast = "MDB_env *") long env,
@JniArg(cast = " MDB_envinfo *", flags = {NO_IN}) MDB_envinfo stat);
/**
* details
*/
@JniMethod
public static final native int mdb_env_sync(
@JniArg(cast = "MDB_env *") long env,
@JniArg(cast = "int") int force);
/**
* details
*/
@JniMethod
public static final native void mdb_env_close(
@JniArg(cast = "MDB_env *") long env);
/**
* details
*/
@JniMethod
public static final native int mdb_env_set_flags(
@JniArg(cast = "MDB_env *") long env,
@JniArg(cast = "unsigned int") int flags,
@JniArg(cast = "int") int onoff);
/**
* details
*/
@JniMethod
public static final native int mdb_env_get_flags(
@JniArg(cast = "MDB_env *") long env,
@JniArg(cast = "unsigned int *") long[] flags);
/**
* details
*/
@JniMethod
public static final native int mdb_env_get_path(
@JniArg(cast = "MDB_env *") long env,
@JniArg(cast = "const char **", flags = {NO_IN}) long[] path);
/**
* details
*/
@JniMethod
public static final native int mdb_env_set_mapsize(
@JniArg(cast = "MDB_env *") long env,
@JniArg(cast = "size_t") long size);
/**
* details
*/
@JniMethod
public static final native int mdb_env_set_maxreaders(
@JniArg(cast = "MDB_env *") long env,
@JniArg(cast = "unsigned int") long readers);
/**
* details
*/
@JniMethod
public static final native int mdb_env_get_maxreaders(
@JniArg(cast = "MDB_env *") long env,
@JniArg(cast = "unsigned int *") long[] readers);
/**
* details
*/
@JniMethod
public static final native int mdb_env_set_maxdbs(
@JniArg(cast = "MDB_env *") long env,
@JniArg(cast = "unsigned int") long dbs);
/**
* details
*/
@JniMethod
public static final native int mdb_txn_begin(
@JniArg(cast = "MDB_env *") long env,
@JniArg(cast = "MDB_txn *") long parent,
@JniArg(cast = "unsigned int") long flags,
@JniArg(cast = "MDB_txn **", flags = {NO_IN}) long[] txn);
/**
* details
*/
@JniMethod
public static final native int mdb_txn_id(
@JniArg(cast = "MDB_txn *") long txn);
/**
* details
*/
@JniMethod
public static final native int mdb_txn_commit(
@JniArg(cast = "MDB_txn *") long txn);
/**
* details
*/
@JniMethod
public static final native void mdb_txn_abort(
@JniArg(cast = "MDB_txn *") long txn);
/**
* details
*/
@JniMethod
public static final native void mdb_txn_reset(
@JniArg(cast = "MDB_txn *") long txn);
/**
* details
*/
@JniMethod
public static final native int mdb_txn_renew(
@JniArg(cast = "MDB_txn *") long txn);
/**
* details
*/
@JniMethod
public static final native int mdb_dbi_open(
@JniArg(cast = "MDB_txn *") long txn,
@JniArg(cast = "const char *") String name,
@JniArg(cast = "unsigned int") long flags,
@JniArg(cast = "unsigned int *") long[] dbi);
/**
* details
*/
@JniMethod
public static final native int mdb_stat(
@JniArg(cast = "MDB_txn *") long txn,
@JniArg(cast = "unsigned int ") long dbi,
@JniArg(cast = "MDB_stat *", flags = {NO_IN}) MDB_stat stat);
/**
* details
*/
@JniMethod
public static final native void mdb_dbi_close(
@JniArg(cast = "MDB_env *") long env,
@JniArg(cast = "unsigned int ") long dbi);
/**
* details
*/
@JniMethod
public static final native int mdb_drop(
@JniArg(cast = "MDB_txn *") long txn,
@JniArg(cast = "unsigned int ") long dbi,
int del);
/**
* details
*/
@JniMethod
public static final native int mdb_set_compare(
@JniArg(cast = "MDB_txn *") long txn,
@JniArg(cast = "unsigned int ") long dbi,
@JniArg(cast = "MDB_cmp_func *") long cmp);
/**
* details
*/
@JniMethod
public static final native int mdb_set_dupsort(
@JniArg(cast = "MDB_txn *") long txn,
@JniArg(cast = "unsigned int ") long dbi,
@JniArg(cast = "MDB_cmp_func *") long cmp);
/**
* details
*/
@JniMethod
public static final native int mdb_get(
@JniArg(cast = "MDB_txn *") long txn,
@JniArg(cast = "unsigned int ") long dbi,
@JniArg(cast = "MDB_val *", flags = {NO_OUT}) MDB_val key,
@JniArg(cast = "MDB_val *", flags = {NO_IN}) MDB_val data);
@JniMethod(accessor = "mdb_get")
public static final native int mdb_get_address(
@JniArg(cast = "MDB_txn *") long txn,
@JniArg(cast = "unsigned int ") long dbi,
@JniArg(cast = "MDB_val *") long key,
@JniArg(cast = "MDB_val *") long data);
/**
* details
*/
@JniMethod
public static final native int mdb_put(
@JniArg(cast = "MDB_txn *") long txn,
@JniArg(cast = "unsigned int ") long dbi,
@JniArg(cast = "MDB_val *", flags = {NO_OUT}) MDB_val key,
@JniArg(cast = "MDB_val *") MDB_val data,
@JniArg(cast = "unsigned int") int flags);
@JniMethod(accessor = "mdb_put")
public static final native int mdb_put_address(
@JniArg(cast = "MDB_txn *") long txn,
@JniArg(cast = "unsigned int ") long dbi,
@JniArg(cast = "MDB_val *") long key,
@JniArg(cast = "MDB_val *") long data,
@JniArg(cast = "unsigned int") int flags);
/**
* details
*/
@JniMethod
public static final native int mdb_del(
@JniArg(cast = "MDB_txn *") long txn,
@JniArg(cast = "unsigned int ") long dbi,
@JniArg(cast = "MDB_val *", flags = {NO_OUT}) MDB_val key,
@JniArg(cast = "MDB_val *", flags = {NO_OUT}) MDB_val data);
/**
* details
*/
@JniMethod
public static final native int mdb_cursor_open(
@JniArg(cast = "MDB_txn *") long txn,
@JniArg(cast = "unsigned int") long dbi,
@JniArg(cast = "MDB_cursor **", flags = {NO_IN}) long[] cursor);
/**
* details
*/
@JniMethod
public static final native void mdb_cursor_close(
@JniArg(cast = "MDB_cursor *") long cursor);
/**
* details
*/
@JniMethod
public static final native int mdb_cursor_renew(
@JniArg(cast = "MDB_txn *") long txn,
@JniArg(cast = "MDB_cursor *") long cursor);
/**
* details
*/
@JniMethod(cast = "MDB_txn *")
public static final native long mdb_cursor_txn(
@JniArg(cast = "MDB_cursor *") long cursor);
/**
* details
*/
@JniMethod(cast = "unsigned int")
public static final native long mdb_cursor_dbi(
@JniArg(cast = "MDB_cursor *") long cursor);
/**
* details
*/
@JniMethod(accessor = "mdb_cursor_get")
public static final native int mdb_cursor_get_copy_in(
@JniArg(cast = "MDB_cursor *") long cursor,
@JniArg(cast = "MDB_val *") MDB_val key,
@JniArg(cast = "MDB_val *") MDB_val data,
@JniArg(cast = "MDB_cursor_op") int op);
/**
* details
*/
@JniMethod(accessor = "mdb_cursor_get")
public static final native int mdb_cursor_get_no_copy_in(
@JniArg(cast = "MDB_cursor *") long cursor,
@JniArg(cast = "MDB_val *", flags = {NO_IN}) MDB_val key,
@JniArg(cast = "MDB_val *", flags = {NO_IN}) MDB_val data,
@JniArg(cast = "MDB_cursor_op") int op);
public static final int mdb_cursor_get(long cursor, MDB_val key, MDB_val data, int op) {
// In the current version of lmdb, only the following ops need to copy in:
// MDB_GET_BOTH:
// MDB_GET_BOTH_RANGE:
// MDB_SET:
// MDB_SET_KEY:
// MDB_SET_RANGE:
// MDB_LAST_DUP:
// MDB_FIRST_DUP:
// In order to be future proof, we assume that unknown ops all need to copy in.
boolean copyIn = !(op == MDB_FIRST ||
op == MDB_GET_CURRENT ||
op == MDB_GET_MULTIPLE ||
op == MDB_LAST ||
op == MDB_NEXT ||
op == MDB_NEXT_DUP ||
op == MDB_NEXT_MULTIPLE ||
op == MDB_NEXT_NODUP ||
op == MDB_PREV ||
op == MDB_PREV_DUP ||
op == MDB_PREV_NODUP);
// On my machine we save about 15ns per call by avoiding the copy. The cost of checking
// whether the op needs a copy is trivial compared to the cost of the extra JNI calls!
if (copyIn) {
return mdb_cursor_get_copy_in(cursor, key, data, op);
} else {
return mdb_cursor_get_no_copy_in(cursor, key, data, op);
}
}
@JniMethod(accessor = "mdb_cursor_get")
public static final native int mdb_cursor_get_address(
@JniArg(cast = "MDB_cursor *") long cursor,
@JniArg(cast = "MDB_val *") long key,
@JniArg(cast = "MDB_val *") long data,
@JniArg(cast = "MDB_cursor_op") int op);
/**
* details
*/
@JniMethod
public static final native int mdb_cursor_put(
@JniArg(cast = "MDB_cursor *") long cursor,
@JniArg(cast = "MDB_val *", flags = {NO_OUT}) MDB_val key,
@JniArg(cast = "MDB_val *", flags = {NO_OUT}) MDB_val data,
@JniArg(cast = "unsigned int ") int flags);
@JniMethod(accessor = "mdb_cursor_put")
public static final native int mdb_cursor_put_address(
@JniArg(cast = "MDB_cursor *") long cursor,
@JniArg(cast = "MDB_val *") long key,
@JniArg(cast = "MDB_val *") long data,
@JniArg(cast = "unsigned int ") int flags);
/**
* details
*/
@JniMethod
public static final native int mdb_cursor_del(
@JniArg(cast = "MDB_cursor *") long cursor,
@JniArg(cast = "unsigned int ") int flags);
/**
* details
*/
@JniMethod
public static final native int mdb_cursor_count(
@JniArg(cast = "MDB_cursor *") long cursor,
@JniArg(cast = "size_t *") long[] countp);
/**
* details
*/
@JniMethod
public static final native int mdb_cmp(
@JniArg(cast = "MDB_txn *") long txn,
@JniArg(cast = "unsigned int") long dbi,
@JniArg(cast = "MDB_val *", flags = {NO_OUT}) MDB_val a,
@JniArg(cast = "MDB_val *", flags = {NO_OUT}) MDB_val b);
/**
* details
*/
@JniMethod
public static final native int mdb_dcmp(
@JniArg(cast = "MDB_txn *") long txn,
@JniArg(cast = "unsigned int") long dbi,
@JniArg(cast = "MDB_val *", flags = {NO_OUT}) MDB_val a,
@JniArg(cast = "MDB_val *", flags = {NO_OUT}) MDB_val b);
@JniMethod
public static final native int mdb_env_get_maxkeysize(
@JniArg(cast = "MDB_env *") long env);
@JniMethod
public static final native int mdb_reader_check(
@JniArg(cast = "MDB_env *") long env, @JniArg(cast = "int *") int[] dead);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy