Reorder SOURCES for consistency.
[whenjobs.git] / lib / whenutils.mli
index 73d5084..4d5ccc7 100644 (file)
@@ -125,6 +125,7 @@ val filter_map : ('a -> 'b option) -> 'a list -> 'b list
 (** Filter + map. *)
 
 type whenexpr =
+  | Expr_unit                           (** Unit constant. *)
   | Expr_bool of bool                   (** A boolean constant. *)
   | Expr_str of string                  (** A string constant. *)
   | Expr_int of Big_int.big_int         (** An integer constant. *)
@@ -147,6 +148,7 @@ type whenexpr =
   | Expr_increases of string            (** increases var *)
   | Expr_decreases of string            (** decreases var *)
   | Expr_prev of string                 (** prev var *)
+  | Expr_reloaded                       (** reloaded () *)
 (** Internal type used to represent 'when' expressions. *)
 
 type periodexpr =
@@ -163,6 +165,7 @@ type shell_script = {
 (** A shell script. *)
 
 type variable =
+  | T_unit
   | T_bool of bool
   | T_string of string
   | T_int of Big_int.big_int
@@ -180,9 +183,6 @@ type variables = variable StringMap.t
 type job_private
 (** Private state associated with a job, used for evaluation. *)
 
-val no_job_private : job_private
-(* XXX any use of no_job_private is wrong XXX *)
-
 type job_cond =
   | When_job of whenexpr                (** when ... : << >> *)
   | Every_job of periodexpr             (** every ... : << >> *)
@@ -194,7 +194,15 @@ type job = {
   job_script : shell_script;
   job_private : job_private;
 }
-(** A job. *)
+(** A job.  Note that because of the [job_private] field, these cannot
+    be constructed directly.  Use {!make_when_job} or {!make_every_job}
+    to construct one. *)
+
+val make_when_job : Camlp4.PreCast.Loc.t -> string -> whenexpr -> shell_script -> job
+(** Make a when-statement job. *)
+
+val make_every_job : Camlp4.PreCast.Loc.t -> string -> periodexpr -> shell_script -> job
+(** Make an every-statement job. *)
 
 val expr_of_ast : Camlp4.PreCast.Ast.Loc.t -> Camlp4.PreCast.Ast.expr -> whenexpr
 (** Convert OCaml AST to an expression.  Since OCaml ASTs are much
@@ -214,10 +222,12 @@ val dependencies_of_whenexpr : whenexpr -> string list
 val dependencies_of_job : job -> string list
 (** Which variables does this job depend on? *)
 
-val job_evaluate : job -> variables -> bool * job
-(** Evaluate [job]'s condition in the context of the [variables], and
-    return [true] iff it should be run now.  Note that this returns a
-    possibly-updated [job] structure.
+val job_evaluate : job -> variables -> bool -> bool * job
+(** [job_evaluate job variables onload] evaluates [job]'s condition in
+    the context of the [variables], and return [true] iff it should be
+    run now.
+
+    Note that this returns a possibly-updated [job] structure.
 
     This is a no-op for 'every' jobs. *)