(** 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. *)
| 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 =
(** A shell script. *)
type variable =
+ | T_unit
| T_bool of bool
| T_string of string
| T_int of Big_int.big_int
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 ... : << >> *)
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
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. *)