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_HPP
12#define BOOST_STRING_FORMATTER_HPP
13
14#include <boost/range/value_type.hpp>
15#include <boost/range/iterator_range_core.hpp>
16#include <boost/range/as_literal.hpp>
17
18#include <boost/algorithm/string/detail/formatter.hpp>
19
20/*! \file
21 Defines Formatter generators. Formatter is a functor which formats
22 a string according to given parameters. A Formatter works
23 in conjunction with a Finder. A Finder can provide additional information
24 for a specific Formatter. An example of such a cooperation is regex_finder
25 and regex_formatter.
26
27 Formatters are used as pluggable components for replace facilities.
28 This header contains generator functions for the Formatters provided in this library.
29*/
30
31namespace boost {
32 namespace algorithm {
33
34// generic formatters ---------------------------------------------------------------//
35
36 //! Constant formatter
37 /*!
38 Constructs a \c const_formatter. Const formatter always returns
39 the same value, regardless of the parameter.
40
41 \param Format A predefined value used as a result for formatting
42 \return An instance of the \c const_formatter object.
43 */
44 template<typename RangeT>
45 inline detail::const_formatF<
46 iterator_range<
47 BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >
48 const_formatter(const RangeT& Format)
49 {
50 return detail::const_formatF<
51 iterator_range<
52 BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >(::boost::as_literal(Format));
53 }
54
55 //! Identity formatter
56 /*!
57 Constructs an \c identity_formatter. Identity formatter always returns
58 the parameter.
59
60 \return An instance of the \c identity_formatter object.
61 */
62 template<typename RangeT>
63 inline detail::identity_formatF<
64 iterator_range<
65 BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >
66 identity_formatter()
67 {
68 return detail::identity_formatF<
69 iterator_range<
70 BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
71 }
72
73 //! Empty formatter
74 /*!
75 Constructs an \c empty_formatter. Empty formatter always returns an empty
76 sequence.
77
78 \param Input container used to select a correct value_type for the
79 resulting empty_container<>.
80 \return An instance of the \c empty_formatter object.
81 */
82 template<typename RangeT>
83 inline detail::empty_formatF<
84 BOOST_STRING_TYPENAME range_value<RangeT>::type>
85 empty_formatter(const RangeT&)
86 {
87 return detail::empty_formatF<
88 BOOST_STRING_TYPENAME range_value<RangeT>::type>();
89 }
90
91 //! Empty formatter
92 /*!
93 Constructs a \c dissect_formatter. Dissect formatter uses a specified finder
94 to extract a portion of the formatted sequence. The first finder's match is returned
95 as a result
96
97 \param Finder a finder used to select a portion of the formatted sequence
98 \return An instance of the \c dissect_formatter object.
99 */
100 template<typename FinderT>
101 inline detail::dissect_formatF< FinderT >
102 dissect_formatter(const FinderT& Finder)
103 {
104 return detail::dissect_formatF<FinderT>(Finder);
105 }
106
107
108 } // namespace algorithm
109
110 // pull the names to the boost namespace
111 using algorithm::const_formatter;
112 using algorithm::identity_formatter;
113 using algorithm::empty_formatter;
114 using algorithm::dissect_formatter;
115
116} // namespace boost
117
118
119#endif // BOOST_FORMATTER_HPP
120

source code of include/boost/algorithm/string/formatter.hpp