From: "Gaurav Chanda" <gaurav_chanda@lycos.com>
To: caml-list@pauillac.inria.fr
Subject: [Caml-list] Pxp objects inside class definition
Date: Tue, 09 Jul 2002 01:35:40 -0700 [thread overview]
Message-ID: <BGDGFLPILNAGEAAA@mailcity.com> (raw)
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 = "<def></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
next reply other threads:[~2002-07-09 8:35 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-07-09 8:35 Gaurav Chanda [this message]
2002-07-09 12:20 ` Gerd Stolpmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=BGDGFLPILNAGEAAA@mailcity.com \
--to=gaurav_chanda@lycos.com \
--cc=caml-list@pauillac.inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox