aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2017-12-20 14:28:49 +0100
committerLoïc Hoguin <[email protected]>2017-12-20 14:28:49 +0100
commitad0f2974c7af51e4dea8b887c1c70c82f1a4599d (patch)
treedc3c44bdcb30aab9d30a7a496de56dd15e697c1a
parentead6adc15fca3c314351523080d2ccb1956d5956 (diff)
downloadnif_helpers-ad0f2974c7af51e4dea8b887c1c70c82f1a4599d.tar.gz
nif_helpers-ad0f2974c7af51e4dea8b887c1c70c82f1a4599d.tar.bz2
nif_helpers-ad0f2974c7af51e4dea8b887c1c70c82f1a4599d.zip
Remove NIF_RES*_DEP and add a NIF_RES_TO_PTR_AND_TERM
A registry based dependency handling works better and is more useful than a half-assed single pointer dep.
-rw-r--r--nif_helpers.h20
1 files changed, 11 insertions, 9 deletions
diff --git a/nif_helpers.h b/nif_helpers.h
index 2eefec6..eb5fcf5 100644
--- a/nif_helpers.h
+++ b/nif_helpers.h
@@ -53,21 +53,23 @@
void dtor_ ## r(ErlNifEnv*, void*); \
typedef struct { \
NIF_RES_TYPE(r)* v; \
- void* dep; \
} obj_ ## r;
#define NIF_RES_INIT(r) \
res_ ## r = enif_open_resource_type(env, NULL, TO_STRING(NIF_RES_TYPE(r)), dtor_ ## r, ERL_NIF_RT_CREATE, NULL); \
if (!res_ ## r) return -1;
#define NIF_RES_GET(r, obj) (((obj_ ## r*)obj)->v)
-#define NIF_RES_DEP(r, obj) (((obj_ ## r*)obj)->dep)
-#define NIF_RES_TO_TERM(r, val, term) NIF_RES_TO_TERM_WITH_DEP(r, val, term, NULL)
-#define NIF_RES_TO_TERM_WITH_DEP(r, val, term, dep_res) { \
- obj_ ## r* res = enif_alloc_resource(res_ ## r, sizeof(obj_ ## r)); \
- res->v = val; \
- res->dep = dep_res; \
- term = enif_make_resource(env, res); \
- enif_release_resource(res); \
+#define NIF_RES_TO_TERM(r, val, term) { \
+ obj_ ## r* ptr = enif_alloc_resource(res_ ## r, sizeof(obj_ ## r)); \
+ ptr->v = val; \
+ term = enif_make_resource(env, ptr); \
+ enif_release_resource(ptr); \
+}
+#define NIF_RES_TO_PTR_AND_TERM(r, val, ptr, term) { \
+ ptr = enif_alloc_resource(res_ ## r, sizeof(obj_ ## r)); \
+ ptr->v = val; \
+ term = enif_make_resource(env, ptr); \
+ enif_release_resource(ptr); \
}
// Function generators.