X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=OCamlDriver.cpp;h=3994970d2373dfecb3568c60584c0032169eb9cf;hb=a6a05531716a001b369e018c9d2c87ce532ef163;hp=417ab5b25f2df31ed0a80f6bbc781c6e0b78753a;hpb=55ee2680ca6d4e952cb800c529d45e064a2eff1c;p=SXSI%2Fxpathcomp.git diff --git a/OCamlDriver.cpp b/OCamlDriver.cpp index 417ab5b..3994970 100644 --- a/OCamlDriver.cpp +++ b/OCamlDriver.cpp @@ -130,18 +130,18 @@ extern "C" value caml_call_shredder_string(value data,value sf, value iet, valu CAMLreturn(doc); } -extern "C" value caml_xml_tree_save(value tree,value fd){ - CAMLparam2(tree,fd); - XMLTREE(tree)->Save(Int_val(fd)); +extern "C" value caml_xml_tree_save(value tree,value fd, value str){ + CAMLparam3(tree,fd,str); + XMLTREE(tree)->Save(Int_val(fd), String_val(str)); CAMLreturn (Val_unit); } -extern "C" value caml_xml_tree_load(value fd, value load_tc,value sf){ - CAMLparam3(fd,load_tc,sf); +extern "C" value caml_xml_tree_load(value fd, value str, value load_tc,value sf){ + CAMLparam4(fd,str,load_tc,sf); CAMLlocal1(doc); XMLTree * tree; try { - tree = XMLTree::Load(Int_val(fd),Bool_val(load_tc),Int_val(sf)); + tree = XMLTree::Load(Int_val(fd),String_val(str),Bool_val(load_tc),Int_val(sf)); printf("Pointer to tree is %p\n", (void*) tree); doc = caml_alloc_custom(&ops,sizeof(XMLTree*),1,2); memcpy(Data_custom_val(doc),&tree,sizeof(XMLTree*)); @@ -791,15 +791,16 @@ int iterfcns(XMLTree* tree, treeNode node){ if (node == NULLT) return 0; else { - int tmp = iterfcns(tree,tree->FirstElement(node)); + int tmp = 1; + tmp += iterfcns(tree,tree->FirstElement(node)); tmp += iterfcns(tree,tree->NextElement(node)); - return tmp+1; + return tmp; }; } extern "C" value caml_benchmark_fcns(value tree){ int i = iterfcns(XMLTREE(tree),0); - return Val_unit; + return Val_int(i); }