diff options
Diffstat (limited to 'boost/thread/detail/log.hpp')
-rw-r--r-- | boost/thread/detail/log.hpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/boost/thread/detail/log.hpp b/boost/thread/detail/log.hpp new file mode 100644 index 0000000000..84dcc8cb41 --- /dev/null +++ b/boost/thread/detail/log.hpp @@ -0,0 +1,83 @@ +// Copyright (C) 2012 Vicente J. Botet Escriba +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_THREAD_DETAIL_LOG_HPP +#define BOOST_THREAD_DETAIL_LOG_HPP + +#include <boost/thread/detail/config.hpp> +#if defined BOOST_THREAD_USES_LOG +#include <boost/thread/recursive_mutex.hpp> +#include <boost/thread/lock_guard.hpp> +#if defined BOOST_THREAD_USES_LOG_THREAD_ID +#include <boost/thread/thread.hpp> +#endif +#include <iostream> + +namespace boost +{ + namespace thread_detail + { + inline boost::recursive_mutex& terminal_mutex() + { + static boost::recursive_mutex mtx; + return mtx; + } + + } +} +#if defined BOOST_THREAD_USES_LOG_THREAD_ID + +#define BOOST_THREAD_LOG \ + { \ + boost::lock_guard<boost::recursive_mutex> _lk_(boost::thread_detail::terminal_mutex()); \ + std::cout << boost::this_thread::get_id() << " - "<<__FILE__<<"["<<__LINE__<<"] " <<std::dec +#else + +#define BOOST_THREAD_LOG \ +{ \ + boost::lock_guard<boost::recursive_mutex> _lk_(boost::thread_detail::terminal_mutex()); \ + std::cout << __FILE__<<"["<<__LINE__<<"] " <<std::dec + +#endif +#define BOOST_THREAD_END_LOG \ + std::dec << std::endl; \ + } + +#else + +namespace boost +{ + namespace thread_detail + { + struct dummy_stream_t + { + }; + + template <typename T> + inline dummy_stream_t const& operator<<(dummy_stream_t const& os, T) + { + return os; + } + + inline dummy_stream_t const& operator<<(dummy_stream_t const& os, dummy_stream_t const&) + { + return os; + } + + + BOOST_CONSTEXPR_OR_CONST dummy_stream_t dummy_stream = {}; + + } +} + +#define BOOST_THREAD_LOG if (true) {} else boost::thread_detail::dummy_stream +#define BOOST_THREAD_END_LOG boost::thread_detail::dummy_stream + +#endif + +#define BOOST_THREAD_TRACE BOOST_THREAD_LOG << BOOST_THREAD_END_LOG + + +#endif // header |