[#14185] ruby on Linux/m68k — akira yamada / やまだあきら <akira@...>
[#14196] fork() on MacOS — nobu.nakada@...
なかだです。
[#14206] undef_method :method_missing — Kenichi Komiya <kom@...1.accsnet.ne.jp>
なかだです。
なかだです。
金光です。
むらけんです.
金光です。
楠です
金光です。
金光です。
金光です。どもっ。
なかだです。
金光です。どもっ。
金光です。
岩月と申します。
金光です。どもっ。
有馬です。
金光です。
有馬です。
金光です。どもっ。
とみたです。
金光です。
とみたです。
金光です。
まつもと ゆきひろです
金光です。(^_^;
あづみです。
有馬です。
金光です。
有馬です。
金光です。どもっ。
有馬です。
むらけんです.
むらけんさん wrote:
むらけんです.
長沢です。
まつもと ゆきひろです
金光です。どもっ。
有馬です。
金光です。どもどもっ。
むらけんです.
金光です。いちおうフォローだけ
ふなばです。
一応フォローだけ、ほんとにちょっとだけっすよ
岩月と申します。
むらけんです.
楠です
むらけんです.
金光です。FOXとかもあるのかぁ。すげぇなぁ。
まつもと ゆきひろです
金光です。御大、待ってましたっ。
なかだです。
金光です。どもどもっ。
なかだです。
さくです。
まつもと ゆきひろです
金光です。どもっ。
まつもと ゆきひろです
金光です。どもどもっ。
[#14229] [BUG] segv on [str].pack("p") — Koji Arai <JCA02266@...>
新井です。
なかだです。
新井です。
なかだです。
[#14338] setup.rb (Re: Common GUI framework) — Minero Aoki <aamine@...>
あおきです。
[#14382] [BUG] segv on regex matching with long string — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
[#14390] [Patch] pp.rb and debug.rb — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです。
なひです。書き忘れ。
なかだです。
nobu.nakada@nifty.ne.jpさんの
なひです。
なかだです。
In article <DJEGJLCFNEIMKDNMLFPHMEAHCBAA.nakahiro@sarion.co.jp>,
なひです。
In article <DJEGJLCFNEIMKDNMLFPHEEAICBAA.nakahiro@sarion.co.jp>,
なひです。
まつもと ゆきひろです
In article <997774251.527258.14423.nullmailer@ev.netlab.jp>,
まつもと ゆきひろです
In article <997783083.657819.14685.nullmailer@ev.netlab.jp>,
なひです。
In article <DJEGJLCFNEIMKDNMLFPHEEALCBAA.nakahiro@sarion.co.jp>,
なひです。
In article <DJEGJLCFNEIMKDNMLFPHEEAPCBAA.nakahiro@sarion.co.jp>,
なひです。
In article <DJEGJLCFNEIMKDNMLFPHMEBACBAA.nakahiro@sarion.co.jp>,
あづみです。
なひです。
In article <DJEGJLCFNEIMKDNMLFPHIEBBCBAA.nakahiro@sarion.co.jp>,
うぅむ。ぼーっとしてたら意味もなく Subject を変えてしまった。
In article <20010817205051.UAZHC0A8274C.C78F0C8A@mail.biglobe.ne.jp>,
あづみです。
In article <hvo66bnxe4b.fsf_-_@flux.etl.go.jp>,
古い話題で恐縮ですが…
なかだです。
In article <200109290948.f8T9mbh12942@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
まつもと ゆきひろです
In article <1001945748.240863.24023.nullmailer@ev.netlab.jp>,
なかだです。
In article <200110020334.f923YLb08299@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <200110021010.f92AAIb13474@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
まつもと ゆきひろです
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
In article <1002080461.740444.11187.nullmailer@ev.netlab.jp>,
In article <DJEGJLCFNEIMKDNMLFPHCEPJCAAA.nakahiro@sarion.co.jp>,
なひです。
まつもと ゆきひろです
In article <DJEGJLCFNEIMKDNMLFPHCEPJCAAA.nakahiro@sarion.co.jp>,
あおきです。
In article <20010809221751J.aamine@mx.edit.ne.jp>,
[#14406] typo in ruby 1.7 — Koji Arai <JCA02266@...>
新井です。
[#14413] 1.7.1 2001-08-06: if true && /match/ — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
[#14465] Ruby/Bsearch — akira yamada / やまだあきら <akira@...>
まつもと ゆきひろです
At Wed, 15 Aug 2001 18:01:50 +0900,
"Akinori MUSHA" <knu@iDaemons.org> wrote:
At Thu, 16 Aug 2001 00:15:05 +0900,
In article <20010816001456V.satoru@namazu.org>,
Tanaka Akira <akr@m17n.org> wrote:
In article <20010816130056C.satoru@namazu.org>,
[#14480] avoid compile warning of tcltklib with VC5 — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
[#14505] BUG: ruby 1.6.4 cannot use threads on Sparc (segv) — akira yamada / やまだあきら <akira@...>
[#14530] restore terminal mode even if readline interrupted. — Koji Arai <JCA02266@...>
新井です。
新井です。
新井です。
新井です。
At Wed, 5 Sep 2001 00:19:51 +0900,
まつもと ゆきひろです
[#14552] read in IO#eof? — nobu.nakada@...
なかだです。
[#14575] infinite loop on Dir.glob("*/**/*") — nobu.nakada@...
なかだです。
[#14577] option nodynamic — Daisuke Aoki <dai@...>
青木@横浜です。
[#14595] SEGV at `$0 = "long long string"' — nobu.nakada@...
なかだです。
なかだです。
まつもと ゆきひろです
[ruby-dev:14563] Re: marshal API (was Re: [Patch] pp.rb and debug.rb)
なかだです。
At Tue, 21 Aug 2001 22:13:34 +0900,
Tanaka Akira <akr@m17n.org> wrote:
> もはやあっちは inspect とはほとんど関係ない話なので、こっちはこっちで
> やればいいとおもいます。ruby-dev:14437 の案はいいと思います。ただ、API
> なんで、作者の意向次第ですかねぇ。
参考までに[ruby-dev:14437]と[ruby-dev:14449]の実装案。Arrayの
かわりにHashを使うようになってます。あんまりグローバルにしたく
なかったこともあって、array.cからobject.cにまるごと引っ越してま
す。たぶんこっちの方が自然に思えるのですが。
Index: object.c
===================================================================
RCS file: /cvs/ruby/src/ruby/object.c,v
retrieving revision 1.57
diff -u -2 -p -r1.57 object.c
--- object.c 2001/08/20 04:29:56 1.57
+++ object.c 2001/08/20 06:19:52
@@ -221,5 +221,155 @@ rb_obj_inspect(obj)
}
+static VALUE inspect_key;
+
+struct inspect_arg {
+ VALUE (*func)();
+ VALUE arg1, arg2;
+};
+
+static VALUE
+inspect_call(arg)
+ struct inspect_arg *arg;
+{
+ return (*arg->func)(arg->arg1, arg->arg2);
+}
+
+#define HASH_FOR_INSPECTION
+#ifdef HASH_FOR_INSPECTION
+#define INSPECT_NEW() rb_hash_new3(Qfalse)
+#define INSPECT_BEGIN(tbl, id) rb_hash_aset(inspect_tbl, id, Qtrue)
+#define INSPECT_END(tbl, id) rb_hash_delete(tbl, id)
+#define INSPECTING_P(tbl, id) rb_hash_aref(tbl, id)
+static inline VALUE
+rb_hash_new3(ifnone)
+ VALUE ifnone;
+{
+ VALUE hash = rb_hash_new();
+ RHASH(hash)->ifnone = ifnone;
+ return hash;
+}
+#else
+#define INSPECT_NEW() rb_ary_new()
+#define INSPECT_BEGIN(tbl, id) rb_ary_push(tbl, id)
+#define INSPECT_END(tbl, id) rb_ary_pop(tbl)
+#define INSPECTING_P(tbl, id) rb_ary_includes(tbl, id)
+#endif
+
+#define INSPECT_TABLE() rb_hash_aref(inspect_key, rb_thread_current())
+#define INSPECT_TABLE_NEW() \
+ rb_hash_aset(inspect_key, rb_thread_current(), INSPECT_NEW())
+
+static void
+inspect_key_init()
+{
+ rb_gc_register_address(&inspect_key);
+ inspect_key = rb_hash_new();
+}
+
+static VALUE
+inspect_ensure(id)
+ VALUE id;
+{
+ INSPECT_END(INSPECT_TABLE(), id);
+ return 0;
+}
+
+VALUE
+rb_protect_inspect(func, obj, arg)
+ VALUE (*func)();
+ VALUE obj, arg;
+{
+ struct inspect_arg iarg;
+ VALUE inspect_tbl;
+ VALUE id;
+
+ id = rb_obj_id(obj);
+ if (inspect_key ? NIL_P(inspect_tbl = INSPECT_TABLE())
+ : (inspect_key_init(), Qtrue)) {
+ inspect_tbl = INSPECT_TABLE_NEW();
+ }
+ else if (INSPECTING_P(inspect_tbl, id)) {
+ return (*func)(obj, arg);
+ }
+
+ INSPECT_BEGIN(inspect_tbl, id);
+ iarg.func = func;
+ iarg.arg1 = obj;
+ iarg.arg2 = arg;
+
+ return rb_ensure(inspect_call, (VALUE)&iarg, inspect_ensure, id);
+}
+
+VALUE
+rb_inspecting_p(obj)
+ VALUE obj;
+{
+ VALUE inspect_tbl;
+
+ if (!inspect_key) return Qfalse;
+ inspect_tbl = INSPECT_TABLE();
+ if (NIL_P(inspect_tbl)) return Qfalse;
+ return INSPECTING_P(inspect_tbl, rb_obj_id(obj));
+}
+
+static VALUE
+rb_inspection(obj)
+ VALUE obj;
+{
+ VALUE inspect_tbl;
+ VALUE id = rb_obj_id(obj);
+
+ if (inspect_key ? NIL_P(inspect_tbl = INSPECT_TABLE())
+ : (inspect_key_init(), Qtrue)) {
+ inspect_tbl = INSPECT_TABLE_NEW();
+ }
+ else if (INSPECTING_P(inspect_tbl, id)) {
+ return rb_yield(Qtrue);
+ }
+
+ INSPECT_BEGIN(inspect_tbl, id);
+
+ return rb_ensure(rb_yield, Qfalse, inspect_ensure, id);
+}
+
+static VALUE
+remove_inspect_tbl(inspect_tbl)
+ VALUE inspect_tbl;
+{
+ rb_hash_delete(inspect_key, rb_thread_current());
+ return 0;
+}
+
+static VALUE
+restore_inspect_tbl(inspect_tbl)
+ VALUE inspect_tbl;
+{
+ rb_hash_aset(inspect_key, rb_thread_current(), inspect_tbl);
+ return 0;
+}
+
VALUE
+rb_new_inspection()
+{
+ if (inspect_key) {
+ VALUE inspect_tbl = rb_hash_delete(inspect_key, rb_thread_current());
+ if (!NIL_P(inspect_tbl)) {
+ return rb_ensure(rb_yield, Qnil, restore_inspect_tbl, inspect_tbl);
+ }
+ }
+ else {
+ inspect_key_init();
+ }
+ return rb_ensure(rb_yield, Qnil, remove_inspect_tbl, Qnil);
+}
+
+static VALUE
+rb_inspect_start(obj)
+ VALUE obj;
+{
+ return rb_protect_inspect(rb_yield, obj, Qnil);
+}
+
+VALUE
rb_obj_is_instance_of(obj, c)
VALUE obj, c;
@@ -1171,4 +1321,7 @@ Init_Object()
rb_define_method(rb_mKernel, "to_s", rb_any_to_s, 0);
rb_define_method(rb_mKernel, "inspect", rb_obj_inspect, 0);
+ rb_define_method(rb_mKernel, "inspecting?", rb_inspecting_p, 0);
+ rb_define_method(rb_mKernel, "inspection", rb_inspection, 0);
+ rb_define_method(rb_mKernel, "inspect_start", rb_inspect_start, 0);
rb_define_method(rb_mKernel, "methods", rb_obj_methods, 0);
rb_define_method(rb_mKernel, "public_methods", rb_obj_methods, 0);
@@ -1196,4 +1349,6 @@ Init_Object()
rb_define_global_function("String", rb_f_string, 1);
rb_define_global_function("Array", rb_f_array, 1);
+
+ rb_define_global_function("new_inspection", rb_new_inspection, 0);
rb_cNilClass = rb_define_class("NilClass", rb_cObject);
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