[#11357] [PATCH] an analogue of `long long' — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

18 messages 2000/11/01
[#11358] Re: [PATCH] an analogue of `long long' — matz@... (Yukihiro Matsumoto) 2000/11/01

まつもと ゆきひろです

[#11364] Re: [PATCH] an analogue of `long long' — EGUCHI Osamu <eguchi@...> 2000/11/02

えぐち@エスアンドイー です。

[#11440] class Character (was: Ruby I18N) — Yasushi Shoji <yashi@...>

[ruby-dev:11428] からの続きですが、threadは切りました。

14 messages 2000/11/08
[#11442] Re: class Character (was: Ruby I18N) — TAKAHASHI Masayoshi <maki@...> 2000/11/08

高橋征義です。用語について。

[#11443] Re: class Character (was: Ruby I18N) — Yasushi Shoji <yashi@...> 2000/11/08

At Wed, 8 Nov 2000 20:44:55 +0900,

[#11520] A problem of Socket methods on Windows — OKA Toshiyuki <oka@...>

岡と申します。

22 messages 2000/11/15
[#11523] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11528] Re: A problem of Socket methods on Windows — matz@... (Yukihiro Matsumoto) 2000/11/15

まつもと ゆきひろです

[#11532] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11534] Re: A problem of Socket methods on Windows — OKA Toshiyuki <oka@...> 2000/11/15

岡です。

[#11535] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11538] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11662] IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org>

In article <E140cR3-0002ls-00@ev.netlab.zetabits.co.jp>,

22 messages 2000/11/28
[#11663] Re: IO (Re: fork problem?) — matz@... (Yukihiro Matsumoto) 2000/11/28

まつもと ゆきひろです

[#11664] Re: IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org> 2000/11/28

In article <E140fxW-0002u9-00@ev.netlab.zetabits.co.jp>,

[#11665] Re: IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org> 2000/11/28

In article <hvor93w5wb8.fsf@coulee.m17n.org>,

[#11669] Re: IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org> 2000/11/29

In article <hvoofz05uwz.fsf@coulee.m17n.org>,

[#11672] Re: IO (Re: fork problem?) — matz@... (Yukihiro Matsumoto) 2000/11/29

まつもと ゆきひろです

[#11675] Re: IO (Re: fork problem?) — Koji Arai <JCA02266@...> 2000/11/30

新井です。

[#11677] Re: IO (Re: fork problem?) — matz@... (Yukihiro Matsumoto) 2000/12/01

まつもと ゆきひろです

[ruby-dev:11417] Re: Ruby I18N

From: SHIROYAMA Takayuki <psi@...>
Date: 2000-11-07 16:36:23 UTC
List: ruby-dev #11417
しろやまです。

> 
>|個人的には String の下位クラスを作るのが単純で速くていいと 
>|思いますけどね。破壊的にコード変換をしなければクラスを 
>|差しかえたりする必要もないし… 
> 
>しかし、そうするとstring.cのほとんどコピーが各文字コード系毎 
>に発生することになりそうなんですよねえ。でないとパフォーマン 
>スが出ないし。 
> 

余談ですが、OpenStep/YellowBox/Cocoaなどと呼ばれております
NeXT起原のクラスライブラリ(FoundationKit)にある文字列クラスの
NSStringでは、「Class Clustor」という方式で上記の実装をしており
ます。

ClassClustorとはぶっちゃけたところ「サブクラスを知ってる親クラス」
でして、親クラスであるNSStringのインスタンスを適当に生成すると、
その時に与えられたデータに応じて適切なサブクラスを実際に生成する
というものです。そして、普段はそれぞれの文字コードでの実装である
サブクラスは伏せられていて、直接参照できないようになっております。


具体的には、

id aString = [ NSString stringWithCString:"ほげ" ];

という形で NSStringクラスのインスタンスを生成すると、「ほげ」の
文字コードに応じて実際には NSEUCJPStringクラスとか、NSShiftJIS
Stringクラスなどが内部的には生成され、aStringに渡されます。
Objective-Cではながらく +allocで生成、- init*メソッドで初期化という
慣習が続いていたので、

id aString = [ NSString alloc ];  // NSStringオブジェクトを生成
id bString = [ aString initWithCString:"ほげ" ]; // Cの文字列"ほげ"で初期化

とかすると、aString != bStringという現象が起こるのが難点ですが、
Rubyの場合は そういう問題はないかと思います。


なお、AppleではこのObjective-CでかかれたFoundationKitのサブセット
をCだけで書き直して CoreFoundationという名前でソースごと公開して
おります。DarwinというOSの中にはいっております。

少しは参考になるのではないか、っと思いますが。。。


---
SHIROYAMA Takayuki :psi@fortune.nest.or.jp

In This Thread

Prev Next