ruby/README.EXT

1065 строки
28 KiB
Plaintext
Исходник Обычный вид История

.\" README.EXT - -*- Text -*- created at: Mon Aug 7 16:45:54 JST 1995
This document explains how to make extention modules for ruby.
1<EFBFBD><EFBFBD>Basic knowledge
In C, variables have types and data do not have types. In contrast,
ruby variables do not have static type and data themselves have
types. So, data need to be converted across the languages.
Data in ruby represented C type `VALUE'. Each VALUE data have its
data-type.
ruby<EFBFBD>Υǡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>VALUE<EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>η<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>VALUE<EFBFBD><EFBFBD><EFBFBD>Υǡ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ϥ<EFBFBD><EFBFBD>Υǡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>פ<EFBFBD><EFBFBD><EFBFBD>ʬ<EFBFBD><EFBFBD><EFBFBD>ΤäƤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υǡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>פ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τϥǡ<EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD>֥<EFBFBD><D6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29>μºݤι<DDA4>¤<EFBFBD><C2A4><EFBFBD><EFBFBD>̣<EFBFBD><CCA3><EFBFBD>Ƥ<EFBFBD><C6A4>ơ<EFBFBD>ruby
<EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD>ȤϤޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΤǤ<EFBFBD><EFBFBD><EFBFBD>
To retrieve an C data from the VALUE, you need to:
(1) Identify VALUE's data type
(2) Convert VALUE into C data
Converting to wrong data type may cause serious promblems.
1.1 Data-types
Ruby interpreter has data-types as below:
T_NIL nil
T_OBJECT ordinaly object
T_CLASS class
T_MODULE module
T_FLOAT floating point number
T_STRING string
T_REGEXP regular expression
T_ARRAY array
T_FIXNUM Fixnum(31bit integer)
T_HASH assosiative array
T_STRUCT (ruby) structure
T_BIGNUM multi precision integer
T_TRUE true
T_FALSE false
T_DATA data
Otherwise, there are several other types used internally:
T_ICLASS
T_MATCH
T_VARMAP
T_SCOPE
T_NODE
Most of the types are represented by C structures.
1.2 Check Data Type of the VALUE
The macro TYPE() defined in ruby.h shows data-type of the VALUE.
TYPE() returns the constant number T_XXXX described above. To handle
data-types, the code will be like:
switch (TYPE(obj)) {
case T_FIXNUM:
/* process Fixnum */
break;
case T_STRING:
/* process String */
break;
case T_ARRAY:
/* process Array */
break;
default:
/* raise exception */
Fail("not valid value");
break;
}
There is the data-type check function.
void Check_Type(VALUE value, int type)
It raises an exception, if the VALUE does not have the type specified.
There are faster check-macros for fixnums and nil.
FIXNUM_P(obj)
NIL_P(obj)
1.3 Convert VALUE into C data
<EFBFBD>ǡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>פ<EFBFBD>T_NIL, T_FALSE, T_TRUE<55>Ǥ<EFBFBD><C7A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǡ<EFBFBD><C7A1><EFBFBD><EFBFBD>Ϥ<EFBFBD><CFA4>
<EFBFBD><EFBFBD>nil, FALSE, TRUE<55>Ǥ<EFBFBD><C7A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υǡ<CEA5><C7A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>פΥ<D7A4><CEA5>֥<EFBFBD><D6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȤϤҤ<CFA4>
<EFBFBD>Ĥ<EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD>ߤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ǡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>פ<EFBFBD>T_FIXNUM<EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>31bit<EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIXNUM<EFBFBD><EFBFBD>C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>뤿<EFBFBD><EFBFBD><EFBFBD>ˤϥޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIX2INT()<29>פ<EFBFBD><D7A4><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>顤FIXNUM<EFBFBD>˸¤餺ruby<EFBFBD>Υǡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>NUM2INT()<29>פȤ<D7A4><C8A4><EFBFBD><EFBFBD>ޥ<EFBFBD><DEA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υޥ<CEA5><DEA5><EFBFBD><EFBFBD>ϥǡ<CFA5><C7A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>פΥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD>ǻȤ<EFBFBD><EFBFBD>ޤ<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD><D1B4>Ǥ<EFBFBD><C7A4>ʤ<EFBFBD><CAA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD><CBA4><EFBFBD><E3B3B0>
ȯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʳ<EFBFBD><EFBFBD>Υǡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>פ<EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>ι<EFBFBD>¤<EFBFBD>Τ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>빽¤<EFBFBD>ΤΤ<EFBFBD><EFBFBD><EFBFBD>VALUE<EFBFBD>Ϥ<EFBFBD><EFBFBD>Τޤޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD>Ѵ<EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD>¤<EFBFBD>Τ<EFBFBD>
<EFBFBD>ݥ<EFBFBD><EFBFBD>󥿤<EFBFBD><EFBFBD>Ѵ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>¤<EFBFBD>Τϡ<EFBFBD>struct RXxxxx<78>פȤ<D7A4><C8A4><EFBFBD>̾<EFBFBD><CCBE><EFBFBD><EFBFBD>ruby.h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><C6A4><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD>struct RString<6E>פǤ<D7A4><C7A4><EFBFBD><EFBFBD>ºݤ˻Ȥ<CBBB><C8A4><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󤯤餤<EFBFBD><EFBFBD><EFBFBD>Ȼפ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
ruby.h<>ǤϹ<C7A4>¤<EFBFBD>Τإ<CEA4><D8A5><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD>ޥ<EFBFBD><DEA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXXXXX()<29><>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ
<EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29>Ȥ<EFBFBD><C8A4><EFBFBD>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD>󶡤<EFBFBD><F3B6A1A4><EFBFBD><EFBFBD>Ƥ<EFBFBD><C6A4>ޤ<EFBFBD>(<28><>: RSTRING())<29><>
<EFBFBD><EFBFBD>С<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>str<EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뤿<EFBFBD><EFBFBD><EFBFBD>ˤϡ<EFBFBD>RSTRING(str)->len<65>פ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>str<EFBFBD><EFBFBD>char*<2A>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뤿<EFBFBD><EBA4BF><EFBFBD>ˤϡ<CBA4>RSTRING(str)->ptr<74><72>
<EFBFBD>Ȥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RARRAT(str)->len<65>ס<EFBFBD>
<EFBFBD><EFBFBD>RARRAT(str)->ptr<74>פȤʤ<C8A4><CAA4>ޤ<EFBFBD><DEA4><EFBFBD>
ruby<EFBFBD>ι<EFBFBD>¤<EFBFBD>Τ<EFBFBD>ľ<EFBFBD>ܥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Фʤ<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>Ȥϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ι<EFBFBD>¤<EFBFBD>Τ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥϻ<EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǡ<EFBFBD>ľ<EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȤǤ<EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>Ȥ<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>ʤäơ<EFBFBD><EFBFBD>פ<EFBFBD><EFBFBD>̥Х<EFBFBD><EFBFBD>θ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤʤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
1.4 Convert C data into VALUE
VALUE<EFBFBD>μºݤι<EFBFBD>¤<EFBFBD><EFBFBD>
* FIXNUM<55>ξ<EFBFBD><CEBE><EFBFBD>
1bit<69><74><EFBFBD><EFBFBD><EFBFBD>եȤ<D5A5><C8A4>ơ<EFBFBD>LSB<53><42>Ω<EFBFBD>Ƥ롥
* <20><><EFBFBD><EFBFBD>¾<EFBFBD>Υݥ<CEA5><DDA5>󥿤ξ<F3A5BFA4><CEBE><EFBFBD>
<20><><EFBFBD>Τޤ<CEA4>VALUE<55>˥<EFBFBD><CBA5><EFBFBD>Ȥ<EFBFBD><C8A4>
<EFBFBD>ȤʤäƤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>äơ<EFBFBD>LSB<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>VALUE<EFBFBD><EFBFBD>FIXNUM<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD>(<28>ݥ<EFBFBD><DDA5>󥿤<EFBFBD>LSB<53><42>Ω<EFBFBD>äƤ<C3A4><C6A4>ʤ<EFBFBD><CAA4><EFBFBD><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD><EFBFBD><EAA4B7>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><>
<EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>顤FIXNUM<EFBFBD>ʳ<EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD>Υ<EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥι<EFBFBD>¤<EFBFBD>Τ<EFBFBD>ñ<EFBFBD><EFBFBD>VALUE
<EFBFBD>˥<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>VALUE<EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD>դι<EFBFBD>¤
<EFBFBD>Τ<EFBFBD>VALUE<EFBFBD>˥<EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǤϤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD>󡥥<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD>ΤäƤ<EFBFBD><EFBFBD>빽¤<EFBFBD><EFBFBD>(ruby.h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><C6A4><EFBFBD>struct RXxxx
<EFBFBD>Τ<EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD><CBA4>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FIXNUM<EFBFBD>˴ؤ<EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD>Ѵ<EFBFBD><EFBFBD>ޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɬ<EFBFBD>פ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>VALUE<EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰʲ<EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>ɬ<EFBFBD>פ˱<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ƻȤ<EFBFBD>ʬ<EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INT2FIX() <09><><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>31bit<69><74><EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD><CBBC>ޤ<EFBFBD><DEA4><EFBFBD>
INT2NUM() Ǥ<>դ<EFBFBD><D5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>VALUE<55><45>
INT2NUM()<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIXNUM<55><4D><EFBFBD>ϰϤ˼<CFA4><CBBC>ޤ<EFBFBD><DEA4>ʤ<EFBFBD><CAA4><EFBFBD><EFBFBD>硤Bignum<75><6D><EFBFBD>Ѵ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>٤<EFBFBD>)<29><>
1.5 Manipulate ruby data
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҥ٤<EFBFBD><EFBFBD>̤ꡤruby<EFBFBD>ι<EFBFBD>¤<EFBFBD>Τ򥢥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥι<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD>󡥤ǡ<EFBFBD>ruby<EFBFBD>Υǡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD>
ruby<EFBFBD><EFBFBD><EFBFBD>Ѱդ<EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǤϤ<EFBFBD><EFBFBD>äȤ<EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD>򤢤<EFBFBD><EFBFBD>ޤ<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>ǤϤʤ<CFA4><CAA4>Ǥ<EFBFBD>)<29><>
String funtions
str_new(char *ptr, int len)
Creates a new ruby string.
str_new2(char *ptr)
Creates a new ruby string from C string. This is equivalent to
str_new(ptr, strlen(ptr)).
str_cat(VALUE str, char *ptr, int len)
Appends len bytes data from ptr to the ruby string.
Array functions
ary_new()
Creates an array with no element.
ary_new2(int len)
Creates an array with no element, with allocating internal buffer
for len elements.
ary_new3(int n, ...)
Creates an n-elements array from arguments.
ary_new4(int n, VALUE *elts)
Creates an n-elements array from C array.
ary_push(VALUE ary)
ary_pop(VALUE ary, VALUE val)
ary_shift(VALUE ary)
ary_unshift(VALUE ary, VALUE val)
ary_entry(VALUE ary, int idx)
Array operations. The first argument to each functions must be an
array. They may dump core if other types given.
2. Extend ruby with C
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ū<EFBFBD><EFBFBD>ruby<EFBFBD>ǽ񤱤뤳<EFBFBD>Ȥ<EFBFBD>C<EFBFBD>Ǥ<EFBFBD><EFBFBD>񤱤ޤ<EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD>Τ<EFBFBD>C<EFBFBD>ǵ<EFBFBD>
<EFBFBD>Ҥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>ruby<EFBFBD>γ<EFBFBD>ĥ<EFBFBD>˻Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD>¿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͽ¬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뵡ǽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD>
<EFBFBD>𤷤ޤ<EFBFBD><EFBFBD><EFBFBD>
2.1 Add new features to ruby
ruby<EFBFBD><EFBFBD><EFBFBD>󶡤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD>󥿥ץ꥿<EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ
<EFBFBD><EFBFBD><EFBFBD>ɲä<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD>Ǥϰʲ<EFBFBD><EFBFBD>ε<EFBFBD>ǽ<EFBFBD><EFBFBD><EFBFBD>ɲä<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>󶡤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><E9A5B9><EFBFBD><EFBFBD><EFBFBD><E5A1BC>
* <20><EFBFBD>åɡ<C3A5><C9A1>ðۥ᥽<DBA5>åɤʤ<C9A4>
* <20><><EFBFBD><EFBFBD>
<EFBFBD>ǤϽ<EFBFBD><EFBFBD>˾Ҳ𤷤ޤ<EFBFBD><EFBFBD><EFBFBD>
2.1.1 Class/module definition
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뤿<EFBFBD><EFBFBD><EFBFBD>ˤϡ<EFBFBD><EFBFBD>ʲ<EFBFBD><EFBFBD>δؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
VALUE rb_define_class(char *name, VALUE super)
VALUE rb_define_module(char *name)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δؿ<EFBFBD><EFBFBD>Ͽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>åɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͤ<EFBFBD>ɬ<EFBFBD>פʤΤǡ<EFBFBD><EFBFBD>ۤȤ<EFBFBD><EFBFBD>ɤξ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͤ<EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD>˳<EFBFBD>Ǽ<EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD>ɬ<EFBFBD>פ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2.1.2 Method/singleton method definition
<EFBFBD><EFBFBD>åɤ<EFBFBD><EFBFBD>ðۥ᥽<EFBFBD>åɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϰʲ<EFBFBD><EFBFBD>δؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
void rb_define_method(VALUE class, char *name,
VALUE (*func)(), int argc)
void rb_define_singleton_method(VALUE object, char *name,
VALUE (*func)(), int argc)
ǰ<EFBFBD>Τ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ðۥ᥽<EFBFBD>åɡפȤϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>Ȥ<EFBFBD><EFBFBD>Ф<EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD>ͭ<EFBFBD><EFBFBD><EFBFBD>ʥ᥽<EFBFBD>åɤǤ<EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD>ǤϤ褯Smalltalk<EFBFBD>ˤ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>åɤȤ<EFBFBD><EFBFBD>ơ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ф<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ðۥ᥽<EFBFBD>åɤ<EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δؿ<EFBFBD><EFBFBD><EFBFBD> argc<67>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>δؿ<CEB4><D8BF><EFBFBD><EFBFBD>Ϥ<EFBFBD><CFA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD>(<28><>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>argc<67><63><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ϴؿ<CFB4><D8BF>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>Ϥ<EFBFBD><CFA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD>̣
<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>16<EFBFBD>İʾ<EFBFBD><EFBFBD>ΰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϻȤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>פ<EFBFBD><D7A4>ޤ<EFBFBD><DEA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD><CDA1><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ʤ<EFBFBD>)<29><>
argc<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ϰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><EFBFBD>ǤϤʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥˤʤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
argc<EFBFBD><EFBFBD>-1<>λ<EFBFBD><CEBB>ϰ<EFBFBD><CFB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϥ<EFBFBD><CFA4><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>argc<67><63>-2<>λ<EFBFBD><CEBB>ϰ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>åɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD>Ϥ⤦<EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҤȤĤ<EFBFBD>private<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>åɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD>ǡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>rb_define_method()<29><>Ʊ<EFBFBD><C6B1><EFBFBD>Ǥ<EFBFBD><C7A4><EFBFBD>
void rb_define_private_method(VALUE class, char *name,
VALUE (*func)(), int argc)
private<EFBFBD><EFBFBD>åɤȤϴؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƤӽФ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥν<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ɤǤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>ҤȤĤϥ⥸<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΤǤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD>
<EFBFBD>Ȥϥ⥸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ðۥ᥽<EFBFBD>åɤǤ<EFBFBD><EFBFBD>ꡤƱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>private<EFBFBD><EFBFBD>åɤ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΤǤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򤢤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Math<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sqrt()<29>ʤɤ<CAA4><C9A4><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD>åɤ<EFBFBD>
Math.sqrt(4)
<EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD>
include Math
sqrt(4)
<EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD>ϰʲ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>̤<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>
void rb_define_module_function(VALUE module, char *name,
VALUE (*func)(), int argc)
<EFBFBD>ؿ<EFBFBD>Ū<EFBFBD><EFBFBD>å<EFBFBD>(Kernel<65><EFBFBD><EFBFBD><E5A1BC><EFBFBD><EFBFBD>privaet method)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뤿
<EFBFBD><EFBFBD><EFBFBD>δؿ<EFBFBD><EFBFBD>ϰʲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̤<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>
void rb_define_global_function(char *name, VALUE (*func)(), int argc)
2.1.3 Constant definition
<EFBFBD><EFBFBD>ĥ<EFBFBD><EFBFBD><EFBFBD>뤬ɬ<EFBFBD>פ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤ<EFBFBD>
<EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
void rb_define_const(VALUE class, char *name, VALUE val)
void rb_define_global_const(char *name, VALUE val)
<EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD>饹/<2F><EFBFBD><EFBFBD><E5A1BC><EFBFBD><EFBFBD>°<EFBFBD><C2B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ρ<EFBFBD><CEA1><EFBFBD>
<EFBFBD>Ԥϥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Х<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΤǤ<EFBFBD><EFBFBD><EFBFBD>
2.2 Use ruby features from C
<EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>1.5 ruby<62>Υǡ<CEA5><C7A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA4B9><EFBFBD>٤ǰ<D9A4><C7B0><EFBFBD><EFBFBD>Ҳ𤷤<D2B2><F0A4B7A4><EFBFBD>ʴؿ<CAB4><D8BF><EFBFBD>
<EFBFBD>Ȥ<EFBFBD><EFBFBD>С<EFBFBD>ruby<EFBFBD>ε<EFBFBD>ǽ<EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD>ܸƤӽФ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
# <20><><EFBFBD>Τ<CEA4>ʴؿ<CAB4><D8BF>ΰ<EFBFBD><CEB0><EFBFBD>ɽ<EFBFBD>Ϥ<EFBFBD><CFA4>ޤΤȤ<CEA4><C8A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4>󡥥<EFBFBD><F3A1A5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
# <20><EFBFBD><EBA4B7><EFBFBD>ʤ<EFBFBD><CAA4>Ǥ<EFBFBD><C7A4>͡<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʳ<EFBFBD><EFBFBD>ˤ<EFBFBD>ruby<EFBFBD>ε<EFBFBD>ǽ<EFBFBD><EFBFBD><EFBFBD>ƤӽФ<EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>Ϥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
2.2.1 ruby<62>Υץ<CEA5><D7A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>eval<61><6C><EFBFBD><EFBFBD>
C<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD>ε<EFBFBD>ǽ<EFBFBD><EFBFBD><EFBFBD>ƤӽФ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>äȤ<EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>Ȥ<EFBFBD><EFBFBD>ơ<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Ϳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿ruby<EFBFBD>Υץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
VALUE rb_eval_string(char *str)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD>ߤδĶ<EFBFBD><EFBFBD>ǹԤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĥޤꡤ<EFBFBD><EFBFBD><EFBFBD>ߤΥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD>
<EFBFBD>ʤɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
2.2.2 ID or Symbol
C<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD>Υ<EFBFBD>åɤ<EFBFBD><EFBFBD>ƤӽФ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD>󥿥ץ꥿<EFBFBD><EFBFBD><EFBFBD>ǥ᥽<EFBFBD>åɤ<EFBFBD><EFBFBD>ѿ<EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>˻Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD>ID<EFBFBD>ˤĤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ID<EFBFBD>Ȥ<EFBFBD><EFBFBD>ѿ<EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD>̾<EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD>
:<3A><><EFBFBD>̻<EFBFBD>
<EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뤿<EFBFBD><EFBFBD><EFBFBD>ˤϴؿ<EFBFBD>
rb_intern(char *name)
<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD>α<EFBFBD>ҤϤ<EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τޤޥ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ܥ<EFBFBD><EFBFBD>ˤʤäƤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
2.2.3 Invoke ruby method from C
C<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD>Υ<EFBFBD>åɤ<EFBFBD><EFBFBD>ƤӽФ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϰʲ<EFBFBD>
<EFBFBD>δؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
VALUE rb_funcall(VALUE recv, ID mid, int argc, ...)
<EFBFBD><EFBFBD><EFBFBD>δؿ<EFBFBD><EFBFBD>ϥ<EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>recv<EFBFBD><EFBFBD>mid<EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>åɤ<EFBFBD><EFBFBD>Ƥӽ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
2.2.4 <20>ѿ<EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>򻲾<EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥäƻ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󥹥<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD>ϰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD>Τ<EFBFBD>C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD>򻲾Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȤΥ<EFBFBD><EFBFBD>󥹥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD>򻲾ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD>ϰʲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>
VALUE rb_ivar_get(VALUE obj, ID id)
VALUE rb_ivar_set(VALUE obj, ID id, VALUE val)
id<EFBFBD><EFBFBD>rb_intern()<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD><CEA4>ȤäƤ<C3A4><C6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򻲾Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϰʲ<EFBFBD><EFBFBD>δؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȤäƤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
VALUE rb_const_get(VALUE obj, ID id)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򿷤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뤿<EFBFBD><EFBFBD><EFBFBD>ˤϡ<EFBFBD>2.1.3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>٤ǾҲ<C7BE><D2B2><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȤäƤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
3. Informatin sharing between ruby and C
C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD>δ֤Ǿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>ˤĤ<EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
3.1 Ruby constant that C<><43><EFBFBD><EFBFBD>ȤǤ<C8A4><C7A4><EFBFBD>ruby<62><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Following ruby constants can be referred from C.
TRUE
FALSE
Boolean values. FALSE is false in the C also (i.e. 0).
Qnil
Ruby nil in C scope.
3.2 Global variables shared between C and ruby
C<EFBFBD><EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥäƾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͭ<EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͭ<EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ѿ<EFBFBD><EFBFBD>ˤϤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τʤ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>äȤ<EFBFBD><EFBFBD>ɤ<EFBFBD><EFBFBD>Ȥ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼפ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD>rb_define_variable()<29>Ǥ<EFBFBD><C7A4><EFBFBD>
void rb_define_variable(char *name, VALUE *var)
<EFBFBD><EFBFBD><EFBFBD>δؿ<EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD><EFBFBD>C<EFBFBD>ȤǶ<EFBFBD>ͭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD>̾<EFBFBD><EFBFBD>
`$'<27>ǻϤޤ<CFA4><DEA4>ʤ<EFBFBD><CAA4><EFBFBD><EFBFBD>ˤϼ<CBA4>ưŪ<C6B0><C5AA><EFBFBD>ɲä<C9B2><C3A4><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><D1BF><EFBFBD><EFBFBD>ͤ<EFBFBD><CDA4><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>ưŪ<EFBFBD><EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͤ<EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ޤ<EFBFBD>ruby¦<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>read only<6C><79>
<EFBFBD>ѿ<EFBFBD><EFBFBD>ϰʲ<EFBFBD><EFBFBD>δؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
void rb_define_readonly_variable(char *name, VALUE *var)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD>¾<EFBFBD><EFBFBD>hook<EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>hook<EFBFBD>դ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD>ϰʲ<EFBFBD><EFBFBD>δؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>hook<EFBFBD>դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ͤλ<EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>hook<EFBFBD>ǹԤ<EFBFBD>ɬ<EFBFBD>פ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
void rb_define_hooked_variable(char *name, VALUE *var,
VALUE (*getter)(), VALUE (*setter)())
<EFBFBD><EFBFBD><EFBFBD>δؿ<EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>δؿ<EFBFBD><EFBFBD>ˤ<EFBFBD><EFBFBD>ä<EFBFBD>hook<EFBFBD>ΤĤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>줿<EFBFBD><EFBFBD><EFBFBD>ˤϴؿ<EFBFBD>getter<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>åȤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϴؿ<EFBFBD>setter<EFBFBD><EFBFBD><EFBFBD>ƤФ<EFBFBD><EFBFBD>롥hook<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>getter<EFBFBD><EFBFBD>
setter<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
# getter<65><72>setter<65><72>0<EFBFBD>ʤ<EFBFBD><CAA4><EFBFBD>rb_define_variable()<29><>Ʊ<EFBFBD><C6B1><EFBFBD>ˤʤ롥
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>顤C<EFBFBD>δؿ<EFBFBD><EFBFBD>ˤ<EFBFBD><EFBFBD>äƼ¸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
void rb_define_virtual_variable(char *name,
VALUE (*getter)(), VALUE (*setter)())
<EFBFBD><EFBFBD><EFBFBD>δؿ<EFBFBD><EFBFBD>ˤ<EFBFBD><EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿ruby<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>줿<EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD>
getter<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>åȤ<EFBFBD><EFBFBD>줿<EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD>setter<EFBFBD><EFBFBD><EFBFBD>ƤФ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
The prototypes of the getter and setter functions are as following:
(*getter)(ID id, void *data, struct global_entry* entry);
(*setter)(VALUE val, ID id, void *data, struct global_entry* entry);
3.3 Encapsulate C data into ruby object
C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿<EFBFBD>ǡ<EFBFBD><EFBFBD><EFBFBD>(<28><>¤<EFBFBD><C2A4>)<29><>ruby<62>Υ<EFBFBD><CEA5>֥<EFBFBD><D6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȤȤ<C8A4><C8A4><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϡ<EFBFBD>Data<EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD>
ruby<EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD>C<EFBFBD>ι<EFBFBD>¤<EFBFBD><EFBFBD>(<28>ؤΥݥ<CEA5><DDA5><EFBFBD><EFBFBD><EFBFBD>)<29>򤯤<EFBFBD><F2A4AFA4><EFBFBD>Ȥ<EFBFBD>ruby
<EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȤȤ<EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤʤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
Data<EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD>¤<EFBFBD>Τ<EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ˥<EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뤿<EFBFBD><EFBFBD><EFBFBD>ˤϡ<EFBFBD><EFBFBD>ʲ<EFBFBD><EFBFBD>Υޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
Data_Wrap_Struct(class,mark,free,ptr)
<EFBFBD><EFBFBD><EFBFBD>Υޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿Data<EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȤǤ<EFBFBD><EFBFBD><EFBFBD>
class<EFBFBD>Ϥ<EFBFBD><EFBFBD><EFBFBD>Data<EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȤΥ<EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>ptr<EFBFBD>ϥ<EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
C<EFBFBD>ι<EFBFBD>¤<EFBFBD>ΤؤΥݥ<EFBFBD><EFBFBD>󥿤Ǥ<EFBFBD><EFBFBD><EFBFBD>mark<EFBFBD>Ϥ<EFBFBD><EFBFBD>ι<EFBFBD>¤<EFBFBD>Τ<EFBFBD>ruby<EFBFBD>Υ<EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ȥؤλ<EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻Ȥ<EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD>ʻ<EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>ޤޤʤ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
# <20><><EFBFBD>Τ<CEA4>ʻ<EFBFBD><CABB>Ȥϴ<C8A4><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD><EFBFBD><EFBFBD>
free<EFBFBD>Ϥ<EFBFBD><EFBFBD>ι<EFBFBD>¤<EFBFBD>Τ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>פˤʤä<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸ƤФ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>١<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƤФ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
C<EFBFBD>ι<EFBFBD>¤<EFBFBD>Τγ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Data<EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD><EFBFBD><EFBFBD>˹Ԥ<EFBFBD><EFBFBD>ޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ưʲ<EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD>󶡤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
Data_Make_Struct(class, type, mark, free, sval)
<EFBFBD><EFBFBD><EFBFBD>Υޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿Data<EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȤǤ<EFBFBD><EFBFBD><EFBFBD>
class, mark, free<65><65>Data_Wrap_Struct<63><74>Ʊ<EFBFBD><C6B1>Ư<EFBFBD><C6AF><EFBFBD>򤷤ޤ<F2A4B7A4><DEA4><EFBFBD>type
<EFBFBD>ϳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD>C<EFBFBD><EFBFBD>¤<EFBFBD>Τη<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD>줿<EFBFBD><EFBFBD>¤<EFBFBD>Τ<EFBFBD><EFBFBD>ѿ<EFBFBD>sval
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD>η<EFBFBD><EFBFBD><EFBFBD> (type*) <20>Ǥ<EFBFBD><C7A4><EFBFBD>ɬ<EFBFBD>פ<EFBFBD><D7A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
Data<EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݥ<EFBFBD><EFBFBD>󥿤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ф<EFBFBD><EFBFBD>Τϰʲ<EFBFBD><EFBFBD>Υޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD>
<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
Data_Get_Struct(obj, type, sval)
C<EFBFBD>ι<EFBFBD>¤<EFBFBD>ΤؤΥݥ<EFBFBD><EFBFBD>󥿤<EFBFBD><EFBFBD>ѿ<EFBFBD>sval<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Data<EFBFBD>λȤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ä<EFBFBD>ʬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τǡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򻲾Ȥ<EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
4<EFBFBD><EFBFBD>Example - Create dbm module
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤǤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǤȤꤢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϥ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>
ruby<EFBFBD><EFBFBD>ext<EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>ˤ<EFBFBD><EFBFBD>Ǥ˴ޤޤ<EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD>dbm<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʳ<EFBFBD>Ū<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
(1) make the directory
% mkdir ext/dbm
ruby<EFBFBD><EFBFBD>Ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>β<EFBFBD><EFBFBD><EFBFBD>ext<EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>ĥ<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѤΥǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
(2) create MANIFEST file
% cd ext/dbm
% touch MANIFEST
<EFBFBD><EFBFBD>ĥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>β<EFBFBD><EFBFBD>ˤ<EFBFBD>MANIFEST<EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ɬ<EFBFBD>פʤΤǡ<EFBFBD><EFBFBD>Ȥꤢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>äƤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD>ɬ<EFBFBD>פʥե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥˤʤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
MANIFEST<EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD>make<EFBFBD>λ<EFBFBD><EFBFBD>˥ǥ<EFBFBD><EFBFBD><EFBFBD>ȥ꤬<EFBFBD><EFBFBD>ĥ<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>ɤ<EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD><EFBFBD>뤿<EFBFBD><EFBFBD><EFBFBD>˻Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
(3) design the library
<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɡ<EFBFBD><EFBFBD>ɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>פ<EFBFBD><EFBFBD><EFBFBD>ɬ<EFBFBD>פ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤ<EFBFBD><EFBFBD>ʥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD>
<EFBFBD>ɤ<EFBFBD><EFBFBD>ʥ᥽<EFBFBD>åɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󶡤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤɤˤĤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>dbm<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤĤ<EFBFBD><EFBFBD>Ƥ<EFBFBD>ext/dbm.doc<6F>򻲾Ȥ<F2BBB2BE><C8A4>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
(4) write C code.
<EFBFBD><EFBFBD>ĥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΤȤʤ<EFBFBD>C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>񤭤ޤ<EFBFBD><EFBFBD><EFBFBD>C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҤȤĤλ<EFBFBD><EFBFBD>ˤϡ֥⥸<EFBFBD><EFBFBD><EFBFBD>̾.c<>פ<EFBFBD><D7A4><EFBFBD><EFBFBD>֤<EFBFBD><D6A4>ɤ<EFBFBD><C9A4>Ǥ<EFBFBD><C7A4><EFBFBD><E7A4A6>C
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϵդˡ֥⥸<EFBFBD><EFBFBD><EFBFBD>̾.c<>פȤ<D7A4><C8A4><EFBFBD><EFBFBD>ե<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD>򤱤<EFBFBD>ɬ<EFBFBD>פ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ⥸<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ū<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֥⥸<EFBFBD><EFBFBD><EFBFBD>̾.o<>פȤ<D7A4><C8A4><EFBFBD><EFBFBD>ե<EFBFBD><D5A5><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>
ruby<EFBFBD>ϳ<EFBFBD>ĥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>Init_<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD>פ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ưŪ<EFBFBD>˼¹Ԥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>dbm<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Init_dbm<EFBFBD><EFBFBD>
<EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>åɡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤɤ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>dbm.c<><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD><D1A4>ޤ<EFBFBD><DEA4><EFBFBD>
--
Init_dbm()
{
/* DBM<42><4D><EFBFBD><EFBFBD><E9A5B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
cDBM = rb_define_class("DBM", cObject);
/* DBM<42><4D>Enumerate<74><EFBFBD><EFBFBD><E5A1BC><EFBFBD>򥤥󥯥롼<F3A5AFA5>ɤ<EFBFBD><C9A4><EFBFBD> */
rb_include_module(cDBM, mEnumerable);
/* DBM<42><4D><EFBFBD><EFBFBD>Υ<EFBFBD><CEA5><EFBFBD><EFBFBD>å<EFBFBD>open(): <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD><EFBFBD> */
rb_define_singleton_method(cDBM, "open", fdbm_s_open, -1);
/* DBM<42><4D><EFBFBD><EFBFBD>Υ<CEA5>å<EFBFBD>close(): <20><><EFBFBD><EFBFBD><EFBFBD>Ϥʤ<CFA4> */
rb_define_method(cDBM, "close", fdbm_close, 0);
/* DBM<42><4D><EFBFBD><EFBFBD>Υ<CEA5>å<EFBFBD>[]: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31> */
rb_define_method(cDBM, "[]", fdbm_fetch, 1);
:
/* DBM<42>ǡ<EFBFBD><C7A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD>󥹥<EFBFBD><F3A5B9A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD>̾<EFBFBD>Τ<EFBFBD><CEA4><EFBFBD><EFBFBD><EFBFBD>ID */
id_dbm = rb_intern("dbm");
}
--
DBM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dbm<EFBFBD>Υǡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥˤʤ<EFBFBD><EFBFBD>Ϥ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>顤C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dbm<EFBFBD><EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɬ<EFBFBD>פ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
dbm.c<>Ǥ<EFBFBD>Data_Make_Struct<63><74><EFBFBD>ʲ<EFBFBD><CAB2>Τ<CEA4>˻ȤäƤ<C3A4><C6A4>ޤ<EFBFBD><DEA4><EFBFBD>
--
struct dbmdata {
int di_size;
DBM *di_dbm;
};
obj = Data_Make_Struct(class,struct dbmdata,0,free_dbm,dbmp);
--
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD>dbmstruct<EFBFBD><EFBFBD>¤<EFBFBD>ΤؤΥݥ<EFBFBD><EFBFBD>󥿤<EFBFBD>Data<EFBFBD>˥<EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD>
<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>DBM*<2A><>ľ<EFBFBD>ܥ<EFBFBD><DCA5>ץ<EFBFBD><D7A5><EFBFBD><EBB2BD><EFBFBD>ʤ<EFBFBD><CAA4>Τ<EFBFBD>close()<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ƤΤ<EFBFBD><EFBFBD>ȤǤ<EFBFBD><EFBFBD><EFBFBD>
Data<EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD>dbmstruct<EFBFBD><EFBFBD>¤<EFBFBD>ΤΥݥ<EFBFBD><EFBFBD>󥿤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ф<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>˰ʲ<EFBFBD><EFBFBD>Υޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȤäƤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
--
#define GetDBM(obj, dbmp) {\
Data_Get_Struct(obj, struct dbmdata, dbmp);\
if (dbmp->di_dbm == 0) closed_dbm();\
}
--
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ä<EFBFBD>ʣ<EFBFBD><EFBFBD><EFBFBD>ʥޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>פ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dbmdata<EFBFBD><EFBFBD>¤<EFBFBD>ΤΥݥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ф<EFBFBD><EFBFBD>ȡ<EFBFBD>close<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD>ɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤȤ<EFBFBD><EFBFBD>Ƥ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>
DBM<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>åɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҤȤĤϰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD>Τǡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD>delete<EFBFBD><EFBFBD>åɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>delete<EFBFBD><EFBFBD>åɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD>
fdbm_delete()<29>Ϥ<EFBFBD><CFA4>Τ<CEA4>ˤʤäƤ<C3A4><C6A4>ޤ<EFBFBD><DEA4><EFBFBD>
--
static VALUE
fdbm_delete(obj, keystr)
VALUE obj, keystr;
{
:
}
--
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>פ<EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>self<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹߤ<EFBFBD><EFBFBD><EFBFBD>å<EFBFBD>
<EFBFBD>ΰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥʤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD>Τ<EFBFBD>C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΤȤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>dbm<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǡ<EFBFBD>C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>DBM<EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>åɤǤ<EFBFBD><EFBFBD><EFBFBD>open()<29>Ǥ<EFBFBD><C7A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>fdbm_s_open()<29>Ϥ<EFBFBD><CFA4><EFBFBD><EFBFBD>ʤäƤ<C3A4><C6A4>ޤ<EFBFBD><DEA4><EFBFBD>
--
static VALUE
fdbm_s_open(argc, argv, class)
int argc;
VALUE *argv;
VALUE class;
{
:
if (rb_scan_args(argc, argv, "11", &file, &vmode) == 1) {
mode = 0666; /* default value */
}
:
}
--
<EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>פδؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>줿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>äƤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤʤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>self<EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD>Ϳ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϥ<EFBFBD><EFBFBD>뤿<EFBFBD><EFBFBD><EFBFBD>δؿ<EFBFBD><EFBFBD><EFBFBD>open()<29>Ǥ<EFBFBD><C7A4>Ȥ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD>rb_scan_args()<29>Ǥ<EFBFBD><C7A4><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EAA4B7><EFBFBD>ե<EFBFBD><D5A5><EFBFBD><EFBFBD>ޥåȤ<C3A5>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ѿ<EFBFBD><EFBFBD>ʹߤ˻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޥåȤϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܤ<EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD>Ǥ<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܤ<EFBFBD>
<EFBFBD><EFBFBD>ά<EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܤ<EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵꤬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD>ΰ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>򼨤<EFBFBD>"*"<22>Ǥ<EFBFBD><C7A4><EFBFBD><32><CAB8><EFBFBD>ܤ<EFBFBD><33><CAB8><EFBFBD>ܤϾ<DCA4>ά<EFBFBD>Ǥ<EFBFBD><C7A4><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>dbm.c<><63><EFBFBD><EFBFBD><EFBFBD>Ǥϡ<C7A4><CFA1>ե<EFBFBD><D5A5><EFBFBD><EFBFBD>ޥåȤ<C3A5>"11"<22>Ǥ<EFBFBD><C7A4><EFBFBD><EFBFBD><EFBFBD><E9A1A4><EFBFBD><EFBFBD><EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD>1<EFBFBD><31>
<EFBFBD>ǡ<EFBFBD>2<EFBFBD>Ĥޤǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD>ˤʤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͤ<EFBFBD>nil(C<><43><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><CEA5>٥<EFBFBD><D9A5>Ǥ<EFBFBD>Qnil)<29>ˤʤ<CBA4><CAA4>ޤ<EFBFBD><DEA4><EFBFBD>
ruby<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD>indexes<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϥ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>
--
static VALUE
fdbm_indexes(obj, args)
VALUE obj;
struct RArray *args;
{
:
}
--
<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>self<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥϥ<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> struct RArray* <20>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD>Ƥ<EFBFBD><C6A4>ޤ<EFBFBD><DEA4><EFBFBD><EFBFBD><EFBFBD>VALUE<55>Ǥ<EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD>
ruby<EFBFBD>ȶ<EFBFBD>ͭ<EFBFBD>Ϥ<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD>Υ<EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD><EFBFBD>
C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD>ϰʲ<EFBFBD><EFBFBD>δؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥä<EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD>󥿥ץ꥿<EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><EFBFBD>
<EFBFBD>򶵤<EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥʤ<EFBFBD><EFBFBD><EFBFBD>GC<EFBFBD>ǥȥ<EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD>򵯤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
void rb_global_variable(VALUE *var)
(5) prepare extconf.rb
<EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>ˡ<EFBFBD>extconf.rb<72>פȤ<D7A4><C8A4><EFBFBD><EFBFBD>ե<EFBFBD><D5A5><EFBFBD><EFBFBD>¸<EBA4AC>ߤ<EFBFBD><DFA4><EFBFBD><EFBFBD>С<EFBFBD>
make<EFBFBD><EFBFBD><EFBFBD>˼¹Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Makefile<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
extconf.rb<72>ϥ⥸<CFA5><EFBFBD><E5A1BC><EFBFBD>Υ<EFBFBD><CEA5><EFBFBD><EFBFBD>ѥ<EFBFBD><D1A5><EFBFBD><EFBFBD><EFBFBD>ɬ<EFBFBD>פʾ<D7A4><CABE><EFBFBD><EFBFBD>Υ<EFBFBD><CEA5><EFBFBD><EFBFBD>å<EFBFBD><C3A5>ʤ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD>Ū<EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>extconf.rb<72><62><EFBFBD><EFBFBD><EFBFBD>Ǥϰʲ<CFB0><CAB2><EFBFBD>ruby<62>ؿ<EFBFBD><D8BF><EFBFBD><EFBFBD>Ȥ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
have_library(lib, func): <20><EFBFBD>֥<EFBFBD><D6A5><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD>ߥ<EFBFBD><DFA5><EFBFBD><EFBFBD>å<EFBFBD>
have_func(func): <20>ؿ<EFBFBD><D8BF><EFBFBD>¸<EFBFBD>ߥ<EFBFBD><DFA5><EFBFBD><EFBFBD>å<EFBFBD>
have_header(header): <20>إå<D8A5><C3A5>ե<EFBFBD><D5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD>ߥ<EFBFBD><DFA5><EFBFBD><EFBFBD>å<EFBFBD>
create_makefile(target): Makefile<6C><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ʲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
$CFLAGS: <20><><EFBFBD><EFBFBD><EFBFBD>ѥ<EFBFBD><D1A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɲ<EFBFBD>Ū<EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EAA4B9><EFBFBD>ե饰(-I<>ʤ<EFBFBD>)
$LDFLAGS: <20><><EFBFBD>󥯻<EFBFBD><F3A5AFBB><EFBFBD><EFBFBD>ɲ<EFBFBD>Ū<EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EAA4B9><EFBFBD>ե饰(-L<>ʤ<EFBFBD>)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򥳥<EFBFBD><EFBFBD>ѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>郎·<EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϥ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ѥ<EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD>create_makefile<EFBFBD><EFBFBD><EFBFBD>ƤФʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Makefile<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
(6) prepare depend (optional)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD>depend<EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>
Makefile<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD>ط<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
% gcc -MM *.c > depend
<EFBFBD>ʤɤǺ<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ä<EFBFBD>»<EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
(7) MANIFEST<53>ե<EFBFBD><D5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˥ե<CBA5><D5A5><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
% ls > MANIFEST
% vi MANIFEST
*.o, *~<7E>ʤ<EFBFBD><CAA4><EFBFBD>ɬ<EFBFBD>פʥե<CAA5><D5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʳ<EFBFBD><CAB3><EFBFBD>MANIFEST<53><54><EFBFBD>ɲä<C9B2><C3A4>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
make<EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD>MANIFEST<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥϻ<EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τǡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΤޤޤǤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD>󤬡<EFBFBD><EFBFBD>ѥå<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󥰤λ<EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τȡ<EFBFBD>
ɬ<EFBFBD>פʥե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̤Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τǡ<EFBFBD><EFBFBD>Ѱդ<EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
(8) make
ruby<EFBFBD>Υǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD>make<EFBFBD><EFBFBD><EFBFBD>¹Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Makefile<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>make<EFBFBD><EFBFBD>
ɬ<EFBFBD>פˤ<EFBFBD><EFBFBD>äƤϤ<EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD>ؤΥ<EFBFBD><EFBFBD>󥯤ޤǼ<EFBFBD>ưŪ<EFBFBD>˼¹<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>extconf.rb<72><62><EFBFBD>񤭴<EFBFBD><F1A4ADB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤɤ<CAA4><C9A4><EFBFBD>Makefile<6C>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>ɬ<EFBFBD>פʻ<EFBFBD><EFBFBD>Ϥޤ<EFBFBD>ruby<EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD>make<EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
(9) debug
<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǥХå<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD>ext/Setup<75>˥ǥ<CBA5><C7A5><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD>񤯤<EFBFBD><EFBFBD><EFBFBD>Ū<EFBFBD>˥<EFBFBD><EFBFBD>󥯤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΤǥǥХå<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѥ<EFBFBD><EFBFBD><EFBFBD>٤<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɡ<EFBFBD>
(10) done, now you have the extension module
<EFBFBD><EFBFBD><EFBFBD>Ϥ<EFBFBD><EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>ʤꡤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤꡤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤꡤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>ˤ<EFBFBD>
<EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD>κ<EFBFBD><EFBFBD>Ԥϳ<EFBFBD>ĥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴ؤ<EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD>ڤθ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>ĥ<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Appendix A. ruby<62>Υ<EFBFBD><CEA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤ<EFBFBD>ʬ<EFBFBD><CAAC>
ruby<EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD><EFBFBD>ʬ<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʬ<EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD>Ū<EFBFBD>˳<EFBFBD>ĥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤʤ<EFBFBD>
<EFBFBD>Ƥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϻ<EFBFBD><EFBFBD>ޤǤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǤۤȤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>פ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
coore ruby language
class.c
error.c
eval.c
gc.c
object.c
parse.y
variable.c
utility functions
dln.c
fnmatch.c
glob.c
regex.c
st.c
util.c
ruby interpreter implementation
dmyext.c
inits.c
main.c
ruby.c
version.c
class library
array.c
bignum.c
compar.c
dir.c
enum.c
file.c
hash.c
io.c
math.c
numeric.c
pack.c
process.c
random.c
range.c
re.c
signal.c
sprintf.c
string.c
struct.c
time.c
Appendix B. <20><>ĥ<EFBFBD>Ѵؿ<D1B4><D8BF><EFBFBD><EFBFBD>ե<EFBFBD><D5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD>ε<EFBFBD>ǽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD><EFBFBD>API<EFBFBD>ϰʲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̤<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>
** <20><>
VALUE
ruby<EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뷿<EFBFBD><EFBFBD>ɬ<EFBFBD>פ˱<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƥ<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD>
<EFBFBD>Ȥ߹<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>η<EFBFBD><EFBFBD><EFBFBD>ruby.h<>˵<EFBFBD><CBB5>Ҥ<EFBFBD><D2A4>Ƥ<EFBFBD><C6A4><EFBFBD>R<EFBFBD>ǻϤޤ빽¤
<EFBFBD>ΤǤ<EFBFBD><EFBFBD>롥VALUE<EFBFBD><EFBFBD><EFBFBD>򤳤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>뤿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>ǻϤޤ빽¤<EFBFBD><EFBFBD>
̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD>Υޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѱդ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD>
** Variables and constants
Qnil
const: nil object
TRUE
const: TRUE object(default true value)
FALSE
const: FALSE object
** C<>ǡ<EFBFBD><C7A1><EFBFBD><EFBFBD>Υ<EFBFBD><CEA5>ץ<EFBFBD><D7A5>
Data_Wrap_Struct(VALUE class, void (*mark)(), void (*free)(), void *sval)
C<EFBFBD><EFBFBD>Ǥ<EFBFBD>դΥݥ<EFBFBD><EFBFBD>󥿤򥫥ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>Υݥ<EFBFBD><EFBFBD>󥿤<EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>ʤä<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>free<EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƤФ<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υݥ<EFBFBD><EFBFBD>󥿤λؤ<EFBFBD><EFBFBD>ǡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¾<EFBFBD><EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>ؤ<EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>硤mark<EFBFBD>˻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD>ǥޡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɬ<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Data_Make_Struct(class, type, mark, free, sval)
type<EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>malloc<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD>sval<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򥫥ץ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD>ޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Data_Get_Struct(data, type, sval)
data<EFBFBD><EFBFBD><EFBFBD><EFBFBD>type<EFBFBD><EFBFBD><EFBFBD>Υݥ<EFBFBD><EFBFBD>󥿤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ф<EFBFBD><EFBFBD>ѿ<EFBFBD>sval<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD>饹/<2F><EFBFBD><EFBFBD><E5A1BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
VALUE rb_define_class(char *name, VALUE super)
super<EFBFBD>Υ<EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
VALUE rb_define_class_under(VALUE module, char *name, VALUE super)
super<EFBFBD>Υ<EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>module<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
VALUE rb_define_module(char *name)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
VALUE rb_define_module_under(VALUE module, char *name, VALUE super)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>module<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void rb_include_module(VALUE class, VALUE module)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򥤥󥯥롼<EFBFBD>ɤ<EFBFBD><EFBFBD>롥class<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD>module<EFBFBD>򥤥󥯥롼
<EFBFBD>ɤ<EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϲ<EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD>(¿<>ť<EFBFBD><C5A5>󥯥롼<F3A5AFA5>ɤζػ<CEB6>)<29><>
void rb_extend_object(VALUE object, VALUE module)
<EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD>)<29>dz<EFBFBD>ĥ<EFBFBD><C4A5><EFBFBD>
** <20><><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><D1BF><EFBFBD><EFBFBD><EFBFBD>
void rb_define_variable(char *name, VALUE *var)
ruby<EFBFBD><EFBFBD>C<EFBFBD>ȤǶ<EFBFBD>ͭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Х<EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD>̾<EFBFBD><EFBFBD>`$'<27>ǻ<EFBFBD>
<EFBFBD>ޤ<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϼ<EFBFBD>ưŪ<EFBFBD><EFBFBD><EFBFBD>ɲä<EFBFBD><EFBFBD><EFBFBD><EFBFBD>롥name<EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD>μ<EFBFBD><EFBFBD>̻ҤȤ<EFBFBD>
<EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD>ʸ<EFBFBD><EFBFBD>(<28><EFBFBD><E3A4A8>` ')<29><><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD>ruby<62>ץ<EFBFBD><D7A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A4AB>
<EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>ʤ롥
void rb_define_readonly_variable(char *name, VALUE *var)
ruby<EFBFBD><EFBFBD>C<EFBFBD>ȤǶ<EFBFBD>ͭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>read only<6C>Υ<EFBFBD><CEA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Х<EFBFBD><D0A5>ѿ<EFBFBD><D1BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>롥read
only<EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>Ȱʳ<EFBFBD><EFBFBD><EFBFBD>rb_define_variable()<29><>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD>
void rb_define_virtual_variable(char *name,
VALUE (*getter)(), VALUE (*setter)())
<EFBFBD>ؿ<EFBFBD><EFBFBD>ˤ<EFBFBD><EFBFBD>äƼ¸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>줿<EFBFBD><EFBFBD>
<EFBFBD>ˤ<EFBFBD>getter<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>åȤ<EFBFBD><EFBFBD>줿<EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD>setter<EFBFBD><EFBFBD><EFBFBD>ƤФ<EFBFBD><EFBFBD>
void rb_define_hooked_variable(char *name, VALUE *var,
VALUE (*getter)(), VALUE (*setter)())
<EFBFBD>ؿ<EFBFBD><EFBFBD>ˤ<EFBFBD><EFBFBD>ä<EFBFBD>hook<EFBFBD>ΤĤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Х<EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>줿<EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD>getter<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>åȤ<EFBFBD><EFBFBD>줿<EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD>setter
<EFBFBD><EFBFBD><EFBFBD>ƤФ<EFBFBD><EFBFBD>롥getter<EFBFBD><EFBFBD>setter<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD>hook<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD>Ʊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤʤ롥
void rb_global_variable(VALUE *var)
GC<EFBFBD>Τ<EFBFBD><EFBFBD>ᡤruby<EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD>, ruby<62><79><EFBFBD>֥<EFBFBD><D6A5><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD><EFBFBD><E9A5B9><EFBFBD><EFBFBD>
void rb_define_const(VALUE class, char *name, VALUE val)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void rb_define_global_const(char *name, VALUE val)
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
rb_define_const(cKernal, name, val)
<EFBFBD><EFBFBD>Ʊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD><EFBFBD>
** <20><EFBFBD>å<EFBFBD><C3A5><EFBFBD><EFBFBD><EFBFBD>
rb_define_method(VALUE class, char *name, VALUE (*func)(), int argc)
<EFBFBD><EFBFBD>åɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>롥argc<EFBFBD><EFBFBD>self<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD>argc<EFBFBD><EFBFBD>-1<>λ<EFBFBD>,
<EFBFBD>ؿ<EFBFBD><EFBFBD>ˤϰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD>(self<6C><66><EFBFBD>ޤޤʤ<DEA4>)<29><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>
<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>self)<29><>argc<67><63>-2<>λ<EFBFBD>, <20><>1<EFBFBD><31>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>self, <20><>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>args(args<67>ϰ<EFBFBD><CFB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD>ruby<62><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
rb_define_private_method(VALUE class, char *name, VALUE (*func)(), int argc)
private<EFBFBD><EFBFBD>åɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>rb_define_method()<29><>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD>
rb_define_singleton_method(VALUE class, char *name, VALUE (*func)(), int argc)
<EFBFBD>ðۥ᥽<EFBFBD>åɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>rb_define_method()<29><>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD>
rb_scan_args(int atgc, VALUE *argv, char *fmt, ...)
argc,argv<67><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD><EFBFBD><EFBFBD>줿<EFBFBD><ECA4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʬ<EFBFBD>򤹤롥fmt<6D><74>ɬ<EFBFBD>ܰ<EFBFBD><DCB0><EFBFBD><EFBFBD>ο<EFBFBD>,
<EFBFBD>ղð<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD>, <20>Ĥ<EFBFBD><C4A4>ΰ<EFBFBD><CEB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA4AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAA4B9>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>*"<22>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><C7A4>롥 2 <20><><EFBFBD>ܤο<DCA4><CEBF><EFBFBD><EFBFBD><EFBFBD>"*"<22>Ϥ<EFBFBD><CFA4><EFBFBD><ECA4BE><EFBFBD><EFBFBD>ά<EFBFBD><CEAC>ǽ<EFBFBD><C7BD>
<EFBFBD><EFBFBD><EFBFBD>롥ɬ<EFBFBD>ܰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹߤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ؤΥݥ<EFBFBD><EFBFBD>󥿤<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><C7A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><D1BF>˳<EFBFBD>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ղð<D5B2>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD>Qnil<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>
** ruby<62><EFBFBD>åɸƤӽФ<D3BD>
VALUE rb_funcall(VALUE recv, ID mid, int narg, ...)
<EFBFBD><EFBFBD>åɸƤӽФ<EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD>󤫤<EFBFBD>mid<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뤿<EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD>rb_intern()<29><><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD>
VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv)
<EFBFBD><EFBFBD>åɸƤӽФ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>argc,argv<67><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϥ<EFBFBD><CFA4><EFBFBD>
VALUE rb_eval_string(char *str)
ʸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ruby<EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץȤ<EFBFBD><EFBFBD>ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѥ<EFBFBD><EFBFBD><EFBFBD>¹Ԥ<EFBFBD><EFBFBD>
ID rb_intern(char *name)
ʸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD>
char *rb_id2name(ID id)
ID<EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD>(<28>ǥХå<D0A5><C3A5><EFBFBD>)<29><>
char *rb_class2name(VALUE class)
class<EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD>(<28>ǥХå<D0A5><C3A5><EFBFBD>)<29><>class<73><73>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><CAA4><EFBFBD><EFBFBD>ˤ<EFBFBD>,
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̤ä<EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD>󥹥<EFBFBD><F3A5B9A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD>
VALUE rb_iv_get(VALUE obj, char *name)
obj<EFBFBD>Υ<EFBFBD><EFBFBD>󥹥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>롥`@'<27>ǻϤޤ<CFA4><DEA4>ʤ<EFBFBD><CAA4><EFBFBD><EFBFBD>󥹥<EFBFBD><F3A5B9A5><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD> ruby<62>ץ<EFBFBD><D7A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A5A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><C7A4>ʤ<EFBFBD><CAA4>ֱ<EFBFBD><D6B1>줿<EFBFBD>ץ<EFBFBD><D7A5>󥹥<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD>ˤʤ롥
VALUE rb_iv_set(VALUE obj, char *name, VALUE val)
obj<EFBFBD>Υ<EFBFBD><EFBFBD>󥹥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD>val<EFBFBD>˥<EFBFBD><EFBFBD>åȤ<EFBFBD><EFBFBD>
** <20><><EFBFBD>湽¤
VALUE rb_iterate(VALUE (*func1)(), void *arg1, VALUE (*func2)(), void *arg2)
func2<EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ꤷ, func1<63>򥤥ƥ졼<C6A5><ECA1BC><EFBFBD>Ȥ<EFBFBD><C8A4>ƸƤ֡<C6A4>
func1<EFBFBD>ˤ<EFBFBD> arg1<67><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD>Ϥ<EFBFBD><CFA4><EFBFBD>, func2<63>ˤ<EFBFBD><CBA4><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><CBA5>ƥ졼
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿<EFBFBD><EFBFBD>, <20><>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>arg2<67><32><EFBFBD>Ϥ<EFBFBD><CFA4><EFBFBD><EFBFBD>
VALUE rb_yield(VALUE val)
val<EFBFBD><EFBFBD><EFBFBD>ͤȤ<EFBFBD><EFBFBD>ƥ<EFBFBD><EFBFBD>ƥ졼<EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƤӽФ<EFBFBD><EFBFBD><EFBFBD>
VALUE rb_rescue(VALUE (*func1)(), void *arg1, VALUE (*func2)(), void *arg2)
<EFBFBD>ؿ<EFBFBD>func1<EFBFBD><EFBFBD>arg1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸ƤӽФ<EFBFBD><EFBFBD><EFBFBD>func1<EFBFBD>μ¹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD> func2<63><32>arg2<67><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><C8A4>ƸƤ֡<C6A4><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͤ<EFBFBD><CDA4><EFBFBD><E3B3B0>ȯ<EFBFBD><C8AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>func1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><EFBFBD><E3B3B0>ȯ<EFBFBD><C8AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD>func2<63><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͤ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>
VALUE rb_ensure(VALUE (*func1)(), void *arg1, void (*func2)(), void *arg2)
<EFBFBD>ؿ<EFBFBD>func1<EFBFBD><EFBFBD>arg1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Ƽ¹Ԥ<EFBFBD>, <20>¹Խ<C2B9>λ<EFBFBD><CEBB>(<28><><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD><E3B3B0>ȯ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD>) func2<63><32>arg2<67><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><C8A4>Ƽ¹Ԥ<C2B9><D4A4><EFBFBD><EBA1A5><EFBFBD><EFBFBD><EFBFBD>ͤ<EFBFBD>func1<63><31><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ͤǤ<EFBFBD><EFBFBD><EFBFBD>(<28><EFBFBD><E3B3B0>ȯ<EFBFBD><C8AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD>)<29><>
** <20><EFBFBD><E3B3B0><EFBFBD><EFBFBD><EFBFBD>
void Warning(char *fmt, ...)
verbose<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϥ˷ٹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>printf()<29><>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD>
void Fail(char *fmt, ...)
<EFBFBD><EFBFBD><EFBFBD>ȯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>printf()<29><>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD>
void Fatal(char *fmt, ...)
<EFBFBD><EFBFBD>̿Ū<EFBFBD><EFBFBD><EFBFBD>ȯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϹԤʤ<EFBFBD><EFBFBD>줺, <20><><EFBFBD>󥿡<EFBFBD>
<EFBFBD>ץ꥿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ensure<72>ǻ<EFBFBD><C7BB><EFBFBD>줿<EFBFBD><ECA4BF><EFBFBD><EFBFBD><EFBFBD>ɤϽ<C9A4>λ<EFBFBD><CEBB><EFBFBD>˼<EFBFBD>
<EFBFBD>Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><>
void Bug(char *fmt, ...)
<EFBFBD><EFBFBD><EFBFBD>󥿡<EFBFBD><EFBFBD>ץ꥿<EFBFBD>ʤɥץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΥХ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>ȯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϥ<EFBFBD><EFBFBD>Τʤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>Ƥ֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>󥿡<EFBFBD><EFBFBD>ץ꥿<EFBFBD>ϥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>פ<EFBFBD>ľ<EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD><EFBFBD>ڹԤʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD>
** ruby<62>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¹<EFBFBD>
ruby<EFBFBD>򥢥ץꥱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϰʲ<EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD>󥿥ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD>γ<EFBFBD>ĥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD>ɬ<EFBFBD>פʤ<EFBFBD><EFBFBD><EFBFBD>
void ruby_init(int argc, char **argv, char **envp)
ruby<EFBFBD><EFBFBD><EFBFBD>󥿥ץ꥿<EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥʤ<EFBFBD><EFBFBD><EFBFBD>
void ruby_run()
ruby<EFBFBD><EFBFBD><EFBFBD>󥿥ץ꥿<EFBFBD><EFBFBD><EFBFBD>¹Ԥ<EFBFBD><EFBFBD>
void ruby_script(char *name)
ruby<EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD>̾($0)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Appendix B. extconf.rb<72>ǻȤ<C7BB><C8A4><EFBFBD><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD><EFBFBD><EFBFBD>
extconf.rb<72><62><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><C7A4><EFBFBD><EFBFBD>Ѳ<EFBFBD>ǽ<EFBFBD>ʥ<EFBFBD><CAA5><EFBFBD><EFBFBD>ѥ<EFBFBD><D1A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><C3A5>δؿ<CEB4><D8BF>ϰ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̤<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>
have_library(lib, func)
<EFBFBD>ؿ<EFBFBD>func<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD>lib<EFBFBD><EFBFBD>¸<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD>¸<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD>
have_func(func)
<EFBFBD>ؿ<EFBFBD>func<EFBFBD><EFBFBD>¸<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD>롥func<EFBFBD><EFBFBD>ɸ<EFBFBD><EFBFBD><EFBFBD>Ǥϥ<EFBFBD><EFBFBD>󥯤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD>ΤǤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>have_library<EFBFBD>Ǥ<EFBFBD><EFBFBD>Υ<EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD>
have_header(header)
<EFBFBD>إå<EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>إå<EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>TRUE<EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD>
create_makefile(target)
<EFBFBD><EFBFBD>ĥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD>Makefile<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƤФʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD>target<EFBFBD>ϥ⥸<EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD>ɽ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*
* Local variables:
* fill-column: 60
* end:
*/