メモ (Reading Gauche)
う。Scm_FindBinding の不明点についてココサブさんからフォローあり。もっかい見てみる必要あり。
とりあえず昨晩のメモも参考にしつつ Scm_FindModule 以下をがっつり掘り中な日曜夕方。
今、lookup_module_create 作業中なんですが、昨晩の続きなメモをちょっとだけ。
# ゲンジツトウヒとも言う (を
とは言え丁度 make_module な作業着手直前だから丁度良いといえば良いのかな。
- make_module (module.c)
- ScmModule な領域確保して m が参照
- m なオブジェクトは MODULE クラスの印を
- init_module に m と引数 name を渡す
- init_module (module.c)
- 各属性値をデフォルトな状態に
- table 属性は Scm_MakeHashTableSimple の戻りを ScmHashTable * でキャストしたナニをセット。渡しているのは SCM_HASH_EQ と 0
- Scm_MakeHashTableSimple (hash.c)
- ScmHashTable な領域確保して z が参照
- z なオブジェクトには HASH_TABLE クラスの印を
- Scm_HashCoreInitSimple 呼び出し。引数は順に &z->core, type, initSize, NULL となっている模様。init_module から呼び出された場合には initSize は 0 で type は SCM_HASH_EQ
- type 属性に引数 type をセット。init_module から呼び出された場合には type は SCM_HASH_EQ
- z を Scm_Obj * でキャストして戻す
- Scm_HashCoreInitSimple (hash.c)
- hash_core_predef_procs 呼び出し
- hash_core_init 呼び出し
- hash_core_predef_procs で z->core の accessfn とか hashfn とか cmpfn にセットする関数ポインタを取得
- hash_core_init で z->core の属性設定
という流れになとるのでしょうか。ココサブさんのフォロー的にはもう少し鳥の目でソースを眺める必要がありそげ。