Hatena::ブログ(Diary)

新言語 Xtalを作る日記

2009-12-23 Xidを効率よくしたい このエントリーを含むブックマーク

Xidというマクロは、簡単に書くと次のようになっています。

#define Xid(ident) intern(#ident, sizeof(#ident))


IDPtr intern(const char* str, int size){
  strのハッシュを計算して、インターン済み文字列が格納されているハッシュテーブルを引いて、
 存在したらそれを返し、存在しなければインターン済み文字列を生成して、
 ハッシュテーブルに格納して、それを返す。
}

これをもっと効率よく書けないかと、頭をしぼってます。

自分のC++の知識を総動員して考えたのですが、うまい案が思いつきません。

Xid(var)が0始まりの、ユニークな整数値を返すようなマクロが書ければいいんですけども。


extern vector<IDPtr> id_list;

#define Xid(ident) id_list[TO_INT(ident)]

と書けるように。

ほげほげ 2009/12/24 16:15 ユニークになるかどうかわかりませんが、
http://d.hatena.ne.jp/yupo5656/20040613/p1

xtalcoxtalco 2009/12/25 09:02 コメントありがとうございます。

ユニークにするのはちょっと無理そうですが、
ハッシュ値を即値にはできそうですね。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/xtalco/20091223