X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=OCamlDriver.cpp;h=e3b5f445c26efb890aac5c3e8c3932cdc7da6e86;hb=f84dd2f6de7d5da16da729dc2e91cbdeb3585d75;hp=723f9d9c64aa54a6112192f19e7dd188d7bdb332;hpb=9abf8a6f78264fbf4eec1676b4a26018967c97e6;p=SXSI%2Fxpathcomp.git diff --git a/OCamlDriver.cpp b/OCamlDriver.cpp index 723f9d9..e3b5f44 100644 --- a/OCamlDriver.cpp +++ b/OCamlDriver.cpp @@ -125,9 +125,12 @@ extern "C" CAMLprim value caml_cpp_traversal(value tree){ } 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)); + CAMLparam2(tree,id); + CAMLlocal1(str); + uchar* txt = XMLTREE(tree)->GetText((DocID) Int_val(id)); + str = caml_copy_string((const char*)txt); + delete (txt); + CAMLreturn (str); } extern "C" CAMLprim value caml_text_collection_empty_text(value tree,value id){ CAMLparam2(tree,id); @@ -153,7 +156,7 @@ extern "C" CAMLprim value caml_text_collection_contains(value tree,value str){ uchar * cstr = (uchar *) String_val(str); std::vector results; results = XMLTREE(tree)->Contains(cstr); - + //free(cstr); resarray = caml_alloc_tuple(results.size()); for (unsigned int i=0; iParentNode(TREENODEVAL(id)))); + CAMLreturn(Val_int (XMLTREE(tree)->ParentNode((DocID) Int_val(id)))); } extern "C" CAMLprim value caml_xml_tree_is_ancestor(value tree,value id1, value id2) { @@ -236,20 +239,14 @@ extern "C" CAMLprim value caml_xml_tree_node_xml_id(value tree, value id){ CAMLparam2(tree,id); CAMLreturn(Val_int((XMLTREE(tree)->NodeXMLId(TREENODEVAL(id))))); } -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))); - - CAMLreturn (caml_copy_string(tag)); -} extern "C" CAMLprim value caml_xml_tree_tag_name(value tree, value tagid){ CAMLparam2(tree,tagid); - const char* tag; - tag = (const char*) XMLTREE(tree)->GetTagName((TagType) (Int_val(tagid))); - - CAMLreturn (caml_copy_string(tag)); + CAMLlocal1(str); + char* tag; + tag = (char*) XMLTREE(tree)->GetTagNameByRef((TagType) (Int_val(tagid))); + str = caml_copy_string((const char*) tag); + CAMLreturn (str); }