/* * Copyright Andrey Semashev 2007 - 2014. * 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) */ /*! * \file to_log.hpp * \author Andrey Semashev * \date 06.11.2012 * * This header contains the \c to_log output manipulator. */ #ifndef BOOST_LOG_UTILITY_MANIPULATORS_TO_LOG_HPP_INCLUDED_ #define BOOST_LOG_UTILITY_MANIPULATORS_TO_LOG_HPP_INCLUDED_ #include #include #include #include #include #ifdef BOOST_HAS_PRAGMA_ONCE #pragma once #endif namespace boost { BOOST_LOG_OPEN_NAMESPACE /*! * \brief Generic manipulator for customizing output to log */ template< typename T, typename TagT = void > class to_log_manip { public: //! Output value type typedef T value_type; //! Value tag type typedef TagT tag_type; private: //! Reference to the value value_type const& m_value; public: explicit to_log_manip(value_type const& value) : m_value(value) {} to_log_manip(to_log_manip const& that) : m_value(that.m_value) {} value_type const& get() const { return m_value; } }; template< typename CharT, typename TraitsT, typename T, typename TagT > inline std::basic_ostream< CharT, TraitsT >& operator<< (std::basic_ostream< CharT, TraitsT >& strm, to_log_manip< T, TagT > manip) { strm << manip.get(); return strm; } template< typename CharT, typename TraitsT, typename AllocatorT, typename T, typename TagT > inline basic_formatting_ostream< CharT, TraitsT, AllocatorT >& operator<< (basic_formatting_ostream< CharT, TraitsT, AllocatorT >& strm, to_log_manip< T, TagT > manip) { strm << manip.get(); return strm; } template< typename T > inline to_log_manip< T > to_log(T const& value) { return to_log_manip< T >(value); } template< typename TagT, typename T > inline to_log_manip< T, TagT > to_log(T const& value) { return to_log_manip< T, TagT >(value); } BOOST_LOG_CLOSE_NAMESPACE // namespace log } // namespace boost #include #endif // BOOST_LOG_UTILITY_MANIPULATORS_TO_LOG_HPP_INCLUDED_