X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=src%2Fcommon_stub.hpp;h=45aa0caedb58613b858c66f86bd1a974ffc552a1;hb=cb728132e1c5cb0a171ee09e9b3ced16da08f796;hp=47b6dcd7e5ba98d7ac1d2836128039b84dd20c58;hpb=4fb1afc60e3af83e6184c77ea2cb002def542a96;p=SXSI%2Fxpathcomp.git diff --git a/src/common_stub.hpp b/src/common_stub.hpp index 47b6dcd..45aa0ca 100644 --- a/src/common_stub.hpp +++ b/src/common_stub.hpp @@ -1,5 +1,5 @@ -#ifndef COMMON_STUB_H_ -#define COMMON_STUB_H_ +#ifndef COMMON_STUB_HPP_ +#define COMMON_STUB_HPP_ extern "C" { #define CAML_NAME_SPACE @@ -13,6 +13,10 @@ extern "C" { #include } #include +#include +#include + +#define NoAlloc void register_custom_(char* name, @@ -23,6 +27,7 @@ value alloc_custom_(char* name); template X& Obj_val(value v) { + assert(Tag_val(v) == Custom_tag); return * (X*) Data_custom_val(v); } @@ -38,7 +43,8 @@ template void sxsi_finalize_custom(value v) sxsi_finalize_obj(Obj_val(v)); } -template value sxsi_alloc_custom(void (*finalize)(value) = sxsi_finalize_custom) +template value +sxsi_alloc_custom(void (*finalize)(value) = sxsi_finalize_custom) { char * name = const_cast(typeid(X).name()); @@ -50,7 +56,7 @@ template value sxsi_alloc_custom(void (*finalize)(value) = sxsi_finali return v; } -void sxsi_raise_msg(char * msg); +void sxsi_raise_msg(const char * msg); extern "C" value sxsi_cpp_init(value unit);