rjb 1.0.9-mswin32 → 1.0.11-mswin32
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/ChangeLog +18 -0
- data/ext/extconf.h +6 -0
- data/ext/riconv.c +147 -112
- data/ext/riconv.h +1 -3
- data/ext/rjb.c +32 -23
- data/lib/rjbcore.so +0 -0
- data/test/jp/co/infoseek/hp/arton/rjb/Test$TestTypes.class +0 -0
- data/test/jp/co/infoseek/hp/arton/rjb/Test.class +0 -0
- data/test/test.rb +44 -1
- metadata +4 -2
data/ChangeLog
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
Fri Nov 9 arton
|
2
|
+
*test.rb
|
3
|
+
*Test.java
|
4
|
+
add test for reproducing rjb-bugs-15430
|
5
|
+
*rjb.c
|
6
|
+
fix rjb-bugs-15430 that caused by bad array conversion.
|
7
|
+
(generics method result signature is an object, but the real result is typed array)
|
8
|
+
*riconv.c
|
9
|
+
correct to get the number of array element.
|
10
|
+
Tue Oct 23 Kuwashima
|
11
|
+
*riconv.c
|
12
|
+
Change string encoding conversion rule.
|
13
|
+
Mon Oct 22 Kuwashima
|
14
|
+
*riconv.c
|
15
|
+
*riconv.h
|
16
|
+
recycle iconv instance.
|
17
|
+
*test/test.rb
|
18
|
+
add cases for test_kjconv
|
1
19
|
Sun Sep 23 arton
|
2
20
|
*rjb.c
|
3
21
|
version 1.0.9
|
data/ext/extconf.h
ADDED
data/ext/riconv.c
CHANGED
@@ -12,144 +12,179 @@
|
|
12
12
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13
13
|
* Lesser General Public License for more details.
|
14
14
|
*
|
15
|
-
* $Id: riconv.c
|
15
|
+
* $Id: riconv.c 37 2007-11-08 17:25:36Z arton $
|
16
16
|
*/
|
17
17
|
|
18
18
|
#include "ruby.h"
|
19
|
+
#include "extconf.h"
|
20
|
+
|
21
|
+
#if defined _WIN32 || defined __CYGWIN__
|
22
|
+
#include <windows.h>
|
23
|
+
#endif
|
24
|
+
|
25
|
+
#if defined HAVE_NL_LANGINFO
|
26
|
+
#include <langinfo.h>
|
27
|
+
static const char* const NL_EUC_TABLE[] = { "EUC-JISX0213", "EUC-JP", "EUC-JP-MS" };
|
28
|
+
static const char* const NL_SJIS_TABLE[] = { "SHIFT_JIS", "SHIFT_JISX0213", "WINDOWS-31J" };
|
29
|
+
#endif
|
30
|
+
|
31
|
+
#if defined HAVE_SETLOCALE
|
32
|
+
#include <locale.h>
|
33
|
+
static const char* const LOCALE_EUC_TABLE[] = { "japanese", "ja_JP.eucJP", "japanese.euc", "ja_JP", "ja_JP.ujis" };
|
34
|
+
static const char* const LOCALE_SJIS_TABLE[] = { "japanese.sjis", "ja_JP.SJIS" };
|
35
|
+
static const char* const LOCALE_UTF8_TABLE[] = { "ja_JP.UTF-8", "ja_JP.utf8" };
|
36
|
+
#endif
|
37
|
+
|
19
38
|
#include "riconv.h"
|
20
39
|
|
21
|
-
static const char*
|
22
|
-
static const char*
|
23
|
-
static const char*
|
24
|
-
static const char*
|
25
|
-
|
40
|
+
static const char* const CS_EUCJP = "EUC-JP";
|
41
|
+
static const char* const CS_CP932 = "CP932";
|
42
|
+
static const char* const CS_SJIS = "SHIFT_JIS";
|
43
|
+
static const char* const CS_UTF8 = "UTF-8";
|
44
|
+
|
45
|
+
|
46
|
+
static VALUE objIconvJ2R;
|
47
|
+
static VALUE objIconvR2J;
|
48
|
+
static const char* charcode; //is this necessary?
|
49
|
+
static char Kcode = '\0';
|
26
50
|
|
27
|
-
|
28
|
-
static int regxp_is_match(VALUE str, VALUE regxp)
|
51
|
+
static int find_table(const char* const str, const char* const table[])
|
29
52
|
{
|
30
|
-
|
53
|
+
int i;
|
54
|
+
int size = sizeof(table) / sizeof(table[0]);
|
55
|
+
for (i = 0; i < size; ++i)
|
56
|
+
{
|
57
|
+
if (strstr(str, table[i])) return 1;
|
58
|
+
}
|
59
|
+
return 0;
|
31
60
|
}
|
32
61
|
|
33
|
-
|
34
|
-
static int platform_is_windows()
|
62
|
+
static const char* get_charcode_name_by_locale(const char* const name)
|
35
63
|
{
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
64
|
+
if (find_table(name, LOCALE_UTF8_TABLE))
|
65
|
+
return NULL;
|
66
|
+
else if (find_table(name, LOCALE_EUC_TABLE))
|
67
|
+
return CS_EUCJP;
|
68
|
+
else if (find_table(name, LOCALE_SJIS_TABLE))
|
69
|
+
return CS_SJIS;
|
70
|
+
else
|
71
|
+
return NULL;
|
40
72
|
}
|
41
|
-
|
42
73
|
/*
|
43
|
-
*
|
44
|
-
* TODO: ���s����LOCALE,LANG,LC_ALL�����Q�l�ɂ���
|
74
|
+
* Get better charcode name.
|
45
75
|
*/
|
46
|
-
static char*
|
76
|
+
static const char* get_charcode_name()
|
47
77
|
{
|
48
|
-
char* result = NULL;
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
78
|
+
const char* result = NULL;
|
79
|
+
const char* lang = NULL;
|
80
|
+
|
81
|
+
switch(Kcode)
|
82
|
+
{
|
83
|
+
case 'E':
|
84
|
+
result = CS_EUCJP;
|
85
|
+
break;
|
86
|
+
case 'S':
|
87
|
+
#if defined _WIN32 || defined __CYGWIN__
|
88
|
+
result = CS_CP932;
|
89
|
+
#else
|
90
|
+
result = CS_SJIS;
|
91
|
+
#endif
|
92
|
+
break;
|
93
|
+
case 'U':
|
94
|
+
//as is.
|
95
|
+
break;
|
96
|
+
case 'N':
|
97
|
+
default:
|
98
|
+
#if defined _WIN32 || defined __CYGWIN__
|
99
|
+
if (932 == GetACP()) result = CS_CP932;
|
100
|
+
#elif defined HAVE_NL_LANGINFO
|
101
|
+
setlocale(LC_ALL, ""); //initialize
|
102
|
+
lang = nl_langinfo(CODESET);
|
103
|
+
if (find_table(lang, NL_EUC_TABLE))
|
104
|
+
result = CS_EUCJP;
|
105
|
+
else if (find_table(lang, NL_SJIS_TABLE))
|
106
|
+
result = CS_SJIS;
|
107
|
+
#elif defined HAVE_SETLOCALE
|
108
|
+
setlocale(LC_ALL, ""); //initialize
|
109
|
+
result = get_charcode_name_by_locale(setlocale(LC_ALL, NULL));
|
110
|
+
#elif defined HAVE_GETENV
|
111
|
+
printf("HAVE_GETENV\n");
|
112
|
+
if (result = get_charcode_name_by_locale(getenv("LC_ALL")))
|
113
|
+
;
|
114
|
+
else if (result = get_charcode_name_by_locale(getenv("LC_CTYPE")))
|
115
|
+
;
|
116
|
+
else if (result = get_charcode_name_by_locale(getenv("LANG")))
|
117
|
+
;
|
118
|
+
#endif
|
119
|
+
break;
|
120
|
+
}
|
90
121
|
return result;
|
91
122
|
}
|
92
123
|
|
93
|
-
/*
|
94
|
-
* �g�����C�u������Iconv������ꍇ��1,�Ȃ��ꍇ��0��Ԃ�
|
95
|
-
*/
|
96
|
-
static int has_exticonv()
|
97
|
-
{
|
98
|
-
ID id_Iconv = rb_intern("Iconv");
|
99
|
-
VALUE Iconv = rb_const_get(rb_cObject, id_Iconv);
|
100
|
-
if(Iconv == Qnil)
|
101
|
-
{
|
102
|
-
return 0;
|
103
|
-
}
|
104
|
-
else
|
105
|
-
{
|
106
|
-
return 1;
|
107
|
-
}
|
108
|
-
}
|
109
124
|
|
110
|
-
|
125
|
+
static void reinit()
|
111
126
|
{
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
127
|
+
charcode = get_charcode_name();
|
128
|
+
if (charcode)
|
129
|
+
{
|
130
|
+
VALUE rb_iconv_klass = rb_const_get(rb_cObject, rb_intern("Iconv"));
|
131
|
+
if (RTEST(rb_iconv_klass)) {
|
132
|
+
ID sym_new = rb_intern("new");
|
133
|
+
rb_gc_unregister_address(&objIconvR2J);
|
134
|
+
objIconvR2J = rb_funcall(rb_iconv_klass, sym_new, 2, rb_str_new2(CS_UTF8), rb_str_new2(charcode));
|
135
|
+
rb_gc_register_address(&objIconvR2J);
|
136
|
+
rb_gc_unregister_address(&objIconvJ2R);
|
137
|
+
objIconvJ2R = rb_funcall(rb_iconv_klass, sym_new, 2, rb_str_new2(charcode), rb_str_new2(CS_UTF8));
|
138
|
+
rb_gc_register_address(&objIconvJ2R);
|
139
|
+
}
|
140
|
+
}
|
141
|
+
else
|
142
|
+
{
|
143
|
+
objIconvR2J = objIconvJ2R = Qnil;
|
144
|
+
}
|
121
145
|
}
|
122
146
|
|
123
|
-
|
147
|
+
static void check_kcode()
|
124
148
|
{
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
149
|
+
VALUE rb_iconv_klass = rb_const_get(rb_cObject, rb_intern("Iconv"));
|
150
|
+
VALUE kcode = rb_gv_get("$KCODE");
|
151
|
+
if (RTEST(rb_iconv_klass) && TYPE(kcode) == T_STRING) {
|
152
|
+
char* kcodep = StringValuePtr(kcode);
|
153
|
+
char upper_kcode = toupper(*kcodep);
|
154
|
+
if (Kcode != upper_kcode)
|
155
|
+
{
|
156
|
+
Kcode = upper_kcode;
|
157
|
+
reinit();
|
158
|
+
}
|
159
|
+
}
|
160
|
+
else
|
161
|
+
{
|
162
|
+
objIconvR2J = objIconvJ2R = Qnil;
|
163
|
+
}
|
134
164
|
}
|
135
165
|
|
136
|
-
VALUE
|
166
|
+
VALUE exticonv_local_to_utf8(VALUE local_string)
|
137
167
|
{
|
138
|
-
|
168
|
+
check_kcode();
|
169
|
+
if(RTEST(objIconvR2J))
|
170
|
+
{
|
171
|
+
return rb_funcall(objIconvR2J, rb_intern("iconv"), 1, local_string);
|
172
|
+
}
|
173
|
+
else
|
174
|
+
{
|
175
|
+
return local_string;
|
176
|
+
}
|
139
177
|
}
|
140
178
|
|
141
|
-
VALUE
|
179
|
+
VALUE exticonv_utf8_to_local(VALUE utf8_string)
|
142
180
|
{
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
//iconv���Ȃ�����̂܂ܕԂ�
|
153
|
-
return original_string;
|
154
|
-
}
|
181
|
+
check_kcode();
|
182
|
+
if(RTEST(objIconvR2J))
|
183
|
+
{
|
184
|
+
return rb_funcall(objIconvJ2R, rb_intern("iconv"), 1, utf8_string);
|
185
|
+
}
|
186
|
+
else
|
187
|
+
{
|
188
|
+
return utf8_string;
|
189
|
+
}
|
155
190
|
}
|
data/ext/riconv.h
CHANGED
@@ -12,14 +12,12 @@
|
|
12
12
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13
13
|
* Lesser General Public License for more details.
|
14
14
|
*
|
15
|
-
* $Id: riconv.h
|
15
|
+
* $Id: riconv.h 29 2007-10-22 08:29:05Z kuwa1 $
|
16
16
|
*/
|
17
17
|
#ifndef _RICONV_H
|
18
18
|
#define _RICONV_H
|
19
19
|
|
20
20
|
extern VALUE exticonv_local_to_utf8(VALUE);
|
21
21
|
extern VALUE exticonv_utf8_to_local(VALUE);
|
22
|
-
extern VALUE exticonv_cc(VALUE, const char*, const char*);
|
23
|
-
extern VALUE exticonv_vv(VALUE, VALUE, VALUE);
|
24
22
|
|
25
23
|
#endif /* _RICONV_H */
|
data/ext/rjb.c
CHANGED
@@ -12,10 +12,10 @@
|
|
12
12
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13
13
|
* Lesser General Public License for more details.
|
14
14
|
*
|
15
|
-
* $Id: rjb.c
|
15
|
+
* $Id: rjb.c 39 2007-11-08 17:33:57Z arton $
|
16
16
|
*/
|
17
17
|
|
18
|
-
#define RJB_VERSION "1.0.
|
18
|
+
#define RJB_VERSION "1.0.11"
|
19
19
|
|
20
20
|
#include "ruby.h"
|
21
21
|
#include "st.h"
|
@@ -45,6 +45,7 @@ static void setup_metadata(JNIEnv* jenv, VALUE self, struct jv_data*, VALUE clas
|
|
45
45
|
static VALUE jarray2rv(JNIEnv* jenv, jvalue val);
|
46
46
|
static jarray r2objarray(JNIEnv* jenv, VALUE v, const char* cls);
|
47
47
|
static VALUE jv2rv_withprim(JNIEnv* jenv, jobject o);
|
48
|
+
static J2R get_arrayconv(const char* cname, char* depth);
|
48
49
|
|
49
50
|
static VALUE rjb;
|
50
51
|
static VALUE jklass;
|
@@ -237,6 +238,7 @@ static VALUE jv2rv_r(JNIEnv* jenv, jvalue val)
|
|
237
238
|
// object to ruby
|
238
239
|
if (!val.l) return Qnil;
|
239
240
|
klass = (*jenv)->GetObjectClass(jenv, val.l);
|
241
|
+
|
240
242
|
if ((*jenv)->IsSameObject(jenv, klass, j_class))
|
241
243
|
{
|
242
244
|
(*jenv)->DeleteLocalRef(jenv, klass);
|
@@ -247,8 +249,13 @@ static VALUE jv2rv_r(JNIEnv* jenv, jvalue val)
|
|
247
249
|
cname = (*jenv)->GetStringUTFChars(jenv, nm, NULL);
|
248
250
|
if (*cname == '[')
|
249
251
|
{
|
252
|
+
char depth = 0;
|
253
|
+
J2R j2r = get_arrayconv(cname, &depth);
|
250
254
|
rjb_release_string(jenv, nm, cname);
|
251
|
-
|
255
|
+
v = j2r(jenv, val);
|
256
|
+
(*jenv)->DeleteLocalRef(jenv, klass);
|
257
|
+
(*jenv)->DeleteLocalRef(jenv, val.l);
|
258
|
+
return v;
|
252
259
|
}
|
253
260
|
clsname = rb_str_new2(cname);
|
254
261
|
rjb_release_string(jenv, nm, cname);
|
@@ -1146,6 +1153,27 @@ static R2J get_r2j(JNIEnv* jenv, jobject o, int* siglen, char* sigp)
|
|
1146
1153
|
return result;
|
1147
1154
|
}
|
1148
1155
|
|
1156
|
+
static J2R get_arrayconv(const char* cname, char* pdepth)
|
1157
|
+
{
|
1158
|
+
int i;
|
1159
|
+
int start;
|
1160
|
+
for (start = 1; *(cname + start) == '['; start++);
|
1161
|
+
*pdepth = (char)start;
|
1162
|
+
for (i = 0; i < COUNTOF(jcvt); i++)
|
1163
|
+
{
|
1164
|
+
if (*(cname + start) == jcvt[i].jntype[0])
|
1165
|
+
{
|
1166
|
+
if (jcvt[i].jntype[0] == 'L'
|
1167
|
+
&& strncmp(cname + start, jcvt[i].jntype, strlen(jcvt[i].jntype)))
|
1168
|
+
{
|
1169
|
+
break;
|
1170
|
+
}
|
1171
|
+
return jcvt[i].ja2r;
|
1172
|
+
}
|
1173
|
+
}
|
1174
|
+
return &jarray2rv;
|
1175
|
+
}
|
1176
|
+
|
1149
1177
|
static J2R get_j2r(JNIEnv* jenv, jobject cls, char* psig, char* pdepth, char* ppsig, off_t* piv, int static_method)
|
1150
1178
|
{
|
1151
1179
|
int i;
|
@@ -1158,26 +1186,7 @@ static J2R get_j2r(JNIEnv* jenv, jobject cls, char* psig, char* pdepth, char* pp
|
|
1158
1186
|
|
1159
1187
|
if (*cname == '[')
|
1160
1188
|
{
|
1161
|
-
|
1162
|
-
for (start = 1; *(cname + start) == '['; start++);
|
1163
|
-
*pdepth = (char)start;
|
1164
|
-
for (i = 0; i < COUNTOF(jcvt); i++)
|
1165
|
-
{
|
1166
|
-
if (*(cname + start) == jcvt[i].jntype[0])
|
1167
|
-
{
|
1168
|
-
if (jcvt[i].jntype[0] == 'L'
|
1169
|
-
&& strncmp(cname + start, jcvt[i].jntype, strlen(jcvt[i].jntype)))
|
1170
|
-
{
|
1171
|
-
break;
|
1172
|
-
}
|
1173
|
-
result = jcvt[i].ja2r;
|
1174
|
-
break;
|
1175
|
-
}
|
1176
|
-
}
|
1177
|
-
if (!result)
|
1178
|
-
{
|
1179
|
-
result = jarray2rv;
|
1180
|
-
}
|
1189
|
+
result = get_arrayconv(cname, pdepth);
|
1181
1190
|
jname = cname;
|
1182
1191
|
}
|
1183
1192
|
else
|
data/lib/rjbcore.so
CHANGED
Binary file
|
Binary file
|
Binary file
|
data/test/test.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#!/usr/local/env ruby
|
2
|
-
# $Id: test.rb
|
2
|
+
# $Id: test.rb 34 2007-11-08 16:52:07Z arton $
|
3
3
|
|
4
4
|
require 'test/unit'
|
5
5
|
require 'rjb'
|
@@ -142,6 +142,32 @@ class TestRjb < Test::Unit::TestCase
|
|
142
142
|
sjis_kj = "\x8a\xbf\x8e\x9a\x83\x65\x83\x4c\x83\x58\x83\x67"
|
143
143
|
s = @jString.new(sjis_kj)
|
144
144
|
assert_equal(s.toString(), sjis_kj)
|
145
|
+
$KCODE = 'utf8'
|
146
|
+
utf8_kj = "\xE6\xBC\xA2\xE5\xAD\x97\xE3\x83\x86\xE3\x82\xAD\xE3\x82\xB9\xE3\x83\x88"
|
147
|
+
s = @jString.new(utf8_kj)
|
148
|
+
assert_equal(s.toString(), utf8_kj)
|
149
|
+
$KCODE = 'none'
|
150
|
+
if /mswin(?!ce)|mingw|cygwin|bccwin/ =~ RUBY_PLATFORM
|
151
|
+
#expecting shift_jis on windows
|
152
|
+
none_kj = "\x8a\xbf\x8e\x9a\x83\x65\x83\x4c\x83\x58\x83\x67"
|
153
|
+
else
|
154
|
+
#expecting utf-8 unless windows
|
155
|
+
none_kj = "\xE6\xBC\xA2\xE5\xAD\x97\xE3\x83\x86\xE3\x82\xAD\xE3\x82\xB9\xE3\x83\x88"
|
156
|
+
end
|
157
|
+
s = @jString.new(none_kj)
|
158
|
+
assert_equal(s.toString(), none_kj)
|
159
|
+
$KCODE = 'utf8'
|
160
|
+
utf8_kj = "\xE6\xBC\xA2\xE5\xAD\x97\xE3\x83\x86\xE3\x82\xAD\xE3\x82\xB9\xE3\x83\x88"
|
161
|
+
s = @jString.new(utf8_kj)
|
162
|
+
assert_equal(s.toString(), utf8_kj)
|
163
|
+
$KCODE = 'sjis'
|
164
|
+
sjis_kj = "\x8a\xbf\x8e\x9a\x83\x65\x83\x4c\x83\x58\x83\x67"
|
165
|
+
s = @jString.new(sjis_kj)
|
166
|
+
assert_equal(s.toString(), sjis_kj)
|
167
|
+
$KCODE = 'euc'
|
168
|
+
euc_kj = "\xb4\xc1\xbb\xfa\xa5\xc6\xa5\xad\xa5\xb9\xa5\xc8"
|
169
|
+
s = @jString.new(euc_kj)
|
170
|
+
assert_equal(s.toString(), euc_kj)
|
145
171
|
end
|
146
172
|
|
147
173
|
def test_constants()
|
@@ -499,5 +525,22 @@ class TestRjb < Test::Unit::TestCase
|
|
499
525
|
assert_equal 8070450532247928832, a.get(7)
|
500
526
|
assert_equal ?A, a.get(8)
|
501
527
|
end
|
528
|
+
|
529
|
+
def test_enum
|
530
|
+
t = Rjb::import('jp.co.infoseek.hp.arton.rjb.Test$TestTypes')
|
531
|
+
assert t.ONE.equals(t.values()[0])
|
532
|
+
assert_equal 3, t.values().size
|
533
|
+
assert_equal 2, t.THREE.ordinal
|
534
|
+
assert_equal "TWO", t.TWO.name
|
535
|
+
assert_equal "THREE", t.THREE.toString
|
536
|
+
end
|
537
|
+
|
538
|
+
#rjb-bugs-15430 rebported by Bryan Duxbury
|
539
|
+
def test_generics_map
|
540
|
+
test = import('jp.co.infoseek.hp.arton.rjb.Test').new
|
541
|
+
map = test.sorted_map
|
542
|
+
assert_equal "\0\x1\x2\x3\x4", map.get('abc')
|
543
|
+
assert_equal "\x5\x6\x7\x8\x9", map.get('def')
|
544
|
+
end
|
502
545
|
end
|
503
546
|
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: rjb
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.0.
|
7
|
-
date: 2007-09
|
6
|
+
version: 1.0.11
|
7
|
+
date: 2007-11-09 00:00:00 +09:00
|
8
8
|
summary: Ruby Java bridge
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -34,6 +34,7 @@ files:
|
|
34
34
|
- ext/riconv.c
|
35
35
|
- ext/rjb.c
|
36
36
|
- ext/rjbexception.c
|
37
|
+
- ext/extconf.h
|
37
38
|
- ext/jniwrap.h
|
38
39
|
- ext/jp_co_infoseek_hp_arton_rjb_RBridge.h
|
39
40
|
- ext/riconv.h
|
@@ -47,6 +48,7 @@ files:
|
|
47
48
|
- test/jp/co/infoseek/hp/arton/rjb/Base.class
|
48
49
|
- test/jp/co/infoseek/hp/arton/rjb/ExtBase.class
|
49
50
|
- test/jp/co/infoseek/hp/arton/rjb/IBase.class
|
51
|
+
- test/jp/co/infoseek/hp/arton/rjb/Test$TestTypes.class
|
50
52
|
- test/jp/co/infoseek/hp/arton/rjb/Test.class
|
51
53
|
- COPYING
|
52
54
|
- ChangeLog
|