X-Git-Url: http://git.annexia.org/?p=whenjobs.git;a=blobdiff_plain;f=lib%2Fwhenutils.mli;h=4d5ccc7bed7c4c166394004ea9bef09e38dc071f;hp=73d50844786672dbf091c0e8edb49e6e6b69f19a;hb=2b33ad509c3000cac1f2c81efce68b0c370a0f20;hpb=65b5a307fc1c55a197ee337180842ac6885ba784 diff --git a/lib/whenutils.mli b/lib/whenutils.mli index 73d5084..4d5ccc7 100644 --- a/lib/whenutils.mli +++ b/lib/whenutils.mli @@ -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. *)