| Boost.Locale

- Main Page
- Modules
- Namespaces
- Classes
- Files
- Examples

- File List

boost/locale/boundary/boundary_point.hpp

    00001 //
    00002 //  Copyright (c) 2009-2011 Artyom Beilis (Tonkikh)
    00003 //
    00004 //  Distributed under the Boost Software License, Version 1.0. (See
    00005 //  accompanying file LICENSE_1_0.txt or copy at
    00006 //  http://www.boost.org/LICENSE_1_0.txt)
    00007 //
    00008 #ifndef BOOST_LOCALE_BOUNDARY_BOUNDARY_POINT_HPP_INCLUDED
    00009 #define BOOST_LOCALE_BOUNDARY_BOUNDARY_POINT_HPP_INCLUDED
    00010
    00011 #include <boost/locale/boundary/types.hpp>
    00012
    00013 namespace boost {
    00014 namespace locale {
    00015 namespace boundary {
    00016
    00020
    00047     template<typename IteratorType>
    00048     class boundary_point  {
    00049     public:
    00053         typedef IteratorType iterator_type;
    00054
    00058         boundary_point() : rule_(0) {}
    00059
    00063         boundary_point(iterator_type p,rule_type r) :
    00064             iterator_(p),
    00065             rule_(r)
    00066         {
    00067         }
    00071         void iterator(iterator_type i)
    00072         {
    00073             iterator_ = i;
    00074         }
    00078         void rule(rule_type r)
    00079         {
    00080             rule_ = r;
    00081         }
    00085         iterator_type iterator() const
    00086         {
    00087             return iterator_;
    00088         }
    00092         rule_type rule() const
    00093         {
    00094             return rule_;
    00095         }
    00099         bool operator==(boundary_point const &other) const
    00100         {
    00101             return iterator_ == other.iterator_ && rule_ = other.rule_;
    00102         }
    00106         bool operator!=(boundary_point const &other) const
    00107         {
    00108             return !(*this==other);
    00109         }
    00113         bool operator==(iterator_type const &other) const
    00114         {
    00115             return iterator_ == other;
    00116         }
    00120         bool operator!=(iterator_type const &other) const
    00121         {
    00122             return iterator_ != other;
    00123         }
    00124
    00128         operator iterator_type ()const
    00129         {
    00130             return iterator_;
    00131         }
    00132
    00133     private:
    00134         iterator_type iterator_;
    00135         rule_type rule_;
    00136
    00137     };
    00141     template<typename BaseIterator>
    00142     bool operator==(BaseIterator const &l,boundary_point<BaseIterator> const &r)
    00143     {
    00144         return r==l;
    00145     }
    00149     template<typename BaseIterator>
    00150     bool operator!=(BaseIterator const &l,boundary_point<BaseIterator> const &r)
    00151     {
    00152         return r!=l;
    00153     }
    00154
    00156
    00157     typedef boundary_point<std::string::const_iterator> sboundary_point;
    00158     typedef boundary_point<std::wstring::const_iterator> wsboundary_point;
    00159     #ifdef BOOST_HAS_CHAR16_T
    00160     typedef boundary_point<std::u16string::const_iterator> u16sboundary_point;
    00161     #endif
    00162     #ifdef BOOST_HAS_CHAR32_T
    00163     typedef boundary_point<std::u32string::const_iterator> u32sboundary_point;
    00164     #endif
    00165
    00166     typedef boundary_point<char const *> cboundary_point;
    00167     typedef boundary_point<wchar_t const *> wcboundary_point;
    00168     #ifdef BOOST_HAS_CHAR16_T
    00169     typedef boundary_point<char16_t const *> u16cboundary_point;
    00170     #endif
    00171     #ifdef BOOST_HAS_CHAR32_T
    00172     typedef boundary_point<char32_t const *> u32cboundary_point;
    00173     #endif
    00174
    00175
    00176 } // boundary
    00177 } // locale
    00178 } // boost
    00179
    00180
    00181 #endif
    00182
    00183 // vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4