pike.git/
src/
svalue.h
Branch:
Tag:
Non-build tags
All tags
No tags
2021-01-23
2021-01-23 15:33:37 by Henrik Grubbström (Grubba) <grubba@grubba.org>
ec3b77d44bab26487c4e92491289a6dd7abc4131 (
17
lines) (+
11
/-
6
)
[
Show
|
Annotate
]
Branch:
master
Added safe_add_ref().
27:
void *pointer_a, *pointer_b; };
-
struct ref_dummy;
+
struct ref_dummy
+
{
+
INT32 refs
;
+
};
/** the union of possible types in an svalue. */
518:
#define add_ref(X) ((void)((X)->refs++)) #define sub_ref(X) (--(X)->refs > 0)
+
static inline void safe_add_ref(void *ptr)
+
{
+
if (!ptr) return;
+
add_ref((struct ref_dummy *)ptr);
+
}
+
#ifdef PIKE_DEBUG PMOD_EXPORT extern void describe(void *); /* defined in gc.c */ PMOD_EXPORT extern const char msg_type_error[];
972:
struct ref_dummy *v_=(struct ref_dummy *)(X); \ }while(0)
-
struct ref_dummy
-
{
-
INT32 refs;
-
};
-
+
/* The following macro is useful to initialize static svalues. . */ /* assumes sizeof void* >= all initialization arguments. */ #ifdef HAVE_C99_STRUCT_INIT