package merlin-lib

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
type ('a, 'b) t

An instance of a stamped hashtable

type changelog

The changelog datastructure logs stamped bindings added to tables. By separating the log from the table, it is possible to efficiently remove stamped bindings spread accross multiple tables.

val create : changelog -> int -> ('a, 'b) t

create changelog n creates a new table with an initial size of n (see Hashtbl.create) that logs its changes to changelog.

val add : ('a, 'b) t -> ?stamp:int -> 'a -> 'b -> unit

Add a binding, like Hashtbl.add, with an optional stamp. Unlike Hashtbl.add, having multiple bindings with the same key is undefined. (It's ok, this feature is not used by the caches!)

val mem : ('a, 'b) t -> 'a -> bool

See Hashtbl.mem.

val find : ('a, 'b) t -> 'a -> 'b

See Hashtbl.find.

val create_changelog : unit -> changelog

Create a new change log.

val backtrack : changelog -> stamp:int -> unit