tasn pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=8a56f5c98e04bdb945cc9ef82d24d0bf9c52f62c

commit 8a56f5c98e04bdb945cc9ef82d24d0bf9c52f62c
Author: Tom Hacohen <t...@stosb.com>
Date:   Fri Mar 11 12:24:11 2016 +0000

    Revert "Eo: Change to the Eo4 eo_add syntax."
    
    I found a way to keep eo_add() the way it was and gracefully degrade to
    a portable (but not as fast) solution for compilers that don't support
    the compound macros returning a value gnu extension: ({int a; a;}).
    
    I'm reverting these changes now, and I'll introduce the fallback as soon
    as I can.
    
    This reverts commit b85bb3718389470bfc78c079dd5e06def5e963f3.
---
 src/lib/eo/Eo.h | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/src/lib/eo/Eo.h b/src/lib/eo/Eo.h
index a6e4f96..387f187 100644
--- a/src/lib/eo/Eo.h
+++ b/src/lib/eo/Eo.h
@@ -610,12 +610,12 @@ EAPI Eo *eo_super(const Eo *obj, const Eo_Class 
*cur_klass);
  */
 EAPI const Eo_Class *eo_class_get(const Eo *obj);
 
-#define _eo_add_common(objp, klass, parent, is_ref, ...) \
-   ((Eo *) ( \
-     *objp = _eo_add_internal_start(__FILE__, __LINE__, klass, parent, 
is_ref), \
-     ##__VA_ARGS__, \
-     *objp = _eo_add_end(*objp) \
-   ))
+#define _eo_add_common(klass, parent, is_ref, ...) \
+   ({ \
+     Eo * const eoid = _eo_add_internal_start(__FILE__, __LINE__, klass, 
parent, is_ref); \
+     __VA_ARGS__; \
+     (Eo *) _eo_add_end(eoid); \
+    })
 
 /**
  * @def eo_add
@@ -631,13 +631,12 @@ EAPI const Eo_Class *eo_class_get(const Eo *obj);
  *
  * If you want a more "consistent" behaviour, take a look at #eo_add_ref.
  *
- * @param objp a pointer to the object id (Eo **)
  * @param klass the class of the object to create.
  * @param parent the parent to set to the object.
  * @param ... The ops to run.
  * @return An handle to the new object on success, NULL otherwise.
  */
-#define eo_add(objp, klass, parent, ...) _eo_add_common(objp, klass, parent, 
EINA_FALSE, ##__VA_ARGS__)
+#define eo_add(klass, parent, ...) _eo_add_common(klass, parent, EINA_FALSE, 
##__VA_ARGS__)
 
 /**
  * @def eo_add_ref
@@ -649,13 +648,12 @@ EAPI const Eo_Class *eo_class_get(const Eo *obj);
  * when the parent object is deleted until you manually remove the ref
  * by calling eo_unref().
  *
- * @param objp a pointer to the object id (Eo **)
  * @param klass the class of the object to create.
  * @param parent the parent to set to the object.
  * @param ... The ops to run.
  * @return An handle to the new object on success, NULL otherwise.
  */
-#define eo_add_ref(objp, klass, parent, ...) _eo_add_common(objp, klass, 
parent, EINA_TRUE, ##__VA_ARGS__)
+#define eo_add_ref(klass, parent, ...) _eo_add_common(klass, parent, 
EINA_TRUE, ##__VA_ARGS__)
 
 EAPI Eo * _eo_add_internal_start(const char *file, int line, const Eo_Class 
*klass_id, Eo *parent, Eina_Bool ref);
 

-- 


Reply via email to