sig
module VarMap :
sig
type key = string
type +'a t
val empty : 'a t
val is_empty : 'a t -> bool
val add : key -> 'a -> 'a t -> 'a t
val find : key -> 'a t -> 'a
val remove : key -> 'a t -> 'a t
val mem : key -> 'a t -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val map : ('a -> 'b) -> 'a t -> 'b t
val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
end
type varmap_t = string Flx_mtypes2.VarMap.t
module TypecodeSet :
sig
type elt = Flx_ast.typecode_t
type t
val empty : t
val is_empty : t -> bool
val mem : elt -> t -> bool
val add : elt -> t -> t
val singleton : elt -> t
val remove : elt -> t -> t
val union : t -> t -> t
val inter : t -> t -> t
val diff : t -> t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val subset : t -> t -> bool
val iter : (elt -> unit) -> t -> unit
val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (elt -> bool) -> t -> bool
val exists : (elt -> bool) -> t -> bool
val filter : (elt -> bool) -> t -> t
val partition : (elt -> bool) -> t -> t * t
val cardinal : t -> int
val elements : t -> elt list
val min_elt : t -> elt
val max_elt : t -> elt
val choose : t -> elt
val split : elt -> t -> t * bool * t
end
type typecodeset_t = Flx_mtypes2.TypecodeSet.t
val typecodeset_of_list :
Flx_mtypes2.TypecodeSet.elt list -> Flx_mtypes2.TypecodeSet.t
val typecodeset_map :
(Flx_mtypes2.TypecodeSet.elt -> Flx_mtypes2.TypecodeSet.elt) ->
Flx_mtypes2.TypecodeSet.t -> Flx_mtypes2.TypecodeSet.t
module PosSet :
sig
type elt = int
type t
val empty : t
val is_empty : t -> bool
val mem : elt -> t -> bool
val add : elt -> t -> t
val singleton : elt -> t
val remove : elt -> t -> t
val union : t -> t -> t
val inter : t -> t -> t
val diff : t -> t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val subset : t -> t -> bool
val iter : (elt -> unit) -> t -> unit
val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (elt -> bool) -> t -> bool
val exists : (elt -> bool) -> t -> bool
val filter : (elt -> bool) -> t -> t
val partition : (elt -> bool) -> t -> t * t
val cardinal : t -> int
val elements : t -> elt list
val min_elt : t -> elt
val max_elt : t -> elt
val choose : t -> elt
val split : elt -> t -> t * bool * t
end
module PosSetSet :
sig
type elt = PosSet.t
type t
val empty : t
val is_empty : t -> bool
val mem : elt -> t -> bool
val add : elt -> t -> t
val singleton : elt -> t
val remove : elt -> t -> t
val union : t -> t -> t
val inter : t -> t -> t
val diff : t -> t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val subset : t -> t -> bool
val iter : (elt -> unit) -> t -> unit
val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (elt -> bool) -> t -> bool
val exists : (elt -> bool) -> t -> bool
val filter : (elt -> bool) -> t -> t
val partition : (elt -> bool) -> t -> t * t
val cardinal : t -> int
val elements : t -> elt list
val min_elt : t -> elt
val max_elt : t -> elt
val choose : t -> elt
val split : elt -> t -> t * bool * t
end
module CharSet :
sig
type elt = int
type t
val empty : t
val is_empty : t -> bool
val mem : elt -> t -> bool
val add : elt -> t -> t
val singleton : elt -> t
val remove : elt -> t -> t
val union : t -> t -> t
val inter : t -> t -> t
val diff : t -> t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val subset : t -> t -> bool
val iter : (elt -> unit) -> t -> unit
val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (elt -> bool) -> t -> bool
val exists : (elt -> bool) -> t -> bool
val filter : (elt -> bool) -> t -> t
val partition : (elt -> bool) -> t -> t * t
val cardinal : t -> int
val elements : t -> elt list
val min_elt : t -> elt
val max_elt : t -> elt
val choose : t -> elt
val split : elt -> t -> t * bool * t
end
type instance_registry_t =
(int * Flx_types.btypecode_t list, int) Hashtbl.t
type felix_compiler_options_t = {
print_flag : bool;
debug : bool;
optimise : bool;
trace : bool;
include_dirs : string list;
files : string list;
raw_options : (string * string) list;
reverse_return_parity : bool;
max_inline_length : int;
compile_only : bool;
force_recompile : bool;
}
type sym_state_t = {
dfns : Flx_types.symbol_table_t;
counter : int Pervasives.ref;
varmap : Flx_types.typevarmap_t;
ticache : (int, Flx_types.btypecode_t) Hashtbl.t;
glr_cache : (int, Flx_types.btypecode_t) Hashtbl.t;
env_cache : (int, Flx_types.env_t) Hashtbl.t;
registry : Flx_types.type_registry_t;
compiler_options : Flx_mtypes2.felix_compiler_options_t;
instances : Flx_mtypes2.instance_registry_t;
include_files : string list Pervasives.ref;
roots : Flx_mtypes1.IntSet.t Pervasives.ref;
wrappers : (int, int) Hashtbl.t;
lexers : (int * Flx_types.tbexpr_t, int) Hashtbl.t;
parsers : (int * Flx_types.btypecode_t * int list, int) Hashtbl.t;
}
end