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)]
と書けるように。