diff options
author | ppedrot <ppedrot@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2013-05-12 15:33:27 +0000 |
---|---|---|
committer | ppedrot <ppedrot@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2013-05-12 15:33:27 +0000 |
commit | 9a9a8ab4c2a07aa8faa04f50d6250930220b5be5 (patch) | |
tree | e6cbd9730c892dc6386b9c1c68d53489b478f6f8 /lib/hook.mli | |
parent | 0e69a26eadeabf5987aacdac57cd6a5b90b0cdc8 (diff) |
Added a generic notion of hook. Hooks are functions to be set
exactly once at runtime, often to reduce the mutual dependency of
modules. This module permits to track them more easily.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@16509 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'lib/hook.mli')
-rw-r--r-- | lib/hook.mli | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/hook.mli b/lib/hook.mli new file mode 100644 index 000000000..3a11ac217 --- /dev/null +++ b/lib/hook.mli @@ -0,0 +1,27 @@ +(************************************************************************) +(* v * The Coq Proof Assistant / The Coq Development Team *) +(* <O___,, * INRIA - CNRS - LIX - LRI - PPS - Copyright 1999-2012 *) +(* \VV/ **************************************************************) +(* // * This file is distributed under the terms of the *) +(* * GNU Lesser General Public License Version 2.1 *) +(************************************************************************) + +(** This module centralizes the notions of hooks. Hooks are pointers that are to + be set at runtime exactly once. *) + +type 'a t +(** The type of hooks containing ['a]. Hooks can only be set. *) + +type 'a value +(** The content part of a hook. *) + +val make : ?default:'a -> unit -> ('a value * 'a t) +(** Create a new hook together with a way to retrieve its runtime value. *) + +val get : 'a value -> 'a +(** Access the content of a hook. If it was not set yet, try to recover the + default value if there is one. + @raise Assert_failure if undefined. *) + +val set : 'a t -> 'a -> unit +(** Register a hook. Assertion failure if already registered. *) |