#define CAMLRAISEMSG(msg) (caml_raise_with_string(*cpp_exception,(msg) ))
#define NOT_IMPLEMENTED(s) (caml_failwith(s))
#define XMLTREE(x) ((XMLTree *)(* (XMLTree**) Data_custom_val(x)))
-#define HSET(x) ((std::unordered_set<int>*)((* (XMLTree**) Data_custom_val(x))))
+#define HSET(x) ((std::unordered_set<int>*)((* (std::unordered_set<int>**) Data_custom_val(x))))
#define TEXTCOLLECTION(x)
#define TREENODEVAL(i) ((treeNode) (Int_val(i)))
#define XMLTREE_ROOT 0
extern "C" CAMLprim value caml_xml_tree_first_child(value tree, value id){
return(Val_int (XMLTREE(tree)->FirstChild(TREENODEVAL(id))));
}
+extern "C" CAMLprim value caml_xml_tree_closing(value tree, value id){
+ return(Val_int (XMLTREE(tree)->Closing(TREENODEVAL(id))));
+}
+extern "C" CAMLprim value caml_xml_tree_is_open(value tree, value id){
+ return(Val_bool (XMLTREE(tree)->IsOpen(TREENODEVAL(id))));
+}
+
extern "C" CAMLprim value caml_xml_tree_first_element(value tree, value id){
return(Val_int (XMLTREE(tree)->FirstElement(TREENODEVAL(id))));
}
return(Val_int (XMLTREE(tree)->TaggedFollBelow(TREENODEVAL(id),(TagType) Int_val(tag),TREENODEVAL(root))));
}
-
-
extern "C" CAMLprim value caml_xml_tree_my_text(value tree, value id){
return(Val_int((XMLTREE(tree)->MyText(TREENODEVAL(id)))));
}
+extern "C" CAMLprim value caml_xml_tree_my_text_unsafe(value tree, value id){
+ return(Val_int((XMLTREE(tree)->MyTextUnsafe(TREENODEVAL(id)))));
+}
+
extern "C" CAMLprim value caml_xml_tree_text_xml_id(value tree, value id){
return(Val_int((XMLTREE(tree)->TextXMLId(TREENODEVAL(id)))));
}
return (Val_int(XMLTREE(tree)->SubtreeSize(TREENODEVAL(id))));
}
+extern "C" CAMLprim value caml_xml_tree_subtree_elements(value tree,value id){
+ return (Val_int(XMLTREE(tree)->SubtreeElements(TREENODEVAL(id))));
+}
+
extern "C" CAMLprim value caml_xml_tree_register_tag(value tree,value str){
CAMLparam2(tree,str);
CAMLreturn (tuple);
}
-extern "C" CAMLprim value caml_result_set_create(value size){
- CAMLparam1(size);
+extern "C" value caml_result_set_create(value size){
results* res = (results*) malloc(sizeof(results));
- results r = createResults (Int_val(size));
+ results r = createResults (Int_val(size));
res->n = r.n;
res->lgn = r.lgn;
res->tree = r.tree;
- CAMLreturn ((value) (res));
+ return ((value) (res));
}
extern "C" CAMLprim value caml_result_set_set(value result,value p){
- CAMLparam2(result,p);
+ CAMLparam1(p);
+ results r;
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);
+ CAMLparam2(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))));
+ CAMLparam1(p);
+ results r;
+ r = *( (results *) result);
+ CAMLreturn (Val_int(nextResult(r, Int_val(p))));
}
+extern "C" CAMLprim value caml_xml_tree_print(value tree,value node,value fd){
+ CAMLparam3(tree,node,fd);
+ XMLTREE(tree)->Print(Int_val(fd),TREENODEVAL(node));
+ CAMLreturn(Val_unit);
+}