That's it for tonight.
git-svn-id: svn+ssh://idea.nguyen.vg/svn/sxsi/trunk/xpathcomp@19
3cdefd35-fc62-479d-8e8d-
bae585ffb9ca
} //extern C
#include "XMLDocShredder.h"
} //extern C
#include "XMLDocShredder.h"
+#include "XMLTree.h"
+#include "TextCollection/TextCollection.h"
+#include "Utils.h"
+
#define CAMLRAISECPP(e) (caml_failwith( ((e).what())))
#define CAMLRAISECPP(e) (caml_failwith( ((e).what())))
-#define NOT_IMPLEMENTED (caml_failwith("Not Implemented!!!"))
+#define NOT_IMPLEMENTED(s) (caml_failwith(s))
+#define XMLTREE(x) ((XMLTree *)(x))
+#define TEXTCOLLECTION(x)
+#define TREENODEVAL(i) ((treeNode) (Int_val(i)))
extern "C" CAMLprim value caml_call_shredder_uri(value uri){
CAMLparam1(uri);
extern "C" CAMLprim value caml_call_shredder_uri(value uri){
CAMLparam1(uri);
-extern "C" CAMLprim value caml_text_collection_get_text(value tree, value id){
- CAMLparam2(tree,id);
-
- NOT_IMPLEMENTED;
- CAMLreturn (Val_unit);
+extern "C" CAMLprim value caml_text_collection_get_text(value tc, value id){
+ CAMLparam2(tc,id);
+
+ const char* txt = (const char*) ((TextCollection*) tc)->GetText((DocID) Int_val(id));
+ CAMLreturn (caml_copy_string(txt));
extern "C" CAMLprim value caml_xml_tree_root(value tree){
CAMLparam1(tree);
extern "C" CAMLprim value caml_xml_tree_root(value tree){
CAMLparam1(tree);
-
- NOT_IMPLEMENTED;
- CAMLreturn (Val_unit);
+ CAMLreturn (TREENODEVAL(XMLTREE(tree)->Root()));
+}
+extern "C" CAMLprim value caml_xml_tree_text_collection(value tree){
+ CAMLparam1(tree);
+ CAMLreturn((value) XMLTREE(tree)->GetTextCollection());
-extern "C" CAMLprim value caml_xml_tree_text_collection(value tree, value id){
- CAMLparam2(tree,id);
- NOT_IMPLEMENTED;
- CAMLreturn (Val_unit);
+extern "C" CAMLprim value caml_xml_tree_first_child(value tree, value id){
+ CAMLparam2(tree,id);
+ CAMLlocal1(res);
+ DPRINT("BEFORE!!!");
+ DPRINT(XMLTREE(tree)->flag);
+ DPRINT("ID is " << Int_val(id));
+ res = Val_int (XMLTREE(tree)->FirstChild(TREENODEVAL(id)));
+ DPRINT("AFTER!!!" << Int_val(res));
+ CAMLreturn(res);
}
extern "C" CAMLprim value caml_xml_tree_next_sibling(value tree, value id){
CAMLparam2(tree,id);
}
extern "C" CAMLprim value caml_xml_tree_next_sibling(value tree, value id){
CAMLparam2(tree,id);
-
- NOT_IMPLEMENTED;
- CAMLreturn (Val_unit);
+ CAMLreturn(Val_int (XMLTREE(tree)->NextSibling(TREENODEVAL(id))));
-extern "C" CAMLprim value caml_xml_tree_first_child(value tree, value id){
- CAMLparam2(tree,id);
- NOT_IMPLEMENTED;
- CAMLreturn (Val_unit);
-}
extern "C" CAMLprim value caml_xml_tree_prev_text(value tree, value id){
CAMLparam2(tree,id);
extern "C" CAMLprim value caml_xml_tree_prev_text(value tree, value id){
CAMLparam2(tree,id);
-
- NOT_IMPLEMENTED;
- CAMLreturn (Val_unit);
+ CAMLlocal1(res);
+ res = Val_int((XMLTREE(tree)->PrevText(TREENODEVAL(id))));
+ cerr << "AFTER PREV TEXT" << Int_val(res);
+ CAMLreturn(res);
}
extern "C" CAMLprim value caml_xml_tree_next_text(value tree, value id){
CAMLparam2(tree,id);
}
extern "C" CAMLprim value caml_xml_tree_next_text(value tree, value id){
CAMLparam2(tree,id);
-
- NOT_IMPLEMENTED;
- CAMLreturn (Val_unit);
+ CAMLreturn(Val_int((XMLTREE(tree)->NextText(TREENODEVAL(id)))));
}
extern "C" CAMLprim value caml_xml_tree_my_text(value tree, value id){
CAMLparam2(tree,id);
}
extern "C" CAMLprim value caml_xml_tree_my_text(value tree, value id){
CAMLparam2(tree,id);
-
- NOT_IMPLEMENTED;
- CAMLreturn (Val_unit);
+ CAMLreturn(Val_int((XMLTREE(tree)->MyText(TREENODEVAL(id)))));
}
extern "C" CAMLprim value caml_xml_tree_text_xml_id(value tree, value id){
CAMLparam2(tree,id);
}
extern "C" CAMLprim value caml_xml_tree_text_xml_id(value tree, value id){
CAMLparam2(tree,id);
+ NOT_IMPLEMENTED("caml_xml_tree_text_xml_id");
CAMLreturn (Val_unit);
}
extern "C" CAMLprim value caml_xml_tree_node_xml_id(value tree, value id){
CAMLparam2(tree,id);
CAMLreturn (Val_unit);
}
extern "C" CAMLprim value caml_xml_tree_node_xml_id(value tree, value id){
CAMLparam2(tree,id);
+ NOT_IMPLEMENTED("caml_xml_tree_node_xml_id");
CAMLreturn (Val_unit);
}
extern "C" CAMLprim value caml_xml_tree_tag(value tree, value id){
CAMLparam2(tree,id);
CAMLreturn (Val_unit);
}
extern "C" CAMLprim value caml_xml_tree_tag(value tree, value id){
CAMLparam2(tree,id);
+ const char* tag;
+ tag =(const char*) XMLTREE(tree)->GetTagName(XMLTREE(tree)->Tag(TREENODEVAL(id)));
- NOT_IMPLEMENTED;
- CAMLreturn (Val_unit);
+ CAMLreturn (caml_copy_string(tag));
}
extern "C" CAMLprim value caml_xml_tree_nullt(value unit){
CAMLparam1(unit);
}
extern "C" CAMLprim value caml_xml_tree_nullt(value unit){
CAMLparam1(unit);
- CAMLreturn (Val_int(-1));
-
;;
let total_time () = List.fold_left (+.) 0. !l;;
;;
let total_time () = List.fold_left (+.) 0. !l;;
+let test filename query output =
+ Printf.eprintf "Parsing document : %!";
+ let v = time Tree.Binary.parse_xml_uri filename in
+ Tree.Binary.print_xml_fast stderr v
+
+
let main filename query output =
Printf.eprintf "Parsing document : %!";
let v = time Tree.Binary.parse_xml_uri filename in
MM(v,__LOCATION__);
a := Some (v);
a := None;
let main filename query output =
Printf.eprintf "Parsing document : %!";
let v = time Tree.Binary.parse_xml_uri filename in
MM(v,__LOCATION__);
a := Some (v);
a := None;
+ Tree.Binary.print_xml_fast stderr v;
Printf.eprintf "Parsing query : ";
let query = try
time
Printf.eprintf "Parsing query : ";
let query = try
time
(prerr_endline ("usage : " ^ Sys.argv.(0) ^ " <document> \'query\'[ <output> ]");
exit 1)
;;
(prerr_endline ("usage : " ^ Sys.argv.(0) ^ " <document> \'query\'[ <output> ]");
exit 1)
;;
-main Sys.argv.(1) Sys.argv.(2) (if argc == 4 then Some Sys.argv.(3) else None) ;;
+
+
+test Sys.argv.(1) Sys.argv.(2) (if argc == 4 then Some Sys.argv.(3) else None) ;;
let _ = Callback.register "caml_hash_tag" tag
let _ = Callback.register "caml_hash_tag" tag
struct
type t (* pointer to the text collection *)
(* Todo *)
struct
type t (* pointer to the text collection *)
(* Todo *)
+ external nullt : unit -> [`Text ] node = "caml_xml_tree_nullt"
+ let nil = nullt ()
external get_text : t -> [`Text] node -> string = "caml_text_collection_get_text"
external get_text : t -> [`Text] node -> string = "caml_text_collection_get_text"
- let is_empty t (n : [`Text] node) = "" = (get_text t n)
+ let is_empty _ (n : [`Text] node) = equal nil n