Index: src/object.c ================================================================== --- src/object.c +++ src/object.c @@ -116,10 +116,18 @@ if (obj->cls->dtor != NULL) obj->cls->dtor(obj); free(obj); } + +bool +cfw_is(void *ptr, CFWClass *cls) +{ + CFWObject *obj = ptr; + + return (obj->cls == cls); +} bool cfw_equal(void *ptr1, void *ptr2) { CFWObject *obj1 = ptr1, *obj2 = ptr2; Index: src/object.h ================================================================== --- src/object.h +++ src/object.h @@ -38,10 +38,11 @@ extern void* cfw_new(CFWClass*, ...); extern void* cfw_new_p(CFWClass*, ...); extern void* cfw_ref(void*); extern void cfw_unref(void*); extern void cfw_free(void*); +extern bool cfw_is(void*, CFWClass*); extern bool cfw_equal(void*, void*); extern uint32_t cfw_hash(void*); extern void* cfw_copy(void*); #endif