X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=src%2Fcommon_stub.hpp;h=6bfb57d787e30de51fc5ad8401a5de9e5103aec3;hb=d3db422b91ed145abd0eccb83e96c97d6431fac6;hp=5655a309cef9402872b4acac19d67d7399e33360;hpb=813b239795aac1844eb233dab7f8f98d8dba845e;p=SXSI%2Fxpathcomp.git diff --git a/src/common_stub.hpp b/src/common_stub.hpp index 5655a30..6bfb57d 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 @@ -11,10 +11,11 @@ extern "C" { #include #include #include - } #include +#define NoAlloc + void register_custom_(char* name, size_t size, @@ -39,19 +40,20 @@ template void sxsi_finalize_custom(value v) sxsi_finalize_obj(Obj_val(v)); } -template value sxsi_alloc_custom() +template value +sxsi_alloc_custom(void (*finalize)(value) = sxsi_finalize_custom) { char * name = const_cast(typeid(X).name()); value v = alloc_custom_(name); if (v == Val_unit) { - register_custom_(name, sizeof(X), sxsi_finalize_custom); + register_custom_(name, sizeof(X), finalize); v = alloc_custom_(name); }; return v; } -void sxsi_raise_msg(char * msg); +void sxsi_raise_msg(const char * msg); extern "C" value sxsi_cpp_init(value unit);