type !'a arch = private
| Arch_dir of string * 'a * 'a arch list
| Arch_dir_pack of string * 'a * 'a arch list
| Arch_file of string * 'a
val dir : string -> unit arch list -> unit arch
val dir_pack : string -> unit arch list -> unit arch
val file : string -> unit arch
type info = private {
current_path : string;
include_dirs : string list;
for_pack : string;
}
val annotate : 'a arch -> info arch
val print : ( Format.formatter -> 'a -> unit ) -> Format.formatter -> 'a arch -> unit
val print_include_dirs : Format.formatter -> string list -> unit
val print_info : Format.formatter -> info -> unit
val iter_info : ( 'a -> unit ) -> 'a arch -> unit
val fold_info : ( 'a -> 'b -> 'b ) -> 'a arch -> 'b -> 'b
val iter_include_dirs : info arch -> ( string -> unit ) -> unit
val mk_tables : info arch -> ( string, string list ) Hashtbl.t * ( string, string ) Hashtbl.t
val print_table : ( Format.formatter -> 'a -> unit ) -> Format.formatter -> ( string, 'a ) Hashtbl.t -> unit
val forpack_flags_of_pathname : string -> Command.spec