sig
  exception Invalid_section of string
  exception Invalid_element of string
  exception Missing_section of string
  exception Missing_element of string
  exception Ini_parse_error of (int * string)
  type attribute_specification = {
    atr_name : string;
    atr_required : bool;
    atr_default : string list option;
    atr_validator : Re.Pcre.regexp option;
  }
  type section_specification = {
    sec_name : string;
    sec_required : bool;
    sec_attributes : Inifiles.attribute_specification list;
  }
  type specification = Inifiles.section_specification list
  class inifile :
    ?spec:Inifiles.specification ->
    string ->
    object
      method attrs : string -> string list
      method delval : string -> string -> unit
      method getaval : string -> string -> string list
      method getval : string -> string -> string
      method iter : (string -> string -> unit) -> string -> unit
      method save : ?file:string -> unit -> unit
      method sects : string list
      method setval : string -> string -> string -> unit
    end
  val fold : ('-> Inifiles.inifile -> 'a) -> string -> '-> 'a
end