diff options
Diffstat (limited to 'ocaml-binary-annot/ocamlbuild/slurp.mli')
| -rw-r--r-- | ocaml-binary-annot/ocamlbuild/slurp.mli | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/ocaml-binary-annot/ocamlbuild/slurp.mli b/ocaml-binary-annot/ocamlbuild/slurp.mli new file mode 100644 index 0000000000..a3a141d8eb --- /dev/null +++ b/ocaml-binary-annot/ocamlbuild/slurp.mli @@ -0,0 +1,48 @@ +(***********************************************************************) +(* ocamlbuild *) +(* *) +(* Nicolas Pouillard, Berke Durak, projet Gallium, INRIA Rocquencourt *) +(* *) +(* Copyright 2007 Institut National de Recherche en Informatique et *) +(* en Automatique. All rights reserved. This file is distributed *) +(* under the terms of the Q Public License version 1.0. *) +(* *) +(***********************************************************************) + + +(* Original author: Berke Durak *) +(* Slurp *) + +(** Scans a directory lazily to build a tree that can be user-decorated. *) + +type 'a entry = + Dir of string * string * My_unix.stats Lazy.t * 'a * 'a entry list Lazy.t + (** [Dir(path, name, lst, decoration, lentries)] is a directory named [name] whose path is [path]. + Its stat is lazily stored in [lst] and its entries are lazily scanned in [lentries]. [decoration] + is of type 'a. *) + | File of string * string * My_unix.stats Lazy.t * 'a + (** [File(path, name, lst, decoration)] is a file named [name] whose path is [path]. + Its stat is lazily stored in [lst]. [decoration] is of type 'a. *) + | Error of exn + (** [Error x] means that the exception [x] was raised while scanning or statting an entry. *) + | Nothing + (** Convenient when filtering out entries. *) + +(** Recursively scan the filesystem starting at the given directory. *) +val slurp : string -> unit entry + +(** [filter f entry] only retains from [entry] the nodes for which + [f path name] returns [true]. *) +val filter : (string -> string -> 'a -> bool) -> 'a entry -> 'a entry + +(** [map f entries] changes the decoration in [entries] by applying + [f] to them. [f] is called as [f path name decoration]. *) +val map : (string -> string -> 'a -> 'b) -> 'a entry -> 'b entry + +(** [fold f entry x] iterates [f] over the entries and an accumulator + initially containing [x]; at each iteration, [f] gets the current + value of the accumulator and returns its new value. *) +val fold : (string -> string -> 'b -> 'a -> 'a) -> 'b entry -> 'a -> 'a + +(** Force the evaluation of the whole entry. *) +val force : 'a entry -> unit |
