Statistics
| Revision:

root / tmp / org.txm.statsengine.r.core.win32 / res / win32 / library / BH / include / boost / algorithm / string / concept.hpp @ 2486

History | View | Annotate | Download (2.3 kB)

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