Chris@16: // Copyright (C) 2012 Vicente J. Botet Escriba Chris@16: // Chris@16: // Distributed under the Boost Software License, Version 1.0. (See accompanying Chris@16: // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: #ifndef BOOST_THREAD_DETAIL_LOG_HPP Chris@16: #define BOOST_THREAD_DETAIL_LOG_HPP Chris@16: Chris@16: #include Chris@16: #if defined BOOST_THREAD_USES_LOG Chris@16: #include Chris@16: #include Chris@16: #if defined BOOST_THREAD_USES_LOG_THREAD_ID Chris@16: #include Chris@16: #endif Chris@16: #include Chris@16: Chris@16: namespace boost Chris@16: { Chris@16: namespace thread_detail Chris@16: { Chris@16: inline boost::recursive_mutex& terminal_mutex() Chris@16: { Chris@16: static boost::recursive_mutex mtx; Chris@16: return mtx; Chris@16: } Chris@16: Chris@16: } Chris@16: } Chris@16: #if defined BOOST_THREAD_USES_LOG_THREAD_ID Chris@16: Chris@16: #define BOOST_THREAD_LOG \ Chris@16: { \ Chris@16: boost::lock_guard _lk_(boost::thread_detail::terminal_mutex()); \ Chris@16: std::cout << boost::this_thread::get_id() << " - "<<__FILE__<<"["<<__LINE__<<"] " < _lk_(boost::thread_detail::terminal_mutex()); \ Chris@16: std::cout << __FILE__<<"["<<__LINE__<<"] " < Chris@16: inline dummy_stream_t const& operator<<(dummy_stream_t const& os, T) Chris@16: { Chris@16: return os; Chris@16: } Chris@16: Chris@16: inline dummy_stream_t const& operator<<(dummy_stream_t const& os, dummy_stream_t const&) Chris@16: { Chris@16: return os; Chris@16: } Chris@16: Chris@16: Chris@16: BOOST_CONSTEXPR_OR_CONST dummy_stream_t dummy_stream = {}; Chris@16: Chris@16: } Chris@16: } Chris@16: Chris@16: #define BOOST_THREAD_LOG if (true) {} else boost::thread_detail::dummy_stream Chris@16: #define BOOST_THREAD_END_LOG boost::thread_detail::dummy_stream Chris@16: Chris@16: #endif Chris@16: Chris@16: #define BOOST_THREAD_TRACE BOOST_THREAD_LOG << BOOST_THREAD_END_LOG Chris@16: Chris@16: Chris@16: #endif // header