raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=6bb01b0d18607ba6b7334a8f0fff6d16946364f1

commit 6bb01b0d18607ba6b7334a8f0fff6d16946364f1
Author: Felipe Magno de Almeida <fel...@expertisesolutions.com.br>
Date:   Wed Apr 9 19:12:46 2014 +0900

    eina-cxx: Modified eina C++ log use syntax
    
    Summary:
    Modified syntax for eina C++ log to imitate the macro call as returning a 
stream. So, instead of:
    
      EINA_CXX_DOM_LOG_CRIT(efl::eina::global_domain, "foo " << 5);
    
    It is now used as:
    
      EINA_CXX_DOM_LOG_CRIT(efl::eina::global_domain) << "foo " << 5;
    
    Which more closely resambles using IOStreams in C++.
    
    @feature
    
    Reviewers: cedric, barbieri, smohanty
    
    Reviewed By: barbieri
    
    CC: cedric
    
    Differential Revision: https://phab.enlightenment.org/D623
---
 src/bindings/eina_cxx/eina_log.hh       | 58 ++++++++++++++++-----------------
 src/tests/eina_cxx/eina_cxx_test_log.cc | 44 ++++++++++++-------------
 2 files changed, 50 insertions(+), 52 deletions(-)

diff --git a/src/bindings/eina_cxx/eina_log.hh 
b/src/bindings/eina_cxx/eina_log.hh
index d6b8f29..fe4e3bf 100644
--- a/src/bindings/eina_cxx/eina_log.hh
+++ b/src/bindings/eina_cxx/eina_log.hh
@@ -79,47 +79,45 @@ inline void _log(std::stringstream const& stream, int 
domain, ::Eina_Log_Level l
                    , "%s", stream.str().c_str());
 }
 
-#define EINA_CXX_DOM_LOG(DOMAIN, LEVEL, EXPR)                           \
-    if( ::eina_log_domain_level_check((DOMAIN), LEVEL))                 \
-      {                                                                 \
-        std::stringstream stream;                                       \
-        stream << EXPR;                                                 \
-        ::efl::eina::_log(std::move(stream), (DOMAIN), LEVEL            \
-                          , __FILE__, __FUNCTION__, __LINE__);          \
-      }
+#define EINA_CXX_DOM_LOG(DOMAIN, LEVEL)                                 \
+    if( bool run = ::eina_log_domain_level_check((DOMAIN), LEVEL) )     \
+      for(std::stringstream stream; run ;                               \
+          ::efl::eina::_log(std::move(stream), (DOMAIN), LEVEL          \
+                            , __FILE__, __FUNCTION__, __LINE__), run = false) \
+        stream
 
-#define EINA_CXX_DOM_LOG_CRIT(DOMAIN, EXPR)                     \
-    EINA_CXX_DOM_LOG(DOMAIN.domain_raw(), ::EINA_LOG_LEVEL_CRITICAL, EXPR)
+#define EINA_CXX_DOM_LOG_CRIT(DOMAIN)                     \
+    EINA_CXX_DOM_LOG(DOMAIN.domain_raw(), ::EINA_LOG_LEVEL_CRITICAL)
 
-#define EINA_CXX_DOM_LOG_ERR(DOMAIN, EXPR)                      \
-    EINA_CXX_DOM_LOG(DOMAIN.domain_raw(), ::EINA_LOG_LEVEL_ERR, EXPR)
+#define EINA_CXX_DOM_LOG_ERR(DOMAIN)                      \
+    EINA_CXX_DOM_LOG(DOMAIN.domain_raw(), ::EINA_LOG_LEVEL_ERR)
 
-#define EINA_CXX_DOM_LOG_INFO(DOMAIN, EXPR)                      \
-    EINA_CXX_DOM_LOG(DOMAIN.domain_raw(), ::EINA_LOG_LEVEL_INFO, EXPR)
+#define EINA_CXX_DOM_LOG_INFO(DOMAIN)                      \
+    EINA_CXX_DOM_LOG(DOMAIN.domain_raw(), ::EINA_LOG_LEVEL_INFO)
 
