]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/algorithm/include/boost/algorithm/string/concept.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / algorithm / include / boost / algorithm / string / concept.hpp
1 // Boost string_algo library concept.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_CONCEPT_HPP
12 #define BOOST_STRING_CONCEPT_HPP
13
14 #include <boost/concept_check.hpp>
15 #include <boost/range/iterator_range_core.hpp>
16 #include <boost/range/begin.hpp>
17 #include <boost/range/end.hpp>
18
19 /*! \file
20 Defines concepts used in string_algo library
21 */
22
23 namespace boost {
24 namespace algorithm {
25
26 //! Finder concept
27 /*!
28 Defines the Finder concept. Finder is a functor which selects
29 an arbitrary part of a string. Search is performed on
30 the range specified by starting and ending iterators.
31
32 Result of the find operation must be convertible to iterator_range.
33 */
34 template<typename FinderT, typename IteratorT>
35 struct FinderConcept
36 {
37 private:
38 typedef iterator_range<IteratorT> range;
39 public:
40 void constraints()
41 {
42 // Operation
43 r=(*pF)(i,i);
44 }
45 private:
46 range r;
47 IteratorT i;
48 FinderT* pF;
49 }; // Finder_concept
50
51
52 //! Formatter concept
53 /*!
54 Defines the Formatter concept. Formatter is a functor, which
55 takes a result from a finder operation and transforms it
56 in a specific way.
57
58 Result must be a container supported by container_traits,
59 or a reference to it.
60 */
61 template<typename FormatterT, typename FinderT, typename IteratorT>
62 struct FormatterConcept
63 {
64 public:
65 void constraints()
66 {
67 // Operation
68 ::boost::begin((*pFo)( (*pF)(i,i) ));
69 ::boost::end((*pFo)( (*pF)(i,i) ));
70 }
71 private:
72 IteratorT i;
73 FinderT* pF;
74 FormatterT *pFo;
75 }; // FormatterConcept;
76
77 } // namespace algorithm
78 } // namespace boost
79
80
81
82
83 #endif // BOOST_STRING_CONCEPT_HPP