From: Kim Nguyễn Date: Thu, 16 Feb 2012 01:58:36 +0000 (+0100) Subject: Start making the code tag agnostic. X-Git-Url: http://git.nguyen.vg/gitweb/?a=commitdiff_plain;h=bca508d0e826bc09f8975ba28720a867a828782f;p=SXSI%2Fxpathcomp.git Start making the code tag agnostic. --- diff --git a/src/tag.ml b/src/tag.ml index 6c88089..01d3788 100644 --- a/src/tag.ml +++ b/src/tag.ml @@ -10,6 +10,13 @@ type t = int type pool +type operations = { + tag : pool -> string -> t; + to_string : pool -> t ->string; + nullt : pool -> t; + translate : pool -> t -> t +} + external null_pool : unit -> pool = "caml_xml_tree_nullt" external null_tag : unit -> t = "caml_xml_tree_nullt" external register_tag : pool -> string -> t = "caml_xml_tree_register_tag" @@ -55,6 +62,17 @@ let to_string t = else if t == nullt then "" else tag_name (get_pool()) t + +let xml_operations = { + tag = (fun _ x -> tag x); + to_string = (fun _ x -> to_string x); + nullt = (fun _ -> nullt); + translate = (fun _ x -> x); +} + + + + let dump_tags () = Format.eprintf "Tags are:\n"; let doc = get_pool() in diff --git a/src/tag.mli b/src/tag.mli index 6dc51ee..7a11be0 100644 --- a/src/tag.mli +++ b/src/tag.mli @@ -1,5 +1,12 @@ type t = int type pool +type operations = { + tag : pool -> string -> t; + to_string : pool -> t -> string; + nullt : pool -> t; + translate : pool -> t -> t +} + val tag : string -> t val document_node : t @@ -12,7 +19,7 @@ val pcdata_close : t val attribute_data_close : t -val init : pool -> unit +val init : pool -> (* operations -> *) unit val to_string : t -> string val compare : t -> t -> int val equal : t -> t -> bool