elementary/widget - just removed macros duplicated impl.
authorChunEon Park <hermet@hermet.pe.kr>
Wed, 1 Feb 2012 03:07:53 +0000 (03:07 +0000)
committerChunEon Park <hermet@hermet.pe.kr>
Wed, 1 Feb 2012 03:07:53 +0000 (03:07 +0000)
SVN revision: 67666

src/lib/elm_widget.c
src/lib/elm_widget.h

index 2e961d3..a268d29 100644 (file)
@@ -2637,6 +2637,32 @@ elm_widget_type_check(const Evas_Object *obj,
    return EINA_FALSE;
 }
 
+EAPI Eina_Bool
+elm_widget_item_type_check(const Evas_Object *obj,
+                           const char        *type,
+                           const char        *func)
+{
+   const char *provided, *expected = "(unknown)";
+   static int abort_on_warn = -1;
+   provided = elm_widget_type_get(obj);
+   if (EINA_LIKELY(provided == type)) return EINA_TRUE;
+   if (type) expected = type;
+   if ((!provided) || (!provided[0]))
+     {
+        provided = evas_object_type_get(obj);
+        if ((!provided) || (!provided[0]))
+          provided = "(unknown)";
+     }
+   ERR("Passing Object: %p in function: %s, of type: '%s' when expecting type: '%s'", obj, func, provided, expected);
+   if (abort_on_warn == -1)
+     {
+        if (getenv("ELM_ERROR_ABORT")) abort_on_warn = 1;
+        else abort_on_warn = 0;
+     }
+   if (abort_on_warn == 1) abort();
+   return EINA_FALSE;
+}
+
 static Evas_Object *
 _widget_name_find(const Evas_Object *obj, const char *name, int recurse)
 {
index 3ba10bf..ed2d3d7 100644 (file)
@@ -290,14 +290,6 @@ struct _Elm_Object_Item
 
 #define ELM_NEW(t) calloc(1, sizeof(t))
 
-#define ELM_OBJ_ITEM_CHECK_OR_RETURN(it, ...)                            \
-  ELM_WIDGET_ITEM_CHECK_OR_RETURN((Elm_Widget_Item *)(it), __VA_ARGS__); \
-  ELM_CHECK_WIDTYPE(WIDGET(it), widtype) __VA_ARGS__;
-
-#define ELM_OBJ_ITEM_CHECK_OR_GOTO(it, label) \
-  ELM_WIDGET_ITEM_CHECK_OR_GOTO((Elm_Widget_Item *)it, label); \
-  if (!elm_widget_type_check(WIDGET(it), (widtype), __func__)) goto label;
-
 EAPI Eina_Bool        elm_widget_api_check(int ver);
 EAPI Evas_Object     *elm_widget_add(Evas *evas);
 EAPI void             elm_widget_del_hook_set(Evas_Object *obj, void (*func)(Evas_Object *obj));
@@ -732,6 +724,12 @@ EAPI void             elm_widget_tree_dot_dump(const Evas_Object *top, FILE *out
        ob = elm_widget_add(evas); if (!(ob)) { free(wdat); return (ret); } \
     } while (0)
 
+#define ELM_OBJ_ITEM_CHECK_OR_RETURN(it, ...) \
+   ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it, __VA_ARGS__);
+
+#define ELM_OBJ_ITEM_CHECK_OR_GOTO(it, label)      \
+  ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_GOTO(it, label);
+
 /**
  * The drag and drop API.
  * Currently experimental, and will change when it does dynamic type