[#32945] Shift_JIS variants and UTF-16 support — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

22 messages 2008/01/07
[#32953] Re: Shift_JIS variants and UTF-16 support — Martin Duerst <duerst@...> 2008/01/07

中村さん、こんにちは。

[#32955] Re: Shift_JIS variants and UTF-16 support — Yukihiro Matsumoto <matz@...> 2008/01/07

まつもと ゆきひろです

[#32959] Re: Shift_JIS variants and UTF-16 support — "NARUSE, Yui" <naruse@...> 2008/01/07

成瀬です。

[#32960] Re: Shift_JIS variants and UTF-16 support — Yukihiro Matsumoto <matz@...> 2008/01/07

まつもと ゆきひろです

[#32992] ASCII is alias of US-ASCII; replica of dummy encoding is not a dummy — "NARUSE, Yui" <naruse@...>

成瀬です。

18 messages 2008/01/08
[#32994] Re: ASCII is alias of US-ASCII; replica of dummy encoding is not a dummy — Yukihiro Matsumoto <matz@...> 2008/01/09

まつもと ゆきひろです

[#32995] Re: ASCII is alias of US-ASCII; replica of dummy encoding is not a dummy — Martin Duerst <duerst@...> 2008/01/09

At 18:13 08/01/09, Yukihiro Matsumoto wrote:

[#33011] Re: ASCII is alias of US-ASCII; replica of dummy encoding is not a dummy — "NARUSE, Yui" <naruse@...> 2008/01/11

成瀬です。

[#33012] Re: ASCII is alias of US-ASCII; replica of dummy encoding is not a dummy — Yukihiro Matsumoto <matz@...> 2008/01/11

まつもと ゆきひろです

[#33014] Re: ASCII is alias of US-ASCII; replica of dummy encoding is not a dummy — "NARUSE, Yui" <naruse@...> 2008/01/11

成瀬です。

[#33015] Re: ASCII is alias of US-ASCII; replica of dummy encoding is not a dummy — Yukihiro Matsumoto <matz@...> 2008/01/11

まつもと ゆきひろです

[#33239] Re: [ruby-cvs:22386] Ruby:r15149 (trunk): * string.c (rb_str_each_char): move forward. — Tanaka Akira <akr@...>

In article <200801210259.m0L2x3CW017171@ci.ruby-lang.org>,

11 messages 2008/01/21
[#33240] Re: [ruby-cvs:22386] Ruby:r15149 (trunk): * string.c (rb_str_each_char): move forward. — Nobuyoshi Nakada <nobu@...> 2008/01/21

なかだです。

[#33303] Time#strftimeのエンコーディング — rubikitch@...

るびきちです。

13 messages 2008/01/23
[#33305] Re: Time#strftimeのエンコーディング — Yukihiro Matsumoto <matz@...> 2008/01/23

まつもと ゆきひろです

[#33368] summary of script encoding — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

22 messages 2008/01/25
[#33375] Re: summary of script encoding — Yukihiro Matsumoto <matz@...> 2008/01/25

まつもと ゆきひろです

[#33376] Re: summary of script encoding — "U.Nakamura" <usa@...> 2008/01/25

こんにちは、なかむら(う)です。

[#33387] HashからStructを作る — rubikitch@...

るびきちです。

19 messages 2008/01/25
[#33455] Re: HashからStructを作る — Yukihiro Matsumoto <matz@...> 2008/01/28

まつもと ゆきひろです

[#33505] Re: HashからStructを作る — rubikitch@... 2008/01/29

From: Yukihiro Matsumoto <matz@ruby-lang.org>

[#33507] Re: HashからStructを作る — Yukihiro Matsumoto <matz@...> 2008/01/29

まつもと ゆきひろです

[#33508] Re: HashからStructを作る — rubikitch@... 2008/01/29

From: Yukihiro Matsumoto <matz@ruby-lang.org>

[#33433] Win32OLE: set encoding to OLE string — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

16 messages 2008/01/28

[#33461] Failed to make ruby-1.8.6-p111 on MacOSX 10.5(Leopard) — MORITA Hideyuki <h-morita@...>

=1B$B?9ED$H?=3D$7$^$9!#=1B(B

19 messages 2008/01/28
[#33473] Re: Failed to make ruby-1.8.6-p111 on MacOSX 10.5(Leopard) — Nobuyoshi Nakada <nobu@...> 2008/01/28

なかだです。

[#33503] Re: Failed to make ruby-1.8.6-p111 on MacOSX 10.5(Leopard) — MORITA Hideyuki <h-morita@...> 2008/01/29

森田です。

[#33514] Re: Failed to make ruby-1.8.6-p111 on MacOSX 10.5(Leopard) — Nobuyoshi Nakada <nobu@...> 2008/01/29

なかだです。

[#33518] Re: Failed to make ruby-1.8.6-p111 on MacOSX 10.5(Leopard) — MORITA Hideyuki <h-morita@...> 2008/01/30

森田です。

[#33545] Re: Failed to make ruby-1.8.6-p111 on MacOSX 10.5(Leopard) — Ryutaro Amano <wn9r-amn@...> 2008/01/31

天野竜太郎と申します。

[#33546] Re: Failed to make ruby-1.8.6-p111 on MacOSX 10.5(Leopard) — MORITA Hideyuki <h-morita@...> 2008/01/31

森田です。

[#33547] Re: Failed to make ruby-1.8.6-p111 on MacOSX 10.5(Leopard) — Ryutaro Amano <wn9r-amn@...> 2008/01/31

天野です。

[#33551] Re: Failed to make ruby-1.8.6-p111 on MacOSX 10.5(Leopard) — MORITA Hideyuki <h-morita@...> 2008/01/31

森田です。

[#33488] 現在の script encoding の値を得る方法は? — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

20 messages 2008/01/29
[#33491] Re: 現在の script encoding の値を得る方法は? — Yukihiro Matsumoto <matz@...> 2008/01/29

まつもと ゆきひろです

[#33500] Re: 現在の script encoding の値を得る方法は? — Hidetoshi NAGAI <nagai@...> 2008/01/29

永井@知能.九工大です.

[#33501] Re: 現在の script encoding の値を得る方法は? — "NARUSE, Yui" <naruse@...> 2008/01/29

成瀬です。

[#33515] Re: 現在の script encoding の値を得る方法は? — Hidetoshi NAGAI <nagai@...> 2008/01/30

永井@知能.九工大です.

[#33516] Re: 現在の script encoding の値を得る方法は? — "NARUSE, Yui" <naruse@...> 2008/01/30

成瀬です。

[#33519] Re: 現在の script encoding の値を得る方法は? — Hidetoshi NAGAI <nagai@...> 2008/01/30

永井@知能.九工大です.

[#33522] Re: 現在の script encoding の値を得る方法は? — "NARUSE, Yui" <naruse@...> 2008/01/30

成瀬です。

[ruby-dev:33222] Re: Ruby1.9String  バイト列へのインデックス アクセス

From: Vincent Isambart <vincent.isambart@...>
Date: 2008-01-20 17:02:28 UTC
List: ruby-dev #33222
バンサンです。

On Jan 20, 2008, at 12:44 PM, Vincent Isambart wrote:

> これはどうでしょうか:
> s = 'a'
> s.bytes[0] # => 97
> s.bytes[0] = 98
> s # => 'b'
> s.bytes[0] = 'c' # 'c'の長さが1バイトじゃなかったら例 
> 外を発生
> s # => 'c'


概念実証のため、作ってみました。
注意:実装はひどい(特にEnumeratorからStringを読 
み込む方法)しRangeも対応できないです(実はRange 
を受けるべきかどうかはわかりません)。

Index: string.c
===================================================================
--- string.c	(revision 15145)
+++ string.c	(working copy)
@@ -4521,7 +4521,80 @@
      return str;
  }

+struct enumerator {
+    VALUE method;
+    VALUE proc;
+    VALUE args;
+    rb_block_call_func *iter;
+    VALUE fib;
+    VALUE dst;
+    VALUE no_next;
+};

+static VALUE
+rb_str_bytes_aref(VALUE obj, VALUE indx)
+{
+    long idx, len;
+    struct enumerator *ptr;
+    VALUE str;
+
+    Data_Get_Struct(obj, struct enumerator, ptr);
+
+    str = rb_funcall(ptr->method, rb_intern("receiver"), 0);
+
+    idx = FIX2LONG(indx);
+    len = RSTRING_LEN(str);
+    if (idx < 0)
+	idx += len;
+
+    if ((idx < 0) || (idx >= len))
+	return Qnil;
+
+    return INT2FIX(RSTRING_PTR(str)[idx] & 0xff);
+}
+
+static VALUE
+rb_str_bytes_aset(VALUE obj, VALUE indx, VALUE val)
+{
+    long idx, len, v;
+    struct enumerator *ptr;
+    VALUE str;
+
+    Data_Get_Struct(obj, struct enumerator, ptr);
+
+    str = rb_funcall(ptr->method, rb_intern("receiver"), 0);
+
+    idx = FIX2LONG(indx);
+    len = RSTRING_LEN(str);
+    if (idx < 0)
+	idx += len;
+
+    if ((idx < 0) || (idx >= len))
+	rb_raise(rb_eIndexError, "index %ld out of string", FIX2LONG(indx));
+
+    switch (TYPE(val)) {
+      case T_FIXNUM:
+	v = FIX2LONG(val);
+	RSTRING_PTR(str)[idx] = (v & 0xff);
+	break;
+
+      case T_STRING:
+	if (RSTRING_LEN(val) != 1) {
+	    rb_raise(rb_eTypeError,
+		     "type mismatch: the string must be one byte long",
+		     rb_obj_classname(val));
+	}
+	RSTRING_PTR(str)[idx] = RSTRING_PTR(val)[0];
+	break;
+
+      default:
+	rb_raise(rb_eTypeError, "type mismatch: %s given",
+		 rb_obj_classname(val));
+    }
+
+    return val;
+}
+
  /*
   *  Document-method: bytes
   *  call-seq:
@@ -4553,7 +4626,14 @@
  {
      long i;

-    RETURN_ENUMERATOR(str, 0, 0);
+    if (!rb_block_given_p()) {
+	VALUE enumerator;
+	
+	enumerator = rb_enumeratorize(str, ID2SYM(rb_frame_this_func()), 0,  
0);
+	rb_define_singleton_method(enumerator, "[]", rb_str_bytes_aref, 1);
+	rb_define_singleton_method(enumerator, "[]=", rb_str_bytes_aset, 2);
+	return enumerator;
+    }
      for (i=0; i<RSTRING_LEN(str); i++) {
  	rb_yield(INT2FIX(RSTRING_PTR(str)[i] & 0xff));
      }


In This Thread