[#15625] rb_hash_initialize — Takaaki Tateishi <ttate@...>

立石です.

22 messages 2002/01/04
[#15627] Re: rb_hash_initialize — matz@... (Yukihiro Matsumoto) 2002/01/04

まつもと ゆきひろです

[#15628] Re: rb_hash_initialize — Takaaki Tateishi <ttate@...> 2002/01/04

立石です.

[#15685] undefined method `inherited' for false (NameError) — WATANABE Hirofumi <eban@...>

わたなべです。

13 messages 2002/01/15
[#15686] Re: undefined method `inherited' for false (NameError) — nobu.nakada@... 2002/01/15

なかだです。

[#15757] 文字列→整数変換 — nobu.nakada@...

なかだです。

30 messages 2002/01/25

[#15830] [ 提案 ] puts, print 等を IO から分離 — UENO Katsuhiro <unnie@...>

うえのです。

14 messages 2002/01/31

[ruby-dev:15646] Re: [PATCH] substitutes for str2cstr()

From: nobu.nakada@...
Date: 2002-01-06 20:02:52 UTC
List: ruby-dev #15646
なかだです。

At Sun, 6 Jan 2002 19:41:17 +0900,
Nobuyoshi-Nakada wrote:
> StringValueCstr()というのはいい名前が思いつかなかったんですが。
> こういうのはどうでしょうか。

激しく間違ってました。


Index: ruby.h
===================================================================
RCS file: /cvs/ruby/src/ruby/ruby.h,v
retrieving revision 1.57
diff -u -2 -p -r1.57 ruby.h
--- ruby.h	2001/12/21 07:20:23	1.57
+++ ruby.h	2002/01/06 19:25:32
@@ -202,11 +202,9 @@ VALUE rb_str_to_str _((VALUE));
 VALUE rb_string_value _((volatile VALUE*));
 
-#define StringValue(v) if (TYPE(v) != T_STRING) rb_string_value(&(v))
+#define StringValue(v) (TYPE(v) == T_STRING) ? (v) : rb_string_value(&(v))
 void rb_check_safe_str _((VALUE));
-#define SafeStringValue(v) do {\
-    StringValue(v);\
-    rb_check_safe_str(v);\
-} while (0)
-#define StringValuePtr(v) RSTRING((TYPE(v) == T_STRING) ? (v) : rb_string_value(&(v)))->ptr
+#define SafeStringValue(v) rb_check_safe_str(StringValue(v))
+#define StringValuePtr(v) RSTRING(StringValue(v))->ptr
+#define StringValueCstr(v, l) ((l) = RSTRING(StringValue(v))->len, RSTRING(v)->ptr)
 /* obsolete macro - use SafeStringValue(v) */
 #define Check_SafeStr(v) rb_check_safe_str((VALUE)(v))
@@ -242,4 +240,5 @@ char *rb_str2cstr _((VALUE,int*));
 /* obsolete API - use StringValuePtr() */
 #define STR2CSTR(x) rb_str2cstr((VALUE)(x),0)
+#define str2cstr(x,l) StringValueCstr((x), *(l))
 
 #define NUM2CHR(x) (((TYPE(x) == T_STRING)&&(RSTRING(x)->len>=1))?\


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread