Newer
Older

erwan
committed
(* Time-stamp: <modified the 27/05/2019 (at 16:01) by Erwan Jahier> *)
type varT = It | Ft | Bt | Et of int | St | Nt | At of varT * int
type vars = (string * varT) list
type value = I of int | F of float | B of bool | E of int | S of string
type local_env = string -> value
type action = string (* label *)
pid: unit -> string; (* Returns the pid of the neigbhor. This info
is not available in all modes (e.g.,
anonymous) *)
reply: unit -> int;
(* Returns the channel number that let this neighbor access to the
content of the process, if the neighbor can access to the
process. Returns -1 if the neigbor can not access to the
process, which can happen in directed graphs only. This info is
not available in all modes *)
}
type enable_fun = neighbor list -> local_env -> action list
type step_fun = neighbor list -> local_env -> action -> local_env
(** Those 3 registering functions must be called! *)
val reg_vars : algo_id -> vars -> unit
val reg_enable : algo_id -> enable_fun -> unit
val reg_step : algo_id -> step_fun -> unit
(** raised by sasa if one of the function above is not called *)
exception Unregistred of string * string
(** This one is not mandatory. The initialisation done in the dot
file have priority over this one. *)
val reg_init_vars : algo_id -> (neighbor list -> local_env) -> unit
(** Mandatory in custom mode only. *)
val reg_actions : algo_id -> action list -> unit

erwan
committed
(** Global infos *)
val card : unit -> int
(* val degree : unit -> int *)
(* val diameter : unit -> int *)
(** functions below are not part of the API *)
val vart_to_rif_decl: varT -> string -> (string * string) list
val vart_to_rif_string: varT -> string -> string

erwan
committed
val set_card : int -> unit
(* val set_degree : int -> unit *)
(* val set_diameter : int -> unit *)
(** the following functions are used by sasa *)
val get_vars : algo_id -> vars
val get_enable : algo_id -> enable_fun
val get_step : algo_id -> step_fun
val get_init_vars : algo_id -> (string * varT) list -> (neighbor list -> local_env)
val get_actions : algo_id -> action list