Modified the instructions
[SXSI/xpathcomp.git] / tree.ml
diff --git a/tree.ml b/tree.ml
index ecd8e3b..9cab2c7 100644 (file)
--- a/tree.ml
+++ b/tree.ml
@@ -4,6 +4,7 @@
 (*  Copyright NICTA 2008                                                      *)
 (*  Distributed under the terms of the LGPL (see LICENCE)                     *)
 (******************************************************************************)
+INCLUDE "debug.ml"
 module type BINARY =
 sig
   type node_content
@@ -12,6 +13,8 @@ sig
   type t
   val parse_xml_uri : string -> t
   val parse_xml_string : string -> t
+  val save : t -> string -> unit
+  val load : ?sample:int -> string -> t
   val tag_pool : t -> Tag.pool
   val string : t -> string
   val descr : t -> descr
@@ -44,11 +47,12 @@ struct
     
   external int_of_node : 'a node -> int = "%identity"
 
-  external parse_xml_uri : string -> int -> bool -> bool -> t = "caml_call_shredder_uri"
-       
-    
+  external parse_xml_uri : string -> int -> bool -> bool -> t = "caml_call_shredder_uri"         
   external parse_xml_string :  string -> int -> bool -> bool -> t = "caml_call_shredder_string"
 
+  external save_tree : t -> string -> unit = "caml_xml_tree_save"
+  external load_tree : string -> int -> t = "caml_xml_tree_load"
+
 
   module Text =
   struct
@@ -178,12 +182,21 @@ struct
 
 
     let parse_xml_uri str = node_of_t       
-      (parse_xml_uri str 
-        !Options.sample_factor !Options.index_empty_texts !Options.disable_text_collection)
+      (MM((parse_xml_uri str 
+            !Options.sample_factor 
+            !Options.index_empty_texts
+            !Options.disable_text_collection),__LOCATION__))
 
     let parse_xml_string str = node_of_t 
-      (parse_xml_string str
-        !Options.sample_factor !Options.index_empty_texts !Options.disable_text_collection)
+      (MM((parse_xml_string str
+        !Options.sample_factor 
+        !Options.index_empty_texts 
+        !Options.disable_text_collection),__LOCATION__))
+
+
+    let save t str = save_tree t.doc str
+
+    let load ?(sample=64) str = node_of_t (load_tree str sample)
 
 
     external pool : doc -> Tag.pool = "%identity"
@@ -384,8 +397,8 @@ end
 
 
 
-
-
+IFDEF DEBUG
+THEN
 module DEBUGTREE 
   = struct
     
@@ -572,3 +585,6 @@ module DEBUGTREE
 end
 
 module Binary = DEBUGTREE
+ELSE
+module Binary = XML.Binary
+END (* IFDEF DEBUG *)