-#define EINA_CXX_DOM_LOG_DBG(DOMAIN, EXPR)                      \
-    EINA_CXX_DOM_LOG(DOMAIN.domain_raw(), ::EINA_LOG_LEVEL_DBG, EXPR)
+#define EINA_CXX_DOM_LOG_DBG(DOMAIN)                      \
+    EINA_CXX_DOM_LOG(DOMAIN.domain_raw(), ::EINA_LOG_LEVEL_DBG)
 
-#define EINA_CXX_DOM_LOG_WARN(DOMAIN, EXPR)                      \
-    EINA_CXX_DOM_LOG(DOMAIN.domain_raw(), ::EINA_LOG_LEVEL_WARN, EXPR)
+#define EINA_CXX_DOM_LOG_WARN(DOMAIN)                      \
+    EINA_CXX_DOM_LOG(DOMAIN.domain_raw(), ::EINA_LOG_LEVEL_WARN)
 
-#define EINA_CXX_LOG(LEVEL, EXPR)                               \
-    EINA_CXX_DOM_LOG(EINA_LOG_DOMAIN_DEFAULT, LEVEL, EXPR)
+#define EINA_CXX_LOG(LEVEL)                               \
+    EINA_CXX_DOM_LOG(EINA_LOG_DOMAIN_DEFAULT, LEVEL)
 
-#define EINA_CXX_LOG_CRIT(EXPR)                 \
-    EINA_CXX_LOG(EINA_LOG_LEVEL_CRITICAL, EXPR)
+#define EINA_CXX_LOG_CRIT()                 \
+    EINA_CXX_LOG(EINA_LOG_LEVEL_CRITICAL)
 
-#define EINA_CXX_LOG_ERR(EXPR)                  \
-    EINA_CXX_LOG(EINA_LOG_LEVEL_ERR, EXPR)
+#define EINA_CXX_LOG_ERR()                  \
+    EINA_CXX_LOG(EINA_LOG_LEVEL_ERR)
 
-#define EINA_CXX_LOG_INFO(EXPR)                 \
-    EINA_CXX_LOG(EINA_LOG_LEVEL_INFO, EXPR)
+#define EINA_CXX_LOG_INFO()                 \
+    EINA_CXX_LOG(EINA_LOG_LEVEL_INFO)
 
-#define EINA_CXX_LOG_DBG(EXPR)                  \
-    EINA_CXX_LOG(EINA_LOG_LEVEL_DBG, EXPR)
+#define EINA_CXX_LOG_DBG()                  \
+    EINA_CXX_LOG(EINA_LOG_LEVEL_DBG)
 
-#define EINA_CXX_LOG_WARN(EXPR)                 \
-    EINA_CXX_LOG(EINA_LOG_LEVEL_WARN, EXPR)
+#define EINA_CXX_LOG_WARN()                 \
+    EINA_CXX_LOG(EINA_LOG_LEVEL_WARN)
 
 } }
 
diff --git a/src/tests/eina_cxx/eina_cxx_test_log.cc 
b/src/tests/eina_cxx/eina_cxx_test_log.cc
index 52c8ccd..4d32d41 100644
--- a/src/tests/eina_cxx/eina_cxx_test_log.cc
+++ b/src/tests/eina_cxx/eina_cxx_test_log.cc
@@ -40,7 +40,7 @@ START_TEST(eina_cxx_expensive_log)
 
   domain.set_level(EINA_LOG_LEVEL_CRITICAL);
 
-  EINA_CXX_DOM_LOG_ERR(domain, "foo " << ::expensive_call());
+  EINA_CXX_DOM_LOG_ERR(domain) << "foo " << ::expensive_call();
   ck_assert(!expensive_called);
 }
 END_TEST
@@ -51,17 +51,17 @@ START_TEST(eina_cxx_domain_log)
 
   efl::eina::log_domain domain("error_domain");
 
