Module Main__.Redir
val rev_redirs_of : ('a * 'b) list -> ('b * 'a list) list
val rev_ind_redirs : ('a * 'b) list -> ('a * 'c) list -> ('a * 'c) list
間接参照の逆辺のうち,間接参照ノードを指している辺のみを抽出
val check_zero : ('a * int) list -> ('a * 'a list) list -> 'a -> 'a list -> 'a -> 'a list option
ループを検出した場合は逆方向に間接ノードを辿って参照カウンタの値が全てゼロであることを確認する
- ダメだったら None を返す
- 大丈夫だったら訪れたノードの集合を Some に包んで返す
val rdfs : ('a * int) list -> ('a * 'a list) list -> 'a -> ('a * int) list * int
ループを検出しなかった場合は,逆辺を深さ優先探索して,帰りがけ順に被参照数を加算してゆく
- 帰り値はノードと被参照数の連想リストと被参照数のタプル (この連想リストから訪れたノードの集合も導出できる)
val ref_count_redir : ('a * int) list -> ('a * 'a) list -> ('a * 'a list) list -> ('a * 'a list) list -> 'a list -> 'a -> ('a * int) list option
node_ref からの redirection をチェックする
- 不正な間接循環参照を検出した場合は None を返す
- そうでない場合はノードと被参照数の連想リストを Some に包んで返す
val ref_count_redirs : ('a * int) list -> ('a * 'a) list -> ('a * 'a list) list -> ('a * 'a list) list -> ('a * int) list option
node_ref のリストについて,redirection をチェックする
val update_free_indeg : (int * 'a) Stdlib.ref array -> (int * int) -> unit
自由リンクの参照カウンタの値を
free_indeg_diff
で加算する