メモ (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 の属性設定

という流れになとるのでしょうか。ココサブさんのフォロー的にはもう少し鳥の目でソースを眺める必要がありそげ。