diff DEPENDENCIES/generic/include/boost/log/sinks/text_ostream_backend.hpp @ 16:2665513ce2d3

Add boost headers
author Chris Cannam
date Tue, 05 Aug 2014 11:11:38 +0100
parents
children c530137014c0
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DEPENDENCIES/generic/include/boost/log/sinks/text_ostream_backend.hpp	Tue Aug 05 11:11:38 2014 +0100
@@ -0,0 +1,124 @@
+/*
+ *          Copyright Andrey Semashev 2007 - 2013.
+ * 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   text_ostream_backend.hpp
+ * \author Andrey Semashev
+ * \date   22.04.2007
+ *
+ * The header contains implementation of a text output stream sink backend.
+ */
+
+#ifndef BOOST_LOG_SINKS_TEXT_OSTREAM_BACKEND_HPP_INCLUDED_
+#define BOOST_LOG_SINKS_TEXT_OSTREAM_BACKEND_HPP_INCLUDED_
+
+#include <ostream>
+#include <boost/smart_ptr/shared_ptr.hpp>
+#include <boost/log/detail/config.hpp>
+#include <boost/log/sinks/basic_sink_backend.hpp>
+#include <boost/log/sinks/frontend_requirements.hpp>
+#include <boost/log/detail/header.hpp>
+
+#ifdef BOOST_HAS_PRAGMA_ONCE
+#pragma once
+#endif
+
+namespace boost {
+
+BOOST_LOG_OPEN_NAMESPACE
+
+namespace sinks {
+
+/*!
+ * \brief An implementation of a text output stream logging sink backend
+ *
+ * The sink backend puts formatted log records to one or more text streams.
+ */
+template< typename CharT >
+class basic_text_ostream_backend :
+    public basic_formatted_sink_backend<
+        CharT,
+        combine_requirements< synchronized_feeding, flushing >::type
+    >
+{
+    //! Base type
+    typedef basic_formatted_sink_backend<
+        CharT,
+        combine_requirements< synchronized_feeding, flushing >::type
+    > base_type;
+
+public:
+    //! Character type
+    typedef typename base_type::char_type char_type;
+    //! String type to be used as a message text holder
+    typedef typename base_type::string_type string_type;
+    //! Output stream type
+    typedef std::basic_ostream< char_type > stream_type;
+
+private:
+    //! \cond
+
+    struct implementation;
+    implementation* m_pImpl;
+
+    //! \endcond
+
+public:
+    /*!
+     * Constructor. No streams attached to the constructed backend, auto flush feature disabled.
+     */
+    BOOST_LOG_API basic_text_ostream_backend();
+    /*!
+     * Destructor
+     */
+    BOOST_LOG_API ~basic_text_ostream_backend();
+
+    /*!
+     * The method adds a new stream to the sink.
+     *
+     * \param strm Pointer to the stream. Must not be NULL.
+     */
+    BOOST_LOG_API void add_stream(shared_ptr< stream_type > const& strm);
+    /*!
+     * The method removes a stream from the sink. If the stream is not attached to the sink,
+     * the method has no effect.
+     *
+     * \param strm Pointer to the stream. Must not be NULL.
+     */
+    BOOST_LOG_API void remove_stream(shared_ptr< stream_type > const& strm);
+
+    /*!
+     * Sets the flag to automatically flush buffers of all attached streams after each log record
+     */
+    BOOST_LOG_API void auto_flush(bool f = true);
+
+    /*!
+     * The method writes the message to the sink
+     */
+    BOOST_LOG_API void consume(record_view const& rec, string_type const& formatted_message);
+
+    /*!
+     * The method flushes the associated streams
+     */
+    BOOST_LOG_API void flush();
+};
+
+#ifdef BOOST_LOG_USE_CHAR
+typedef basic_text_ostream_backend< char > text_ostream_backend;        //!< Convenience typedef for narrow-character logging
+#endif
+#ifdef BOOST_LOG_USE_WCHAR_T
+typedef basic_text_ostream_backend< wchar_t > wtext_ostream_backend;    //!< Convenience typedef for wide-character logging
+#endif
+
+} // namespace sinks
+
+BOOST_LOG_CLOSE_NAMESPACE // namespace log
+
+} // namespace boost
+
+#include <boost/log/detail/footer.hpp>
+
+#endif // BOOST_LOG_SINKS_TEXT_OSTREAM_BACKEND_HPP_INCLUDED_