Implement CachedText
[SXSI/xpathcomp.git] / OCamlDriver.cpp
index e3b5f44..09175ba 100644 (file)
@@ -132,6 +132,16 @@ extern "C" CAMLprim value caml_text_collection_get_text(value tree, value id){
   delete (txt);
   CAMLreturn (str);
 }
+
+extern "C" CAMLprim value caml_text_collection_get_cached_text(value tree, value id){
+  CAMLparam2(tree,id);
+  CAMLlocal1(str);
+  const char* txt = (const char*) XMLTREE(tree)->GetCachedText((DocID) Int_val(id));
+  str = caml_copy_string(txt);
+  CAMLreturn (str);
+}
+
+
 extern "C" CAMLprim value caml_text_collection_empty_text(value tree,value id){
   CAMLparam2(tree,id);
   CAMLreturn ( Val_int((XMLTREE(tree))->EmptyText((DocID) Int_val(id))));
@@ -211,6 +221,25 @@ extern "C" CAMLprim value caml_xml_tree_is_leaf(value tree, value id){
   CAMLreturn(Val_bool (XMLTREE(tree)->IsLeaf(TREENODEVAL(id))));
 }
 
+extern "C" CAMLprim value caml_xml_tree_tagged_desc(value tree, value id, value tag){
+  CAMLparam3(tree,id,tag);
+  CAMLreturn(Val_int (XMLTREE(tree)->TaggedDesc(TREENODEVAL(id),(TagType) Int_val(tag))));
+}
+
+extern "C" CAMLprim value caml_xml_tree_tagged_next(value tree, value id, value tag){
+  CAMLparam3(tree,id,tag);
+  CAMLreturn(Val_int (XMLTREE(tree)->TaggedNext(TREENODEVAL(id),(TagType) Int_val(tag))));
+}
+
+
+
+
+extern "C" CAMLprim value caml_xml_tree_tagged_foll(value tree, value id, value tag){
+  CAMLparam3(tree,id,tag);
+  CAMLreturn(Val_int (XMLTREE(tree)->TaggedFoll(TREENODEVAL(id),(TagType) Int_val(tag))));
+}
+
+
 extern "C" CAMLprim value caml_xml_tree_next_sibling(value tree, value id){
   CAMLparam2(tree,id);
   CAMLreturn(Val_int (XMLTREE(tree)->NextSibling(TREENODEVAL(id))));
@@ -255,6 +284,12 @@ extern "C" CAMLprim value caml_xml_tree_tag_id(value tree,value id){
   CAMLreturn (Val_int(XMLTREE(tree)->Tag(TREENODEVAL(id))));
 }
 
+extern "C" CAMLprim value caml_xml_tree_subtree_tags(value tree,value id,value tag){
+  CAMLparam3(tree,id,tag);  
+  CAMLreturn (Val_int(XMLTREE(tree)->SubtreeTags(TREENODEVAL(id),Int_val(tag))));
+}
+
+
 extern "C" CAMLprim value caml_xml_tree_register_tag(value tree,value str){
   CAMLparam2(tree,str);
   CAMLlocal1(id);