[#32171] autoload_delete — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
[#32185] Date#+に大きな数字を与えるとおかしな日付に — "madoka yamamoto" <yamamotomadoka@...>
こんにちは、山本と申します。
> Dateオブジェクトに+で大きな数字を与えるとおかしくなるようです。
山本です。
> アルゴリズムの意味がわからないで書いた、表層的なパッチなので
Hi,
> 1.9ではRationalとComplexを組み込みに、という話はありましたが、
原です。
ささだです.
[#32192] test-all results - ruby 1.9.0 (2007-11-09 patchlevel 0) [i686-linux] — SASADA Koichi <ko1@...>
ささだです.
[#32198] [提案] Array#tail — "Yusuke ENDOH" <mame@...>
遠藤と申します。
まつもと ゆきひろです
西山と申します
遠藤です。
[#32204] yydebug — Nobuyoshi Nakada <nobu@...>
なかだです。
[#32205] Use two pipes for duplex IO.popen — Tanaka Akira <akr@...>
改心して duplex な IO.popen で socketpair を使うのはやめよう
なかだです。
In article <20071111120021.7f0592e5.nobu@ruby-lang.org>,
[#32206] Integer#ord for 1.8 — Tanaka Akira <akr@...>
1.9 と 1.8 の両方で ?a.ord で 97 が得られるように、1.8 に
[#32219] trunkでビルド失敗 — KIMURA Koichi <kimura.koichi@...>
木村です。
[#32247] round missing (mswin32) — KIMURA Koichi <kimura.koichi@...>
木村です。
[#32263] toplevel irb method — SASADA Koichi <ko1@...>
ささだです.
まつもと ゆきひろです
[#32266] version string — SASADA Koichi <ko1@...>
ささだです.
[#32268] RFLOAT_VALUE(val), DOUBLE2NUM(dbl) — SASADA Koichi <ko1@...>
ささだです.
SASADA Koichi wrote:
[#32306] nanosecond Time and stat — Tanaka Akira <akr@...>
最近、nanosecond 単位な timestamp があるようです。
In article <874pflntd5.fsf@fsij.org>,
まつもと ゆきひろです
In article <E1Iu2GD-0004Wh-1I@x31>,
[#32308] core dump with undef/alias using dynamic symbols — Tadashi Saito <shiba@...2.accsnet.ne.jp>
斎藤と申します。
遠藤と申します。
ささだです.
遠藤です。
ささだです.
[#32329] enumerator with single array and multiple arguments. — Tanaka Akira <akr@...>
enumerator を通すとひとつの配列と複数の引数が区別できません。
[#32330] defined?($&) — Tanaka Akira <akr@...>
ふと気がついたんですが、defined?($&) が "expression" になり
まつもと ゆきひろです
まつもと ゆきひろです
ささだです.
[#32333] test/ruby/test_eval.rb — SASADA Koichi <ko1@...>
ささだです.
まつもと ゆきひろです
ささだです.
まつもと ゆきひろです
[#32348] DRb test leaves ut_eval.rb process — Tanaka Akira <akr@...>
DRb のテストをすると、(テストがいろいろと失敗する他に) プロ
[#32352] 1.9.1のリリース時期について — KIMURA Koichi <hogemuta@...>
木村です。
まつもと ゆきひろです
木村です。
まつもと ゆきひろです
[#32403] Next 1.8.6 patch release? (was Re: 1.9.1のリリース時期について) — Takahiro Kambe <taca@...>
こんばんは。
卜部です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
成瀬です。
卜部です。
遠藤と申します。
遠藤です。
ささだです.
まつもと ゆきひろです
[#32404] SEGV on child process by fork on GC.stress. — Tanaka Akira <akr@...>
GC.stress = true 下で fork すると子プロセスが SEGV します。
まつもと ゆきひろです
In article <E1Iy7HA-0006zn-37@x31>,
まつもと ゆきひろです
ささだです.
[#32409] Re: [ruby-cvs:21293] Ruby:r14056 (trunk): * signal.c (trap_signm): SIGVTALRM no longer used for green — SASADA Koichi <ko1@...>
ささだです.
さとうふみやす @ OSS テクノロジです。
ささだです.
まつもと ゆきひろです
[ruby-dev:32327] rb_internal_struct_define_class, rb_internal_struct_alloc
rational の T_STRUCT 化をして思ったんですが、RStruct の内部
を知っていないと書きにくいので、あまり知らなくてもかけるよう
内部的に T_STRUCT を使うクラスを定義する
VALUE rb_internal_struct_define_class(char *class_name, VALUE super, long num_members, ...);
と、それを (要素はすべて nil で) allocate する
VALUE rb_internal_struct_alloc(VALUE klass);
を提供するのはどうでしょうか。
名前はもう少し考えたほうがいいかもしれません。いい名前を思い
ついた人は教えてください。
以下はその実装と、それを使うようにした Range の変更です。
Index: include/ruby/intern.h
===================================================================
--- include/ruby/intern.h (リビジョン 13983)
+++ include/ruby/intern.h (作業コピー)
@@ -542,6 +542,8 @@
VALUE rb_struct_iv_get(VALUE, const char*);
VALUE rb_struct_s_members(VALUE);
VALUE rb_struct_members(VALUE);
+VALUE rb_internal_struct_define_class(char *, VALUE, long, ...);
+VALUE rb_internal_struct_alloc(VALUE);
/* thread.c */
typedef struct rb_thread_struct rb_thread_t;
typedef void rb_unblock_function_t(rb_thread_t *, void *);
Index: struct.c
===================================================================
--- struct.c (リビジョン 13983)
+++ struct.c (作業コピー)
@@ -218,6 +218,40 @@
}
VALUE
+rb_internal_struct_alloc(VALUE klass)
+{
+ return struct_alloc(klass);
+}
+
+VALUE
+rb_internal_struct_define_class(char *class_name, VALUE super, long size, ...)
+{
+ VALUE klass;
+ va_list ar;
+ VALUE members;
+ long i;
+
+ members = rb_ary_new2(size);
+
+ va_start(ar, size);
+ for (i = 0; i < size; i++)
+ rb_ary_store(members, i, ID2SYM(rb_intern(va_arg(ar, char*))));
+ va_end(ar);
+
+ if (class_name) {
+ klass = rb_define_class(class_name, super);
+ }
+ else {
+ klass = rb_class_new(super);
+ }
+
+ rb_iv_set(klass, "__size__", LONG2NUM(size));
+ rb_iv_set(klass, "__members__", members);
+
+ return klass;
+}
+
+VALUE
rb_struct_define(const char *name, ...)
{
va_list ar;
Index: range.c
===================================================================
--- range.c (リビジョン 13983)
+++ range.c (作業コピー)
@@ -23,22 +23,6 @@
#define SET_EXCL(r,v) (RSTRUCT(r)->as.ary[2] = (v) ? Qtrue : Qfalse)
static VALUE
-range_alloc(VALUE klass)
-{
- long n;
- NEWOBJ(r, struct RStruct);
- OBJSETUP(r, klass, T_STRUCT);
-
- n = 3;
-
- RBASIC(r)->flags &= ~RSTRUCT_EMBED_LEN_MASK;
- RBASIC(r)->flags |= n << RSTRUCT_EMBED_LEN_SHIFT;
- rb_mem_clear(r->as.ary, n);
-
- return (VALUE)r;
-}
-
-static VALUE
range_failed(void)
{
rb_raise(rb_eArgError, "bad value for range");
@@ -895,15 +879,10 @@
id_end = rb_intern("end");
id_excl = rb_intern("excl");
- rb_cRange = rb_define_class("Range", rb_cObject);
+ rb_cRange = rb_internal_struct_define_class("Range", rb_cObject,
+ 3, "begin", "end", "excl");
- /* compatibility for rb_struct_members, etc. */
- members = rb_ary_new3(3, ID2SYM(id_beg), ID2SYM(id_end), ID2SYM(id_excl));
- OBJ_FREEZE(members);
- rb_iv_set(rb_cRange, "__size__", INT2FIX(3));
- rb_iv_set(rb_cRange, "__members__", members);
-
- rb_define_alloc_func(rb_cRange, range_alloc);
+ rb_define_alloc_func(rb_cRange, rb_internal_struct_alloc);
rb_include_module(rb_cRange, rb_mEnumerable);
rb_marshal_define_compat(rb_cRange, rb_cObject, range_dumper, range_loader);
rb_define_method(rb_cRange, "initialize", range_initialize, -1);
--
[田中 哲][たなか あきら][Tanaka Akira]