kyotocabinet-java 0.1.0-java
Sign up to get free protection for your applications and to get access to all the features.
- 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
|