linkterm 0.0.2 → 0.0.3
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/History.txt +10 -0
- data/Manifest.txt +10 -0
- data/README.txt +7 -4
- data/Rakefile +19 -1
- data/examples/docs/README.EXT.ja +1276 -0
- data/examples/docs/README.ja +156 -0
- data/examples/example.rb +20 -0
- data/lib/linkterm/huge.rb +12 -0
- data/lib/linkterm/lisc.rb +39 -0
- data/lib/linkterm/version.rb +1 -1
- data/lib/linkterm.rb +9 -6
- data/makemanifest +23 -0
- data/test/test_linkterm.rb +52 -2
- data/website/Linkterm.key.tgz +0 -0
- data/website/Linkterm.pdf +0 -0
- data/website/images/rosetownnozomi.png +0 -0
- data/website/index.html +13 -5
- data/website/index.txt +9 -3
- data/website/rosetownnozomi.png +0 -0
- metadata +12 -2
|
@@ -0,0 +1,1276 @@
|
|
|
1
|
+
.\" README.EXT.ja - -*- Text -*- created at: Mon Aug 7 16:45:54 JST 1995
|
|
2
|
+
|
|
3
|
+
Ruby�γ�ĥ�饤�֥��κ�������������ޤ���
|
|
4
|
+
|
|
5
|
+
1�������μ�
|
|
6
|
+
|
|
7
|
+
C���ѿ��ˤϷ������ꡤ�ǡ����ˤϷ�������ޤ��Ǥ����顤��
|
|
8
|
+
�Ȥ��Хݥ���int���ѿ�����������ȡ������ͤ������Ȥ��Ƽ�
|
|
9
|
+
�갷���ޤ����դ�Ruby���ѿ��ˤϷ����ʤ����ǡ����˷��������
|
|
10
|
+
�������ΰ㤤�Τ��ᡤC��Ruby����ߤ��Ѵ����ʤ���С����ߤ���
|
|
11
|
+
�ǡ����������Ǥ��ޤ���
|
|
12
|
+
|
|
13
|
+
Ruby�Υǡ�����VALUE�Ȥ���C�η���ɽ������ޤ���VALUE���Υǡ�
|
|
14
|
+
���Ϥ��Υǡ��������פ�ʬ���ΤäƤ��ޤ������Υǡ��������פ�
|
|
15
|
+
�����Τϥǡ���(���֥�������)�μºݤι�¤���̣���Ƥ��ơ�Ruby
|
|
16
|
+
�Υ��饹�ȤϤޤ���ä���ΤǤ���
|
|
17
|
+
|
|
18
|
+
VALUE����C�ˤȤäư�̣�Τ���ǡ�������Ф�����ˤ�
|
|
19
|
+
|
|
20
|
+
(1) VALUE�Υǡ��������פ��Τ�
|
|
21
|
+
(2) VALUE��C�Υǡ������Ѵ�����
|
|
22
|
+
|
|
23
|
+
��ξ����ɬ�פǤ���(1)��˺���ȴְ�ä��ǡ������Ѵ����Ԥ��
|
|
24
|
+
�ơ��ǰ��ץ�����बcore dump���ޤ���
|
|
25
|
+
|
|
26
|
+
1.1 �ǡ���������
|
|
27
|
+
|
|
28
|
+
Ruby�ˤϥ桼�����Ȥ���ǽ���Τ���ʲ��Υ����פ�����ޤ���
|
|
29
|
+
|
|
30
|
+
T_NIL nil
|
|
31
|
+
T_OBJECT �̾�Υ��֥�������
|
|
32
|
+
T_CLASS ���饹
|
|
33
|
+
T_MODULE �⥸�塼��
|
|
34
|
+
T_FLOAT ��ư��������
|
|
35
|
+
T_STRING ʸ����
|
|
36
|
+
T_REGEXP ����ɽ��
|
|
37
|
+
T_ARRAY ����
|
|
38
|
+
T_FIXNUM Fixnum(31bit����)
|
|
39
|
+
T_HASH Ϣ������
|
|
40
|
+
T_STRUCT (Ruby��)��¤��
|
|
41
|
+
T_BIGNUM ¿��Ĺ����
|
|
42
|
+
T_FILE ������
|
|
43
|
+
T_TRUE ��
|
|
44
|
+
T_FALSE ��
|
|
45
|
+
T_DATA �ǡ���
|
|
46
|
+
T_SYMBOL ����ܥ�
|
|
47
|
+
|
|
48
|
+
����¾�����������Ѥ���Ƥ���ʲ��Υ����פ�����ޤ���
|
|
49
|
+
|
|
50
|
+
T_ICLASS
|
|
51
|
+
T_MATCH
|
|
52
|
+
T_UNDEF
|
|
53
|
+
T_VARMAP
|
|
54
|
+
T_SCOPE
|
|
55
|
+
T_NODE
|
|
56
|
+
|
|
57
|
+
�ۤȤ�ɤΥ����פ�C�ι�¤�ΤǼ�������Ƥ��ޤ���
|
|
58
|
+
|
|
59
|
+
1.2 VALUE�Υǡ��������פ�����å�����
|
|
60
|
+
|
|
61
|
+
ruby.h�Ǥ�TYPE()�Ȥ����ޥ������������Ƥ��ơ�VALUE�Υǡ���
|
|
62
|
+
�����פ��Τ뤳�Ȥ�����ޤ���TYPE()�ޥ����Ͼ�ǾҲ𤷤�T_XXXX
|
|
63
|
+
�η�����������֤��ޤ���VALUE�Υǡ��������פ˱����ƽ�������
|
|
64
|
+
���ˤϡ�TYPE()���ͤ�ʬ�����뤳�Ȥˤʤ�ޤ���
|
|
65
|
+
|
|
66
|
+
switch (TYPE(obj)) {
|
|
67
|
+
case T_FIXNUM:
|
|
68
|
+
/* FIXNUM��� */
|
|
69
|
+
break;
|
|
70
|
+
case T_STRING:
|
|
71
|
+
/* ʸ����ν��� */
|
|
72
|
+
break;
|
|
73
|
+
case T_ARRAY:
|
|
74
|
+
/* ������ */
|
|
75
|
+
break;
|
|
76
|
+
default:
|
|
77
|
+
/* �㳰��ȯ�������� */
|
|
78
|
+
rb_raise(rb_eTypeError, "not valid value");
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
����ȥǡ��������פ�����å����ơ��������ʤ�����㳰��ȯ����
|
|
83
|
+
��ؿ����Ѱդ���Ƥ��ޤ���
|
|
84
|
+
|
|
85
|
+
void Check_Type(VALUE value, int type)
|
|
86
|
+
|
|
87
|
+
���δؿ���value��type��̵����С��㳰��ȯ�������ޤ���������
|
|
88
|
+
����Ϳ����줿VALUE�Υǡ��������פ����������ɤ��������å���
|
|
89
|
+
�뤿��ˤϡ����δؿ���Ȥ��ޤ���
|
|
90
|
+
|
|
91
|
+
FIXNUM��NIL�˴ؤ��ƤϤ���®��Ƚ�̥ޥ������Ѱդ���Ƥ��ޤ���
|
|
92
|
+
|
|
93
|
+
FIXNUM_P(obj)
|
|
94
|
+
NIL_P(obj)
|
|
95
|
+
|
|
96
|
+
1.3 VALUE��C�Υǡ������Ѵ�����
|
|
97
|
+
|
|
98
|
+
�ǡ��������פ�T_NIL, T_FALSE, T_TRUE�Ǥ�������ǡ����Ϥ��줾
|
|
99
|
+
��nil, false, true�Ǥ������Υǡ��������פΥ��֥������ȤϤҤ�
|
|
100
|
+
�Ĥ��Ĥ���¸�ߤ��ޤ���
|
|
101
|
+
|
|
102
|
+
�ǡ��������פ�T_FIXNUM�λ��������31bit�Υ����������������
|
|
103
|
+
����FIXNUM��C���������Ѵ����뤿��ˤϥޥ�����FIX2INT()�פ��
|
|
104
|
+
���ޤ������줫�顤FIXNUM�˸¤餺Ruby�Υǡ������������Ѵ�����
|
|
105
|
+
��NUM2INT()�פȤ����ޥ���������ޤ������Υޥ����ϥǡ�������
|
|
106
|
+
�פΥ����å�̵���ǻȤ��ޤ�(�������Ѵ��Ǥ��ʤ����ˤ��㳰��
|
|
107
|
+
ȯ������)��Ʊ�ͤ˥����å�̵���ǻȤ����Ѵ��ޥ�����double��
|
|
108
|
+
���Ф���NUM2DBL()�פ�����ޤ���
|
|
109
|
+
|
|
110
|
+
char* ����Ф���硢version 1.6 �����Ǥϡ�STR2CSTR()�פ�
|
|
111
|
+
�����ޥ�����ȤäƤ��ޤ������������ to_str() �ˤ����ۤ�
|
|
112
|
+
���Ѵ���̤� GC ������ǽ�������뤿�ᡢversion 1.7 �ʹߤǤ�
|
|
113
|
+
obsolete �Ȥʤꡢ����� StringValue() �� StringValuePtr()
|
|
114
|
+
��Ȥ�����侩���Ƥ��ޤ���StringValue(var) �� var �� String
|
|
115
|
+
�Ǥ���в��⤻���������Ǥʤ���� var �� var.to_str() �η�̤�
|
|
116
|
+
�֤�������ޥ�����StringValuePtr(var) ��Ʊ�ͤ� var ���֤�����
|
|
117
|
+
�Ƥ��� var ��ʸ����ɽ�����Ф��� char* ���֤��ޥ����Ǥ���var ��
|
|
118
|
+
���Ƥ�ľ���֤����������������Τǡ�var �� lvalue �Ǥ���ɬ�פ�
|
|
119
|
+
����ޤ���
|
|
120
|
+
|
|
121
|
+
����ʳ��Υǡ��������פ��б�����C�ι�¤�Τ�����ޤ����б���
|
|
122
|
+
�빽¤�ΤΤ���VALUE�Ϥ��Τޤޥ��㥹��(���Ѵ�)����й�¤�Τ�
|
|
123
|
+
�ݥ����Ѵ��Ǥ��ޤ���
|
|
124
|
+
|
|
125
|
+
��¤�Τϡ�struct RXxxxx�פȤ���̾����ruby.h���������Ƥ���
|
|
126
|
+
�����㤨��ʸ����ϡ�struct RString�פǤ����ºݤ˻Ȥ���ǽ����
|
|
127
|
+
����Τ�ʸ��������餤���Ȼפ��ޤ���
|
|
128
|
+
|
|
129
|
+
ruby.h�ǤϹ�¤�Τإ��㥹�Ȥ���ޥ������RXXXXX()��(������ʸ
|
|
130
|
+
���ˤ������)�Ȥ���̾��������Ƥ��ޤ�(��: RSTRING())��
|
|
131
|
+
|
|
132
|
+
��¤�Τ���ǡ�������Ф��ޥ���������Ƥ��ޤ���ʸ����
|
|
133
|
+
str��Ĺ�������뤿��ˤϡ�RSTRING_LEN(str)�פȤ���ʸ����str��
|
|
134
|
+
char*�Ȥ������뤿��ˤϡ�RSTRING_PTR(str)�פȤ��ޤ��������
|
|
135
|
+
���ˤϡ����줾���RARRAY_LEN(ary)�ס���RARRAY_PTR(ary)�פ�
|
|
136
|
+
�ʤ�ޤ���
|
|
137
|
+
|
|
138
|
+
Ruby�ι�¤�Τ�ľ�ܥ�������������˵���Ĥ��ʤ���Фʤ�ʤ���
|
|
139
|
+
�Ȥϡ������ʸ����ι�¤�Τ���Ȥϻ��Ȥ�������ǡ�ľ���ѹ���
|
|
140
|
+
�ʤ����ȤǤ���ľ���ѹ�������硤���֥������Ȥ����Ƥ���������
|
|
141
|
+
�Ȥ�ʤ��ʤäơ��פ�̥Х��θ����ˤʤ�ޤ���
|
|
142
|
+
|
|
143
|
+
1.4 C�Υǡ�����VALUE���Ѵ�����
|
|
144
|
+
|
|
145
|
+
VALUE�μºݤι�¤��
|
|
146
|
+
|
|
147
|
+
* FIXNUM��
|
|
148
|
+
|
|
149
|
+
1bit�����եȤ��ơ�LSB��Ω�Ƥ롥
|
|
150
|
+
|
|
151
|
+
* ����¾�Υݥ��ξ��
|
|
152
|
+
|
|
153
|
+
���Τޤ�VALUE�˥��㥹�Ȥ��롥
|
|
154
|
+
|
|
155
|
+
�ȤʤäƤ��ޤ�����äơ�LSB������å������VALUE��FIXNUM����
|
|
156
|
+
�����狼��櫓�Ǥ�(�ݥ���LSB��Ω�äƤ��ʤ����Ȥ��ꤷ��
|
|
157
|
+
����)��
|
|
158
|
+
|
|
159
|
+
�Ǥ����顤FIXNUM�ʳ���Ruby�Υ��֥������Ȥι�¤�Τ�ñ��VALUE
|
|
160
|
+
�˥��㥹�Ȥ��������VALUE���Ѵ�����ޤ�����������Ǥ�դι�¤
|
|
161
|
+
�Τ�VALUE�˥��㥹�Ƚ����櫓�ǤϤ���ޤ����㥹�Ȥ����
|
|
162
|
+
��Ruby���ΤäƤ��빽¤��(ruby.h���������Ƥ���struct RXxxx
|
|
163
|
+
�Τ��)�����Ǥ���
|
|
164
|
+
|
|
165
|
+
FIXNUM�˴ؤ��Ƥ��Ѵ��ޥ������ͳ����ɬ�פ�����ޤ���C������
|
|
166
|
+
����VALUE���Ѵ�����ޥ����ϰʲ��Τ�Τ�����ޤ���ɬ�פ˱���
|
|
167
|
+
�ƻȤ�ʬ���Ƥ���������
|
|
168
|
+
|
|
169
|
+
INT2FIX() ��Ȥ�������31bit����˼��ޤ뼫���������
|
|
170
|
+
INT2NUM() Ǥ�դ���������VALUE��
|
|
171
|
+
|
|
172
|
+
INT2NUM()��������FIXNUM���ϰϤ˼��ޤ�ʤ���硤Bignum���Ѵ�
|
|
173
|
+
���Ƥ���ޤ�(���������٤�)��
|
|
174
|
+
|
|
175
|
+
1.5 Ruby�Υǡ���������
|
|
176
|
+
|
|
177
|
+
������Ҥ٤��̤ꡤRuby�ι�¤�Τ���������������Ƥι�����
|
|
178
|
+
�Ԥ����Ȥϴ�����ޤ��ǡ�Ruby�Υǡ�����������ˤ�
|
|
179
|
+
Ruby���Ѱդ��Ƥ���ؿ����Ѥ��Ƥ���������
|
|
180
|
+
|
|
181
|
+
�����ǤϤ�äȤ�Ȥ���Ǥ�����ʸ��������������/�����
|
|
182
|
+
���ؿ����ޤ�(�����ǤϤʤ��Ǥ�)��
|
|
183
|
+
|
|
184
|
+
ʸ������Ф���ؿ�
|
|
185
|
+
|
|
186
|
+
rb_str_new(const char *ptr, long len)
|
|
187
|
+
|
|
188
|
+
������Ruby��ʸ������������롥
|
|
189
|
+
|
|
190
|
+
rb_str_new2(const char *ptr)
|
|
191
|
+
|
|
192
|
+
C��ʸ����Ruby��ʸ������������롥���δؿ��ε�ǽ��
|
|
193
|
+
rb_str_new(ptr, strlen(ptr))��Ʊ���Ǥ��롥
|
|
194
|
+
|
|
195
|
+
rb_tainted_str_new(const char *ptr, long len)
|
|
196
|
+
|
|
197
|
+
�����ޡ������ղä��줿������Ruby��ʸ������������롥����
|
|
198
|
+
����Υǡ����˴�Ť�ʸ����ˤϱ����ޡ������ղä����٤�
|
|
199
|
+
�Ǥ��롥
|
|
200
|
+
|
|
201
|
+
rb_tainted_str_new2(const char *ptr)
|
|
202
|
+
|
|
203
|
+
C��ʸ��������ޡ������ղä��줿Ruby��ʸ������������롥
|
|
204
|
+
|
|
205
|
+
rb_str_cat(VALUE str, const char *ptr, long len)
|
|
206
|
+
|
|
207
|
+
Ruby��ʸ����str��len�Х��Ȥ�ʸ����ptr���ɲä��롥
|
|
208
|
+
|
|
209
|
+
������Ф���ؿ�
|
|
210
|
+
|
|
211
|
+
rb_ary_new()
|
|
212
|
+
|
|
213
|
+
���Ǥ�0��������������롥
|
|
214
|
+
|
|
215
|
+
rb_ary_new2(long len)
|
|
216
|
+
|
|
217
|
+
���Ǥ�0��������������롥len����ʬ���ΰ�餫������
|
|
218
|
+
���ƤƤ�����
|
|
219
|
+
|
|
220
|
+
rb_ary_new3(long n, ...)
|
|
221
|
+
|
|
222
|
+
�����ǻ��ꤷ��n���Ǥ�ޤ�������������롥
|
|
223
|
+
|
|
224
|
+
rb_ary_new4(long n, VALUE *elts)
|
|
225
|
+
|
|
226
|
+
�����Ϳ����n���Ǥ�������������롥
|
|
227
|
+
|
|
228
|
+
rb_ary_push(VALUE ary, VALUE val)
|
|
229
|
+
rb_ary_pop(VALUE ary)
|
|
230
|
+
rb_ary_shift(VALUE ary)
|
|
231
|
+
rb_ary_unshift(VALUE ary, VALUE val)
|
|
232
|
+
|
|
233
|
+
Array��Ʊ̾�Υ�åɤ�Ʊ��Ư����ؿ�����1������ɬ��
|
|
234
|
+
����Ǥʤ���Фʤ�ʤ���
|
|
235
|
+
|
|
236
|
+
2��Ruby�ε�ǽ��Ȥ�
|
|
237
|
+
|
|
238
|
+
����Ū��Ruby�ǽ뤳�Ȥ�C�Ǥ�ޤ���Ruby���Τ�Τ�C�ǵ�
|
|
239
|
+
�Ҥ���Ƥ����Ǥ����顤�����Ȥ����������ʤ�Ǥ����ɡ�������
|
|
240
|
+
��Ruby�γ�ĥ�˻Ȥ����Ȥ�¿����������ͽ¬����뵡ǽ���濴�˾�
|
|
241
|
+
�𤷤ޤ���
|
|
242
|
+
|
|
243
|
+
2.1 Ruby�˵�ǽ���ɲä���
|
|
244
|
+
|
|
245
|
+
Ruby������Ƥ���ؿ���Ȥ���Ruby���ץ�˿�������ǽ
|
|
246
|
+
���ɲä��뤳�Ȥ��Ǥ��ޤ���Ruby�Ǥϰʲ��ε�ǽ���ɲä���ؿ���
|
|
247
|
+
����Ƥ��ޤ���
|
|
248
|
+
|
|
249
|
+
* ���饹���⥸�塼��
|
|
250
|
+
* ��åɡ��ðۥ�åɤʤ�
|
|
251
|
+
* ���
|
|
252
|
+
|
|
253
|
+
�ǤϽ�˾Ҳ𤷤ޤ���
|
|
254
|
+
|
|
255
|
+
2.1.1 ���饹/�⥸�塼�����
|
|
256
|
+
|
|
257
|
+
���饹��⥸�塼���������뤿��ˤϡ��ʲ��δؿ���Ȥ��ޤ���
|
|
258
|
+
|
|
259
|
+
VALUE rb_define_class(const char *name, VALUE super)
|
|
260
|
+
VALUE rb_define_module(const char *name)
|
|
261
|
+
|
|
262
|
+
�����δؿ��Ͽ�����������줿���饹��⥸�塼����֤��ޤ���
|
|
263
|
+
��åɤ����������ˤ������ͤ�ɬ�פʤΤǡ��ۤȤ�ɤξ��
|
|
264
|
+
������ͤ��ѿ��˳�Ǽ���Ƥ���ɬ�פ�����Ǥ��礦��
|
|
265
|
+
|
|
266
|
+
���饹��⥸�塼���¾�Υ��饹�������˥ͥ��Ȥ�������������
|
|
267
|
+
�ϰʲ��δؿ���Ȥ��ޤ���
|
|
268
|
+
|
|
269
|
+
VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super)
|
|
270
|
+
VALUE rb_define_module_under(VALUE outer, const char *name)
|
|
271
|
+
|
|
272
|
+
2.1.2 ��å�/�ðۥ�å����
|
|
273
|
+
|
|
274
|
+
��åɤ��ðۥ�åɤ��������ˤϰʲ��δؿ���Ȥ��ޤ���
|
|
275
|
+
|
|
276
|
+
void rb_define_method(VALUE klass, const char *name,
|
|
277
|
+
VALUE (*func)(), int argc)
|
|
278
|
+
|
|
279
|
+
void rb_define_singleton_method(VALUE object, const char *name,
|
|
280
|
+
VALUE (*func)(), int argc)
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
ǰ�Τ�����������ȡ��ðۥ�åɡפȤϡ���������Υ��֥�����
|
|
284
|
+
�Ȥ��Ф��Ƥ���ͭ���ʥ�åɤǤ���Ruby�ǤϤ褯Smalltalk�ˤ�
|
|
285
|
+
���륯�饹��åɤȤ��ơ����饹���Ф����ðۥ�åɤ��Ȥ��
|
|
286
|
+
�ޤ���
|
|
287
|
+
|
|
288
|
+
�����δؿ��� argc�Ȥ���������C�δؿ����Ϥ��������ο�(��
|
|
289
|
+
����)����ޤ���argc��0�ʾ�λ��ϴؿ��˰����Ϥ������ο����
|
|
290
|
+
̣���ޤ���16�İʾ�ΰ����ϻȤ��ޤ���(�����פ�ޤ����͡���
|
|
291
|
+
��ʤ�)���ºݤδؿ��ˤ���Ƭ�ΰ����Ȥ���self��Ϳ�����ޤ���
|
|
292
|
+
�ǡ����ꤷ�������1¿����������Ĥ��Ȥˤʤ�ޤ���
|
|
293
|
+
|
|
294
|
+
argc����λ��ϰ����ο��ǤϤʤ�����������ꤷ�����Ȥˤʤ�ޤ���
|
|
295
|
+
argc��-1�λ��ϰ����������������Ϥ���ޤ���argc��-2�λ��ϰ�
|
|
296
|
+
����Ruby������Ȥ����Ϥ���ޤ���
|
|
297
|
+
|
|
298
|
+
��åɤ��������ؿ��Ϥ⤦��Ĥ���ޤ����ҤȤĤ�private��
|
|
299
|
+
���åɤ��������ؿ��ǡ�������rb_define_method()��Ʊ���Ǥ���
|
|
300
|
+
|
|
301
|
+
void rb_define_private_method(VALUE klass, const char *name,
|
|
302
|
+
VALUE (*func)(), int argc)
|
|
303
|
+
|
|
304
|
+
private��åɤȤϴؿ������Ǥ����ƤӽФ����Ȥν���ʤ����
|
|
305
|
+
�ɤǤ���
|
|
306
|
+
|
|
307
|
+
�⤦�ҤȤĤϥ⥸�塼��ؿ�����������ΤǤ����⥸�塼��ؿ�
|
|
308
|
+
�Ȥϥ⥸�塼����ðۥ�åɤǤ��ꡤƱ����private��åɤ�
|
|
309
|
+
�⤢���ΤǤ���������Math�⥸�塼���sqrt()�ʤɤ�����
|
|
310
|
+
���ޤ������Υ�åɤ�
|
|
311
|
+
|
|
312
|
+
Math.sqrt(4)
|
|
313
|
+
|
|
314
|
+
�Ȥ��������Ǥ�
|
|
315
|
+
|
|
316
|
+
include Math
|
|
317
|
+
sqrt(4)
|
|
318
|
+
|
|
319
|
+
�Ȥ��������Ǥ�Ȥ��ޤ����⥸�塼��ؿ����������ؿ��ϰʲ���
|
|
320
|
+
�̤�Ǥ���
|
|
321
|
+
|
|
322
|
+
void rb_define_module_function(VALUE module, const char *name,
|
|
323
|
+
VALUE (*func)(), int argc)
|
|
324
|
+
|
|
325
|
+
�ؿ�Ū��å�(Kernel�⥸�塼���private method)��������뤿
|
|
326
|
+
��δؿ��ϰʲ����̤�Ǥ���
|
|
327
|
+
|
|
328
|
+
void rb_define_global_function(const char *name, VALUE (*func)(), int argc)
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
��åɤ���̾��������뤿��δؿ��ϰʲ����̤�Ǥ���
|
|
332
|
+
|
|
333
|
+
void rb_define_alias(VALUE module, const char* new, const char* old);
|
|
334
|
+
|
|
335
|
+
���饹��å�allocate������������������ꤹ�뤿��δؿ���
|
|
336
|
+
�ʲ����̤�Ǥ���
|
|
337
|
+
|
|
338
|
+
void rb_define_alloc_func(VALUE klass, VALUE (*func)(VALUE klass));
|
|
339
|
+
void rb_undef_alloc_func(VALUE klass);
|
|
340
|
+
|
|
341
|
+
func�ϥ��饹������Ȥ��Ƽ�����äơ�������������Ƥ�줿����
|
|
342
|
+
�������֤��ʤ��ƤϤʤ�ޤ����Υ����ϡ�������
|
|
343
|
+
�������ʤɤ�ޤޤʤ����Ǥ�������ֶ��פΤޤޤˤ��Ƥ������ۤ�
|
|
344
|
+
���褤�Ǥ��礦��
|
|
345
|
+
|
|
346
|
+
2.1.3 ������
|
|
347
|
+
|
|
348
|
+
��ĥ�饤�֥�꤬ɬ�פ�����Ϥ��餫����������Ƥ����������ɤ�
|
|
349
|
+
�Ǥ��礦��������������ؿ�����Ĥ���ޤ���
|
|
350
|
+
|
|
351
|
+
void rb_define_const(VALUE klass, const char *name, VALUE val)
|
|
352
|
+
void rb_define_global_const(const char *name, VALUE val)
|
|
353
|
+
|
|
354
|
+
���Ԥ�����Υ��饹/�⥸�塼���°�����������������Ρ���
|
|
355
|
+
�Ԥϥ������Х���������������ΤǤ���
|
|
356
|
+
|
|
357
|
+
2.2 Ruby�ε�ǽ��C����ƤӽФ�
|
|
358
|
+
|
|
359
|
+
���ˡ�1.5 Ruby�Υǡ���������٤ǰ����Ҳ𤷤��褦�ʴؿ���
|
|
360
|
+
�Ȥ��С�Ruby�ε�ǽ��¸����Ƥ���ؿ���ľ�ܸƤӽФ����Ȥ�����
|
|
361
|
+
�ޤ���
|
|
362
|
+
|
|
363
|
+
# ���Τ褦�ʴؿ��ΰ���ɽ�Ϥ��ޤΤȤ�������ޤ���������
|
|
364
|
+
# �뤷���ʤ��Ǥ��͡�
|
|
365
|
+
|
|
366
|
+
����ʳ��ˤ�Ruby�ε�ǽ��ƤӽФ���ˡ�Ϥ����Ĥ�����ޤ���
|
|
367
|
+
|
|
368
|
+
2.2.1 Ruby�Υץ�������eval����
|
|
369
|
+
|
|
370
|
+
C����Ruby�ε�ǽ��ƤӽФ���äȤ��ñ����ˡ�Ȥ��ơ�ʸ�����
|
|
371
|
+
Ϳ����줿Ruby�Υץ�������ɾ������ʲ��δؿ�������ޤ���
|
|
372
|
+
|
|
373
|
+
VALUE rb_eval_string(const char *str)
|
|
374
|
+
|
|
375
|
+
����ɾ���ϸ��ߤδĶ��ǹԤ��ޤ����Ĥޤꡤ���ߤΥ��������ѿ�
|
|
376
|
+
�ʤɤ�����Ѥ��ޤ���
|
|
377
|
+
|
|
378
|
+
2.2.2 ID�ޤ��ϥ���ܥ�
|
|
379
|
+
|
|
380
|
+
C����ʸ������ͳ������Ruby�Υ�åɤ�ƤӽФ����Ȥ�Ǥ���
|
|
381
|
+
�����������ˡ�Ruby���ץ��ǥ�åɤ��ѿ�̾����ꤹ��
|
|
382
|
+
���˻Ȥ��Ƥ���ID�ˤĤ����������Ƥ����ޤ��礦��
|
|
383
|
+
|
|
384
|
+
ID�Ȥ��ѿ�̾����å�̾��ɽ�������Ǥ���Ruby����Ǥ�
|
|
385
|
+
|
|
386
|
+
:���̻�
|
|
387
|
+
|
|
388
|
+
�ǥ��������Ǥ��ޤ���C���餳�����������뤿��ˤϴؿ�
|
|
389
|
+
|
|
390
|
+
rb_intern(const char *name)
|
|
391
|
+
|
|
392
|
+
��Ȥ��ޤ���Ruby��������Ȥ���Ϳ����줿����ܥ�(�ޤ���ʸ��
|
|
393
|
+
��)��ID���Ѵ�����ˤϰʲ��δؿ���Ȥ��ޤ���
|
|
394
|
+
|
|
395
|
+
rb_to_id(VALUE symbol)
|
|
396
|
+
|
|
397
|
+
2.2.3 C����Ruby�Υ�åɤ�ƤӽФ�
|
|
398
|
+
|
|
399
|
+
C����ʸ������ͳ������Ruby�Υ�åɤ�ƤӽФ�����ˤϰʲ�
|
|
400
|
+
�δؿ���Ȥ��ޤ���
|
|
401
|
+
|
|
402
|
+
VALUE rb_funcall(VALUE recv, ID mid, int argc, ...)
|
|
403
|
+
|
|
404
|
+
���δؿ��ϥ��֥�������recv��mid�ǻ��ꤵ����åɤ�Ƥӽ�
|
|
405
|
+
���ޤ�������¾�˰����λ���λ������㤦�ʲ��δؿ��⤢��ޤ���
|
|
406
|
+
|
|
407
|
+
VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv)
|
|
408
|
+
VALUE rb_apply(VALUE recv, ID mid, VALUE args)
|
|
409
|
+
|
|
410
|
+
apply�ˤϰ����Ȥ���Ruby�������Ϳ���ޤ���
|
|
411
|
+
|
|
412
|
+
2.2.4 �ѿ�/�����/��������
|
|
413
|
+
|
|
414
|
+
C����ؿ���Ȥäƻ��ȡ������Ǥ���Τϡ��������������
|
|
415
|
+
���Ǥ�������ѿ��ϰ����Τ�Τ�C������ѿ��Ȥ��ƥ��������Ǥ�
|
|
416
|
+
�ޤ������������ѿ��Ȥ�����ˡ�ϸ������Ƥ��ޤ���
|
|
417
|
+
|
|
418
|
+
���֥������ȤΥ������ѿ��ȡ���������ؿ��ϰʲ�����
|
|
419
|
+
��Ǥ���
|
|
420
|
+
|
|
421
|
+
VALUE rb_ivar_get(VALUE obj, ID id)
|
|
422
|
+
VALUE rb_ivar_set(VALUE obj, ID id, VALUE val)
|
|
423
|
+
|
|
424
|
+
id��rb_intern()���������Τ�ȤäƤ���������
|
|
425
|
+
|
|
426
|
+
����Ȥ���ˤϰʲ��δؿ���ȤäƤ���������
|
|
427
|
+
|
|
428
|
+
VALUE rb_const_get(VALUE obj, ID id)
|
|
429
|
+
|
|
430
|
+
�������������뤿��ˤϡ�2.1.3 �������٤ǾҲ�
|
|
431
|
+
��Ƥ���ؿ���ȤäƤ���������
|
|
432
|
+
|
|
433
|
+
3��Ruby��C�Ȥξ���ͭ
|
|
434
|
+
|
|
435
|
+
C�����Ruby�δ֤Ǿ����ͭ������ˡ�ˤĤ��Ʋ��⤷�ޤ���
|
|
436
|
+
|
|
437
|
+
3.1 C���黲�ȤǤ���Ruby�����
|
|
438
|
+
|
|
439
|
+
�ʲ���Ruby�������C�Υ�٥뤫�黲�ȤǤ��ޤ���
|
|
440
|
+
|
|
441
|
+
Qtrue
|
|
442
|
+
Qfalse
|
|
443
|
+
|
|
444
|
+
�����͡�Qfalse��C����Ǥ�Ȥߤʤ���ޤ�(�Ĥޤ�0)��
|
|
445
|
+
|
|
446
|
+
Qnil
|
|
447
|
+
|
|
448
|
+
C���줫�鸫����nil�ס�
|
|
449
|
+
|
|
450
|
+
3.2 C��Ruby�Ƕ�ͭ���������ѿ�
|
|
451
|
+
|
|
452
|
+
C��Ruby������ѿ���Ȥäƾ����ͭ�Ǥ��ޤ�����ͭ�Ǥ������
|
|
453
|
+
�ѿ��ˤϤ����Ĥ��μ��ब����ޤ������Τʤ��Ǥ�äȤ��ɤ��Ȥ�
|
|
454
|
+
���Ȼפ���Τ�rb_define_variable()�Ǥ���
|
|
455
|
+
|
|
456
|
+
void rb_define_variable(const char *name, VALUE *var)
|
|
457
|
+
|
|
458
|
+
���δؿ���Ruby��C�ȤǶ�ͭ��������ѿ���������ޤ����ѿ�̾��
|
|
459
|
+
`$'�ǻϤޤ�ʤ����ˤϼ�ưŪ���ɲä���ޤ��������ѿ����ͤ���
|
|
460
|
+
������ȼ�ưŪ��Ruby���б������ѿ����ͤ��Ѥ��ޤ���
|
|
461
|
+
|
|
462
|
+
�ޤ�Ruby¦����Ϲ����Ǥ��ʤ��ѿ��⤢��ޤ�������read only��
|
|
463
|
+
�ѿ��ϰʲ��δؿ���������ޤ���
|
|
464
|
+
|
|
465
|
+
void rb_define_readonly_variable(const char *name, VALUE *var)
|
|
466
|
+
|
|
467
|
+
������ѿ���¾��hook��Ĥ�������ѿ�������Ǥ��ޤ���hook�դ�
|
|
468
|
+
������ѿ��ϰʲ��δؿ����Ѥ���������ޤ���hook�դ�����ѿ���
|
|
469
|
+
�ͤλ��Ȥ������hook�ǹԤ�ɬ�פ�����ޤ���
|
|
470
|
+
|
|
471
|
+
void rb_define_hooked_variable(const char *name, VALUE *var,
|
|
472
|
+
VALUE (*getter)(), void (*setter)())
|
|
473
|
+
|
|
474
|
+
���δؿ���C�δؿ��ˤ�ä�hook�ΤĤ���줿����ѿ����������
|
|
475
|
+
�����ѿ������Ȥ��줿���ˤϴؿ�getter�����ѿ����ͤ����åȤ���
|
|
476
|
+
�����ˤϴؿ�setter���ƤФ�롥hook����ꤷ�ʤ�����getter��
|
|
477
|
+
setter��0����ꤷ�ޤ���
|
|
478
|
+
|
|
479
|
+
# getter��setter��0�ʤ��rb_define_variable()��Ʊ���ˤʤ롥
|
|
480
|
+
|
|
481
|
+
���줫�顤C�δؿ��ˤ�äƼ¸������Ruby������ѿ����������
|
|
482
|
+
�ؿ�������ޤ���
|
|
483
|
+
|
|
484
|
+
void rb_define_virtual_variable(const char *name,
|
|
485
|
+
VALUE (*getter)(), void (*setter)())
|
|
486
|
+
|
|
487
|
+
���δؿ��ˤ�ä�������줿Ruby������ѿ������Ȥ��줿���ˤ�
|
|
488
|
+
getter�����ѿ����ͤ����åȤ��줿���ˤ�setter���ƤФ�ޤ���
|
|
489
|
+
|
|
490
|
+
getter��setter�λ��ͤϰʲ����̤�Ǥ���
|
|
491
|
+
|
|
492
|
+
(*getter)(ID id, void *data, struct global_entry* entry);
|
|
493
|
+
(*setter)(VALUE val, ID id, void *data, struct global_entry* entry);
|
|
494
|
+
|
|
495
|
+
3.3 C�Υǡ�����Ruby���֥������Ȥˤ���
|
|
496
|
+
|
|
497
|
+
C��������������줿�ǡ���(��¤��)��Ruby�Υ��֥������ȤȤ���
|
|
498
|
+
��갷��������礬���ꤨ�ޤ������Τ褦�ʾ��ˤϡ�Data�Ȥ���
|
|
499
|
+
Ruby���֥������Ȥ�C�ι�¤��(�ؤΥݥ���)��ळ�Ȥ�Ruby
|
|
500
|
+
���֥������ȤȤ��Ƽ�갷����褦�ˤʤ�ޤ���
|
|
501
|
+
|
|
502
|
+
Data���֥������Ȥ��������ƹ�¤�Τ�Ruby���֥������Ȥ˥��ץ���
|
|
503
|
+
�����뤿��ˤϡ��ʲ��Υޥ�����Ȥ��ޤ���
|
|
504
|
+
|
|
505
|
+
Data_Wrap_Struct(klass, mark, free, ptr)
|
|
506
|
+
|
|
507
|
+
���Υޥ���������ͤ��������줿Data���֥������ȤǤ���
|
|
508
|
+
|
|
509
|
+
klass�Ϥ���Data���֥������ȤΥ��饹�Ǥ���ptr�ϥ��ץ��벽����
|
|
510
|
+
C�ι�¤�ΤؤΥݥ��Ǥ���mark�Ϥ��ι�¤�Τ�Ruby�Υ��֥���
|
|
511
|
+
���Ȥؤλ��Ȥ�������˻Ȥ��ؿ��Ǥ������Τ褦�ʻ��Ȥ�ޤޤʤ�
|
|
512
|
+
���ˤ�0����ꤷ�ޤ���
|
|
513
|
+
|
|
514
|
+
# ���Τ褦�ʻ��Ȥϴ�����ޤ���
|
|
515
|
+
|
|
516
|
+
free�Ϥ��ι�¤�Τ��⤦���פˤʤä����˸ƤФ��ؿ��Ǥ�������
|
|
517
|
+
�ؿ��������١������쥯������ƤФ�ޤ������줬-1�ξ��ϡ�ñ
|
|
518
|
+
��˳�������ޤ���
|
|
519
|
+
|
|
520
|
+
C�ι�¤�Τγ�����Data���֥������Ȥ�������Ʊ���˹Ԥ��ޥ�����
|
|
521
|
+
���ưʲ��Τ�Τ�����Ƥ��ޤ���
|
|
522
|
+
|
|
523
|
+
Data_Make_Struct(klass, type, mark, free, sval)
|
|
524
|
+
|
|
525
|
+
���Υޥ���������ͤ��������줿Data���֥������ȤǤ���
|
|
526
|
+
|
|
527
|
+
klass, mark, free��Data_Wrap_Struct��Ʊ��Ư���ޤ���type
|
|
528
|
+
�ϳ�����Ƥ�C��¤�Τη��Ǥ���������Ƥ�줿��¤�Τ��ѿ�sval
|
|
529
|
+
����������ޤ��������ѿ��η��� (type*) �Ǥ���ɬ�פ�����ޤ���
|
|
530
|
+
|
|
531
|
+
Data���֥������Ȥ���ݥ�����Ф��Τϰʲ��Υޥ������Ѥ�
|
|
532
|
+
�ޤ���
|
|
533
|
+
|
|
534
|
+
Data_Get_Struct(obj, type, sval)
|
|
535
|
+
|
|
536
|
+
C�ι�¤�ΤؤΥݥ����ѿ�sval����������ޤ���
|
|
537
|
+
|
|
538
|
+
������Data�λȤ����Ϥ���ä�ʬ����ˤ����Τǡ������������
|
|
539
|
+
����Ȥ��Ƥ���������
|
|
540
|
+
|
|
541
|
+
4������ - dbm�ѥå���������
|
|
542
|
+
|
|
543
|
+
�����ޤǤ������ǤȤꤢ������ĥ�饤�֥��Ϻ���Ϥ��Ǥ���
|
|
544
|
+
Ruby��ext�ǥ��쥯�ȥ�ˤ��Ǥ˴ޤޤ�Ƥ���dbm�饤�֥������
|
|
545
|
+
�����ʳ�Ū���������ޤ���
|
|
546
|
+
|
|
547
|
+
(1) �ǥ��쥯�ȥ����
|
|
548
|
+
|
|
549
|
+
% mkdir ext/dbm
|
|
550
|
+
|
|
551
|
+
Ruby 1.1�����Ǥ�դΥǥ��쥯�ȥ�ǥ����ʥߥå��饤�֥����
|
|
552
|
+
�뤳�Ȥ��Ǥ���褦�ˤʤ�ޤ�����Ruby����Ū�˥�������
|
|
553
|
+
��Ruby��Ÿ�������ǥ��쥯�ȥ�β���ext�ǥ��쥯�ȥ����˳�ĥ
|
|
554
|
+
�饤�֥���ѤΥǥ��쥯�ȥ����ɬ�פ�����ޤ���̾����Ŭ����
|
|
555
|
+
����ǹ����ޤ���
|
|
556
|
+
|
|
557
|
+
(2) �߷פ���
|
|
558
|
+
|
|
559
|
+
�ޤ��������ʤ�Ǥ����ɡ��ɤ�������ǽ��¸����뤫�ɤ����ޤ���
|
|
560
|
+
�פ���ɬ�פ�����ޤ����ɤ�ʥ��饹��Ĥ��뤫�����Υ��饹�ˤ�
|
|
561
|
+
�ɤ�ʥ�åɤ����뤫�����饹����������ʤɤˤĤ����߷�
|
|
562
|
+
���ޤ���
|
|
563
|
+
|
|
564
|
+
(3) C�����ɤ��
|
|
565
|
+
|
|
566
|
+
��ĥ�饤�֥�����ΤȤʤ�C����Υ�������ޤ���C����Υ���
|
|
567
|
+
�����ҤȤĤλ��ˤϡ֥饤�֥��̾.c�פ����֤��ɤ��Ǥ��礦��C
|
|
568
|
+
����Υ�������ʣ���ξ��ˤϵդˡ֥饤�֥��̾.c�פȤ����ե�
|
|
569
|
+
����̾����ɬ�פ�����ޤ������֥������ȥե�����ȥ⥸�塼
|
|
570
|
+
�������������Ū�����������֥饤�֥��̾.o�פȤ����ե�����
|
|
571
|
+
�Ȥ����ͤ��뤫��Ǥ���
|
|
572
|
+
|
|
573
|
+
Ruby�ϳ�ĥ�饤�֥�������ɤ�����ˡ�Init_�饤�֥��̾�פ�
|
|
574
|
+
�����ؿ���ưŪ�˼¹Ԥ��ޤ���dbm�饤�֥��ξ���Init_dbm��
|
|
575
|
+
�Ǥ������δؿ�����ǥ��饹���⥸�塼�롤��åɡ�����ʤɤ�
|
|
576
|
+
�����Ԥ��ޤ���dbm.c����������Ѥ��ޤ���
|
|
577
|
+
|
|
578
|
+
--
|
|
579
|
+
Init_dbm()
|
|
580
|
+
{
|
|
581
|
+
/* DBM���饹��������� */
|
|
582
|
+
cDBM = rb_define_class("DBM", rb_cObject);
|
|
583
|
+
/* DBM��Enumerate�⥸�塼��롼�ɤ��� */
|
|
584
|
+
rb_include_module(cDBM, rb_mEnumerable);
|
|
585
|
+
|
|
586
|
+
/* DBM���饹�Υ��饹��å�open(): ������C������Ǽ����� */
|
|
587
|
+
rb_define_singleton_method(cDBM, "open", fdbm_s_open, -1);
|
|
588
|
+
|
|
589
|
+
/* DBM���饹�Υ�å�close(): �����Ϥʤ� */
|
|
590
|
+
rb_define_method(cDBM, "close", fdbm_close, 0);
|
|
591
|
+
/* DBM���饹�Υ�å�[]: ������1�� */
|
|
592
|
+
rb_define_method(cDBM, "[]", fdbm_fetch, 1);
|
|
593
|
+
:
|
|
594
|
+
|
|
595
|
+
/* DBM�ǡ������Ǽ���륤�����ѿ�̾�Τ����ID */
|
|
596
|
+
id_dbm = rb_intern("dbm");
|
|
597
|
+
}
|
|
598
|
+
--
|
|
599
|
+
|
|
600
|
+
DBM�饤�֥���dbm�Υǡ������б����륪�֥������Ȥˤʤ�Ϥ���
|
|
601
|
+
�����顤C��������dbm��Ruby�������˼�����ɬ�פ�����ޤ���
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
dbm.c�Ǥ�Data_Make_Struct��ʲ��Τ褦�˻ȤäƤ��ޤ���
|
|
605
|
+
|
|
606
|
+
--
|
|
607
|
+
struct dbmdata {
|
|
608
|
+
int di_size;
|
|
609
|
+
DBM *di_dbm;
|
|
610
|
+
};
|
|
611
|
+
|
|
612
|
+
|
|
613
|
+
obj = Data_Make_Struct(klass, struct dbmdata, 0, free_dbm, dbmp);
|
|
614
|
+
--
|
|
615
|
+
|
|
616
|
+
�����Ǥ�dbmstruct��¤�ΤؤΥݥ���Data�˥��ץ��벽���Ƥ�
|
|
617
|
+
�ޤ���DBM*��ľ�ܥ��ץ��벽���ʤ��Τ�close()�������ν������
|
|
618
|
+
���ƤΤ��ȤǤ���
|
|
619
|
+
|
|
620
|
+
Data���֥������Ȥ���dbmstruct��¤�ΤΥݥ�����Ф�����
|
|
621
|
+
�˰ʲ��Υޥ�����ȤäƤ��ޤ���
|
|
622
|
+
|
|
623
|
+
--
|
|
624
|
+
#define GetDBM(obj, dbmp) {\
|
|
625
|
+
Data_Get_Struct(obj, struct dbmdata, dbmp);\
|
|
626
|
+
if (dbmp->di_dbm == 0) closed_dbm();\
|
|
627
|
+
}
|
|
628
|
+
--
|
|
629
|
+
|
|
630
|
+
����ä�ʣ���ʥޥ����Ǥ������פ����dbmdata��¤�ΤΥݥ���
|
|
631
|
+
�μ��Ф��ȡ�close����Ƥ��뤫�ɤ����Υ����å���ޤȤ�Ƥ�
|
|
632
|
+
������Ǥ���
|
|
633
|
+
|
|
634
|
+
DBM���饹�ˤϤ��������åɤ�����ޤ�����ʬ�ह���3�����
|
|
635
|
+
�����μ�����������ޤ����ҤȤĤϰ����ο�������Τ�Τǡ����
|
|
636
|
+
���Ƥ�delete��åɤ�����ޤ���delete��åɤ�������Ƥ���
|
|
637
|
+
fdbm_delete()�Ϥ��Τ褦�ˤʤäƤ��ޤ���
|
|
638
|
+
|
|
639
|
+
--
|
|
640
|
+
static VALUE
|
|
641
|
+
fdbm_delete(obj, keystr)
|
|
642
|
+
VALUE obj, keystr;
|
|
643
|
+
{
|
|
644
|
+
:
|
|
645
|
+
}
|
|
646
|
+
--
|
|
647
|
+
|
|
648
|
+
�����ο�������Υ����פ���1������self����2�����ʹߤ���å�
|
|
649
|
+
�ΰ����Ȥʤ�ޤ���
|
|
650
|
+
|
|
651
|
+
�����ο�������Τ�Τ�C������Ǽ������Τ�Ruby������Ǽ���
|
|
652
|
+
���ΤȤ�����ޤ���dbm�饤�֥�����ǡ�C������Ǽ�������
|
|
653
|
+
��DBM�Υ��饹��åɤǤ���open()�Ǥ��������������Ƥ����
|
|
654
|
+
��fdbm_s_open()�Ϥ����ʤäƤ��ޤ���
|
|
655
|
+
|
|
656
|
+
--
|
|
657
|
+
static VALUE
|
|
658
|
+
fdbm_s_open(argc, argv, klass)
|
|
659
|
+
int argc;
|
|
660
|
+
VALUE *argv;
|
|
661
|
+
VALUE klass;
|
|
662
|
+
{
|
|
663
|
+
:
|
|
664
|
+
if (rb_scan_args(argc, argv, "11", &file, &vmode) == 1) {
|
|
665
|
+
mode = 0666; /* default value */
|
|
666
|
+
}
|
|
667
|
+
:
|
|
668
|
+
}
|
|
669
|
+
--
|
|
670
|
+
|
|
671
|
+
���Υ����פδؿ�����1������Ϳ����줿�����ο�����2������Ϳ��
|
|
672
|
+
��줿���������äƤ�������ˤʤ�ޤ���self����3�����Ȥ���Ϳ
|
|
673
|
+
�����ޤ���
|
|
674
|
+
|
|
675
|
+
���������Ϳ����줿��������Ϥ��뤿��δؿ���open()�Ǥ�Ȥ�
|
|
676
|
+
��Ƥ���rb_scan_args()�Ǥ�����3�����˻��ꤷ���ե����ޥåȤ�
|
|
677
|
+
��������4�ѿ��ʹߤ˻��ꤷ���ѿ����ͤ��������Ƥ���ޤ�������
|
|
678
|
+
�ե����ޥåȤϡ���1ʸ���ܤ���ά�Ǥ��ʤ������ο�����2ʸ���ܤ�
|
|
679
|
+
��ά�Ǥ�������ο�����3ʸ���ܤ��б�������̵꤬�����ޤ�ΰ�
|
|
680
|
+
�������뤫�ɤ�����"*"�Ǥ���2ʸ���ܤ�3ʸ���ܤϾ�ά�Ǥ���
|
|
681
|
+
����dbm.c����Ǥϡ��ե����ޥåȤ�"11"�Ǥ����顤�����Ϻ���1��
|
|
682
|
+
�ǡ�2�Ĥޤǵ������Ȥ�����̣�ˤʤ�ޤ�����ά����Ƥ������
|
|
683
|
+
�ѿ����ͤ�nil(C����Υ�٥�Ǥ�Qnil)�ˤʤ�ޤ���
|
|
684
|
+
|
|
685
|
+
Ruby������ǰ������������Τ�indexes������ޤ��������Ϥ�
|
|
686
|
+
���Ǥ���
|
|
687
|
+
|
|
688
|
+
--
|
|
689
|
+
static VALUE
|
|
690
|
+
fdbm_indexes(obj, args)
|
|
691
|
+
VALUE obj, args;
|
|
692
|
+
{
|
|
693
|
+
:
|
|
694
|
+
}
|
|
695
|
+
--
|
|
696
|
+
|
|
697
|
+
��1������self����2������Ruby������Ǥ���
|
|
698
|
+
|
|
699
|
+
** ���ջ���
|
|
700
|
+
|
|
701
|
+
Ruby�ȶ�ͭ�Ϥ��ʤ���Ruby�Υ��֥������Ȥ��Ǽ�����ǽ���Τ���
|
|
702
|
+
C������ѿ��ϰʲ��δؿ���Ȥä�Ruby���ץ���ѿ���¸��
|
|
703
|
+
���Ƥ����Ƥ����������Ǥʤ���GC�ǥȥ�֥�����ޤ���
|
|
704
|
+
|
|
705
|
+
void rb_global_variable(VALUE *var)
|
|
706
|
+
|
|
707
|
+
(4) extconf.rb���Ѱդ���
|
|
708
|
+
|
|
709
|
+
Makefile������ο����ˤʤ�extconf.rb�Ȥ����ե��������
|
|
710
|
+
�ޤ���extconf.rb�ϥ饤�֥��Υ���ѥ����ɬ�פʾ��Υ�����
|
|
711
|
+
���ʤɤ�Ԥ����Ȥ���Ū�Ǥ����ޤ���
|
|
712
|
+
|
|
713
|
+
require 'mkmf'
|
|
714
|
+
|
|
715
|
+
��extconf.rb����Ƭ���֤��ޤ���extconf.rb����Ǥϰʲ���Ruby��
|
|
716
|
+
����Ȥ����Ȥ�����ޤ���
|
|
717
|
+
|
|
718
|
+
have_library(lib, func): �饤�֥���¸�ߥ����å�
|
|
719
|
+
have_func(func, header): �ؿ���¸�ߥ����å�
|
|
720
|
+
have_header(header): �إå��ե������¸�ߥ����å�
|
|
721
|
+
create_makefile(target): Makefile������
|
|
722
|
+
|
|
723
|
+
�ʲ����ѿ���Ȥ����Ȥ��Ǥ��ޤ���
|
|
724
|
+
|
|
725
|
+
$CFLAGS: ����ѥ�������ɲ�Ū�˻��ꤹ��ե饰(-O�ʤ�)
|
|
726
|
+
$CPPFLAGS: �ץ�ץ����å����ɲ�Ū�˻��ꤹ��ե饰(-I��-D�ʤ�)
|
|
727
|
+
$LDFLAGS: ������ɲ�Ū�˻��ꤹ��ե饰(-L�ʤ�)
|
|
728
|
+
$objs: �����륪�֥������ȥե�����̾�Υꥹ��
|
|
729
|
+
|
|
730
|
+
���֥������ȥե�����Υꥹ�Ȥϡ��̾�ϥ������ե��������
|
|
731
|
+
�Ƽ�ưŪ����������ޤ�����make������ǥ���������������褦��
|
|
732
|
+
��������Ū�˻��ꤹ��ɬ�פ�����ޤ���
|
|
733
|
+
|
|
734
|
+
�饤�֥���ѥ��뤹���郎·�鷺�����Υ饤�֥���
|
|
735
|
+
�ѥ��뤷�ʤ����ˤ�create_makefile��ƤФʤ����Makefile����
|
|
736
|
+
�����줺������ѥ����Ԥ��ޤ���
|
|
737
|
+
|
|
738
|
+
(5) depend���Ѱդ���
|
|
739
|
+
|
|
740
|
+
�⤷���ǥ��쥯�ȥ��depend�Ȥ����ե����뤬¸�ߤ���С�
|
|
741
|
+
Makefile����¸�ط�������å����Ƥ���ޤ���
|
|
742
|
+
|
|
743
|
+
% gcc -MM *.c > depend
|
|
744
|
+
|
|
745
|
+
�ʤɤǺ�뤳�Ȥ�����ޤ������ä�»��̵���Ǥ��礦��
|
|
746
|
+
|
|
747
|
+
(6) Makefile����������
|
|
748
|
+
|
|
749
|
+
Makefile��ºݤ��������뤿��ˤ�
|
|
750
|
+
|
|
751
|
+
ruby extconf.rb
|
|
752
|
+
|
|
753
|
+
�Ȥ��ޤ���extconf.rb�� require 'mkmf' �ιԤ��ʤ����ˤϥ��顼
|
|
754
|
+
�ˤʤ�ޤ��Τǡ��������ɲä���
|
|
755
|
+
|
|
756
|
+
ruby -r mkmf extconf.rb
|
|
757
|
+
|
|
758
|
+
�Ȥ��Ƥ���������
|
|
759
|
+
|
|
760
|
+
�ǥ��쥯�ȥ��ext�ʲ����Ѱդ������ˤ�Ruby���Τ�make�λ���
|
|
761
|
+
��ưŪ��Makefile����������ޤ��Τǡ����Υ��ƥåפ����פǤ���
|
|
762
|
+
|
|
763
|
+
(7) make����
|
|
764
|
+
|
|
765
|
+
ưŪ��饤�֥�������������ˤϤ��ξ��make���Ƥ�����
|
|
766
|
+
����ɬ�פǤ���� make install �ǥ��ȡ��뤵��ޤ���
|
|
767
|
+
|
|
768
|
+
ext�ʲ��˥ǥ��쥯�ȥ���Ѱդ������ϡ�Ruby�Υǥ��쥯�ȥ��
|
|
769
|
+
make��¹Ԥ����Makefile����������make��ɬ�פˤ�äƤϤ��Υ�
|
|
770
|
+
���塼���Ruby�ؤΥ�ޤǼ�ưŪ�˼¹Ԥ��Ƥ���ޤ���
|
|
771
|
+
extconf.rb�������ʤɤ���Makefile�κ�������ɬ�פʻ��Ϥ�
|
|
772
|
+
��Ruby�ǥ��쥯�ȥ��make���Ƥ���������
|
|
773
|
+
|
|
774
|
+
��ĥ�饤�֥���make install��Ruby�饤�֥��Υǥ��쥯�ȥ��
|
|
775
|
+
���˥��ԡ�����ޤ����⤷��ĥ�饤�֥��ȶ�Ĵ���ƻȤ�Ruby�ǵ�
|
|
776
|
+
�Ҥ��줿�ץ�����ब���ꡤRuby�饤�֥����֤��������ˤϡ�
|
|
777
|
+
��ĥ�饤�֥���ѤΥǥ��쥯�ȥ�β��� lib �Ȥ����ǥ��쥯�ȥ�
|
|
778
|
+
���ꡤ������ ��ĥ�� .rb �Υե�������֤��Ƥ�����Ʊ���˥���
|
|
779
|
+
���ȡ��뤵��ޤ���
|
|
780
|
+
|
|
781
|
+
(8) �ǥХå�
|
|
782
|
+
|
|
783
|
+
�ޤ����ǥХå����ʤ���ư���ʤ��Ǥ��礦�͡�ext/Setup�˥ǥ���
|
|
784
|
+
���ȥ�̾�����Ū�˥����ΤǥǥХå����Ȥ���褦�ˤ�
|
|
785
|
+
��ޤ�������ʬ����ѥ��뤬�٤��ʤ�ޤ����ɡ�
|
|
786
|
+
|
|
787
|
+
(9) �Ǥ�������
|
|
788
|
+
|
|
789
|
+
��Ϥ��ä���Ȥ��ʤꡤ������������ʤꡤ���ʤꡤ����ͳ�ˤ�
|
|
790
|
+
�Ȥ�����������Ruby�κ�Ԥϳ�ĥ�饤�֥��˴ؤ��ư��ڤθ�����
|
|
791
|
+
��ĥ���ޤ���
|
|
792
|
+
|
|
793
|
+
Appendix A. Ruby�Υ����������ɤ�ʬ��
|
|
794
|
+
|
|
795
|
+
Ruby�Υ������Ϥ����Ĥ���ʬ�ह�뤳�Ȥ�����ޤ������Τ�������
|
|
796
|
+
���饤�֥�����ʬ�ϴ���Ū�˳�ĥ�饤�֥���Ʊ��������ˤʤ�
|
|
797
|
+
�Ƥ��ޤ��������Υ������Ϻ��ޤǤ������ǤۤȤ������Ǥ����
|
|
798
|
+
�פ��ޤ���
|
|
799
|
+
|
|
800
|
+
Ruby�������
|
|
801
|
+
|
|
802
|
+
class.c
|
|
803
|
+
error.c
|
|
804
|
+
eval.c
|
|
805
|
+
gc.c
|
|
806
|
+
object.c
|
|
807
|
+
parse.y
|
|
808
|
+
variable.c
|
|
809
|
+
|
|
810
|
+
�桼�ƥ���ƥ��ؿ�
|
|
811
|
+
|
|
812
|
+
dln.c
|
|
813
|
+
regex.c
|
|
814
|
+
st.c
|
|
815
|
+
util.c
|
|
816
|
+
|
|
817
|
+
Ruby���ޥ�ɤμ���
|
|
818
|
+
|
|
819
|
+
dmyext.c
|
|
820
|
+
inits.c
|
|
821
|
+
main.c
|
|
822
|
+
ruby.c
|
|
823
|
+
version.c
|
|
824
|
+
|
|
825
|
+
���饹�饤�֥��
|
|
826
|
+
|
|
827
|
+
array.c
|
|
828
|
+
bignum.c
|
|
829
|
+
compar.c
|
|
830
|
+
dir.c
|
|
831
|
+
enum.c
|
|
832
|
+
file.c
|
|
833
|
+
hash.c
|
|
834
|
+
io.c
|
|
835
|
+
marshal.c
|
|
836
|
+
math.c
|
|
837
|
+
numeric.c
|
|
838
|
+
pack.c
|
|
839
|
+
prec.c
|
|
840
|
+
process.c
|
|
841
|
+
random.c
|
|
842
|
+
range.c
|
|
843
|
+
re.c
|
|
844
|
+
signal.c
|
|
845
|
+
sprintf.c
|
|
846
|
+
string.c
|
|
847
|
+
struct.c
|
|
848
|
+
time.c
|
|
849
|
+
|
|
850
|
+
Appendix B. ��ĥ�Ѵؿ���ե����
|
|
851
|
+
|
|
852
|
+
C���줫��Ruby�ε�ǽ�����Ѥ���API�ϰʲ����̤�Ǥ��롥
|
|
853
|
+
|
|
854
|
+
** ��
|
|
855
|
+
|
|
856
|
+
VALUE
|
|
857
|
+
|
|
858
|
+
Ruby���֥������Ȥ�ɽ�����뷿��ɬ�פ˱����ƥ��㥹�Ȥ����Ѥ��롥
|
|
859
|
+
�Ȥ߹��߷���ɽ������C�η���ruby.h�˵��Ҥ��Ƥ���R�ǻϤޤ빽¤
|
|
860
|
+
�ΤǤ��롥VALUE�����˥��㥹�Ȥ��뤿���R�ǻϤޤ빽¤��
|
|
861
|
+
̾��������ʸ���ˤ���̾���Υޥ������Ѱդ���Ƥ��롥
|
|
862
|
+
|
|
863
|
+
** �ѿ������
|
|
864
|
+
|
|
865
|
+
Qnil
|
|
866
|
+
|
|
867
|
+
���: nil���֥�������
|
|
868
|
+
|
|
869
|
+
Qtrue
|
|
870
|
+
|
|
871
|
+
���: true���֥�������(���Υǥե������)
|
|
872
|
+
|
|
873
|
+
Qfalse
|
|
874
|
+
|
|
875
|
+
���: false���֥�������
|
|
876
|
+
|
|
877
|
+
** C�ǡ����Υ��ץ��벽
|
|
878
|
+
|
|
879
|
+
Data_Wrap_Struct(VALUE klass, void (*mark)(), void (*free)(), void *sval)
|
|
880
|
+
|
|
881
|
+
C��Ǥ�դΥݥ��ץ��벽����Ruby���֥������Ȥ��֤�����
|
|
882
|
+
�Υݥ���Ruby���饢����������ʤ��ʤä�����free�ǻ��ꤷ��
|
|
883
|
+
�ؿ����ƤФ�롥�ޤ������Υݥ��λؤ��ǡ�����¾��Ruby����
|
|
884
|
+
�������Ȥ�ؤ��Ƥ����硤mark�˻��ꤹ��ؿ��ǥޡ�������ɬ��
|
|
885
|
+
�����롥
|
|
886
|
+
|
|
887
|
+
Data_Make_Struct(klass, type, mark, free, sval)
|
|
888
|
+
|
|
889
|
+
type���Υ����malloc�����ѿ�sval�����������塤����ץ�
|
|
890
|
+
�벽�����ǡ������֤��ޥ�����
|
|
891
|
+
|
|
892
|
+
Data_Get_Struct(data, type, sval)
|
|
893
|
+
|
|
894
|
+
data����type���Υݥ�����Ф��ѿ�sval����������ޥ�����
|
|
895
|
+
|
|
896
|
+
** �������å�
|
|
897
|
+
|
|
898
|
+
TYPE(value)
|
|
899
|
+
FIXNUM_P(value)
|
|
900
|
+
NIL_P(value)
|
|
901
|
+
void Check_Type(VALUE value, int type)
|
|
902
|
+
void Check_SafeStr(VALUE value)
|
|
903
|
+
|
|
904
|
+
** ���Ѵ�
|
|
905
|
+
|
|
906
|
+
FIX2INT(value)
|
|
907
|
+
INT2FIX(i)
|
|
908
|
+
NUM2INT(value)
|
|
909
|
+
INT2NUM(i)
|
|
910
|
+
NUM2DBL(value)
|
|
911
|
+
rb_float_new(f)
|
|
912
|
+
StringValue(value)
|
|
913
|
+
StringValuePtr(value)
|
|
914
|
+
StringValueCStr(value)
|
|
915
|
+
rb_str_new2(s)
|
|
916
|
+
|
|
917
|
+
** ���饹/�⥸�塼�����
|
|
918
|
+
|
|
919
|
+
VALUE rb_define_class(const char *name, VALUE super)
|
|
920
|
+
|
|
921
|
+
super�Υ��֥��饹�Ȥ��ƿ�����Ruby���饹��������롥
|
|
922
|
+
|
|
923
|
+
VALUE rb_define_class_under(VALUE module, const char *name, VALUE super)
|
|
924
|
+
|
|
925
|
+
super�Υ��֥��饹�Ȥ��ƿ�����Ruby���饹���������module��
|
|
926
|
+
����Ȥ���������롥
|
|
927
|
+
|
|
928
|
+
VALUE rb_define_module(const char *name)
|
|
929
|
+
|
|
930
|
+
������Ruby�⥸�塼���������롥
|
|
931
|
+
|
|
932
|
+
VALUE rb_define_module_under(VALUE module, const char *name)
|
|
933
|
+
|
|
934
|
+
������Ruby�⥸�塼����������module������Ȥ���������롥
|
|
935
|
+
|
|
936
|
+
void rb_include_module(VALUE klass, VALUE module)
|
|
937
|
+
|
|
938
|
+
�⥸�塼��롼�ɤ��롥class�����Ǥ�module��
|
|
939
|
+
�롼�ɤ��Ƥ�����ˤϲ��⤷�ʤ�(¿�ť��롼�ɤζػ�)��
|
|
940
|
+
|
|
941
|
+
void rb_extend_object(VALUE object, VALUE module)
|
|
942
|
+
|
|
943
|
+
���֥������Ȥ�⥸�塼��(���������Ƥ����å�)�dz�ĥ���롥
|
|
944
|
+
|
|
945
|
+
** ����ѿ����
|
|
946
|
+
|
|
947
|
+
void rb_define_variable(const char *name, VALUE *var)
|
|
948
|
+
|
|
949
|
+
Ruby��C�ȤǶ�ͭ���륰�����Х��ѿ���������롥�ѿ�̾��`$'��
|
|
950
|
+
�Ϥޤ�ʤ����ˤϼ�ưŪ���ɲä���롥name�Ȥ���Ruby�μ��̻�
|
|
951
|
+
�Ȥ��Ƶ�����ʤ�ʸ��(�㤨��` ')��ޤ���ˤ�Ruby�ץ�����
|
|
952
|
+
�फ��ϸ����ʤ��ʤ롥
|
|
953
|
+
|
|
954
|
+
void rb_define_readonly_variable(const char *name, VALUE *var)
|
|
955
|
+
|
|
956
|
+
Ruby��C�ȤǶ�ͭ����read only�Υ������Х��ѿ���������롥
|
|
957
|
+
read only�Ǥ��뤳�Ȱʳ���rb_define_variable()��Ʊ����
|
|
958
|
+
|
|
959
|
+
void rb_define_virtual_variable(const char *name,
|
|
960
|
+
VALUE (*getter)(), void (*setter)())
|
|
961
|
+
|
|
962
|
+
�ؿ��ˤ�äƼ¸������Ruby�ѿ���������롥�ѿ������Ȥ��줿
|
|
963
|
+
���ˤ�getter�����ѿ����ͤ����åȤ��줿���ˤ�setter���ƤФ�
|
|
964
|
+
�롥
|
|
965
|
+
|
|
966
|
+
void rb_define_hooked_variable(const char *name, VALUE *var,
|
|
967
|
+
VALUE (*getter)(), void (*setter)())
|
|
968
|
+
|
|
969
|
+
�ؿ��ˤ�ä�hook�ΤĤ���줿�������Х��ѿ���������롥�ѿ�
|
|
970
|
+
�����Ȥ��줿���ˤ�getter�����ؿ����ͤ����åȤ��줿���ˤ�
|
|
971
|
+
setter���ƤФ�롥getter��setter��0����ꤷ�����ˤ�hook��
|
|
972
|
+
���ꤷ�ʤ��Τ�Ʊ�����ˤʤ롥
|
|
973
|
+
|
|
974
|
+
void rb_global_variable(VALUE *var)
|
|
975
|
+
|
|
976
|
+
GC�Τ��ᡤRuby�ץ�����फ��ϥ�����������ʤ���, Ruby����
|
|
977
|
+
�������Ȥ�ޤ�����ѿ���ޡ������롥
|
|
978
|
+
|
|
979
|
+
** ���
|
|
980
|
+
|
|
981
|
+
void rb_define_const(VALUE klass, const char *name, VALUE val)
|
|
982
|
+
|
|
983
|
+
�����������롥
|
|
984
|
+
|
|
985
|
+
void rb_define_global_const(const char *name, VALUE val)
|
|
986
|
+
|
|
987
|
+
��������������롥
|
|
988
|
+
|
|
989
|
+
rb_define_const(rb_cObject, name, val)
|
|
990
|
+
|
|
991
|
+
��Ʊ����̣��
|
|
992
|
+
|
|
993
|
+
** �����
|
|
994
|
+
|
|
995
|
+
rb_define_method(VALUE klass, const char *name, VALUE (*func)(), int argc)
|
|
996
|
+
|
|
997
|
+
��åɤ�������롥argc��self����������ο���argc��-1�λ�,
|
|
998
|
+
�ؿ��ˤϰ����ο�(self��ޤޤʤ�)����1����, �������������2
|
|
999
|
+
�����Ȥ��������Ϳ������(��3������self)��argc��-2�λ�,
|
|
1000
|
+
��1������self, ��2������args(args�ϰ�����ޤ�Ruby������)��
|
|
1001
|
+
����������Ϳ�����롥
|
|
1002
|
+
|
|
1003
|
+
rb_define_private_method(VALUE klass, const char *name, VALUE (*func)(), int argc)
|
|
1004
|
+
|
|
1005
|
+
private��åɤ�������롥������rb_define_method()��Ʊ����
|
|
1006
|
+
|
|
1007
|
+
rb_define_singleton_method(VALUE klass, const char *name, VALUE (*func)(), int argc)
|
|
1008
|
+
|
|
1009
|
+
�ðۥ�åɤ�������롥������rb_define_method()��Ʊ����
|
|
1010
|
+
|
|
1011
|
+
rb_scan_args(int argc, VALUE *argv, const char *fmt, ...)
|
|
1012
|
+
|
|
1013
|
+
argc, argv������Ϳ����줿������ʬ�롥fmt��ɬ�ܰ����ο�,
|
|
1014
|
+
�ղð����ο�, �Ĥ�ΰ��������뤫����ꤹ��ʸ�����, "����
|
|
1015
|
+
����*"�Ȥ��������Ǥ��롥 2 ���ܤο�����"*"�Ϥ��줾���ά��
|
|
1016
|
+
ǽ�Ǥ��롥ɬ�ܰ�������Ĥ�ʤ�����0����ꤹ�롥��3������
|
|
1017
|
+
�ߤ��ѿ��ؤΥݥ���, �����������Ǥ������ѿ��˳�Ǽ����롥
|
|
1018
|
+
�ղð������б����������Ϳ�����Ƥ��ʤ������ѿ���Qnil��
|
|
1019
|
+
��������롥
|
|
1020
|
+
|
|
1021
|
+
** Ruby��åɸƤӽФ�
|
|
1022
|
+
|
|
1023
|
+
VALUE rb_funcall(VALUE recv, ID mid, int narg, ...)
|
|
1024
|
+
|
|
1025
|
+
��åɸƤӽФ���ʸ����mid�����뤿��ˤ�rb_intern()��
|
|
1026
|
+
�Ȥ���
|
|
1027
|
+
|
|
1028
|
+
VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv)
|
|
1029
|
+
|
|
1030
|
+
��åɸƤӽФ���������argc, argv�������Ϥ���
|
|
1031
|
+
|
|
1032
|
+
VALUE rb_eval_string(const char *str)
|
|
1033
|
+
|
|
1034
|
+
ʸ�����Ruby������ץȤȤ��ƥ���ѥ��롦�¹Ԥ��롥
|
|
1035
|
+
|
|
1036
|
+
ID rb_intern(const char *name)
|
|
1037
|
+
|
|
1038
|
+
ʸ������б�����ID���֤���
|
|
1039
|
+
|
|
1040
|
+
char *rb_id2name(ID id)
|
|
1041
|
+
|
|
1042
|
+
ID���б�����ʸ������֤�(�ǥХå���)��
|
|
1043
|
+
|
|
1044
|
+
char *rb_class2name(VALUE klass)
|
|
1045
|
+
|
|
1046
|
+
���饹��̾�����֤�(�ǥХå���)�����饹��̾��������ʤ����ˤ�,
|
|
1047
|
+
������̤ä�̾������ĥ��饹��̾�����֤���
|
|
1048
|
+
|
|
1049
|
+
int rb_respond_to(VALUE obj, ID id)
|
|
1050
|
+
|
|
1051
|
+
obj��id�Ǽ�������åɤ���Ĥ��ɤ������֤���
|
|
1052
|
+
|
|
1053
|
+
** �������ѿ�
|
|
1054
|
+
|
|
1055
|
+
VALUE rb_iv_get(VALUE obj, const char *name)
|
|
1056
|
+
|
|
1057
|
+
obj�Υ������ѿ����ͤ����롥`@'�ǻϤޤ�ʤ�������
|
|
1058
|
+
���ѿ��� Ruby�ץ�����फ�饢�������Ǥ��ʤ��ֱ��줿�ץ���
|
|
1059
|
+
�������ѿ��ˤʤ롥�������ʸ����̾������ĥ��饹(�ޤ���
|
|
1060
|
+
�⥸�塼��)�Υ������ѿ��Ȥ��Ƽ�������Ƥ��롥
|
|
1061
|
+
|
|
1062
|
+
VALUE rb_iv_set(VALUE obj, const char *name, VALUE val)
|
|
1063
|
+
|
|
1064
|
+
obj�Υ������ѿ���val�˥��åȤ��롥
|
|
1065
|
+
|
|
1066
|
+
** ���湽¤
|
|
1067
|
+
|
|
1068
|
+
VALUE rb_iterate(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2)
|
|
1069
|
+
|
|
1070
|
+
func2��֥��å��Ȥ������ꤷ, func1�ƥ졼���Ȥ��ƸƤ֡�
|
|
1071
|
+
func1�ˤ� arg1�������Ȥ����Ϥ���, func2�ˤ���1�����˥��ƥ졼
|
|
1072
|
+
������Ϳ����줿��, ��2������arg2���Ϥ���롥
|
|
1073
|
+
|
|
1074
|
+
VALUE rb_yield(VALUE val)
|
|
1075
|
+
|
|
1076
|
+
val���ͤȤ��ƥ��ƥ졼���֥��å���ƤӽФ���
|
|
1077
|
+
|
|
1078
|
+
VALUE rb_rescue(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2)
|
|
1079
|
+
|
|
1080
|
+
�ؿ�func1��arg1������˸ƤӽФ���func1�μ¹�����㳰��ȯ��
|
|
1081
|
+
�������ˤ� func2��arg2������Ȥ��ƸƤ֡�����ͤ��㳰��ȯ��
|
|
1082
|
+
���ʤ��ä�����func1�������, �㳰��ȯ���������ˤ�func2����
|
|
1083
|
+
���ͤǤ��롥
|
|
1084
|
+
|
|
1085
|
+
VALUE rb_ensure(VALUE (*func1)(), VALUE arg1, void (*func2)(), VALUE arg2)
|
|
1086
|
+
|
|
1087
|
+
�ؿ�func1��arg1������Ȥ��Ƽ¹Ԥ�, �¹Խ�λ��(���Ȥ��㳰��
|
|
1088
|
+
ȯ�����Ƥ�) func2��arg2������Ȥ��Ƽ¹Ԥ��롥����ͤ�func1
|
|
1089
|
+
������ͤǤ���(�㳰��ȯ�������������ʤ�)��
|
|
1090
|
+
|
|
1091
|
+
** �㳰�����顼
|
|
1092
|
+
|
|
1093
|
+
void rb_warning(const char *fmt, ...)
|
|
1094
|
+
|
|
1095
|
+
rb_verbose����ɸ�२�顼���Ϥ˷ٹ�����ɽ�����롥������
|
|
1096
|
+
printf()��Ʊ����
|
|
1097
|
+
|
|
1098
|
+
void rb_raise(rb_eRuntimeError, const char *fmt, ...)
|
|
1099
|
+
|
|
1100
|
+
RuntimeError�㳰��ȯ�������롥������printf()��Ʊ����
|
|
1101
|
+
|
|
1102
|
+
void rb_raise(VALUE exception, const char *fmt, ...)
|
|
1103
|
+
|
|
1104
|
+
exception�ǻ��ꤷ���㳰��ȯ�������롥fmt�ʲ��ΰ�����
|
|
1105
|
+
printf()��Ʊ����
|
|
1106
|
+
|
|
1107
|
+
void rb_fatal(const char *fmt, ...)
|
|
1108
|
+
|
|
1109
|
+
��̿Ū�㳰��ȯ�������롥�̾���㳰�����ϹԤʤ�줺, ����
|
|
1110
|
+
�ץ����λ����(������ensure�ǻ��ꤵ�줿�����ɤϽ�λ����
|
|
1111
|
+
�¹Ԥ����)��
|
|
1112
|
+
|
|
1113
|
+
void rb_bug(const char *fmt, ...)
|
|
1114
|
+
|
|
1115
|
+
�����ץ�ʤɥץ������ΥХ��Ǥ���ȯ������Ϥ��Τʤ�
|
|
1116
|
+
�����λ��Ƥ֡������ץ�ϥ�������פ�ľ���˽�λ���롥
|
|
1117
|
+
�㳰�����ϰ��ڹԤʤ��ʤ���
|
|
1118
|
+
|
|
1119
|
+
** Ruby�ν�������¹�
|
|
1120
|
+
|
|
1121
|
+
Ruby�ץꥱ����������������ˤϰʲ��Υ��ե�����
|
|
1122
|
+
��Ȥ����̾�γ�ĥ�饤�֥��ˤ�ɬ�פʤ���
|
|
1123
|
+
|
|
1124
|
+
void ruby_init()
|
|
1125
|
+
|
|
1126
|
+
Ruby���ץ�ν������Ԥʤ���
|
|
1127
|
+
|
|
1128
|
+
void ruby_options(int argc, char **argv)
|
|
1129
|
+
|
|
1130
|
+
Ruby���ץ�Υ��ޥ�ɥ饤������ν�����Ԥʤ���
|
|
1131
|
+
|
|
1132
|
+
void ruby_run()
|
|
1133
|
+
|
|
1134
|
+
Ruby���ץ��¹Ԥ��롥
|
|
1135
|
+
|
|
1136
|
+
void ruby_script(char *name)
|
|
1137
|
+
|
|
1138
|
+
Ruby�Υ�����ץ�̾($0)�����ꤹ�롥
|
|
1139
|
+
|
|
1140
|
+
** ���ץ�Υ��٥�ȤΥեå�
|
|
1141
|
+
|
|
1142
|
+
void rb_add_event_hook(rb_event_hook_func_t func, rb_event_t events)
|
|
1143
|
+
|
|
1144
|
+
���ꤵ�줿���ץ�Υ��٥�Ȥ��Ф���եå��ؿ����ɲä��ޤ���
|
|
1145
|
+
events�ϰʲ����ͤ�or�Ǥʤ���Фʤ�ޤ���:
|
|
1146
|
+
|
|
1147
|
+
RUBY_EVENT_LINE
|
|
1148
|
+
RUBY_EVENT_CLASS
|
|
1149
|
+
RUBY_EVENT_END
|
|
1150
|
+
RUBY_EVENT_CALL
|
|
1151
|
+
RUBY_EVENT_RETURN
|
|
1152
|
+
RUBY_EVENT_C_CALL
|
|
1153
|
+
RUBY_EVENT_C_RETURN
|
|
1154
|
+
RUBY_EVENT_RAISE
|
|
1155
|
+
RUBY_EVENT_ALL
|
|
1156
|
+
|
|
1157
|
+
rb_event_hook_func_t������ϰʲ����̤�Ǥ�:
|
|
1158
|
+
|
|
1159
|
+
typedef void (*rb_event_hook_func_t)(rb_event_t event, NODE *node,
|
|
1160
|
+
VALUE self, ID id, VALUE klass)
|
|
1161
|
+
|
|
1162
|
+
int rb_remove_event_hook(rb_event_hook_func_t func)
|
|
1163
|
+
|
|
1164
|
+
���ꤵ�줿�եå��ؿ��������ޤ���
|
|
1165
|
+
|
|
1166
|
+
|
|
1167
|
+
Appendix C. extconf.rb�ǻȤ���ؿ�����
|
|
1168
|
+
|
|
1169
|
+
extconf.rb����Ǥ����Ѳ�ǽ�ʥ���ѥ���������å��δؿ��ϰ�
|
|
1170
|
+
�����̤�Ǥ��롥
|
|
1171
|
+
|
|
1172
|
+
have_macro(macro, headers)
|
|
1173
|
+
|
|
1174
|
+
�إå��ե�����header�롼�ɤ��ƥޥ���macro�������
|
|
1175
|
+
��Ƥ��뤫�ɤ��������å����롥�ޥ������������Ƥ����true
|
|
1176
|
+
���֤���
|
|
1177
|
+
|
|
1178
|
+
have_library(lib, func)
|
|
1179
|
+
|
|
1180
|
+
�ؿ�func��������Ƥ���饤�֥��lib��¸�ߤ�����å����롥
|
|
1181
|
+
�饤�֥�꤬¸�ߤ������true���֤���
|
|
1182
|
+
|
|
1183
|
+
find_library(lib, func, path...)
|
|
1184
|
+
|
|
1185
|
+
�ؿ�func��������Ƥ���饤�֥��lib��¸�ߤ� -Lpath ���ɲ�
|
|
1186
|
+
���ʤ�������å����롥�饤�֥�꤬���դ��ä�����true���֤���
|
|
1187
|
+
|
|
1188
|
+
have_func(func, header)
|
|
1189
|
+
|
|
1190
|
+
�إå��ե�����header�롼�ɤ��ƴؿ�func��¸�ߤ������
|
|
1191
|
+
�����롥func��ɸ��Ǥϥ����ʤ��饤�֥����Τ�ΤǤ�
|
|
1192
|
+
����ˤ����have_library�Ǥ��Υ饤�֥�������å����Ƥ���
|
|
1193
|
+
�����ؿ���¸�ߤ����true���֤���
|
|
1194
|
+
|
|
1195
|
+
have_var(var, header)
|
|
1196
|
+
|
|
1197
|
+
�إå��ե�����header�롼�ɤ����ѿ�var��¸�ߤ������
|
|
1198
|
+
�����롥var��ɸ��Ǥϥ����ʤ��饤�֥����Τ�ΤǤ�
|
|
1199
|
+
����ˤ����have_library�Ǥ��Υ饤�֥�������å����Ƥ���
|
|
1200
|
+
�����ѿ���¸�ߤ����true���֤���
|
|
1201
|
+
|
|
1202
|
+
have_header(header)
|
|
1203
|
+
|
|
1204
|
+
�إå��ե������¸�ߤ�����å����롥�إå��ե����뤬¸�ߤ�
|
|
1205
|
+
���true���֤���
|
|
1206
|
+
|
|
1207
|
+
find_header(header, path...)
|
|
1208
|
+
|
|
1209
|
+
�إå��ե�����header��¸�ߤ� -Ipath ���ɲä��ʤ�������å�
|
|
1210
|
+
���롥�إå��ե����뤬���դ��ä�����true���֤���
|
|
1211
|
+
|
|
1212
|
+
have_struct_member(type, member, header)
|
|
1213
|
+
|
|
1214
|
+
�إå��ե�����header�롼�ɤ��Ʒ�type�˥���member
|
|
1215
|
+
��¸�ߤ��뤫������å����롥type���������Ƥ��ơ�member��
|
|
1216
|
+
���Ĥ����true���֤���
|
|
1217
|
+
|
|
1218
|
+
have_type(type, header, opt)
|
|
1219
|
+
|
|
1220
|
+
�إå��ե�����header�롼�ɤ��Ʒ�type��¸�ߤ��뤫��
|
|
1221
|
+
�����å����롥type���������Ƥ����true���֤���
|
|
1222
|
+
|
|
1223
|
+
check_sizeof(type, header)
|
|
1224
|
+
|
|
1225
|
+
�إå��ե�����header�롼�ɤ��Ʒ�type��charñ�̥���
|
|
1226
|
+
����Ĵ�٤롥type���������Ƥ�������Υ��������֤��������
|
|
1227
|
+
��Ƥ��ʤ��Ȥ���nil���֤���
|
|
1228
|
+
|
|
1229
|
+
create_makefile(target)
|
|
1230
|
+
|
|
1231
|
+
��ĥ�饤�֥���Ѥ�Makefile���������롥���δؿ���ƤФʤ���
|
|
1232
|
+
�Ф��Υ饤�֥��ϥ���ѥ��뤵��ʤ���target�ϥ⥸�塼��̾
|
|
1233
|
+
��ɽ����
|
|
1234
|
+
|
|
1235
|
+
find_executable(command, path)
|
|
1236
|
+
|
|
1237
|
+
���ޥ��command��File::PATH_SEPARATOR�Ƕ��ڤ�줿�ѥ�̾��
|
|
1238
|
+
�ꥹ��path����õ����path��nil�ޤ��Ͼ�ά���줿���ϡ��Ķ�
|
|
1239
|
+
�ѿ�PATH���ͤ���Ѥ��롥�¹Բ�ǽ�ʥ��ޥ�ɤ����Ĥ��ä����
|
|
1240
|
+
�ϥѥ���ޤ�ե�����̾�����Ĥ���ʤ��ä�����nil���֤���
|
|
1241
|
+
|
|
1242
|
+
with_config(withval[, default=nil])
|
|
1243
|
+
|
|
1244
|
+
���ޥ�ɥ饤����--with-<withval>�ǻ��ꤵ�줿���ץ�����ͤ����롥
|
|
1245
|
+
|
|
1246
|
+
enable_config(config, *defaults)
|
|
1247
|
+
disable_config(config, *defaults)
|
|
1248
|
+
|
|
1249
|
+
���ޥ�ɥ饤����--enable-<config>�ޤ���
|
|
1250
|
+
--disable-<config>�ǻ��ꤵ�줿�����ͤ����롥
|
|
1251
|
+
--enable-<config>�����ꤵ��Ƥ�������true��
|
|
1252
|
+
--disable-<config>�����ꤵ��Ƥ�������false���֤���
|
|
1253
|
+
�ɤ������ꤵ��Ƥ��ʤ����ϡ��֥��å��Ĥ��ǸƤӽФ���Ƥ������
|
|
1254
|
+
*defaults��yield������̡��֥��å��ʤ��ʤ�*defaults���֤���
|
|
1255
|
+
|
|
1256
|
+
dir_config(target[, default_dir])
|
|
1257
|
+
dir_config(target[, default_include, default_lib])
|
|
1258
|
+
|
|
1259
|
+
���ޥ�ɥ饤����--with-<target>-dir, --with-<target>-include,
|
|
1260
|
+
--with-<target>-lib�Τ����줫�ǻ��ꤵ���ǥ��쥯�ȥ��
|
|
1261
|
+
$CFLAGS �� $LDFLAGS ���ɲä��롥--with-<target>-dir=/path��
|
|
1262
|
+
--with-<target>-include=/path/include --with-<target>-lib=/path/lib
|
|
1263
|
+
�������Ǥ��롥�ɲä��줿 include �ǥ��쥯�ȥ�� lib �ǥ��쥯�ȥ��
|
|
1264
|
+
������֤��� ([include_dir, lib_dir])
|
|
1265
|
+
|
|
1266
|
+
pkg_config(pkg)
|
|
1267
|
+
|
|
1268
|
+
pkg-config���ޥ�ɤ���ѥå�����pkg�ξ�������롥
|
|
1269
|
+
pkg-config�μºݤΥ��ޥ��̾�ϡ�--with-pkg-config���ޥ��
|
|
1270
|
+
�饤�ץ����ǻ����ǽ��
|
|
1271
|
+
|
|
1272
|
+
/*
|
|
1273
|
+
* Local variables:
|
|
1274
|
+
* fill-column: 60
|
|
1275
|
+
* end:
|
|
1276
|
+
*/
|