From 5d828b25d4ae30a000c054a724ac248dadbb97b3 Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Tue, 10 Jan 1995 00:58:20 +0900 Subject: version 0.64 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://cache.ruby-lang.org/pub/ruby/1.0/ruby-0.64.tar.gz Tue Jan 10 00:58:20 1995 Yukihiro Matsumoto (matz@dyna) * eval.c: レシーバと引数は常にiterではない. * cons.c(aref,aset): negative offset対応. Mon Jan 9 14:40:39 1995 Yukihiro Matsumoto (matz@ix-02) * parse.y: foo{..}の形式において,fooをローカル変数やクラス名では なく,引数なしの関数型メソッド呼び出しとみなすようにした. * list.c -> cons.c: 名称変更(クラス名も). * list.c: a::b::c::nilをリスト(a b c)とみなすlisp形式から,a::b::c をリスト(a b c)とみなすruby形式に変更.[], []=, eachもそれに会わ せた仕様とする. * list.c: consペアとしての機能を強調.仕様変更. Sat Jan 7 01:26:26 1995 Yukihiro Matsumoto (matz@dyna) * eval.c: 自己代入の不具合修正. * eval.c(masign): 多重代入が配列もリストもとれるようにした. * list.c: assocを2要素の配列からList(CONSペア)に変更した. Fri Jan 6 13:42:12 1995 Yukihiro Matsumoto (matz@ix-02) * parse.y: a[b]+=cやa.b+=cなどの自己代入形式で,aやbを2度評価しな くなった. * eval.c: iterator設定のバグフィックス. * list.c: Listクラスを新設. Thu Jan 5 13:55:00 1995 Yukihiro Matsumoto (matz@ix-02) * parse.y: SCOPEのメモリリークをなくした. * eval.c: built-inメソッドへの引数の引き渡し方を変更して,配列の生 成数を減らした. * re.c: match-dataを毎回生成することをやめた.`$~'をアクセスした時 にon-demandで生成する. * string.c etc: 不必要なmemmoveをmemcpyに置換. * parse.y: =~, !~は副作用があるのでコンパイル時に展開できない. Tue Jan 3 02:04:36 1995 Yukihiro Matsumoto (matz@dyna) * eval.c: rest引数のbug fix. * eval.c,gc.c: scopeをオブジェクトにした. * eval.c: envとscopeの扱いを変更した. Wed Dec 28 09:46:57 1994 Yukihiro Matsumoto (matz@ix-02) * parse.y: evalでローカル変数が追加された場合に対応した. * parse.y: 演算子を含むaliasのbug fix. Tue Dec 27 16:45:20 1994 Yukihiro Matsumoto (matz@ix-02) * parse.y: def A Bをalias A Bに変更. * eval.c: alias関係のbug修正.nodeをオブジェクト化した時にenbugし たようだ. * signal.c: システムコールの再定義を止めた. * io.c(select): write/exceptのフラグ設定にバグ. * Makefile.in: static link用オプションをMake変数として独立させた. --- object.c | 48 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 16 deletions(-) (limited to 'object.c') diff --git a/object.c b/object.c index 21c71abd1b..e71043fdde 100644 --- a/object.c +++ b/object.c @@ -3,7 +3,7 @@ object.c - $Author: matz $ - $Date: 1994/12/20 05:01:01 $ + $Date: 1995/01/10 10:42:44 $ created at: Thu Jul 15 12:01:24 JST 1993 Copyright (C) 1994 Yukihiro Matsumoto @@ -26,7 +26,6 @@ VALUE C_Data; struct st_table *new_idhash(); VALUE Fsprintf(); -VALUE Fdefined(); VALUE obj_responds_to(); VALUE obj_alloc(); @@ -47,11 +46,18 @@ P_false(obj) return FALSE; } +VALUE +rb_equal(obj1, obj2) + VALUE obj1, obj2; +{ + return rb_funcall(obj1, eq, 1, obj2); +} + static VALUE -Fkrn_equal(obj, other) - VALUE obj, other; +Fkrn_equal(obj1, obj2) + VALUE obj1, obj2; { - if (obj == other) return TRUE; + if (obj1 == obj2) return TRUE; return FALSE; } @@ -73,7 +79,7 @@ static VALUE Fkrn_noteq(obj, other) VALUE obj, other; { - if (rb_funcall(obj, eq, 1, other)) { + if (rb_equal(obj, other)) { return FALSE; } return TRUE; @@ -271,8 +277,10 @@ obj_alloc(class) } static VALUE -Fcls_new(class, args) - VALUE class, args; +Fcls_new(argc, argv, class) + int argc; + VALUE *argv; + VALUE class; { return obj_alloc(class); } @@ -285,12 +293,14 @@ Fcls_to_s(class) } static VALUE -Fcls_attr(class, args) - VALUE class, args; +Fcls_attr(argc, argv, class) + int argc; + VALUE *argv; + VALUE class; { VALUE name, pub; - rb_scan_args(args, "11", &name, &pub); + rb_scan_args(argc, argv, "11", &name, &pub); Check_Type(name, T_STRING); rb_define_attr(class, RSTRING(name)->ptr, pub); return Qnil; @@ -351,7 +361,8 @@ Fdata_class(data) return C_Data; } -static VALUE boot_defclass(name, super) +static +VALUE boot_defclass(name, super) char *name; VALUE super; { @@ -361,6 +372,11 @@ static VALUE boot_defclass(name, super) return (VALUE)obj; } +Fdo() +{ + return rb_yield(Qnil); +} + VALUE TopSelf; VALUE TRUE = 1; @@ -423,11 +439,11 @@ Init_Object() rb_define_method(C_Kernel, "to_s", Fkrn_to_s, 0); rb_define_method(C_Kernel, "_inspect", Fkrn_inspect, 0); - rb_define_private_method(C_Kernel, "defined", Fdefined, 1); - rb_define_private_method(C_Kernel, "sprintf", Fsprintf, -1); rb_define_alias(C_Kernel, "format", "sprintf"); + rb_define_private_method(C_Kernel, "do", Fdo, 0); + rb_define_method(C_Object, "_inspect", Fobj_inspect, 0); rb_define_method(C_Object, "responds_to", obj_responds_to, 1); @@ -437,11 +453,11 @@ Init_Object() rb_define_method(C_Module, "to_s", Fcls_to_s, 0); rb_define_method(C_Module, "clone", Fcant_clone, 0); - rb_define_private_method(C_Module, "attr", Fcls_attr, -2); + rb_define_private_method(C_Module, "attr", Fcls_attr, -1); rb_define_method(C_Module, "export", Fcls_export, -1); rb_define_method(C_Module, "unexport", Fcls_unexport, -1); - rb_define_method(C_Class, "new", Fcls_new, -2); + rb_define_method(C_Class, "new", Fcls_new, -1); C_Nil = rb_define_class("Nil", C_Kernel); rb_define_method(C_Nil, "to_s", Fnil_to_s, 0); -- cgit v1.2.3