[#17002] strict prototype for c++ — Takaaki Tateishi <ttate@...>
立石です.
At Fri, 3 May 2002 02:59:36 +0900,
[#17017] 標準添付案 — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
At Wed, 8 May 2002 19:50:17 +0900,
At Wed, 8 May 2002 22:45:06 +0900,
At Thu, 9 May 2002 00:47:46 +0900,
田中です。一応 blade は見てます。
堀之内です。
堀之内です。
At Tue, 14 May 2002 14:45:28 +0900,
[#17031] double acosh — WATANABE Hirofumi <eban@...>
わたなべです。
なかだです。
わたなべです。
まつもと ゆきひろです
わたなべです。
[#17037] here document2 つで __LINE__ がずれる — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#17053] socket in Win32 — nobu.nakada@...
なかだです。
[#17059] [PATCH] mswin32 configure — nobu.nakada@...
なかだです。
[#17060] rb_warn — Tadayoshi Funaba <tadf@...>
ふなばです。
[#17095] irb & jarh — Tanaka Akira <akr@...17n.org>
ふと、irb で jarh をいくつか試したのですが、うまく扱えないものがあるようです。
けいじゅ@日本ラショナルソフトウェアです.
In article <200205160811.RAA31441@ishitsuka.com>,
[#17112] [Cleanup] rb_thread_select() — nobu.nakada@...
なかだです。
[#17122] Array#bsearch — Beyond <beyond@...>
[#17128] Thread: deadlock trouble — nagai@...
永井@知能.九工大です.
At Fri, 17 May 2002 14:47:53 +0900,
[#17134] argv[0] — Tanaka Akira <akr@...17n.org>
ふと ruby インタプリタの C における argv[0] を知りたくなったんですが、
まつもと ゆきひろです
In article <1021723554.017958.5113.nullmailer@picachu.netlab.jp>,
In article <1021723554.017958.5113.nullmailer@picachu.netlab.jp>,
[#17144] Re: msvcrt — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
わたなべです。
こんにちは、なかむら(う)です。
わたなべです。
こんにちは、なかむら(う)です。
わたなべです。
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
なかだです。
[#17158] else without rescue — nobu.nakada@...
なかだです。
[#17179] コマンドラインオプションの順序制約 — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
[#17194] [RCR] Array#rotate{,!} — nobu.nakada@...
なかだです。
まつもと ゆきひろです
[#17208] Etc — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#17223] race condition on Queue#pop? — Tanaka Akira <akr@...17n.org>
なんとなく thread.rb を眺めていて、Queue#pop に race condition がある
なかだです。
まつもと ゆきひろです
なかだです。
[#17228] Re: [ruby-list:35305] Re: ((1.2)..(3.4)).to_a — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
たけ(tk)です。
まつもと ゆきひろです
たけ(tk)です。
まつもと ゆきひろです
あづみです。
[#17238] Re: [ruby-list:35304] Re: ((1.2)..(3.4)).to_a — siena@... (Siena.)
Siena. です。
[ruby-dev:17122] Array#bsearch
Beyondです。
Array に、bsearch メソッドを追加する予定は、ありませんか?
拡張ライブラリは書いたことが無いのですが、sort を参考にして作ったら、簡
単に出来ました。Ruby/Bsearchと違い、ライブラリ関数を使用しています。
qsort を使う関数があるのですから、bsearch もあって良いかと思います(あっ
た方が便利)。いかがでしょう?
サンプル
===================================================================
arr = [
[ "aaa", 1 ],
[ "aaa", 4 ],
[ "aaa", 9 ],
[ "bbb", 2 ],
[ "bbb", 4 ],
]
arr.sort! { | a, b | a[1] <=> b[1] }
p arr.bsearch( [ "", 2 ] ) { | a, b | a[1] <=> b[1] } # => ["bbb", 2]
Index: array.c
===================================================================
$ diff -u array.c.org array.c
--- array.c.org Tue Dec 18 17:38:51 2001
+++ array.c Thu May 16 23:27:19 2002
@@ -1012,6 +1012,38 @@
return ary;
}
+struct bsearch_arg {
+ VALUE ary;
+ VALUE key;
+};
+
+static VALUE
+bsearch_internal( arg )
+ struct bsearch_arg* arg;
+{
+ VALUE ary = arg->ary;
+ VALUE key = arg->key;
+ VALUE* r = bsearch( &key, RARRAY(ary)->ptr, RARRAY(ary)->len, sizeof(VALUE),
+ rb_block_given_p()?sort_1:sort_2);
+ if( r == 0 )
+ return Qnil;
+ else
+ return *r;
+}
+
+VALUE
+rb_bsearch(ary, key)
+ VALUE ary, key;
+{
+ struct bsearch_arg arg;
+ rb_ary_modify(ary);
+
+ FL_SET(ary, ARY_TMPLOCK); /* prohibit modification during sort */
+ arg.ary = ary;
+ arg.key = key;
+ return rb_ensure(bsearch_internal, (VALUE)&arg, sort_unlock, ary);
+}
+
static VALUE
rb_ary_collect(ary)
VALUE ary;
@@ -1714,6 +1746,7 @@
rb_define_method(rb_cArray, "reverse!", rb_ary_reverse_bang, 0);
rb_define_method(rb_cArray, "sort", rb_ary_sort, 0);
rb_define_method(rb_cArray, "sort!", rb_ary_sort_bang, 0);
+ rb_define_method(rb_cArray, "bsearch", rb_bsearch, 1);
rb_define_method(rb_cArray, "collect", rb_ary_collect, 0);
rb_define_method(rb_cArray, "collect!", rb_ary_collect_bang, 0);
rb_define_method(rb_cArray, "map!", rb_ary_collect_bang, 0);
---------------------
Beyond