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.
@@ -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
+ */