[#28402] crypt — Kenji Noda <zaq94465a@...>
野田です
In message "[ruby-list:28402] crypt"
At Fri, 2 Mar 2001 04:34:52 +0900,
newです.
まつもと ゆきひろです
坂下です。
In message <200103030343.MAA03741@smtp1.dti.ne.jp>
坂下です。
新井です。
ごとけんです
newです.
新井です。
新井です。
In message <200103020836.RAA07709@hanare00.math.sci.hokudai.ac.jp>
At Fri, 2 Mar 2001 18:59:39 +0900,
[#28415] class Real — 正木 功 <GEC01122@...>
正木です。
[#28429] Marshal format version — Takahiro Kambe <taca@...>
再び、こんばんは。
石橋秀仁です。こんにちは。
まつもと ゆきひろです
In message <983957685.946561.24647.nullmailer@ev.netlab.zetabits.com>
[#28435] ruby 1.6.3? — akira yamada / やまだあきら <akira@...>
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
もりきゅうです。
もりきゅうです。
もりきゅうです。
わたなべです.
もりきゅうです。
なかだです。
もりきゅうです。
もりきゅうです。
なかだです。
もりきゅうです。
[#28441] constant in module_eval — Kenichi Komiya <kom@...1.accsnet.ne.jp>
[#28454] Ruby 初心者は! — 有瀬 和徳 <crush@...>
Kazunori Aruse
[#28485] ruby/tk TkEntry#selection_present bug? — Noritsugu Nakamura <nnakamur@...>
新井です。
永井@知能.九工大です.
永井@知能.九工大です.
新井です。
永井@知能.九工大です.
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
新井です。
[#28530] テキストファイルを固定文字数で切って、行番号をつけるプログラム — Keisuke Minami <keisuke@...>
こんばんは。三並です。
新井です。
[#28536] DATA.rewind — URA Takefumi <hage@...>
浦と申します。
[#28565] 海外無料サーバ — 有瀬 和徳 <crush@...>
有瀬です。
[#28577] field sort — Kenji Noda <zaq94465a@...>
野田と申します
[#28599] 1.6 のダウンロードマニュアルが圧縮されていない? — Keisuke Minami <keisuke@...>
こんばんは。三並です。
From: Keisuke Minami <keisuke@rccn.com>
SHIBATA Hiroshiです。
In message "[ruby-list:28602] Re: 1.6 のダウンロードマニュアルが圧縮されていない?"
SHIBATA Hiroshiです。
From: Keisuke Minami <keisuke@rccn.com>
newです.
From: "丹生 光則 Nibu,Mitsunori." <nibu@tec.osaka.jip.co.jp>
newです.
From: "丹生 光則 Nibu,Mitsunori." <nibu@tec.osaka.jip.co.jp>
さくです。
青木@横浜です。
From: Daisuke Aoki <dai@sweetparty.ne.jp>
青木@横浜です。
Toshです。
From: Toshiro Kuwabara <toshirok@yb3.so-net.ne.jp>
Toshです。
青木@横浜です。
青木@横浜です。
[#28630] nest of Hash.new — Sato Hiroshi <hiroshi@...>
佐藤です.
[#28642] substr — Akihiro Yamauchi <aygoofy@...>
こんばんは。
[#28660] ruby termios library — akira yamada / やまだあきら <akira@...>
[#28691] Dir#glob of mswin32 — "たけ(tk)" <ggb03124@...>
mswin32 の Dir#glob はパスを入れても、パスを無視してしまうようです。
[#28715] GC — OHARA Shigeki <os@...>
大原です。
[#28764] Win32_process.create PID — Koga Atsushi <kog@...>
みなさまこんばんわ。
artonです。
[#28773] [Q] ChibiXML のサンプルみたいなもの — eda@...
えだです。
高橋征義です。
まつもと ゆきひろです
うえの@ぶるーすかいです。
[#28780] revenge of shell.rb — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#28789] freeze した文字列の書き換えチェック方法 — nekurai@...
ども、根暗井です ^^)
[#28794] undef singleton method — "K.Kosako" <kosako@...>
特異メソッドを未定義(undef)にするには、
[#28798] RubyUnit で、 initialize メソッドのようなことをしたい — "IKAGAWA, Kauztomo" <k_ikagawa@...>
お世話になります。いかがわと申します。
[#28814] fgets — Kazuhiro NISHIYAMA <zn@...>
C言語のfgetsのようなサイズ制限付きのgetsをしようとすると
[#28852] Re: [ruby-ext:01642] Re: o_dbm — keiju@... (石塚圭樹)
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
[#28855] NetBSD BSD/OS curses — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#28862] media watch 2001.03.18 — Noritsugu Nakamura <nnakamur@...>
[#28864] patch glob for MSWin32 ruby-1.6.3 — arton <arton@...>
artonです。
[#28881] 初歩的な質問 — Kenji Noda <zaq94465a@...>
野田です。
[#28887] cygwin で組み込み — "shibata kenji" <shibata@...>
柴田です。
わたなべです。
わたなべ様ありがとうございます。
[#28901] Numeric.new — "たけ(tk)" <ggb03124@...>
Numeric.new があって Fixnum.new がないようです。Fixnum はいいとして、
原です。
たけ(tk)です。
[#28903] lndir.rb でエラー — みかみ まさと <kofukan@...>
みなさん、こんにちは。みかみにございます。
[#28911] media watch 2001.03.22 — akira yamada / やまだあきら <akira@...>
こんばんは。三並です。
前田です。
こんばんは。三並です。
Keisuke Minami さん、こんにちは。Ta-ku-ya II です。
こんばんは。三並です。
Keisuke Minami さん、こんにちは。Ta-ku-ya II です。
[#28919] RD の Reference について — Kenta MURATA <muraken2@...>
むらけんです.
前田です。
[#28954] erb のバグ (ローカル変数が未定義になってしまう) — Keisuke Minami <keisuke@...>
こんにちは。三並です。
[#28963] Re: 9p L 3〜10 P 2 L 2 回目 — Naoto Hiroshima <taisei-in@...>
こんにちは(^_^)
[#29021] [ruby/GD] GD.so not found? — AKJ <ml@...>
はじめて参加させていただきます。
[#29023] 配列に要素を挿入 — Kenji Noda <zaq94465a@...>
野田と申します
From: Kenji Noda <zaq94465a@cat.zero.ad.jp>
箱崎です。
Hiroshi Hakozaki wrote:
新井です。
新井です。
[#29037] forwardable-1.0 release — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
Toshです。
まつもと ゆきひろです
Toshです。
けいじゅ@日本ラショナルソフトウェアです.
Toshです。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
わたなべです。
けいじゅ@日本ラショナルソフトウェアです.
[ruby-list:28719] Re: argument to instance_eval block(Re:
Yukihiro Matsumotoさんの
<983261131.203795.1045.nullmailer@ev.netlab.zetabits.com>から
> |実装上、特異クラスを作れない(あるいは作らない)クラスの
> |インスタンスに対して、instance_evalの中で定数を参照すると
> |死んでしまいます。(定数は定義していなくても同じ)
> |誰も困る人はいないと思って、報告していませんでしたが。
>
> そんなあ、気がついたら教えてくださいよお。
>
> --- eval.c 2001/02/27 07:52:11 1.158
> +++ eval.c 2001/02/27 08:05:17
> @@ -1453,2 +1453,3 @@
>
> + if (NIL_P(klass)) return rb_const_get(rb_cObject, id);
> if (klass->iv_tbl && st_lookup(klass->iv_tbl, id, &result)) {
直りきっていませんでした。
以下の場合が駄目です。
class Fixnum; X = 200; end
100.instance_eval { p X }
# =>
# /home/kosako/ruby/test/single2.rb:3: uninitialized constant X (NameError)
# from /home/kosako/ruby/test/single2.rb:3:in `instance_eval'
# from /home/kosako/ruby/test/single2.rb:3:in `instance_eval'
# from /home/kosako/ruby/test/single2.rb:3
修正は、特異クラスを生成するのが、
一番簡単なのではないでしょうか?
--- ruby.h.orig Mon Feb 19 00:14:58 2001
+++ ruby.h Tue Mar 13 16:31:09 2001
@@ -340,6 +340,7 @@
#define RFILE(obj) (R_CAST(RFile)(obj))
#define FL_SINGLETON FL_USER0
+#define FL_INSTANCE_EVAL FL_USER1
#define FL_MARK (1<<6)
#define FL_FINALIZE (1<<7)
#define FL_TAINT (1<<8)
--- eval.c.orig Mon Mar 12 20:45:08 2001
+++ eval.c Tue Mar 13 16:30:55 2001
@@ -1420,6 +1420,7 @@
}
#define ruby_cbase (RNODE(ruby_frame->cbase)->nd_clss)
+#define RESTRICTED_CLASS_P(c) FL_TEST(c, FL_INSTANCE_EVAL)
static VALUE
ev_const_defined(cref, id)
@@ -1431,7 +1432,6 @@
while (cbase && cbase->nd_clss != rb_cObject) {
struct RClass *klass = RCLASS(cbase->nd_clss);
- if (NIL_P(klass)) return rb_const_defined(rb_cObject, id);
if (klass->iv_tbl && st_lookup(klass->iv_tbl, id, 0)) {
return Qtrue;
}
@@ -1451,7 +1451,6 @@
while (cbase && cbase->nd_clss != rb_cObject) {
struct RClass *klass = RCLASS(cbase->nd_clss);
- if (NIL_P(klass)) return rb_const_get(rb_cObject, id);
if (klass->iv_tbl && st_lookup(klass->iv_tbl, id, &result)) {
return result;
}
@@ -2693,7 +2692,7 @@
break;
case NODE_CDECL:
- if (NIL_P(ruby_class)) {
+ if (RESTRICTED_CLASS_P(ruby_class)) {
rb_raise(rb_eTypeError, "no class/module to define constant");
}
result = rb_eval(self, node->nd_value);
@@ -2701,7 +2700,7 @@
break;
case NODE_CVDECL:
- if (NIL_P(ruby_cbase)) {
+ if (RESTRICTED_CLASS_P(ruby_cbase)) {
rb_raise(rb_eTypeError, "no class/module to define class variable");
}
result = rb_eval(self, node->nd_value);
@@ -2932,7 +2931,7 @@
VALUE origin;
int noex;
- if (NIL_P(ruby_class)) {
+ if (RESTRICTED_CLASS_P(ruby_class)) {
rb_raise(rb_eTypeError, "no class/module to add method");
}
if (ruby_class == rb_cObject && node->nd_mid == init) {
@@ -3033,7 +3032,7 @@
break;
case NODE_UNDEF:
- if (NIL_P(ruby_class)) {
+ if (RESTRICTED_CLASS_P(ruby_class)) {
rb_raise(rb_eTypeError, "no class to undef method");
}
rb_undef(ruby_class, node->nd_mid);
@@ -3041,7 +3040,7 @@
break;
case NODE_ALIAS:
- if (NIL_P(ruby_class)) {
+ if (RESTRICTED_CLASS_P(ruby_class)) {
rb_raise(rb_eTypeError, "no class to make alias");
}
rb_alias(ruby_class, node->nd_new, node->nd_old);
@@ -3058,7 +3057,7 @@
{
VALUE super, klass, tmp;
- if (NIL_P(ruby_class)) {
+ if (RESTRICTED_CLASS_P(ruby_class)) {
rb_raise(rb_eTypeError, "no outer class/module");
}
if (node->nd_super) {
@@ -3118,7 +3117,7 @@
{
VALUE module;
- if (NIL_P(ruby_class)) {
+ if (RESTRICTED_CLASS_P(ruby_class)) {
rb_raise(rb_eTypeError, "no outer class/module");
}
module = 0;
@@ -5060,6 +5059,30 @@
}
}
+static VALUE
+get_special_const_singleton_class(self)
+ VALUE self;
+{
+ static VALUE table = Qnil;
+ VALUE klass, singleton;
+
+ if (table == Qnil) {
+ table = rb_hash_new();
+ rb_global_variable(&table);
+ }
+
+ klass = CLASS_OF(self);
+ singleton = rb_hash_aref(table, klass);
+ if (singleton == Qnil) {
+ singleton = rb_singleton_class_new(klass);
+ FL_SET(singleton, FL_INSTANCE_EVAL);
+ rb_singleton_class_attached(singleton, self);
+ rb_hash_aset(table, klass, singleton);
+ }
+
+ return singleton;
+}
+
VALUE
rb_obj_instance_eval(argc, argv, self)
int argc;
@@ -5069,7 +5092,7 @@
VALUE klass;
if (rb_special_const_p(self)) {
- klass = Qnil;
+ klass = get_special_const_singleton_class(self);
}
else {
klass = rb_singleton_class(self);
----
小迫@ソフネック 渋谷区恵比寿1-15-1