(* Copyright (C) 2004, HELM Team. * * This file is part of HELM, an Hypertextual, Electronic * Library of Mathematics, developed at the Computer Science * Department, University of Bologna, Italy. * * HELM is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * HELM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with HELM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, * MA 02111-1307, USA. * * For details, see the HELM World-Wide-Web page, * http://helm.cs.unibo.it/ *) exception Not_implemented of string let not_implemented feature = raise (Not_implemented feature) (** exceptions whose content should be presented to the user *) exception Failure of string let error s = raise (Failure s) let warning s = prerr_endline ("MATITA WARNING: " ^ s) exception No_proof (** no current proof is available *) exception No_choice (** no choice was made by the user *) class type observer = (* "observer" pattern *) object method update: unit -> unit end class subject = (* "observer" pattern *) object val mutable observers = [] method attach (o: observer) = observers <- o :: observers method detach (o: observer) = observers <- List.filter (fun o' -> o' != o) observers method notify () = List.iter (fun o -> o#update ()) observers end class type command = (* "command" pattern *) object method execute: unit -> unit method undo: unit -> unit end class type parserr = (* "parser" is a keyword :-( *) object method parseTerm: char Stream.t -> DisambiguateTypes.term method parseTactic: char Stream.t -> DisambiguateTypes.tactic method parseTactical: char Stream.t -> DisambiguateTypes.tactical method parseCommand: char Stream.t -> DisambiguateTypes.command method parseScript: char Stream.t -> DisambiguateTypes.script end class type disambiguator = object method parserr: parserr method setParserr: parserr -> unit method disambiguateTerm: context:Cic.context -> metasenv:Cic.metasenv -> ?env:DisambiguateTypes.environment -> char Stream.t -> (DisambiguateTypes.environment * Cic.metasenv * Cic.term) list method disambiguateTermAst: context:Cic.context -> metasenv:Cic.metasenv -> ?env:DisambiguateTypes.environment -> DisambiguateTypes.term -> (DisambiguateTypes.environment * Cic.metasenv * Cic.term) list end (** {2 shorthands} *) type namer = ProofEngineTypes.mk_fresh_name_type type choose_uris_callback = selection_mode:Gtk.Tags.selection_mode -> ?title:string -> ?msg:string -> ?nonvars_button:bool -> string list -> string list type choose_interp_callback = (string * string) list list -> int list