kyotocabinet-java 0.1.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -0
- data/Gemfile +15 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +19 -0
- data/Rakefile +62 -0
- data/VERSION +1 -0
- data/ext/kyotocabinet-java/.gitignore +2 -0
- data/ext/kyotocabinet-java/COPYING +674 -0
- data/ext/kyotocabinet-java/Cursor.java +268 -0
- data/ext/kyotocabinet-java/DB.java +650 -0
- data/ext/kyotocabinet-java/Error.java +257 -0
- data/ext/kyotocabinet-java/FileProcessor.java +42 -0
- data/ext/kyotocabinet-java/Loader.java +60 -0
- data/ext/kyotocabinet-java/Makefile.in +246 -0
- data/ext/kyotocabinet-java/MapReduce.java +127 -0
- data/ext/kyotocabinet-java/README +26 -0
- data/ext/kyotocabinet-java/Test.java +1494 -0
- data/ext/kyotocabinet-java/Utility.java +131 -0
- data/ext/kyotocabinet-java/VCmakefile +150 -0
- data/ext/kyotocabinet-java/ValueIterator.java +49 -0
- data/ext/kyotocabinet-java/Visitor.java +56 -0
- data/ext/kyotocabinet-java/configure.in +310 -0
- data/ext/kyotocabinet-java/doc/allclasses-frame.html +26 -0
- data/ext/kyotocabinet-java/doc/allclasses-noframe.html +26 -0
- data/ext/kyotocabinet-java/doc/constant-values.html +344 -0
- data/ext/kyotocabinet-java/doc/index-all.html +848 -0
- data/ext/kyotocabinet-java/doc/index.html +30 -0
- data/ext/kyotocabinet-java/doc/kyotocabinet/Cursor.html +711 -0
- data/ext/kyotocabinet-java/doc/kyotocabinet/DB.html +1674 -0
- data/ext/kyotocabinet-java/doc/kyotocabinet/Error.html +604 -0
- data/ext/kyotocabinet-java/doc/kyotocabinet/FileProcessor.html +210 -0
- data/ext/kyotocabinet-java/doc/kyotocabinet/MapReduce.html +461 -0
- data/ext/kyotocabinet-java/doc/kyotocabinet/Test.html +220 -0
- data/ext/kyotocabinet-java/doc/kyotocabinet/Utility.html +413 -0
- data/ext/kyotocabinet-java/doc/kyotocabinet/ValueIterator.html +221 -0
- data/ext/kyotocabinet-java/doc/kyotocabinet/Visitor.html +283 -0
- data/ext/kyotocabinet-java/doc/kyotocabinet/package-frame.html +33 -0
- data/ext/kyotocabinet-java/doc/kyotocabinet/package-summary.html +199 -0
- data/ext/kyotocabinet-java/doc/kyotocabinet/package-tree.html +141 -0
- data/ext/kyotocabinet-java/doc/overview-summary.html +285 -0
- data/ext/kyotocabinet-java/doc/overview-tree.html +145 -0
- data/ext/kyotocabinet-java/doc/package-list +1 -0
- data/ext/kyotocabinet-java/doc/resources/background.gif +0 -0
- data/ext/kyotocabinet-java/doc/resources/tab.gif +0 -0
- data/ext/kyotocabinet-java/doc/resources/titlebar.gif +0 -0
- data/ext/kyotocabinet-java/doc/resources/titlebar_end.gif +0 -0
- data/ext/kyotocabinet-java/doc/serialized-form.html +141 -0
- data/ext/kyotocabinet-java/doc/stylesheet.css +474 -0
- data/ext/kyotocabinet-java/example/KCDBEX1.java +44 -0
- data/ext/kyotocabinet-java/example/KCDBEX2.java +44 -0
- data/ext/kyotocabinet-java/example/Makefile +59 -0
- data/ext/kyotocabinet-java/kyotocabinet.cc +2187 -0
- data/ext/kyotocabinet-java/kyotocabinet_Cursor.h +157 -0
- data/ext/kyotocabinet-java/kyotocabinet_DB.h +353 -0
- data/ext/kyotocabinet-java/kyotocabinet_Error.h +49 -0
- data/ext/kyotocabinet-java/kyotocabinet_Error_XBROKEN.h +41 -0
- data/ext/kyotocabinet-java/kyotocabinet_Error_XDUPREC.h +41 -0
- data/ext/kyotocabinet-java/kyotocabinet_Error_XINVALID.h +41 -0
- data/ext/kyotocabinet-java/kyotocabinet_Error_XLOGIC.h +41 -0
- data/ext/kyotocabinet-java/kyotocabinet_Error_XMISC.h +41 -0
- data/ext/kyotocabinet-java/kyotocabinet_Error_XNOIMPL.h +41 -0
- data/ext/kyotocabinet-java/kyotocabinet_Error_XNOPERM.h +41 -0
- data/ext/kyotocabinet-java/kyotocabinet_Error_XNOREC.h +41 -0
- data/ext/kyotocabinet-java/kyotocabinet_Error_XNOREPOS.h +41 -0
- data/ext/kyotocabinet-java/kyotocabinet_Error_XSUCCESS.h +41 -0
- data/ext/kyotocabinet-java/kyotocabinet_Error_XSYSTEM.h +41 -0
- data/ext/kyotocabinet-java/kyotocabinet_MapReduce.h +33 -0
- data/ext/kyotocabinet-java/kyotocabinet_Utility.h +101 -0
- data/ext/kyotocabinet-java/kyotocabinet_ValueIterator.h +21 -0
- data/ext/kyotocabinet-java/overview.html +177 -0
- data/kyotocabinet-java.gemspec +129 -0
- data/lib/kyotocabinet-java.rb +141 -0
- data/lib/kyotocabinet-java/version.rb +5 -0
- metadata +222 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/*************************************************************************************************
|
|
2
|
+
* Java binding of Kyoto Cabinet.
|
|
3
|
+
* Copyright (C) 2009-2011 FAL Labs
|
|
4
|
+
* This file is part of Kyoto Cabinet.
|
|
5
|
+
* This program is free software: you can redistribute it and/or modify it under the terms of
|
|
6
|
+
* the GNU General Public License as published by the Free Software Foundation, either version
|
|
7
|
+
* 3 of the License, or any later version.
|
|
8
|
+
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
9
|
+
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
10
|
+
* See the GNU General Public License for more details.
|
|
11
|
+
* You should have received a copy of the GNU General Public License along with this program.
|
|
12
|
+
* If not, see <http://www.gnu.org/licenses/>.
|
|
13
|
+
*************************************************************************************************/
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
package kyotocabinet;
|
|
17
|
+
|
|
18
|
+
import java.util.*;
|
|
19
|
+
import java.io.*;
|
|
20
|
+
import java.net.*;
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Utility functions.
|
|
25
|
+
*/
|
|
26
|
+
public class Utility {
|
|
27
|
+
//----------------------------------------------------------------
|
|
28
|
+
// static initializer
|
|
29
|
+
//----------------------------------------------------------------
|
|
30
|
+
static {
|
|
31
|
+
Loader.load();
|
|
32
|
+
}
|
|
33
|
+
//----------------------------------------------------------------
|
|
34
|
+
// public constants
|
|
35
|
+
//----------------------------------------------------------------
|
|
36
|
+
/** The version information. */
|
|
37
|
+
public static final String VERSION = version();
|
|
38
|
+
//----------------------------------------------------------------
|
|
39
|
+
// public static methods
|
|
40
|
+
//----------------------------------------------------------------
|
|
41
|
+
/**
|
|
42
|
+
* Convert a string with a metric prefix to an integer.
|
|
43
|
+
* @param str the string.
|
|
44
|
+
* @return the integer. If the string does not contain numeric expression, 0 is returned.
|
|
45
|
+
*/
|
|
46
|
+
public static native long atoi(String str);
|
|
47
|
+
/**
|
|
48
|
+
* Convert a string with a metric prefix to an integer.
|
|
49
|
+
* @param str the string, which can be trailed by a binary metric prefix. "K", "M", "G", "T",
|
|
50
|
+
* "P", and "E" are supported. They are case-insensitive.
|
|
51
|
+
* @return the integer. If the string does not contain numeric expression, 0 is returned. If
|
|
52
|
+
* the integer overflows the domain, Long.MAX_VALUE or Long.MIN_VALUE is returned according to
|
|
53
|
+
* the sign.
|
|
54
|
+
*/
|
|
55
|
+
public static native long atoix(String str);
|
|
56
|
+
/**
|
|
57
|
+
* Convert a string to a real number.
|
|
58
|
+
* @param str specifies the string.
|
|
59
|
+
* @return the real number. If the string does not contain numeric expression, 0.0 is
|
|
60
|
+
* returned.
|
|
61
|
+
*/
|
|
62
|
+
public static native double atof(String str);
|
|
63
|
+
/**
|
|
64
|
+
* Get the hash value of a byte array by MurMur hashing.
|
|
65
|
+
* @param data the byte array.
|
|
66
|
+
* @return the hash value.
|
|
67
|
+
*/
|
|
68
|
+
public static native long hash_murmur(byte[] data);
|
|
69
|
+
/**
|
|
70
|
+
* Get the hash value of a byte array by FNV hashing.
|
|
71
|
+
* @param data the byte array.
|
|
72
|
+
* @return the hash value.
|
|
73
|
+
*/
|
|
74
|
+
public static native long hash_fnv(byte[] data);
|
|
75
|
+
/**
|
|
76
|
+
* Calculate the levenshtein distance of two strings.
|
|
77
|
+
* @param a one string.
|
|
78
|
+
* @param b the other string.
|
|
79
|
+
* @return the levenshtein distance.
|
|
80
|
+
*/
|
|
81
|
+
public static native long levdist(byte[] a, byte[] b);
|
|
82
|
+
/**
|
|
83
|
+
* Calculate the levenshtein distance of two strings.
|
|
84
|
+
* @note Equal to the original Utility.levdist method except that the parameters are treated
|
|
85
|
+
* as UTF-8 strings.
|
|
86
|
+
* @see #levdist(byte[], byte[])
|
|
87
|
+
*/
|
|
88
|
+
public static native long levdist(String a, String b);
|
|
89
|
+
/**
|
|
90
|
+
* Get the current time.
|
|
91
|
+
* @return the current time from the epoch in seconds.
|
|
92
|
+
*/
|
|
93
|
+
public static double time() {
|
|
94
|
+
return System.currentTimeMillis() / 1000.0;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Remove a file or a directory recursively.
|
|
98
|
+
* @param path the path of a file or a directory.
|
|
99
|
+
* @return true on success, or false on failure.
|
|
100
|
+
*/
|
|
101
|
+
public static native boolean remove_files_recursively(String path);
|
|
102
|
+
//----------------------------------------------------------------
|
|
103
|
+
// package static methods
|
|
104
|
+
//----------------------------------------------------------------
|
|
105
|
+
/**
|
|
106
|
+
* Get the string containing the version information.
|
|
107
|
+
* @return the string containing the version information.
|
|
108
|
+
*/
|
|
109
|
+
static native String version();
|
|
110
|
+
/**
|
|
111
|
+
* Create the magic data of NOP of Visitor.
|
|
112
|
+
* @return the magic data of NOP of Visitor.
|
|
113
|
+
*/
|
|
114
|
+
static native byte[] init_visitor_NOP();
|
|
115
|
+
/**
|
|
116
|
+
* Create the magic data of REMOVE of Visitor.
|
|
117
|
+
* @return the magic data of REMOVE of Visitor.
|
|
118
|
+
*/
|
|
119
|
+
static native byte[] init_visitor_REMOVE();
|
|
120
|
+
//----------------------------------------------------------------
|
|
121
|
+
// private methods
|
|
122
|
+
//----------------------------------------------------------------
|
|
123
|
+
/**
|
|
124
|
+
* Dummy constructor.
|
|
125
|
+
*/
|
|
126
|
+
private Utility() {}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
// END OF FILE
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# Makefile for Kyoto Cabinet for Java on Win32
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
#================================================================
|
|
6
|
+
# Setting Variables
|
|
7
|
+
#================================================================
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# VC++ directory
|
|
11
|
+
VCPATH = C:\Program Files\Microsoft Visual Studio 10.0\VC
|
|
12
|
+
SDKPATH = C:\Program Files\Microsoft SDKs\Windows\v7.0A
|
|
13
|
+
JDKPATH = C:\Program Files\Java\jdk1.6.0_22
|
|
14
|
+
KCPATH = kcwin32
|
|
15
|
+
|
|
16
|
+
# Targets
|
|
17
|
+
JARFILES = kyotocabinet.jar
|
|
18
|
+
JAVAFILES = Loader.java Utility.java Error.java Visitor.java FileProcessor.java Cursor.java DB.java MapReduce.java ValueIterator.java Test.java
|
|
19
|
+
LIBRARYFILES = jkyotocabinet.dll
|
|
20
|
+
LIBOBJFILES = kyotocabinet.obj
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
# Building configuration
|
|
24
|
+
JAVAC = javac
|
|
25
|
+
JAVACFLAGS = -source 1.6 -d .
|
|
26
|
+
JAR = jar
|
|
27
|
+
JAVARUN = java
|
|
28
|
+
JAVARUNFLAGS = -cp kyotocabinet.jar -Djava.library.path=.
|
|
29
|
+
CL = cl
|
|
30
|
+
LIB = lib
|
|
31
|
+
LINK = link
|
|
32
|
+
CLFLAGS = /nologo \
|
|
33
|
+
/I "$(VCPATH)\Include" /I "$(VCPATH)\PlatformSDK\Include" /I "$(SDKPATH)\Include" \
|
|
34
|
+
/I "$(KCPATH)\include" /I "$(JDKPATH)\include" /I "$(JDKPATH)\include\win32" /I "." \
|
|
35
|
+
/DNDEBUG /D_CRT_SECURE_NO_WARNINGS \
|
|
36
|
+
/O2 /EHsc /W3 /wd4244 /wd4351 /wd4800 /wd4101 /MT
|
|
37
|
+
LINKFLAGS = /nologo \
|
|
38
|
+
/libpath:"$(VCPATH)\lib" /libpath:"$(VCPATH)\PlatformSDK\Lib" /libpath:"$(SDKPATH)\Lib" \
|
|
39
|
+
/libpath:"$(KCPATH)\lib" /libpath:"$(JDKPATH)\lib" /libpath:"."
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
#================================================================
|
|
44
|
+
# Suffix rules
|
|
45
|
+
#================================================================
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
.SUFFIXES :
|
|
49
|
+
.SUFFIXES : .cc .obj .exe
|
|
50
|
+
|
|
51
|
+
.cc.obj :
|
|
52
|
+
$(CL) /c $(CLFLAGS) $<
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
#================================================================
|
|
57
|
+
# Actions
|
|
58
|
+
#================================================================
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
all : $(JARFILES) $(LIBRARYFILES)
|
|
62
|
+
@echo #
|
|
63
|
+
@echo #================================================================
|
|
64
|
+
@echo # Ready to install.
|
|
65
|
+
@echo #================================================================
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
clean :
|
|
69
|
+
-del *.jar *.obj *.lib *.dll *.exp *.exe /F /Q > NUL: 2>&1
|
|
70
|
+
-del casket* /F /Q > NUL: 2>&1
|
|
71
|
+
-rd casket casket.wal casket.tmp casket-para casket.kcd casket.kcf /S /Q > NUL: 2>&1
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
check :
|
|
75
|
+
$(MAKE) -f VCmakefile DBNAME=":" RNUM="10000" check-each
|
|
76
|
+
$(MAKE) -f VCmakefile DBNAME="*" RNUM="10000" check-each
|
|
77
|
+
$(MAKE) -f VCmakefile DBNAME="%" RNUM="10000" check-each
|
|
78
|
+
$(MAKE) -f VCmakefile DBNAME="casket.kch" RNUM="10000" check-each
|
|
79
|
+
$(MAKE) -f VCmakefile DBNAME="casket.kct" RNUM="10000" check-each
|
|
80
|
+
$(MAKE) -f VCmakefile DBNAME="casket.kcd" RNUM="1000" check-each
|
|
81
|
+
$(MAKE) -f VCmakefile DBNAME="casket.kcf" RNUM="10000" check-each
|
|
82
|
+
@echo #
|
|
83
|
+
@echo #================================================================
|
|
84
|
+
@echo # Checking completed.
|
|
85
|
+
@echo #================================================================
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
check-each :
|
|
89
|
+
-del casket* /F /Q > NUL: 2>&1
|
|
90
|
+
-rd casket casket.wal casket.tmp casket-para casket.kcd casket.kcf /S /Q > NUL: 2>&1
|
|
91
|
+
$(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test order \
|
|
92
|
+
"$(DBNAME)" "$(RNUM)"
|
|
93
|
+
$(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test order \
|
|
94
|
+
-rnd "$(DBNAME)" "$(RNUM)"
|
|
95
|
+
$(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test order \
|
|
96
|
+
-etc "$(DBNAME)" "$(RNUM)"
|
|
97
|
+
$(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test order \
|
|
98
|
+
-rnd -etc "$(DBNAME)" "$(RNUM)"
|
|
99
|
+
$(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test order \
|
|
100
|
+
-th 4 "$(DBNAME)" "$(RNUM)"
|
|
101
|
+
$(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test order \
|
|
102
|
+
-th 4 -rnd "$(DBNAME)" "$(RNUM)"
|
|
103
|
+
$(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test order \
|
|
104
|
+
-th 4 -etc "$(DBNAME)" "$(RNUM)"
|
|
105
|
+
$(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test order \
|
|
106
|
+
-th 4 -rnd -etc "$(DBNAME)" "$(RNUM)"
|
|
107
|
+
$(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test wicked \
|
|
108
|
+
"$(DBNAME)" "$(RNUM)"
|
|
109
|
+
$(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test wicked \
|
|
110
|
+
-it 4 "$(DBNAME)" "$(RNUM)"
|
|
111
|
+
$(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test wicked \
|
|
112
|
+
-th 4 "$(DBNAME)" "$(RNUM)"
|
|
113
|
+
$(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test wicked \
|
|
114
|
+
-th 4 -it 4 "$(DBNAME)" "$(RNUM)"
|
|
115
|
+
$(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test misc \
|
|
116
|
+
"$(DBNAME)"
|
|
117
|
+
-del casket* /F /Q > NUL: 2>&1
|
|
118
|
+
-rd casket casket.wal casket.tmp casket-para casket.kcd casket.kcf /S /Q > NUL: 2>&1
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
binpkg :
|
|
122
|
+
-rd $(KCPATH)\java /S /Q > NUL: 2>&1
|
|
123
|
+
md $(KCPATH)\java
|
|
124
|
+
copy *.jar $(KCPATH)\java
|
|
125
|
+
copy *.dll $(KCPATH)\java
|
|
126
|
+
xcopy /S /E /I doc kcwin32\java\doc
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
#================================================================
|
|
131
|
+
# Building binaries
|
|
132
|
+
#================================================================
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
kyotocabinet.jar : $(JAVAFILES)
|
|
136
|
+
$(JAVAC) $(JAVACFLAGS) $(JAVAFILES)
|
|
137
|
+
$(JAR) cvf $@ kyotocabinet\*.class
|
|
138
|
+
-rd kyotocabinet /S /Q > NUL: 2>&1
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
jkyotocabinet.dll : $(LIBOBJFILES)
|
|
142
|
+
$(LINK) $(LINKFLAGS) /DLL /OUT:$@ $(LIBOBJFILES) kcwin32\lib\kyotocabinet.lib
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
kyotocabinet.obj : kyotocabinet_Utility.h kyotocabinet_Error.h \
|
|
146
|
+
kyotocabinet_Cursor.h kyotocabinet_DB.h kyotocabinet_MapReduce.h kyotocabinet_ValueIterator.h
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
# END OF FILE
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/*************************************************************************************************
|
|
2
|
+
* Java binding of Kyoto Cabinet.
|
|
3
|
+
* Copyright (C) 2009-2011 FAL Labs
|
|
4
|
+
* This file is part of Kyoto Cabinet.
|
|
5
|
+
* This program is free software: you can redistribute it and/or modify it under the terms of
|
|
6
|
+
* the GNU General Public License as published by the Free Software Foundation, either version
|
|
7
|
+
* 3 of the License, or any later version.
|
|
8
|
+
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
9
|
+
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
10
|
+
* See the GNU General Public License for more details.
|
|
11
|
+
* You should have received a copy of the GNU General Public License along with this program.
|
|
12
|
+
* If not, see <http://www.gnu.org/licenses/>.
|
|
13
|
+
*************************************************************************************************/
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
package kyotocabinet;
|
|
17
|
+
|
|
18
|
+
import java.util.*;
|
|
19
|
+
import java.io.*;
|
|
20
|
+
import java.net.*;
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Iterator for record values.
|
|
25
|
+
*/
|
|
26
|
+
public class ValueIterator {
|
|
27
|
+
//----------------------------------------------------------------
|
|
28
|
+
// public methods
|
|
29
|
+
//---------------------------------------------------------------
|
|
30
|
+
/**
|
|
31
|
+
* Get the next value.
|
|
32
|
+
* @return the next value, or null if no value remains.
|
|
33
|
+
*/
|
|
34
|
+
public native byte[] next();
|
|
35
|
+
//----------------------------------------------------------------
|
|
36
|
+
// constructors and finalizer
|
|
37
|
+
//----------------------------------------------------------------
|
|
38
|
+
/**
|
|
39
|
+
* Create an instance.
|
|
40
|
+
*/
|
|
41
|
+
ValueIterator() {
|
|
42
|
+
}
|
|
43
|
+
/** The pointer to the native object */
|
|
44
|
+
private long ptr_ = 0;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
// END OF FILE
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/*************************************************************************************************
|
|
2
|
+
* Java binding of Kyoto Cabinet.
|
|
3
|
+
* Copyright (C) 2009-2011 FAL Labs
|
|
4
|
+
* This file is part of Kyoto Cabinet.
|
|
5
|
+
* This program is free software: you can redistribute it and/or modify it under the terms of
|
|
6
|
+
* the GNU General Public License as published by the Free Software Foundation, either version
|
|
7
|
+
* 3 of the License, or any later version.
|
|
8
|
+
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
9
|
+
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
10
|
+
* See the GNU General Public License for more details.
|
|
11
|
+
* You should have received a copy of the GNU General Public License along with this program.
|
|
12
|
+
* If not, see <http://www.gnu.org/licenses/>.
|
|
13
|
+
*************************************************************************************************/
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
package kyotocabinet;
|
|
17
|
+
|
|
18
|
+
import java.util.*;
|
|
19
|
+
import java.io.*;
|
|
20
|
+
import java.net.*;
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Interface to access a record.
|
|
25
|
+
*/
|
|
26
|
+
public interface Visitor {
|
|
27
|
+
//----------------------------------------------------------------
|
|
28
|
+
// public constants
|
|
29
|
+
//----------------------------------------------------------------
|
|
30
|
+
/** magic data: no operation */
|
|
31
|
+
public static final byte[] NOP = Utility.init_visitor_NOP();
|
|
32
|
+
/** magic data: remove the record */
|
|
33
|
+
public static final byte[] REMOVE = Utility.init_visitor_REMOVE();
|
|
34
|
+
//----------------------------------------------------------------
|
|
35
|
+
// public methods
|
|
36
|
+
//----------------------------------------------------------------
|
|
37
|
+
/**
|
|
38
|
+
* Visit a record.
|
|
39
|
+
* @param key the key.
|
|
40
|
+
* @param value the value.
|
|
41
|
+
* @return If it is a string, the value is replaced by the content. If it is Visitor.NOP,
|
|
42
|
+
* nothing is modified. If it is Visitor.REMOVE, the record is removed.
|
|
43
|
+
*/
|
|
44
|
+
public byte[] visit_full(byte[] key, byte[] value);
|
|
45
|
+
/**
|
|
46
|
+
* Visit a empty record space.
|
|
47
|
+
* @param key the key.
|
|
48
|
+
* @return If it is a string, the value is replaced by the content. If it is Visitor.NOP or
|
|
49
|
+
* Visitor.REMOVE, nothing is modified.
|
|
50
|
+
*/
|
|
51
|
+
public byte[] visit_empty(byte[] key);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
// END OF FILE
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
# Source of configuration for Kyoto Cabinet for Java
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
#================================================================
|
|
6
|
+
# Generic Settings
|
|
7
|
+
#================================================================
|
|
8
|
+
|
|
9
|
+
# Package name
|
|
10
|
+
AC_INIT(kyotocabinet-java, 1.24)
|
|
11
|
+
|
|
12
|
+
# Package information
|
|
13
|
+
MYLIBVER=1
|
|
14
|
+
MYLIBREV=1
|
|
15
|
+
|
|
16
|
+
# Targets
|
|
17
|
+
MYJARFILES="kyotocabinet.jar"
|
|
18
|
+
MYJAVAFILES="Loader.java Utility.java Error.java Visitor.java FileProcessor.java"
|
|
19
|
+
MYJAVAFILES="$MYJAVAFILES Cursor.java DB.java MapReduce.java ValueIterator.java Test.java"
|
|
20
|
+
MYLIBRARYFILES=""
|
|
21
|
+
MYLIBOBJFILES="kyotocabinet.o"
|
|
22
|
+
|
|
23
|
+
# Building flags
|
|
24
|
+
MYJAVACFLAGS="-d ."
|
|
25
|
+
MYJAVADOCFLAGS="-locale en -tag note:a:"Note:" -nodeprecated -nohelp -quiet -noqualifier all"
|
|
26
|
+
MYJAVARUNFLAGS="-cp kyotocabinet.jar"
|
|
27
|
+
MYCXXFLAGS="-Wall -fPIC -fsigned-char -O2"
|
|
28
|
+
MYCPPFLAGS="-I. -I\$(INCLUDEDIR) -I$HOME/include -I/usr/local/include -DNDEBUG"
|
|
29
|
+
MYLDFLAGS="-L. -L\$(LIBDIR) -L$HOME/lib -L/usr/local/lib"
|
|
30
|
+
MYRUNPATH="\$(LIBDIR)"
|
|
31
|
+
MYLDLIBPATHENV="LD_LIBRARY_PATH"
|
|
32
|
+
|
|
33
|
+
# Building paths
|
|
34
|
+
pathtmp="$PATH"
|
|
35
|
+
PATH="$HOME/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin"
|
|
36
|
+
PATH="$PATH:/usr/ccs/bin:/usr/ucb:/usr/xpg4/bin:/usr/xpg6/bin:$pathtmp"
|
|
37
|
+
LIBRARY_PATH="$HOME/lib:/usr/local/lib:$LIBRARY_PATH"
|
|
38
|
+
LD_LIBRARY_PATH="$HOME/lib:/usr/local/lib:$LD_LIBRARY_PATH"
|
|
39
|
+
CPATH="$HOME/include:/usr/local/include:$CPATH"
|
|
40
|
+
PKG_CONFIG_PATH="$HOME/lib/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
|
|
41
|
+
export PATH LIBRARY_PATH LD_LIBRARY_PATH CPATH PKG_CONFIG_PATH
|
|
42
|
+
if type pkg-config >config.tmp 2>&1
|
|
43
|
+
then
|
|
44
|
+
PATH="$PATH:`pkg-config --variable=bindir kyotocabinet`"
|
|
45
|
+
LIBRARY_PATH="$LIBRARY_PATH:`pkg-config --variable=libdir kyotocabinet`"
|
|
46
|
+
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:`pkg-config --variable=libdir kyotocabinet`"
|
|
47
|
+
CPATH="$CPATH:`pkg-config --variable=includedir kyotocabinet`"
|
|
48
|
+
export PATH LIBRARY_PATH LD_LIBRARY_PATH CPATH PKG_CONFIG_PATH
|
|
49
|
+
fi
|
|
50
|
+
|
|
51
|
+
# Installation paths
|
|
52
|
+
libdir=${prefix}
|
|
53
|
+
|
|
54
|
+
#================================================================
|
|
55
|
+
# Options
|
|
56
|
+
#================================================================
|
|
57
|
+
|
|
58
|
+
# Internal variables
|
|
59
|
+
enables=""
|
|
60
|
+
|
|
61
|
+
# Debug mode
|
|
62
|
+
AC_ARG_ENABLE(debug,
|
|
63
|
+
AC_HELP_STRING([--enable-debug], [build for debugging]))
|
|
64
|
+
if test "$enable_debug" = "yes"
|
|
65
|
+
then
|
|
66
|
+
MYJAVACFLAGS="$MYJAVACFLAGS -g"
|
|
67
|
+
MYJAVARUNFLAGS="$MYJAVARUNFLAGS -esa"
|
|
68
|
+
MYCXXFLAGS="-Wall -fPIC -fsigned-char -g -O0"
|
|
69
|
+
MYCPPFLAGS="$MYCPPFLAGS -UNDEBUG -D_KCDEBUG"
|
|
70
|
+
enables="$enables (debug)"
|
|
71
|
+
fi
|
|
72
|
+
|
|
73
|
+
# Developping mode
|
|
74
|
+
AC_ARG_ENABLE(devel,
|
|
75
|
+
AC_HELP_STRING([--enable-devel], [build for development]))
|
|
76
|
+
if test "$enable_devel" = "yes"
|
|
77
|
+
then
|
|
78
|
+
MYJAVACFLAGS="$MYJAVACFLAGS -g"
|
|
79
|
+
MYJAVARUNFLAGS="$MYJAVARUNFLAGS -esa"
|
|
80
|
+
MYCXXFLAGS="-Wall -Wextra -Wno-unused-parameter -Wnon-virtual-dtor"
|
|
81
|
+
MYCXXFLAGS="$MYCXXFLAGS -fPIC -fsigned-char -g -O2 -fno-inline -pipe"
|
|
82
|
+
MYCPPFLAGS="$MYCPPFLAGS -UNDEBUG -D_KCDEBUG"
|
|
83
|
+
enables="$enables (devel)"
|
|
84
|
+
fi
|
|
85
|
+
|
|
86
|
+
# Specify the installation path of Kyoto Cabinet
|
|
87
|
+
AC_ARG_WITH(kc,
|
|
88
|
+
AC_HELP_STRING([--with-kc=DIR], [search DIR/include and DIR/lib for Kyoto Cabinet]))
|
|
89
|
+
if test -n "$with_kc"
|
|
90
|
+
then
|
|
91
|
+
MYCPPFLAGS="$MYCPPFLAGS -I$with_kc/include"
|
|
92
|
+
MYLDFLAGS="$MYLDFLAGS -L$with_kc/lib"
|
|
93
|
+
CPATH="$CPATH:$with_kc/include"
|
|
94
|
+
LIBRARY_PATH="$LIBRARY_PATH:$with_kc/lib"
|
|
95
|
+
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$with_kc/lib"
|
|
96
|
+
PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$with_kc/lib/pkgconfig"
|
|
97
|
+
fi
|
|
98
|
+
|
|
99
|
+
# Messages
|
|
100
|
+
printf '#================================================================\n'
|
|
101
|
+
printf '# Configuring Kyoto Cabinet for Java version %s.\n' "$PACKAGE_VERSION"
|
|
102
|
+
printf '#================================================================\n'
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
#================================================================
|
|
107
|
+
# Checking Commands and Libraries
|
|
108
|
+
#================================================================
|
|
109
|
+
|
|
110
|
+
# Home directory of Java
|
|
111
|
+
printf 'checking MYJAVAHOME... '
|
|
112
|
+
if test -d "$JAVA_HOME"
|
|
113
|
+
then
|
|
114
|
+
MYJAVAHOME="$JAVA_HOME"
|
|
115
|
+
else
|
|
116
|
+
if uname | grep Darwin >config.tmp; then
|
|
117
|
+
# Mac OS X
|
|
118
|
+
MYJAVAHOME=/System/Library/Frameworks/JavaVM.framework
|
|
119
|
+
elif test -L /usr/bin/javac; then
|
|
120
|
+
# other Unix, but /usr/bin/javac is a symlink
|
|
121
|
+
MYJAVAHOME=`readlink -f /usr/bin/javac | sed "s:bin/javac::"`
|
|
122
|
+
fi
|
|
123
|
+
fi
|
|
124
|
+
printf '%s\n' "$MYJAVAHOME"
|
|
125
|
+
|
|
126
|
+
# Platform of Java
|
|
127
|
+
printf 'checking JVMPLATFORM... '
|
|
128
|
+
if uname | grep Darwin >config.tmp
|
|
129
|
+
then
|
|
130
|
+
JVMPLATFORM="mac"
|
|
131
|
+
else
|
|
132
|
+
for file in `\ls $MYJAVAHOME/include`
|
|
133
|
+
do
|
|
134
|
+
if test -d "$MYJAVAHOME/include/$file"
|
|
135
|
+
then
|
|
136
|
+
JVMPLATFORM="$file"
|
|
137
|
+
fi
|
|
138
|
+
done
|
|
139
|
+
fi
|
|
140
|
+
printf '%s\n' "$JVMPLATFORM"
|
|
141
|
+
MYCPPFLAGS="$MYCPPFLAGS -I$MYJAVAHOME/include -I$MYJAVAHOME/include/$JVMPLATFORM"
|
|
142
|
+
MYCPPFLAGS="$MYCPPFLAGS -I$MYJAVAHOME/Headers -I$MYJAVAHOME/Headers/$JVMPLATFORM"
|
|
143
|
+
CPATH="$CPATH:$MYJAVAHOME/include:$MYJAVAHOME/include/$JVMPLATFORM"
|
|
144
|
+
CPATH="$CPATH:$MYJAVAHOME/Headers:$MYJAVAHOME/Headers/$JVMPLATFORM"
|
|
145
|
+
|
|
146
|
+
# Java compiler
|
|
147
|
+
printf 'checking JAVAC... '
|
|
148
|
+
JAVAC="$MYJAVAHOME/bin/javac"
|
|
149
|
+
if uname | grep Darwin >config.tmp
|
|
150
|
+
then
|
|
151
|
+
if test -x "$MYJAVAHOME/Commands/javac"
|
|
152
|
+
then
|
|
153
|
+
JAVAC="$MYJAVAHOME/Commands/javac"
|
|
154
|
+
else
|
|
155
|
+
JAVAC="$MYJAVAHOME/bin/javac"
|
|
156
|
+
fi
|
|
157
|
+
fi
|
|
158
|
+
if test -x "$JAVAC"
|
|
159
|
+
then
|
|
160
|
+
printf '%s\n' "$JAVAC"
|
|
161
|
+
else
|
|
162
|
+
printf 'no\n'
|
|
163
|
+
printf '#================================================================\n' 1>&2
|
|
164
|
+
printf '# WARNING: %s is not found.\n' "$JAVAC" 1>&2
|
|
165
|
+
printf '#================================================================\n' 1>&2
|
|
166
|
+
fi
|
|
167
|
+
|
|
168
|
+
# Other building tools
|
|
169
|
+
if uname | grep Darwin >config.tmp
|
|
170
|
+
then
|
|
171
|
+
if test -x "$MYJAVAHOME/Commands/java"
|
|
172
|
+
then
|
|
173
|
+
JAR="$MYJAVAHOME/Commands/jar"
|
|
174
|
+
JAVAH="$MYJAVAHOME/Commands/javah"
|
|
175
|
+
JAVADOC="$MYJAVAHOME/Commands/javadoc"
|
|
176
|
+
JAVARUN="$MYJAVAHOME/Commands/java"
|
|
177
|
+
else
|
|
178
|
+
JAR="$MYJAVAHOME/bin/jar"
|
|
179
|
+
JAVAH="$MYJAVAHOME/bin/javah"
|
|
180
|
+
JAVADOC="$MYJAVAHOME/bin/javadoc"
|
|
181
|
+
JAVARUN="$MYJAVAHOME/bin/java"
|
|
182
|
+
fi
|
|
183
|
+
else
|
|
184
|
+
JAR="$MYJAVAHOME/bin/jar"
|
|
185
|
+
JAVAH="$MYJAVAHOME/bin/javah"
|
|
186
|
+
JAVADOC="$MYJAVAHOME/bin/javadoc"
|
|
187
|
+
JAVARUN="$MYJAVAHOME/bin/java"
|
|
188
|
+
fi
|
|
189
|
+
MYJAVARUNFLAGS="$MYJAVARUNFLAGS -Djava.library.path=.:$LD_LIBRARY_PATH"
|
|
190
|
+
|
|
191
|
+
# C compiler
|
|
192
|
+
AC_PROG_CC
|
|
193
|
+
if uname | grep Darwin >config.tmp
|
|
194
|
+
then
|
|
195
|
+
AC_PROG_CXX([c++ g++])
|
|
196
|
+
else
|
|
197
|
+
AC_PROG_CXX
|
|
198
|
+
fi
|
|
199
|
+
AC_LANG(C++)
|
|
200
|
+
|
|
201
|
+
# System-depending optimization
|
|
202
|
+
printf 'checking for 64-bit availability... '
|
|
203
|
+
if printf 'main() {}' | $CC -xc -m64 -o config.tmp - >config.tmp 2>&1
|
|
204
|
+
then
|
|
205
|
+
MYCFLAGS="-m64 $MYCFLAGS"
|
|
206
|
+
MYCXXFLAGS="-m64 $MYCXXFLAGS"
|
|
207
|
+
printf 'yes\n'
|
|
208
|
+
else
|
|
209
|
+
printf 'no\n'
|
|
210
|
+
fi
|
|
211
|
+
if test "$enable_opt" != "no"
|
|
212
|
+
then
|
|
213
|
+
printf 'checking for CPU optimization availability... '
|
|
214
|
+
if printf 'main() {}' | $CC -xc -march=native -o config.tmp - >config.tmp 2>&1
|
|
215
|
+
then
|
|
216
|
+
MYCFLAGS="-march=native $MYCFLAGS"
|
|
217
|
+
MYCXXFLAGS="-march=native $MYCXXFLAGS"
|
|
218
|
+
printf 'yes\n'
|
|
219
|
+
else
|
|
220
|
+
printf 'no\n'
|
|
221
|
+
fi
|
|
222
|
+
fi
|
|
223
|
+
|
|
224
|
+
# Underlying libraries
|
|
225
|
+
AC_CHECK_LIB(c, main)
|
|
226
|
+
AC_CHECK_LIB(m, main)
|
|
227
|
+
AC_CHECK_LIB(pthread, main)
|
|
228
|
+
AC_CHECK_LIB(rt, main)
|
|
229
|
+
AC_CHECK_LIB(stdc++, main)
|
|
230
|
+
AC_CHECK_LIB(regex, main)
|
|
231
|
+
AC_CHECK_LIB(z, main)
|
|
232
|
+
AC_CHECK_LIB(kyotocabinet, main)
|
|
233
|
+
|
|
234
|
+
# Necessary headers
|
|
235
|
+
AC_CHECK_HEADER(stdlib.h, true, AC_MSG_ERROR([stdlib.h is required]))
|
|
236
|
+
AC_CHECK_HEADER(stdint.h, true, AC_MSG_ERROR([stdint.h is required]))
|
|
237
|
+
AC_CHECK_HEADER(kccommon.h, true, AC_MSG_ERROR([kccommon.h is required]))
|
|
238
|
+
AC_CHECK_HEADER(jni.h, true, AC_MSG_ERROR([jni.h is required]))
|
|
239
|
+
|
|
240
|
+
# Checking the version of Kyoto Cabinet with pkg-config
|
|
241
|
+
if type pkg-config >config.tmp 2>&1
|
|
242
|
+
then
|
|
243
|
+
printf 'checking Kyoto Cabinet by pkg-config... '
|
|
244
|
+
if pkg-config --atleast-version=1.2.65 kyotocabinet
|
|
245
|
+
then
|
|
246
|
+
MYCPPFLAGS="$MYCPPFLAGS -I`pkg-config --variable=includedir kyotocabinet`"
|
|
247
|
+
MYLDFLAGS="$MYLDFLAGS -L`pkg-config --variable=libdir kyotocabinet`"
|
|
248
|
+
MYRUNPATH="$MYRUNPATH:`pkg-config --variable=libdir kyotocabinet`"
|
|
249
|
+
printf 'yes\n'
|
|
250
|
+
else
|
|
251
|
+
printf 'no\n'
|
|
252
|
+
AC_MSG_ERROR([required version of Kyoto Cabinet was not detected])
|
|
253
|
+
fi
|
|
254
|
+
fi
|
|
255
|
+
|
|
256
|
+
# Shared libraries
|
|
257
|
+
if uname | grep Darwin >config.tmp
|
|
258
|
+
then
|
|
259
|
+
MYLIBRARYFILES="$MYLIBRARYFILES libjkyotocabinet.$MYLIBVER.$MYLIBREV.0.dylib"
|
|
260
|
+
MYLIBRARYFILES="$MYLIBRARYFILES libjkyotocabinet.$MYLIBVER.dylib"
|
|
261
|
+
MYLIBRARYFILES="$MYLIBRARYFILES libjkyotocabinet.dylib"
|
|
262
|
+
MYLIBRARYFILES="$MYLIBRARYFILES libjkyotocabinet.jnilib"
|
|
263
|
+
MYLDLIBPATHENV="DYLD_LIBRARY_PATH"
|
|
264
|
+
else
|
|
265
|
+
MYLIBRARYFILES="$MYLIBRARYFILES libjkyotocabinet.so.$MYLIBVER.$MYLIBREV.0"
|
|
266
|
+
MYLIBRARYFILES="$MYLIBRARYFILES libjkyotocabinet.so.$MYLIBVER"
|
|
267
|
+
MYLIBRARYFILES="$MYLIBRARYFILES libjkyotocabinet.so"
|
|
268
|
+
fi
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
#================================================================
|
|
273
|
+
# Generic Settings
|
|
274
|
+
#================================================================
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
# Export variables
|
|
278
|
+
AC_SUBST(JAVAC)
|
|
279
|
+
AC_SUBST(JAR)
|
|
280
|
+
AC_SUBST(JAVAH)
|
|
281
|
+
AC_SUBST(JAVADOC)
|
|
282
|
+
AC_SUBST(JAVARUN)
|
|
283
|
+
AC_SUBST(MYLIBVER)
|
|
284
|
+
AC_SUBST(MYLIBREV)
|
|
285
|
+
AC_SUBST(MYJARFILES)
|
|
286
|
+
AC_SUBST(MYJAVAFILES)
|
|
287
|
+
AC_SUBST(MYLIBRARYFILES)
|
|
288
|
+
AC_SUBST(MYLIBOBJFILES)
|
|
289
|
+
AC_SUBST(MYJAVAHOME)
|
|
290
|
+
AC_SUBST(MYJAVACFLAGS)
|
|
291
|
+
AC_SUBST(MYJAVADOCFLAGS)
|
|
292
|
+
AC_SUBST(MYJAVARUNFLAGS)
|
|
293
|
+
AC_SUBST(MYCXXFLAGS)
|
|
294
|
+
AC_SUBST(MYCPPFLAGS)
|
|
295
|
+
AC_SUBST(MYLDFLAGS)
|
|
296
|
+
AC_SUBST(MYRUNPATH)
|
|
297
|
+
AC_SUBST(MYLDLIBPATHENV)
|
|
298
|
+
AC_SUBST(libdir)
|
|
299
|
+
|
|
300
|
+
# Targets
|
|
301
|
+
AC_OUTPUT(Makefile)
|
|
302
|
+
|
|
303
|
+
# Messages
|
|
304
|
+
printf '#================================================================\n'
|
|
305
|
+
printf '# Ready to make.\n'
|
|
306
|
+
printf '#================================================================\n'
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
# END OF FILE
|