eo: add _eo_is_a_class(const Eo *obj_id)
authorJérémy Zurcher <jeremy@asynk.ch>
Thu, 26 Sep 2013 21:32:43 +0000 (23:32 +0200)
committerTom Hacohen <tom@stosb.com>
Fri, 27 Sep 2013 13:01:46 +0000 (14:01 +0100)
src/lib/eo/eo.c

index 48d6a56..ececc60 100644 (file)
@@ -134,6 +134,19 @@ _dich_func_clean_all(_Eo_Class *klass)
 static const Eo_Op_Description noop_desc =
         EO_OP_DESCRIPTION(EO_NOOP, "No operation.");
 
+
+static inline Eina_Bool
+_eo_is_a_class(const Eo *obj_id)
+{
+#ifdef HAVE_EO_ID
+   return (((((Eo_Id) obj_id) >> REF_TAG_SHIFT) & 0x1) == 0x0);
+#else
+   /* fortunately EO_OBJ_POINTER_RETURN* will handle NULL obj_id */
+   if (!obj_id) return EINA_FALSE;
+   return (((_Eo_Handle *) obj_id)->is_a_class == 1);
+#endif
+}
+
 static inline _Eo_Class *
 _eo_class_pointer_get(const Eo *klass_id)
 {