CAMLparam1(data);
CAMLlocal1(doc);
XMLDocShredder * shredder;
- unsigned int ln = string_length(data);
+ unsigned int ln = caml_string_length(data);
unsigned char *fn = (unsigned char*) String_val(data);
try {
shredder = new XMLDocShredder (fn,ln,Int_val(sf),Bool_val(iet),Bool_val(dtc));
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*));
}
static value sort_alloc_array(std::vector<DocID> results, value resarray){
- std::sort(results.begin(), results.end(), docId_comp);
+ std::sort(results.begin(), results.end(), docId_comp);
size_t s = results.size();
resarray = caml_alloc_tuple(s);
for (size_t i = 0; i < s ;i++){
caml_initialize(&Field(resarray,i),Val_int(results[i]));
};
- return resarray;
+ return resarray;
+
}
/**
NoAlloc extern "C" value caml_xml_tree_print(value tree,value node,value fd){
CAMLparam3(tree,node,fd);
- XMLTREE(tree)->Print(Int_val(fd),TREENODEVAL(node));
+ XMLTREE(tree)->Print(Int_val(fd),TREENODEVAL(node), false);
CAMLreturn(Val_unit);
}
if (node == NULLT)
return 0;
else {
- return /*1+ iterfcns(tree,tree->FirstChild(node)) +*/
- iterfcns(tree,tree->NextSibling(node));
+ int tmp = 1;
+ tmp += iterfcns(tree,tree->FirstElement(node));
+ tmp += iterfcns(tree,tree->NextElement(node));
+ return tmp;
};
}
-/*
+
extern "C" value caml_benchmark_fcns(value tree){
int i = iterfcns(XMLTREE(tree),0);
- return Val_unit;
-
+ return Val_int(i);
+
}
-*/
-extern "C" value caml_benchmark_fcns(value tree){
- treeNode root = XMLTREE(tree)->FirstChild(0);
- root = XMLTREE(tree)->FirstChild(root);
- iterfcns(XMLTREE(tree),root);
- return Val_unit;
-}
int iterlcps(XMLTree* tree, treeNode node){
if (node == NULLT)
return 0;
if (n == NULL)
return 0;
else {
- return (1+ iter_tree(n->first) + iter_tree(n->next));
+ return (1+ iter_tree(n->next)+ iter_tree(n->first) );
};
}