зеркало из https://github.com/github/ruby.git
1065 строки
28 KiB
Plaintext
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>1ʸ<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>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>"*"<22>Ǥ<EFBFBD><C7A4><EFBFBD>2ʸ<32><CAB8><EFBFBD>ܤ<EFBFBD>3ʸ<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:
|
|||
|
*/
|