Publishing R3
[platform/upstream/dldt.git] / inference-engine / thirdparty / clDNN / common / boost / 1.64.0 / include / boost-1_64 / boost / algorithm / string / detail / formatter.hpp
1 //  Boost string_algo library formatter.hpp header file  ---------------------------//
2
3 //  Copyright Pavol Droba 2002-2003.
4 //
5 // Distributed under the Boost Software License, Version 1.0.
6 //    (See accompanying file LICENSE_1_0.txt or copy at
7 //          http://www.boost.org/LICENSE_1_0.txt)
8
9 //  See http://www.boost.org for updates, documentation, and revision history.
10
11 #ifndef BOOST_STRING_FORMATTER_DETAIL_HPP
12 #define BOOST_STRING_FORMATTER_DETAIL_HPP
13
14
15 #include <boost/range/iterator_range_core.hpp>
16 #include <boost/range/begin.hpp>
17 #include <boost/range/end.hpp>
18 #include <boost/range/const_iterator.hpp>
19
20 #include <boost/algorithm/string/detail/util.hpp>
21
22 //  generic replace functors -----------------------------------------------//
23
24 namespace boost {
25     namespace algorithm {
26         namespace detail {
27
28 //  const format functor ----------------------------------------------------//
29
30             // constant format functor
31             template<typename RangeT>
32             struct const_formatF
33             {
34             private:
35                 typedef BOOST_STRING_TYPENAME
36                     range_const_iterator<RangeT>::type format_iterator;
37                 typedef iterator_range<format_iterator> result_type;
38             
39             public:
40                 // Construction
41                 const_formatF(const RangeT& Format) :
42                     m_Format(::boost::begin(Format), ::boost::end(Format)) {}
43
44                 // Operation
45 #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
46                 template<typename Range2T>
47                 result_type& operator()(const Range2T&)
48                 {
49                     return m_Format;
50                 }
51 #endif
52
53                 template<typename Range2T>
54                 const result_type& operator()(const Range2T&) const
55                 {
56                     return m_Format;
57                 }
58
59             private:
60                 result_type m_Format;
61             };
62
63 //  identity format functor ----------------------------------------------------//
64
65             // identity format functor
66             template<typename RangeT>
67             struct identity_formatF
68             {
69                 // Operation
70                 template< typename Range2T >
71                 const RangeT& operator()(const Range2T& Replace) const
72                 {
73                     return RangeT(::boost::begin(Replace), ::boost::end(Replace));
74                 }
75             };
76
77 //  empty format functor ( used by erase ) ------------------------------------//
78         
79             // empty format functor
80             template< typename CharT >
81             struct empty_formatF
82             {
83                 template< typename ReplaceT >
84                 empty_container<CharT> operator()(const ReplaceT&) const
85                 {
86                     return empty_container<CharT>();
87                 }
88             };
89
90 //  dissect format functor ----------------------------------------------------//
91
92             // dissect format functor
93             template<typename FinderT>
94             struct dissect_formatF
95             {
96             public:
97                 // Construction
98                 dissect_formatF(FinderT Finder) :
99                   m_Finder(Finder) {}
100
101                   // Operation
102                   template<typename RangeT>
103                   inline iterator_range< 
104                       BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type>
105                   operator()(const RangeT& Replace) const
106                   {
107                       return m_Finder(::boost::begin(Replace), ::boost::end(Replace));
108                   }
109
110             private:
111                 FinderT m_Finder;
112             };
113
114
115         } // namespace detail
116     } // namespace algorithm
117 } // namespace boost
118
119 #endif  // BOOST_STRING_FORMATTER_DETAIL_HPP