[#8824] [REQ] Integer#{hex,dec,oct,bin}, String#bin — gotoken@... (GOTO Kentaro)

ごとけんです

38 messages 2000/01/05
[#8839] Re: [REQ] Integer#{hex,dec,oct,bin}, String#bin — matz@... (Yukihiro Matsumoto) 2000/01/06

まつもと ゆきひろです

[#8842] Re: [REQ] Integer#{hex,dec,oct,bin}, String#bin — gotoken@... (GOTO Kentaro) 2000/01/06

ごとけんです

[#8843] Re: [REQ] Integer#{hex,dec,oct,bin}, String#bin — matz@... (Yukihiro Matsumoto) 2000/01/06

まつもと ゆきひろです

[#8844] Re: [REQ] Integer#{hex,dec,oct,bin}, String#bin — gotoken@... (GOTO Kentaro) 2000/01/06

ごとけんです

[#8846] Re: [REQ] Integer#{hex,dec,oct,bin}, String#bin — matz@... (Yukihiro Matsumoto) 2000/01/06

まつもと ゆきひろです

[#8847] Re: [REQ] Integer#{hex,dec,oct,bin}, String#bin — gotoken@... (GOTO Kentaro) 2000/01/06

ごとけんです

[#8893] Re: [ruby-list:20142] Re: Range expansion? — Akinori MUSHA aka knu <knu@...>

 knuです。ruby-listから舞台を移しました。

13 messages 2000/01/09

[#8980] 1.4.3 patch for near-future *BSD IPv6 support — Jun-ichiro itojun Hagino <itojun@...>

近い将来の{Net,Free,Open}BSDにはKAME IPv6 stackが統合されています。

17 messages 2000/01/20
[#8981] Re: 1.4.3 patch for near-future *BSD IPv6 support — Jun-ichiro itojun Hagino <itojun@...> 2000/01/20

> それから、

[ruby-dev:8866] DoubleFloat

From: gotoken@... (GOTO Kentaro)
Date: 2000-01-07 05:21:49 UTC
List: ruby-dev #8866
ごとけんです

随分前に申告した分ですが、Float のサブクラスとして C の 
double と float に相当する DoubleFloat と SingleFloat につい
てです。

もう忘れられているでしょうから、改めて説明すると、

  DoubleFloat < Float 

は新しく導入される抽象クラス Float のサブクラスであることを
除いて現行の Float と同じモノです。 to_f やリテラルの評価値
は DoubleFloat になります。その他で唯一の例外は unpack のテ
ンプレート f と e, E が SingleFloat を返すことです。

SingleFloat オブジェクトを得るには num.prec や 
SingleFloat.induced_from を使う必要があります。 
  # リテラルをもらえるならやっぱり欲しいかも。

さて、改めて実装しはじめて思い出しましたが、API をどうしたも
んだかと迷っています。 grep -i *.h の結果は

config.h:#define SIZEOF_FLOAT 4
intern.h:VALUE rb_float_new _((double));
intern.h:VALUE rb_Float _((VALUE));
ruby.h:#define T_FLOAT  0x06
ruby.h:struct RFloat {
ruby.h:#define RFLOAT(obj)  (R_CAST(RFloat)(obj))
ruby.h:EXTERN VALUE rb_cFloat;
ruby.h:EXTERN VALUE rb_eFloatDomainError;

となるのですが、このうち、ruby.h で定義されている、T_FLOAT,
struct RFloat, RFLOAT の扱いに困っています。いま考えているの
は、

* T_FLOAT は廃止して
    #define T_DFLOAT 0x06
    #define T_SFLOAT 0x0f

* struct RFloat も廃止して
    struct RDFloat {
	struct RBasic basic;
	double value;
    };
    struct RSFloat {
	struct RBasic basic;
	double value;
    };


* RFLOAT も廃止して
    #define RDFLOAT(obj) (R_CAST(RDFloat)(obj))
    #define RSFLOAT(obj) (R_CAST(RSFloat)(obj))

とするモノです。また、numric.c で定義されている flo_*() は
すべて、dflo_*() を返すようにしようと思っています。

別の案としては、既存のFloatはAPIは一切変えずにクラス名前を表
す文字列だけ変えて、逆に、新しく作られる抽象クラスとしての
Float の API をaflo_ などとして追加するというモノが考えられ
ます。

御意見お待ちしてます。

-- gotoken

In This Thread

Prev Next