Eobj: added default constructor/destructor.
authortasn <tasn>
Wed, 11 Apr 2012 07:05:10 +0000 (07:05 +0000)
committertasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 11 Apr 2012 07:05:10 +0000 (07:05 +0000)
When NULL is passed, the default one is called.

git-svn-id: http://svn.enlightenment.org/svn/e/trunk/PROTO/eobj@70001 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

examples/access/inherit.c
examples/access/simple.c
examples/constructors/simple2.c
examples/constructors/simple3.c
examples/constructors/simple4.c
examples/evas/elw_box.c
lib/Eobj.h
lib/eobj.c

index 942fff6..3e6786d 100644 (file)
@@ -18,18 +18,6 @@ _prot_print(Eobj *obj, Eobj_Op op, va_list *list)
 }
 
 static void
-_constructor(Eobj *obj)
-{
-   eobj_constructor_super(obj);
-}
-
-static void
-_destructor(Eobj *obj)
-{
-   eobj_destructor_super(obj);
-}
-
-static void
 _class_constructor(Eobj_Class *klass)
 {
    const Eobj_Op_Func_Description func_desc[] = {
@@ -56,8 +44,8 @@ inherit_class_get(void)
         EOBJ_CLASS_DESCRIPTION_OPS(&INHERIT_BASE_ID, op_desc, INHERIT_SUB_ID_LAST),
         NULL,
         0,
-        _constructor,
-        _destructor,
+        NULL,
+        NULL,
         _class_constructor,
         NULL
    };
index cf20414..8dbd155 100644 (file)
@@ -32,18 +32,6 @@ _a_set(Eobj *obj, Eobj_Op op, va_list *list)
 }
 
 static void
-_constructor(Eobj *obj)
-{
-   eobj_constructor_super(obj);
-}
-
-static void
-_destructor(Eobj *obj)
-{
-   eobj_destructor_super(obj);
-}
-
-static void
 _class_constructor(Eobj_Class *klass)
 {
    const Eobj_Op_Func_Description func_desc[] = {
@@ -75,8 +63,8 @@ simple_class_get(void)
         EOBJ_CLASS_DESCRIPTION_OPS(&SIMPLE_BASE_ID, op_desc, SIMPLE_SUB_ID_LAST),
         event_desc,
         sizeof(Private_Data),
-        _constructor,
-        _destructor,
+        NULL,
+        NULL,
         _class_constructor,
         NULL
    };
index 0ddaadc..6390333 100644 (file)
@@ -12,12 +12,6 @@ _constructor(Eobj *obj)
    eobj_constructor_error_set(obj);
 }
 
-static void
-_destructor(Eobj *obj)
-{
-   eobj_destructor_super(obj);
-}
-
 const Eobj_Class *
 simple2_class_get(void)
 {
@@ -30,7 +24,7 @@ simple2_class_get(void)
         NULL,
         0,
         _constructor,
-        _destructor,
+        NULL,
         NULL,
         NULL
    };
index 8e82447..e47b32c 100644 (file)
@@ -10,12 +10,6 @@ _constructor(Eobj *obj)
    (void) obj;
 }
 
-static void
-_destructor(Eobj *obj)
-{
-   eobj_destructor_super(obj);
-}
-
 const Eobj_Class *
 simple3_class_get(void)
 {
@@ -28,7 +22,7 @@ simple3_class_get(void)
         NULL,
         0,
         _constructor,
-        _destructor,
+        NULL,
         NULL,
         NULL
    };
index b68a480..0d56dd2 100644 (file)
@@ -5,18 +5,6 @@
 
 static Eobj_Class *_my_class = NULL;
 
-static void
-_constructor(Eobj *obj)
-{
-   eobj_constructor_super(obj);
-}
-
-static void
-_destructor(Eobj *obj)
-{
-   eobj_destructor_super(obj);
-}
-
 const Eobj_Class *
 simple4_class_get(void)
 {
@@ -28,8 +16,8 @@ simple4_class_get(void)
         EOBJ_CLASS_DESCRIPTION_OPS(NULL, NULL, 0),
         NULL,
         0,
-        _constructor,
-        _destructor,
+        NULL,
+        NULL,
         NULL,
         NULL
    };
index 33c0480..d825579 100644 (file)
@@ -40,17 +40,6 @@ _constructor(Eobj *obj)
 }
 
 static void
-_destructor(Eobj *obj)
-{
-   eobj_destructor_super(obj);
-
-   //Widget_Data *wd = eobj_data_get(obj, _my_class);
-   /* FIXME: Commented out because it's automatically done because our tree
-    * is not made of only eobj */
-//   evas_object_del(wd->bx);
-}
-
-static void
 _class_constructor(Eobj_Class *klass)
 {
    const Eobj_Op_Func_Description func_desc[] = {
@@ -78,7 +67,7 @@ elw_box_class_get(void)
         NULL,
         sizeof(Widget_Data),
         _constructor,
-        _destructor,
+        NULL,
         _class_constructor,
         NULL
    };
index 2b89c42..55cde5d 100644 (file)
@@ -87,6 +87,7 @@ EAPI Eina_Bool eobj_init(void);
 EAPI Eina_Bool eobj_shutdown(void);
 
 #define eobj_do(object, ...) eobj_do_internal(object, __VA_ARGS__, NULL)
+/* FIXME: Change this to SUPER as well. */
 #define eobj_class_do(object, klass, ...) eobj_class_do_internal(object, klass, __VA_ARGS__, NULL)
 #define eobj_class_parent_do(object, klass, ...) eobj_class_do_internal(object, eobj_class_parent_get(klass), __VA_ARGS__, NULL)
 
index fe9fcf5..6b39f6f 100644 (file)
@@ -439,8 +439,6 @@ eobj_class_new(const Eobj_Class_Description *desc, const Eobj_Class *parent, ...
 
    _CLS_NEW_CHECK(desc);
    _CLS_NEW_CHECK(desc->name);
-   _CLS_NEW_CHECK(desc->constructor);
-   _CLS_NEW_CHECK(desc->destructor);
 
    klass = calloc(1, sizeof(Eobj_Class));
    klass->parent = parent;
@@ -660,6 +658,18 @@ eobj_constructor_error_get(const Eobj *obj)
    return (intptr_t) eobj_generic_data_get(obj, CONSTRUCT_ERROR_KEY);
 }
 
+static inline void
+_eobj_constructor_default(Eobj *obj)
+{
+   eobj_constructor_super(obj);
+}
+
+static inline void
+_eobj_destructor_default(Eobj *obj)
+{
+   eobj_destructor_super(obj);
+}
+
 static void
 eobj_class_constructor(Eobj *obj, const Eobj_Class *klass)
 {
@@ -677,7 +687,10 @@ eobj_class_constructor(Eobj *obj, const Eobj_Class *klass)
            extn->klass->desc->constructor(obj);
      }
 
-   klass->desc->constructor(obj);
+   if (klass->desc->constructor)
+      klass->desc->constructor(obj);
+   else
+      _eobj_constructor_default(obj);
 }
 
 static void
@@ -690,7 +703,10 @@ eobj_class_destructor(Eobj *obj, const Eobj_Class *klass)
    if (!klass)
       return;
 
-   klass->desc->destructor(obj);
+   if (klass->desc->destructor)
+      klass->desc->destructor(obj);
+   else
+      _eobj_destructor_default(obj);
 
    EINA_INLIST_REVERSE_FOREACH(klass->extensions, extn)
      {