X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=OCamlDriver.cpp;h=baf96983b72c17d02d2b00e828c44435b4c1e2e1;hb=477c1bef21a38e8371a745da9491fd6a6aae2aa5;hp=e2c6f00b459eb899135e374b19ee8ebec14be0f0;hpb=d550133ad7afdf65c5e284c2bcf67a5bdde6faa7;p=SXSI%2Fxpathcomp.git diff --git a/OCamlDriver.cpp b/OCamlDriver.cpp index e2c6f00..baf9698 100644 --- a/OCamlDriver.cpp +++ b/OCamlDriver.cpp @@ -24,7 +24,7 @@ extern "C" { #include #include #include - +#include "results.h" #define CAMLRAISEMSG(msg) (caml_raise_with_string(*cpp_exception,(msg) )) #define NOT_IMPLEMENTED(s) (caml_failwith(s)) @@ -318,6 +318,10 @@ extern "C" CAMLprim value caml_xml_tree_subtree_tags(value tree,value id,value t return (Val_int(XMLTREE(tree)->SubtreeTags(TREENODEVAL(id),Int_val(tag)))); } +extern "C" CAMLprim value caml_xml_tree_subtree_size(value tree,value id){ + return (Val_int(XMLTREE(tree)->SubtreeSize(TREENODEVAL(id)))); +} + extern "C" CAMLprim value caml_xml_tree_register_tag(value tree,value str){ CAMLparam2(tree,str); @@ -379,3 +383,32 @@ extern "C" CAMLprim value caml_xml_tree_doc_ids(value tree, value node){ caml_initialize(&Field(tuple,1),Val_int(r.max)); CAMLreturn (tuple); } + +extern "C" CAMLprim value caml_result_set_create(value size){ + CAMLparam1(size); + results* res = (results*) malloc(sizeof(results)); + results r = createResults (Int_val(size)); + res->n = r.n; + res->lgn = r.lgn; + res->tree = r.tree; + CAMLreturn ((value) (res)); +} + +extern "C" CAMLprim value caml_result_set_set(value result,value p){ + CAMLparam2(result,p); + setResult ( *((results*) result), Int_val(p)); + CAMLreturn (Val_unit); +} + +extern "C" CAMLprim value caml_result_set_clear(value result,value p1,value p2){ + CAMLparam3(result,p1,p2); + clearRange ( *((results*) result), Int_val(p1), Int_val(p2)); + CAMLreturn (Val_unit); +} + +extern "C" CAMLprim value caml_result_set_next(value result,value p){ + CAMLparam2(result,p); + CAMLreturn (Val_int(nextResult(*((results*) result), Int_val(p)))); +} + +