From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id KAA22340; Tue, 9 Jul 2002 10:35:56 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id KAA22526 for ; Tue, 9 Jul 2002 10:35:55 +0200 (MET DST) Received: from mailcity.com (fes4.mail.lycos.com [209.185.123.96]) by concorde.inria.fr (8.11.1/8.11.1) with SMTP id g698Zrr28346 for ; Tue, 9 Jul 2002 10:35:54 +0200 (MET DST) Received: from Unknown/Local ([?.?.?.?]) by mailcity.com; Tue Jul 9 01:35:40 2002 To: caml-list@pauillac.inria.fr Date: Tue, 09 Jul 2002 01:35:40 -0700 From: "Gaurav Chanda" Message-ID: Mime-Version: 1.0 X-Sent-Mail: off Reply-To: gaurav_chanda@lycos.com X-Mailer: MailCity Service X-Priority: 3 Subject: [Caml-list] Pxp objects inside class definition X-Sender-Ip: 128.93.8.52 Organization: Lycos Mail (http://www.mail.lycos.com:80) Content-Type: text/plain; charset=us-ascii Content-Language: en Content-Transfer-Encoding: 7bit Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk Hello I am using the Polymorphic XML Parser (PXP) to parse XML documents. I have made 2 files : point.ml and point.mli, which contain simple class definitions. The file point.mli contains: open Pxp_yacc ; open Pxp_document ; open Pxp_types ; class type point_sig = object value mutable x : Pxp_document.node 'a; end; class point : point_sig ; The file point.ml contains: open Pxp_yacc ; open Pxp_document ; open Pxp_types ; class type point_sig = object value mutable x : Pxp_document.node 'a; end ; value def = "" ; value def = parse_wfdocument_entity default_config (from_string def) default_spec ; value defr = def#root ; class point:point_sig = object value mutable x = defr; end; I get an error message while compilation. My compilation command is : ocamlopt -pp "camlp4r pa_extend.cmo" -I +camlp4 -I Ty/ -I /usr/lib/ocaml/site-lib/netstring -I /usr/lib/ocaml/site-lib/pxp-engine -I /usr/lib/ocaml/site-lib/pxp-lex-iso88591/ -c point.mli point.ml The error message is : File "point.ml", line 15, characters 8-67: The class type object val mutable x : ('a Pxp_document.node Pxp_document.extension as 'a) Pxp_document.node end is not matched by the class type point_sig The class type object val mutable x : ('a Pxp_document.node Pxp_document.extension as 'a) Pxp_document.node end is not matched by the class type object val mutable x : ('a Pxp_document.node #Pxp_document.extension as 'a) Pxp_document.node end The instance variable x has type (('a Pxp_document.node as 'b) Pxp_document.extension as 'a) Pxp_document.node = < add_node : ?force:bool -> 'b -> unit; add_pinstr : Pxp_dtd.proc_instruction -> unit; append_node : 'b -> unit; attribute : string -> Pxp_types.att_value; attribute_names : string list; attribute_type : string -> Pxp_types.att_type; attributes : (string * Pxp_types.att_value) list; attributes_as_nodes : 'b list; classify_data_node : 'b -> Pxp_document.data_node_classification; comment : string option; complement_attlist : unit -> unit; create_data : Pxp_dtd.dtd -> string -> 'b; create_element : ?name_pool_for_attribute_values:Pxp_types.pool -> ?position:string * int * int -> ?valcheck:bool -> ?att_values:(string * Pxp_types.att_value) list -> Pxp_dtd.dtd -> Pxp_document.node_type -> (string * string) list -> 'b; create_other : ?position:string * int * int -> Pxp_dtd.dtd -> Pxp_document.node_type -> 'b; data : string; delete : unit; dtd : Pxp_dtd.dtd; dump : Format.formatter -> unit; encoding : Pxp_types.rep_encoding; extension : 'a; id_attribute_name : string; id_attribute_value : string; idref_attribute_names : string list; insert_nodes : ?pos:int -> 'b list -> unit; internal_adopt : 'b option -> int -> unit; internal_delete : 'b -> unit; internal_init : string * int * int -> Pxp_types.pool option -> bool -> Pxp_dtd.dtd -> string -> (string * string) list -> (string * Pxp_types.att_value) list -> unit; internal_init_other : string * int * int -> Pxp_dtd.dtd -> Pxp_document.node_type -> unit; internal_set_pos : int -> unit; iter_nodes : ('b -> unit) -> unit; iter_nodes_sibl : ('b option -> 'b -> 'b option -> unit) -> unit; local_validate : ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit; localname : string; namespace_info : 'a Pxp_document.namespace_info; namespace_manager : Pxp_dtd.namespace_manager; namespace_uri : string; next_node : 'b; node_path : int list; node_position : int; node_type : Pxp_document.node_type; normprefix : string; nth_node : int -> 'b; optional_list_attribute : string -> string list; optional_string_attribute : string -> string option; orphaned_clone : 'b; orphaned_flat_clone : 'b; parent : 'b; pinstr : string -> Pxp_dtd.proc_instruction list; pinstr_names : string list; position : string * int * int; previous_node : 'b; quick_set_attributes : (string * Pxp_types.att_value) list -> unit; remove : unit -> unit; remove_nodes : ?pos:int -> ?len:int -> unit -> unit; required_list_attribute : string -> string list; required_string_attribute : string -> string; reset_attribute : string -> unit; root : 'b; set_attribute : ?force:bool -> string -> Pxp_types.att_value -> unit; set_attributes : (string * Pxp_types.att_value) list -> unit; set_comment : string option -> unit; set_data : string -> unit; set_namespace_info : 'a Pxp_document.namespace_info option -> unit; set_nodes : 'b list -> unit; sub_nodes : 'b list; validate : unit -> unit; validate_attlist : unit -> unit; validate_contents : ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit; write : ?prefixes:string list -> ?default:string -> Pxp_types.output_stream -> Pxp_types.encoding -> unit > but is expected to have type ('c Pxp_document.node #Pxp_document.extension as 'c) Pxp_document.node = < add_node : ?force:bool -> 'c Pxp_document.node -> unit; add_pinstr : Pxp_dtd.proc_instruction -> unit; append_node : 'c Pxp_document.node -> unit; attribute : string -> Pxp_types.att_value; attribute_names : string list; attribute_type : string -> Pxp_types.att_type; attributes : (string * Pxp_types.att_value) list; attributes_as_nodes : 'c Pxp_document.node list; classify_data_node : 'c Pxp_document.node -> Pxp_document.data_node_classification; comment : string option; complement_attlist : unit -> unit; create_data : Pxp_dtd.dtd -> string -> 'c Pxp_document.node; create_element : ?name_pool_for_attribute_values:Pxp_types.pool -> ?position:string * int * int -> ?valcheck:bool -> ?att_values:(string * Pxp_types.att_value) list -> Pxp_dtd.dtd -> Pxp_document.node_type -> (string * string) list -> 'c Pxp_document.node; create_other : ?position:string * int * int -> Pxp_dtd.dtd -> Pxp_document.node_type -> 'c Pxp_document.node; data : string; delete : unit; dtd : Pxp_dtd.dtd; dump : Format.formatter -> unit; encoding : Pxp_types.rep_encoding; extension : 'c; id_attribute_name : string; id_attribute_value : string; idref_attribute_names : string list; insert_nodes : ?pos:int -> 'c Pxp_document.node list -> unit; internal_adopt : 'c Pxp_document.node option -> int -> unit; internal_delete : 'c Pxp_document.node -> unit; internal_init : string * int * int -> Pxp_types.pool option -> bool -> Pxp_dtd.dtd -> string -> (string * string) list -> (string * Pxp_types.att_value) list -> unit; internal_init_other : string * int * int -> Pxp_dtd.dtd -> Pxp_document.node_type -> unit; internal_set_pos : int -> unit; iter_nodes : ('c Pxp_document.node -> unit) -> unit; iter_nodes_sibl : ('c Pxp_document.node option -> 'c Pxp_document.node -> 'c Pxp_document.node option -> unit) -> unit; local_validate : ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit; localname : string; namespace_info : 'c Pxp_document.namespace_info; namespace_manager : Pxp_dtd.namespace_manager; namespace_uri : string; next_node : 'c Pxp_document.node; node_path : int list; node_position : int; node_type : Pxp_document.node_type; normprefix : string; nth_node : int -> 'c Pxp_document.node; optional_list_attribute : string -> string list; optional_string_attribute : string -> string option; orphaned_clone : 'c Pxp_document.node; orphaned_flat_clone : 'c Pxp_document.node; parent : 'c Pxp_document.node; pinstr : string -> Pxp_dtd.proc_instruction list; pinstr_names : string list; position : string * int * int; previous_node : 'c Pxp_document.node; quick_set_attributes : (string * Pxp_types.att_value) list -> unit; remove : unit -> unit; remove_nodes : ?pos:int -> ?len:int -> unit -> unit; required_list_attribute : string -> string list; required_string_attribute : string -> string; reset_attribute : string -> unit; root : 'c Pxp_document.node; set_attribute : ?force:bool -> string -> Pxp_types.att_value -> unit; set_attributes : (string * Pxp_types.att_value) list -> unit; set_comment : string option -> unit; set_data : string -> unit; set_namespace_info : 'c Pxp_document.namespace_info option -> unit; set_nodes : 'c Pxp_document.node list -> unit; sub_nodes : 'c Pxp_document.node list; validate : unit -> unit; validate_attlist : unit -> unit; validate_contents : ?use_dfa:bool -> ?check_data_nodes:bool -> unit -> unit; write : ?prefixes:string list -> ?default:string -> Pxp_types.output_stream -> Pxp_types.encoding -> unit > Type 'a = 'a Pxp_document.node Pxp_document.extension is not compatible with type 'c = < clone : 'c; node : 'c Pxp_document.node; set_node : 'c Pxp_document.node -> unit; .. > make: *** [code] Error 2 I am not being able to define PXP objects inside classes. Could you help me solve this problem ? Thanks Gaurav _____________________________________________________ Supercharge your e-mail with a 25MB Inbox, POP3 Access, No Ads and NoTaglines --> LYCOS MAIL PLUS. http://www.mail.lycos.com/brandPage.shtml?pageId=plus ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners