From e0fe0863ad0877214c7b8fc559aa39a71f17fa90 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 26 Dec 2011 16:38:17 +0000 Subject: [PATCH] Add missing files. [SVN r76178] --- doc/unicode_iterators.qbk | 127 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 doc/unicode_iterators.qbk diff --git a/doc/unicode_iterators.qbk b/doc/unicode_iterators.qbk new file mode 100644 index 00000000..e5962bd2 --- /dev/null +++ b/doc/unicode_iterators.qbk @@ -0,0 +1,127 @@ +[/ + 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 `` + + template + class u32_to_u16_iterator; + + template + class u16_to_u32_iterator; + + template + class u32_to_u8_iterator; + + template + class u8_to_u32_iterator; + + template + class utf16_output_iterator; + + template + 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 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 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 accidently 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 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 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 accidently 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 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 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]