123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- [/
- Copyright 2006-2007 John Maddock.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
- ]
- [section:uni_iter Unicode Iterators]
- [h4 Synopsis]
- ``#include <boost/regex/pending/unicode_iterator.hpp>``
- template <class BaseIterator, class U16Type = ::boost::uint16_t>
- class u32_to_u16_iterator;
- template <class BaseIterator, class U32Type = ::boost::uint32_t>
- class u16_to_u32_iterator;
- template <class BaseIterator, class U8Type = ::boost::uint8_t>
- class u32_to_u8_iterator;
- template <class BaseIterator, class U32Type = ::boost::uint32_t>
- class u8_to_u32_iterator;
- template <class BaseIterator>
- class utf16_output_iterator;
- template <class BaseIterator>
- class utf8_output_iterator;
- [h4 Description]
- This header contains a selection of iterator adaptors that make a sequence of characters in one
- encoding "look like" a read-only sequence of characters in another encoding.
- template <class BaseIterator, class U16Type = ::boost::uint16_t>
- class u32_to_u16_iterator
- {
- u32_to_u16_iterator();
- u32_to_u16_iterator(BaseIterator start_position);
- // Other standard BidirectionalIterator members here...
- };
- A Bidirectional iterator adapter that makes an underlying sequence of UTF32 characters look like
- a (read-only) sequence of UTF16 characters. The UTF16 characters are encoded in the platforms
- native byte order.
- template <class BaseIterator, class U32Type = ::boost::uint32_t>
- class u16_to_u32_iterator
- {
- u16_to_u32_iterator();
- u16_to_u32_iterator(BaseIterator start_position);
- u16_to_u32_iterator(BaseIterator start_position, BaseIterator start_range, BaseIterator end_range);
- // Other standard BidirectionalIterator members here...
- };
- A Bidirectional iterator adapter that makes an underlying sequence of UTF16 characters
- (in the platforms native byte order) look like a (read-only) sequence of UTF32 characters.
- The three-arg constructor of this class takes the start and end of the underlying sequence
- as well as the position to start iteration from. This constructor validates that the
- underlying sequence has validly encoded endpoints: this prevents accidentally incrementing/decrementing
- past the end of the underlying sequence as a result of invalid UTF16 code sequences at the endpoints
- of the underlying range.
- template <class BaseIterator, class U8Type = ::boost::uint8_t>
- class u32_to_u8_iterator
- {
- u32_to_u8_iterator();
- u32_to_u8_iterator(BaseIterator start_position);
- // Other standard BidirectionalIterator members here...
- };
- A Bidirectional iterator adapter that makes an underlying sequence of UTF32 characters look like
- a (read-only) sequence of UTF8 characters.
- template <class BaseIterator, class U32Type = ::boost::uint32_t>
- class u8_to_u32_iterator
- {
- u8_to_u32_iterator();
- u8_to_u32_iterator(BaseIterator start_position);
- u8_to_u32_iterator(BaseIterator start_position, BaseIterator start_range, BaseIterator end_range);
- // Other standard BidirectionalIterator members here...
- };
- A Bidirectional iterator adapter that makes an underlying sequence of UTF8 characters
- look like a (read-only) sequence of UTF32 characters.
- The three-arg constructor of this class takes the start and end of the underlying sequence
- as well as the position to start iteration from. This constructor validates that the
- underlying sequence has validly encoded endpoints: this prevents accidentally incrementing/decrementing
- past the end of the underlying sequence as a result of invalid UTF8 code sequences at the endpoints
- of the underlying range.
- template <class BaseIterator>
- class utf16_output_iterator
- {
- utf16_output_iterator(const BaseIterator& b);
- utf16_output_iterator(const utf16_output_iterator& that);
- utf16_output_iterator& operator=(const utf16_output_iterator& that);
- // Other standard OutputIterator members here...
- };
- Simple OutputIterator adapter - accepts UTF32 values as input, and forwards them to ['BaseIterator b]
- as UTF16. Both UTF32 and UTF16 values are in native byte order.
- template <class BaseIterator>
- class utf8_output_iterator
- {
- utf8_output_iterator(const BaseIterator& b);
- utf8_output_iterator(const utf8_output_iterator& that);
- utf8_output_iterator& operator=(const utf8_output_iterator& that);
- // Other standard OutputIterator members here...
- };
- Simple OutputIterator adapter - accepts UTF32 values as input, and forwards them to ['BaseIterator b]
- as UTF8. The UTF32 input values must be in native byte order.
- [endsect]
|