1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

2000-03-06

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@632 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2000-03-06 04:15:42 +00:00
parent b014cc337e
commit d7b8e448bf
18 changed files with 127 additions and 67 deletions

View file

@ -73,7 +73,7 @@ ruby.h
break;
default:
/* 例外を発生させる */
TypeError("not valid value");
rb_raise(rb_eTypeError, "not valid value");
break;
}
@ -252,7 +252,7 @@ Ruby
メソッドや特異メソッドを定義するには以下の関数を使います.
void rb_define_method(VALUE class, char *name,
void rb_define_method(VALUE klass, char *name,
VALUE (*func)(), int argc)
void rb_define_singleton_method(VALUE object, char *name,
@ -277,8 +277,8 @@ argc
メソッドを定義する関数はもう二つありますひとつはprivateメ
ソッドを定義する関数で引数はrb_define_method()と同じです.
void rb_define_private_method(VALUE class, char *name,
VALUE (*func)(), int argc)
void rb_define_private_method(VALUE klass, char *name,
VALUE (*func)(), int argc)
privateメソッドとは関数形式でしか呼び出すことの出来ないメソッ
ドです.
@ -312,7 +312,7 @@ private
拡張ライブラリが必要な定数はあらかじめ定義しておいた方が良い
でしょう.定数を定義する関数は二つあります.
void rb_define_const(VALUE class, char *name, VALUE val)
void rb_define_const(VALUE klass, char *name, VALUE val)
void rb_define_global_const(char *name, VALUE val)
前者は特定のクラス/モジュールに属する定数を定義するもの,後
@ -467,11 +467,11 @@ Ruby
Dataオブジェクトを生成して構造体をRubyオブジェクトにカプセル
化するためには,以下のマクロを使います.
Data_Wrap_Struct(class,mark,free,ptr)
Data_Wrap_Struct(klass, mark, free, ptr)
このマクロの戻り値は生成されたDataオブジェクトです
classはこのDataオブジェクトのクラスですptrはカプセル化する
klassはこのDataオブジェクトのクラスですptrはカプセル化する
Cの構造体へのポインタですmarkはこの構造体がRubyのオブジェ
クトへの参照がある時に使う関数です.そのような参照を含まない
時には0を指定します
@ -484,11 +484,11 @@ free
Cの構造体の割当とDataオブジェクトの生成を同時に行うマクロと
して以下のものが提供されています.
Data_Make_Struct(class, type, mark, free, sval)
Data_Make_Struct(klass, type, mark, free, sval)
このマクロの戻り値は生成されたDataオブジェクトです
class, mark, freeはData_Wrap_Structと同じ働きをしますtype
klass, mark, freeはData_Wrap_Structと同じ働きをしますtype
は割り当てるC構造体の型です割り当てられた構造体は変数sval
に代入されます.この変数の型は (type*) である必要があります.
@ -588,7 +588,7 @@ struct dbmdata {
};
obj = Data_Make_Struct(class,struct dbmdata,0,free_dbm,dbmp);
obj = Data_Make_Struct(klass, struct dbmdata, 0, free_dbm, dbmp);
--
ここではdbmstruct構造体へのポインタをDataにカプセル化してい
@ -633,10 +633,10 @@ fdbm_delete(obj, keystr)
--
static VALUE
fdbm_s_open(argc, argv, class)
fdbm_s_open(argc, argv, klass)
int argc;
VALUE *argv;
VALUE class;
VALUE klass;
{
:
if (rb_scan_args(argc, argv, "11", &file, &vmode) == 1) {
@ -712,7 +712,7 @@ Makefile
もしディレクトリにdependというファイルが存在すれば
Makefileが依存関係をチェックしてくれます
% gcc -MM *.c > depend
% gcc -MM *.c > depend
などで作ることが出来ます.あって損は無いでしょう.
@ -793,8 +793,6 @@ Ruby
ユーティリティ関数
dln.c
fnmatch.c
glob.c
regex.c
st.c
util.c
@ -821,6 +819,7 @@ Ruby
math.c
numeric.c
pack.c
prec.c
process.c
random.c
range.c
@ -860,7 +859,7 @@ Qfalse
** Cデータのカプセル化
Data_Wrap_Struct(VALUE class, void (*mark)(), void (*free)(), void *sval)
Data_Wrap_Struct(VALUE klass, void (*mark)(), void (*free)(), void *sval)
Cの任意のポインタをカプセル化したRubyオブジェクトを返す
のポインタがRubyからアクセスされなくなった時freeで指定した
@ -868,7 +867,7 @@ Data_Wrap_Struct(VALUE class, void (*mark)(), void (*free)(), void *sval)
ジェクトを指している場合markに指定する関数でマークする必要
がある.
Data_Make_Struct(class, type, mark, free, sval)
Data_Make_Struct(klass, type, mark, free, sval)
type型のメモリをmallocし変数svalに代入した後それをカプセ
ル化したデータを返すマクロ.
@ -915,7 +914,7 @@ VALUE rb_define_module_under(VALUE module, char *name, VALUE super)
新しいRubyモジュールを定義しmoduleの定数として定義する
void rb_include_module(VALUE class, VALUE module)
void rb_include_module(VALUE klass, VALUE module)
モジュールをインクルードするclassがすでにmoduleをインク
ルードしている時には何もしない(多重インクルードの禁止)
@ -974,7 +973,7 @@ void rb_define_global_const(char *name, VALUE val)
** メソッド定義
rb_define_method(VALUE class, char *name, VALUE (*func)(), int argc)
rb_define_method(VALUE klass, char *name, VALUE (*func)(), int argc)
メソッドを定義するargcはselfを除く引数の数argcが-1の時,
関数には引数の数(selfを含まない)を第1引数, 引数の配列を第2
@ -982,17 +981,17 @@ rb_define_method(VALUE class, char *name, VALUE (*func)(), int argc)
第1引数がself, 第2引数がargs(argsは引数を含むRubyの配列)と
いう形式で与えられる.
rb_define_private_method(VALUE class, char *name, VALUE (*func)(), int argc)
rb_define_private_method(VALUE klass, char *name, VALUE (*func)(), int argc)
privateメソッドを定義する引数はrb_define_method()と同じ.
rb_define_singleton_method(VALUE class, char *name, VALUE (*func)(), int argc)
rb_define_singleton_method(VALUE klass, char *name, VALUE (*func)(), int argc)
特異メソッドを定義する引数はrb_define_method()と同じ.
rb_scan_args(int argc, VALUE *argv, char *fmt, ...)
argc,argv形式で与えられた引数を分解するfmtは必須引数の数,
argc, argv形式で与えられた引数を分解するfmtは必須引数の数,
付加引数の数, 残りの引数があるかを指定する文字列で, "数字
数字*"という形式である. 2 番目の数字と"*"はそれぞれ省略可
能である必須引数が一つもない場合は0を指定する第3引数以
@ -1009,7 +1008,7 @@ VALUE rb_funcall(VALUE recv, ID mid, int narg, ...)
VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv)
メソッド呼び出し引数をargc,argv形式で渡す
メソッド呼び出し引数をargc, argv形式で渡す
VALUE rb_eval_string(char *str)
@ -1023,9 +1022,9 @@ char *rb_id2name(ID id)
IDに対応する文字列を返す(デバッグ用)
char *rb_class2name(VALUE class)
char *rb_class2name(VALUE klass)
classの名前を返す(デバッグ用)classが名前を持たない時には,
クラスの名前を返す(デバッグ用).クラスが名前を持たない時には,
祖先を遡って名前を持つクラスの名前を返す.
int rb_respond_to(VALUE obj, ID id)
@ -1134,7 +1133,6 @@ find_library(lib, func, path...)
関数funcを定義しているライブラリlibの存在を -Lpath を追加
しながらチェックするライブラリが見付かった時trueを返す
結果をキャッシュしない.
have_func(func)
@ -1150,8 +1148,7 @@ have_header(header)
find_header(header)
ヘッダファイルの存在を -Ipath を追加しながらチェックする.
ヘッダファイルが見付かった時trueを返す結果をキャッシュし
ない.
ヘッダファイルが見付かった時trueを返す
create_makefile(target)