-  EINA_CXX_DOM_LOG_CRIT(domain, "foo 0x" << std::hex << 10);
-  EINA_CXX_DOM_LOG_ERR(domain, "foo " << 5);
-  EINA_CXX_DOM_LOG_INFO(domain, "foo " << 5);
-  EINA_CXX_DOM_LOG_DBG(domain, "foo " << 5);
-  EINA_CXX_DOM_LOG_WARN(domain, "foo " << 5);
-
-  EINA_CXX_LOG_CRIT("foo " << 5);
-  EINA_CXX_LOG_ERR("foo " << 5);
-  EINA_CXX_LOG_INFO("foo " << 5);
-  EINA_CXX_LOG_DBG("foo " << 5);
-  EINA_CXX_LOG_WARN("foo " << 5);
+  EINA_CXX_DOM_LOG_CRIT(domain) << "foo 0x" << std::hex << 10;
+  EINA_CXX_DOM_LOG_ERR(domain) << "foo " << 5;
+  EINA_CXX_DOM_LOG_INFO(domain) << "foo " << 5;
+  EINA_CXX_DOM_LOG_DBG(domain) << "foo " << 5;
+  EINA_CXX_DOM_LOG_WARN(domain) << "foo " << 5;
+
+  EINA_CXX_LOG_CRIT() << "foo " << 5;
+  EINA_CXX_LOG_ERR() << "foo " << 5;
+  EINA_CXX_LOG_INFO() << "foo " << 5;
+  EINA_CXX_LOG_DBG() << "foo " << 5;
+  EINA_CXX_LOG_WARN() << "foo " << 5;
 }
 END_TEST
 
@@ -69,11 +69,11 @@ START_TEST(eina_cxx_default_domain_log)
 {
   efl::eina::eina_init init;
 
-  EINA_CXX_DOM_LOG_CRIT(efl::eina::default_domain, "foo " << 5);
-  EINA_CXX_DOM_LOG_ERR(efl::eina::default_domain, "foo " << 5);
-  EINA_CXX_DOM_LOG_INFO(efl::eina::default_domain, "foo " << 5);
-  EINA_CXX_DOM_LOG_DBG(efl::eina::default_domain, "foo " << 5);
-  EINA_CXX_DOM_LOG_WARN(efl::eina::default_domain, "foo " << 5);
+  EINA_CXX_DOM_LOG_CRIT(efl::eina::default_domain) << "foo " << 5;
+  EINA_CXX_DOM_LOG_ERR(efl::eina::default_domain) << "foo " << 5;
+  EINA_CXX_DOM_LOG_INFO(efl::eina::default_domain) << "foo " << 5;
+  EINA_CXX_DOM_LOG_DBG(efl::eina::default_domain) << "foo " << 5;
+  EINA_CXX_DOM_LOG_WARN(efl::eina::default_domain) << "foo " << 5;
 }
 END_TEST
 
@@ -83,11 +83,11 @@ START_TEST(eina_cxx_global_domain_log)
 
   efl::eina::log_domain domain("domain");
 
-  EINA_CXX_DOM_LOG_CRIT(efl::eina::global_domain, "foo " << 5);
-  EINA_CXX_DOM_LOG_ERR(efl::eina::global_domain, "foo " << 5);
-  EINA_CXX_DOM_LOG_INFO(efl::eina::global_domain, "foo " << 5);
-  EINA_CXX_DOM_LOG_DBG(efl::eina::global_domain, "foo " << 5);
-  EINA_CXX_DOM_LOG_WARN(efl::eina::global_domain, "foo " << 5);
+  EINA_CXX_DOM_LOG_CRIT(efl::eina::global_domain) << "foo " << 5;
+  EINA_CXX_DOM_LOG_ERR(efl::eina::global_domain) << "foo " << 5;
+  EINA_CXX_DOM_LOG_INFO(efl::eina::global_domain) << "foo " << 5;
+  EINA_CXX_DOM_LOG_DBG(efl::eina::global_domain) << "foo " << 5;
+  EINA_CXX_DOM_LOG_WARN(efl::eina::global_domain) << "foo " << 5;
 }
 END_TEST
 

-- 


Reply via email to