Mercurial > hg > vamp-build-and-test
comparison DEPENDENCIES/generic/include/boost/log/detail/attribute_predicate.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children | c530137014c0 |
comparison
equal
deleted
inserted
replaced
15:663ca0da4350 | 16:2665513ce2d3 |
---|---|
1 /* | |
2 * Copyright Andrey Semashev 2007 - 2013. | |
3 * Distributed under the Boost Software License, Version 1.0. | |
4 * (See accompanying file LICENSE_1_0.txt or copy at | |
5 * http://www.boost.org/LICENSE_1_0.txt) | |
6 */ | |
7 /*! | |
8 * \file attribute_predicate.hpp | |
9 * \author Andrey Semashev | |
10 * \date 02.09.2012 | |
11 * | |
12 * The header contains implementation of a generic predicate in template expressions. | |
13 */ | |
14 | |
15 #ifndef BOOST_LOG_DETAIL_ATTRIBUTE_PREDICATE_HPP_INCLUDED_ | |
16 #define BOOST_LOG_DETAIL_ATTRIBUTE_PREDICATE_HPP_INCLUDED_ | |
17 | |
18 #include <boost/phoenix/core/actor.hpp> | |
19 #include <boost/utility/result_of.hpp> | |
20 #include <boost/log/detail/config.hpp> | |
21 #include <boost/log/attributes/attribute_name.hpp> | |
22 #include <boost/log/attributes/value_visitation.hpp> | |
23 #include <boost/log/attributes/fallback_policy.hpp> | |
24 #include <boost/log/utility/functional/bind.hpp> | |
25 #include <boost/log/utility/functional/save_result.hpp> | |
26 #include <boost/log/detail/header.hpp> | |
27 | |
28 #ifdef BOOST_HAS_PRAGMA_ONCE | |
29 #pragma once | |
30 #endif | |
31 | |
32 namespace boost { | |
33 | |
34 BOOST_LOG_OPEN_NAMESPACE | |
35 | |
36 namespace expressions { | |
37 | |
38 namespace aux { | |
39 | |
40 /*! | |
41 * The predicate checks if the attribute value satisfies a predicate. | |
42 */ | |
43 template< typename T, typename ArgT, typename PredicateT, typename FallbackPolicyT = fallback_to_none > | |
44 class attribute_predicate | |
45 { | |
46 public: | |
47 //! Function result_type | |
48 typedef bool result_type; | |
49 //! Expected attribute value type | |
50 typedef T value_type; | |
51 //! Predicate type | |
52 typedef PredicateT predicate_type; | |
53 //! Argument type for the predicate | |
54 typedef ArgT argument_type; | |
55 //! Fallback policy | |
56 typedef FallbackPolicyT fallback_policy; | |
57 | |
58 private: | |
59 //! Argument for the predicate | |
60 const argument_type m_arg; | |
61 //! Attribute value name | |
62 const attribute_name m_name; | |
63 //! Visitor invoker | |
64 value_visitor_invoker< value_type, fallback_policy > m_visitor_invoker; | |
65 | |
66 public: | |
67 /*! | |
68 * Initializing constructor | |
69 * | |
70 * \param name Attribute name | |
71 * \param pred_arg The predicate argument | |
72 */ | |
73 attribute_predicate(attribute_name const& name, argument_type const& pred_arg) : m_arg(pred_arg), m_name(name) | |
74 { | |
75 } | |
76 | |
77 /*! | |
78 * Initializing constructor | |
79 * | |
80 * \param name Attribute name | |
81 * \param pred_arg The predicate argument | |
82 * \param arg Additional parameter for the fallback policy | |
83 */ | |
84 template< typename U > | |
85 attribute_predicate(attribute_name const& name, argument_type const& pred_arg, U const& arg) : m_arg(pred_arg), m_name(name), m_visitor_invoker(arg) | |
86 { | |
87 } | |
88 | |
89 /*! | |
90 * Checking operator | |
91 * | |
92 * \param arg A set of attribute values or a log record | |
93 * \return \c true if the log record contains the sought attribute value, \c false otherwise | |
94 */ | |
95 template< typename ArgumentT > | |
96 result_type operator() (ArgumentT const& arg) const | |
97 { | |
98 typedef binder2nd< predicate_type, argument_type const& > visitor_type; | |
99 | |
100 bool res = false; | |
101 m_visitor_invoker(m_name, arg, boost::log::save_result(visitor_type(predicate_type(), m_arg), res)); | |
102 return res; | |
103 } | |
104 }; | |
105 | |
106 } // namespace aux | |
107 | |
108 } // namespace expressions | |
109 | |
110 BOOST_LOG_CLOSE_NAMESPACE // namespace log | |
111 | |
112 } // namespace boost | |
113 | |
114 #include <boost/log/detail/footer.hpp> | |
115 | |
116 #endif // BOOST_LOG_DETAIL_ATTRIBUTE_PREDICATE_HPP_INCLUDED_ |