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
This commit is contained in:
Felipe Magno de Almeida 2014-04-09 19:12:46 +09:00 committed by Carsten Haitzler (Rasterman)
parent 6436618c92
commit 6bb01b0d18
2 changed files with 49 additions and 51 deletions

View File

@ -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)
} }

View File

@ -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_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_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