val raise_error: RolesTypes.error -> 'a
-val list_nth: int -> ('a * 'b) list -> 'b
+val list_apply: (int -> 'a -> bool) -> ('a -> unit) -> int -> 'a list -> bool
-val list_toggle: int -> (bool * 'b) list -> (bool * 'b) list
+val list_nth: ('a -> unit) -> int -> 'a list -> unit
-val list_toggle_all: (bool * 'b) list -> (bool * 'b) list
-
-val list_split: (bool * 'b) list -> (bool * 'b) list * (bool * 'b) list
-
-val list_select: 'b option -> (bool * 'b) list -> 'b option
+val list_split: ('a -> bool) -> ('a -> unit) -> 'a list -> 'a list * 'a list
val list_visit:
- (string -> string -> unit) -> (string -> bool -> string -> unit) ->
+ (string -> string -> unit) -> RolesTypes.each ->
(RolesTypes.pointer -> 'a -> unit) -> (unit -> unit) ->
- ('a -> string) -> RolesTypes.pointer -> (bool * 'a) list -> unit
+ ('a -> bool) -> ('a -> string) -> ('a -> string) -> RolesTypes.pointer -> 'a list -> unit
+
+val string_of_stage: RolesTypes.stage -> string
+
+val stage_of_string: string -> RolesTypes.stage
+
+val stage_compare: RolesTypes.stage -> RolesTypes.stage -> int
+
+val string_of_nobj: RolesTypes.nobj -> string
+
+val nobj_of_string: string -> RolesTypes.nobj
-val string_of_version: RolesTypes.version -> string
+val key_of_nobj: RolesTypes.nobj -> string
-val version_of_string: string -> RolesTypes.version
+val nobj_selected: RolesTypes.nobj -> bool
-val compare_versions: RolesTypes.version -> RolesTypes.version -> int
+val nobj_select: RolesTypes.nobj -> unit
-val string_of_name: RolesTypes.name -> string
+val nobj_union: RolesTypes.nobjs -> RolesTypes.nobjs -> RolesTypes.nobjs
-val name_of_string: string -> RolesTypes.name
+val string_of_oobj: RolesTypes.oobj -> string
-val names_union: RolesTypes.names -> RolesTypes.names -> RolesTypes.names
+val oobj_of_string: string -> RolesTypes.oobj
-val string_of_obj: RolesTypes.obj -> string
+val key_of_oobj: RolesTypes.oobj -> string
-val obj_of_string: string -> RolesTypes.obj
+val oobj_selected: RolesTypes.oobj -> bool
-val objs_union: RolesTypes.objs -> RolesTypes.objs -> RolesTypes.objs
+val oobj_select: RolesTypes.oobj -> unit
-val string_of_role: RolesTypes.role -> string
+val oobj_union: RolesTypes.oobjs -> RolesTypes.oobjs -> RolesTypes.oobjs
-val roles_union: RolesTypes.roles -> RolesTypes.roles -> RolesTypes.roles
+val oobj_of_nobj: RolesTypes.stage -> RolesTypes.nobj -> RolesTypes.oobj
-val exists_role_deleted: RolesTypes.version -> RolesTypes.roles -> bool
+val oobj_match: int -> int -> RolesTypes.oobjs -> RolesTypes.nobjs -> (int * int) option
-val get_tops: RolesTypes.version -> RolesTypes.roles -> RolesTypes.objs * RolesTypes.objs
+val string_of_robj: RolesTypes.robj -> string
-val match_names: int -> int -> RolesTypes.objs -> RolesTypes.names -> (int * int) option
+val key_of_robj: RolesTypes.robj -> string
+
+val robj_selected: RolesTypes.robj -> bool
+
+val robj_select: RolesTypes.robj -> unit
+
+val robj_expand: RolesTypes.robj -> unit
+
+val robj_union: RolesTypes.robjs -> RolesTypes.robjs -> RolesTypes.robjs
+
+val robj_tops: RolesTypes.stage -> RolesTypes.robjs -> RolesTypes.oobjs * RolesTypes.oobjs
+
+val robj_split:
+ RolesTypes.stage -> RolesTypes.robjs ->
+ RolesTypes.robjs * RolesTypes.oobjs * RolesTypes.nobjs
val new_status: RolesTypes.status
val pointer_of_string: string -> RolesTypes.pointer
+val pointer_visit: (RolesTypes.stage -> unit) -> RolesTypes.stage -> RolesTypes.pointer -> unit
+
val string_of_error: RolesTypes.error -> string