X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=OCamlDriver.cpp;h=c906f0f4667d1603175d84b007797a407f0ea432;hb=6c60812f1f494f273d6074fcccf2707a6097cfaa;hp=636a95280c79e6170ea21290e05d0d10b100c4f2;hpb=24fdea81b5506233d139bd7d72364a190bef35b8;p=SXSI%2Fxpathcomp.git diff --git a/OCamlDriver.cpp b/OCamlDriver.cpp index 636a952..c906f0f 100644 --- a/OCamlDriver.cpp +++ b/OCamlDriver.cpp @@ -17,7 +17,7 @@ extern "C" { #include } //extern C -#include "TextCollection/TextCollection.h" +//#include "TextCollection/TextCollection.h" #include "XMLDocShredder.h" #include "XMLTree.h" #include "Utils.h" @@ -71,7 +71,7 @@ void traversal_rec(XMLTree* tree, treeNode id){ DocID tid; if (id == NULLT) return; - int tag = tree->Tag(id); + // int tag = tree->Tag(id); if (id) { tid = tree->PrevText(id); char * data = (char *) (tree->getTextCollection())->GetText(tid); @@ -97,41 +97,39 @@ extern "C" CAMLprim value caml_cpp_traversal(value tree){ 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)); +extern "C" CAMLprim value caml_text_collection_get_text(value tree, value id){ + CAMLparam2(tree,id); + const char* txt = (const char*) (XMLTREE(tree)->GetText((DocID) Int_val(id))); CAMLreturn (caml_copy_string(txt)); } -extern "C" CAMLprim value caml_text_collection_empty_text(value tc,value id){ - CAMLparam2(tc,id); - CAMLreturn ( Val_int(((TextCollection*) tc)->EmptyText((DocID) Int_val(id)))); +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)))); } -extern "C" CAMLprim value caml_text_collection_is_contains(value tc,value str){ - CAMLparam2(tc,str); +extern "C" CAMLprim value caml_text_collection_is_contains(value tree,value str){ + CAMLparam2(tree,str); uchar * cstr = (uchar *) String_val(str); - CAMLreturn ( Val_bool((int) ((TextCollection*) tc)->IsContains(cstr))); + CAMLreturn ( Val_bool((int) XMLTREE(tree)->IsContains(cstr))); } -extern "C" CAMLprim value caml_text_collection_count_contains(value tc,value str){ - CAMLparam2(tc,str); +extern "C" CAMLprim value caml_text_collection_count_contains(value tree,value str){ + CAMLparam2(tree,str); uchar * cstr = (uchar *) String_val(str); - CAMLreturn ( Val_int(((TextCollection*) tc)->CountContains(cstr))); + CAMLreturn (Val_int((XMLTREE(tree)->CountContains(cstr)))); } -extern "C" CAMLprim value caml_text_collection_contains(value tc,value str){ - CAMLparam2(tc,str); +extern "C" CAMLprim value caml_text_collection_contains(value tree,value str){ + CAMLparam2(tree,str); CAMLlocal1(resarray); uchar * cstr = (uchar *) String_val(str); std::vector results; - results = ((TextCollection*) tc)->Contains(cstr); + results = XMLTREE(tree)->Contains(cstr); resarray = caml_alloc_tuple(results.size()); - for (int i=0; iTag(TREENODEVAL(id)); + CAMLparam2(tree,id); + CAMLreturn (Val_int(XMLTREE(tree)->Tag(TREENODEVAL(id)))); +} - CAMLreturn (Val_unit); +extern "C" CAMLprim value caml_xml_tree_register_tag(value tree,value str){ + CAMLparam2(tree,str); + CAMLlocal1(id); + unsigned char* tag; + tag = (unsigned char*) (String_val(str)); + id = Val_int(XMLTREE(tree)->RegisterTag(tag)); + free(tag); + CAMLreturn (id); } + extern "C" CAMLprim value caml_xml_tree_nullt(value unit){ CAMLparam1(unit); CAMLreturn (NULLT);