diff --git a/core/include/blue/core/object.h b/core/include/blue/core/object.h index f4accba..a9b75b9 100644 --- a/core/include/blue/core/object.h +++ b/core/include/blue/core/object.h @@ -10,6 +10,8 @@ #define B_OBJECT(p) ((b_object *)(p)) #define B_TYPE_OBJECT (b_object_get_type()) +#define B_RV(p) (b_object_make_rvalue(p)) + struct b_stream; typedef struct _b_object b_object; @@ -26,6 +28,7 @@ BLUE_API void *b_object_get_interface(const b_object *object, b_type type); BLUE_API b_object *b_object_ref(b_object *p); BLUE_API void b_object_unref(b_object *p); +BLUE_API b_object *b_object_make_rvalue(b_object *p); BLUE_API b_object *b_object_create(b_type type); BLUE_API void b_object_to_string(const b_object *p, struct b_stream *out); diff --git a/core/object.c b/core/object.c index bc7ded0..8e9cd45 100644 --- a/core/object.c +++ b/core/object.c @@ -157,3 +157,9 @@ void b_object_unref(struct _b_object *p) free(p); } + +struct _b_object *b_object_make_rvalue(struct _b_object *p) +{ + p->obj_ref = 0; + return p; +}