imgtools/imglib/boostlibrary/boost/algorithm/string/concept.hpp
changeset 0 044383f39525
equal deleted inserted replaced
-1:000000000000 0:044383f39525
       
     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.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