/usr/include/boost/log/utility/setup/from_settings.hpp is in libboost1.55-dev 1.55.0+dfsg-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 | /*
* 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 from_settings.hpp
* \author Andrey Semashev
* \date 11.10.2009
*
* The header contains definition of facilities that allows to initialize the library from
* settings.
*/
#ifndef BOOST_LOG_UTILITY_SETUP_FROM_SETTINGS_HPP_INCLUDED_
#define BOOST_LOG_UTILITY_SETUP_FROM_SETTINGS_HPP_INCLUDED_
#include <string>
#include <boost/smart_ptr/shared_ptr.hpp>
#include <boost/utility/enable_if.hpp>
#include <boost/type_traits/is_base_and_derived.hpp>
#include <boost/log/detail/setup_config.hpp>
#include <boost/log/sinks/sink.hpp>
#include <boost/log/utility/setup/settings.hpp>
#include <boost/log/detail/header.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE
#pragma once
#endif
namespace boost {
BOOST_LOG_OPEN_NAMESPACE
/*!
* The function initializes the logging library from a settings container
*
* \param setts Library settings container
*
* \b Throws: An <tt>std::exception</tt>-based exception if the provided settings are not valid.
*/
template< typename CharT >
BOOST_LOG_SETUP_API void init_from_settings(basic_settings_section< CharT > const& setts);
/*!
* Sink factory base interface
*/
template< typename CharT >
struct sink_factory
{
//! Character type
typedef CharT char_type;
//! String type
typedef std::basic_string< char_type > string_type;
//! Settings section type
typedef basic_settings_section< char_type > settings_section;
/*!
* Default constructor
*/
BOOST_DEFAULTED_FUNCTION(sink_factory(), {})
/*!
* Virtual destructor
*/
virtual ~sink_factory() {}
/*!
* The function creates a formatter for the specified attribute.
*
* \param settings Sink parameters
*/
virtual shared_ptr< sinks::sink > create_sink(settings_section const& settings) = 0;
BOOST_DELETED_FUNCTION(sink_factory(sink_factory const&))
BOOST_DELETED_FUNCTION(sink_factory& operator= (sink_factory const&))
};
/*!
* \brief The function registers a factory for a custom sink
*
* The function registers a factory for a sink. The factory will be called to create sink
* instance when the parser discovers the specified sink type in the settings file. The
* factory must accept a map of parameters [parameter name -> parameter value] that it
* may use to initialize the sink. The factory must return a non-NULL pointer to the
* constructed sink instance.
*
* \param sink_name The custom sink name. Must point to a zero-terminated sequence of characters,
* must not be NULL.
* \param factory Pointer to the custom sink factory. Must not be NULL.
*/
template< typename CharT >
BOOST_LOG_SETUP_API void register_sink_factory(const char* sink_name, shared_ptr< sink_factory< CharT > > const& factory);
/*!
* \brief The function registers a factory for a custom sink
*
* The function registers a factory for a sink. The factory will be called to create sink
* instance when the parser discovers the specified sink type in the settings file. The
* factory must accept a map of parameters [parameter name -> parameter value] that it
* may use to initialize the sink. The factory must return a non-NULL pointer to the
* constructed sink instance.
*
* \param sink_name The custom sink name
* \param factory Pointer to the custom sink factory. Must not be NULL.
*/
template< typename CharT >
inline void register_sink_factory(std::string const& sink_name, shared_ptr< sink_factory< CharT > > const& factory)
{
register_sink_factory(sink_name.c_str(), factory);
}
/*!
* \brief The function registers a factory for a custom sink
*
* The function registers a factory for a sink. The factory will be called to create sink
* instance when the parser discovers the specified sink type in the settings file. The
* factory must accept a map of parameters [parameter name -> parameter value] that it
* may use to initialize the sink. The factory must return a non-NULL pointer to the
* constructed sink instance.
*
* \param sink_name The custom sink name. Must point to a zero-terminated sequence of characters,
* must not be NULL.
* \param factory Pointer to the custom sink factory. Must not be NULL.
*/
template< typename FactoryT >
inline typename enable_if<
is_base_and_derived< sink_factory< typename FactoryT::char_type >, FactoryT >
>::type register_sink_factory(const char* sink_name, shared_ptr< FactoryT > const& factory)
{
typedef sink_factory< typename FactoryT::char_type > factory_base;
register_sink_factory(sink_name, boost::static_pointer_cast< factory_base >(factory));
}
/*!
* \brief The function registers a factory for a custom sink
*
* The function registers a factory for a sink. The factory will be called to create sink
* instance when the parser discovers the specified sink type in the settings file. The
* factory must accept a map of parameters [parameter name -> parameter value] that it
* may use to initialize the sink. The factory must return a non-NULL pointer to the
* constructed sink instance.
*
* \param sink_name The custom sink name
* \param factory Pointer to the custom sink factory. Must not be NULL.
*/
template< typename FactoryT >
inline typename enable_if<
is_base_and_derived< sink_factory< typename FactoryT::char_type >, FactoryT >
>::type register_sink_factory(std::string const& sink_name, shared_ptr< FactoryT > const& factory)
{
typedef sink_factory< typename FactoryT::char_type > factory_base;
register_sink_factory(sink_name.c_str(), boost::static_pointer_cast< factory_base >(factory));
}
BOOST_LOG_CLOSE_NAMESPACE // namespace log
} // namespace boost
#include <boost/log/detail/footer.hpp>
#endif // BOOST_LOG_UTILITY_SETUP_FROM_SETTINGS_HPP_INCLUDED_
|