+ set_ops.identifier = (char*) "unordered_set";
+ set_ops.finalize = caml_hset_finalize;
+
+ cpp_exception = caml_named_value("CPlusPlusError");
+ if (cpp_exception == NULL){
+ string s = "FATAL: Unregistered exception ";
+ s += "CPlusPlusError";
+ caml_failwith(s.c_str());
+ };
+
+ ops_initialized = true;
+
+ };
+ CAMLreturn(Val_unit);
+
+}
+extern "C" CAMLprim value caml_shredder_parse(XMLDocShredder *shredder){
+ CAMLparam0();
+ CAMLlocal1(doc);
+ XMLTree * tree;
+ shredder->processStartDocument("");
+ shredder->parse();
+ shredder->processEndDocument();
+ doc = caml_alloc_custom(&ops,sizeof(XMLTree*),1,2);
+ tree = (XMLTree *) shredder->getXMLTree();
+ memcpy(Data_custom_val(doc),&tree,sizeof(XMLTree*));
+ CAMLreturn(doc);
+