diff --git a/doc/.cvsignore b/doc/.cvsignore new file mode 100755 index 0000000..59a4657 --- /dev/null +++ b/doc/.cvsignore @@ -0,0 +1 @@ +GNUmakefile diff --git a/doc/counting_iterator.pdf b/doc/counting_iterator.pdf index 408d113..21b2d96 100755 Binary files a/doc/counting_iterator.pdf and b/doc/counting_iterator.pdf differ diff --git a/doc/facade-and-adaptor.html b/doc/facade-and-adaptor.html index 0af07bc..10049b7 100755 --- a/doc/facade-and-adaptor.html +++ b/doc/facade-and-adaptor.html @@ -26,7 +26,7 @@ Lab, Zephyr Associates, Inc.
This proposal is formulated in terms of the new iterator concepts -as proposed in n1550, since user-defined and especially adapted +as proposed in n1550, since user-defined and especially adapted iterators suffer from the well known categorization problems that are inherent to the current iterator categories.
-This proposal does not strictly depend on proposal n1550, as there +
This proposal does not strictly depend on proposal n1550, as there is a direct mapping between new and old categories. This proposal -could be reformulated using this mapping if n1550 was not accepted.
+could be reformulated using this mapping if n1550 was not accepted.Writable iterators built with iterator_facade implement the semantics required by the preferred resolution to issue 299 and -adopted by proposal n1550: the result of p[n] is an object +adopted by proposal n1550: the result of p[n] is an object convertible to the iterator's value_type, and p[n] = x is equivalent to *(p + n) = x (Note: This result object may be implemented as a proxy containing a copy of p+n). This approach @@ -426,9 +427,9 @@ the implementation of her iterator is free to implement an operator[] that returns an lvalue in the derived iterator class; it will hide the one supplied by iterator_facade from clients of her iterator.
-The reference type of a readable iterator (and today's input iterator) need not in fact be a reference, so long as it is convertible to the iterator's value_type. When the value_type @@ -506,7 +507,7 @@ to the underlying values when dereferenced.
The iterator_category member of iterator_facade is
+The iterator_category member of iterator_facade is
iterator-category(CategoryOrTraversal, value_type, reference)
where iterator-category is defined as follows:
-+iterator-category(C,R,V) := if (C is convertible to std::input_iterator_tag || C is convertible to std::output_iterator_tag @@ -773,7 +774,7 @@ object of type X, X, and z is a constant object of a random access traversal iterator type interoperable with X. -++iterator_facade Core Operations
-
@@ -865,7 +866,7 @@ of type pointer equal unspecified operator[](difference_type n) const;
+unspecified operator[](difference_type n) const;
-
@@ -1125,7 +1126,7 @@ operator >=(iterator_facade<Dr1,V1,TC1,R1,D1> const& lhs, +template <class Dr1, class V1, class TC1, class R1, class D1, class Dr2, class V2, class TC2, class R2, class D2> typename enable_if_interoperable<Dr1,Dr2,difference>::type @@ -1225,14 +1226,14 @@ class iterator_adaptor Base m_iterator; // exposition only };--+iterator_adaptor requirements
+iterator_adaptor requirements
static_cast<Derived*>(iterator_adaptor*) shall be well-formed. The Base argument shall be Assignable and Copy Constructible.
-
The V', C', R', and D' parameters of the iterator_facade used as a base class in the summary of iterator_adaptor above are defined as follows:
@@ -2547,6 +2548,12 @@ particularly because the proper implementation usually requires a proxy object. ++#include <boost/function_output_iterator.hpp> +
template <class UnaryFunction> class function_output_iterator { @@ -2570,16 +2577,16 @@ private:
UnaryFunction must be Assignable and Copy Constructible.
function_output_iterator is a model of the Writable and Incrementable Iterator concepts.
explicit function_output_iterator(const UnaryFunction& f = UnaryFunction());
Requires: | The Base type must be Default Constructible. | +
---|---|
Requires: | The Base type must be Default Constructible. |
Returns: | An instance of iterator_adaptor with -m_iterator default constructed. | +
Returns: | An instance of iterator_adaptor with +m_iterator default constructed. |
explicit iterator_adaptor(Base iter);
-Returns: | An instance of iterator_adaptor with -m_iterator copy constructed from iter. | +
---|---|
Returns: | An instance of iterator_adaptor with +m_iterator copy constructed from iter. |
Base const& base() const;
-Returns: | m_iterator | +
---|---|
Returns: | m_iterator |
Base const& base_reference() const;
-Returns: | A const reference to m_iterator. | +
---|---|
Returns: | A const reference to m_iterator. |
Base& base_reference();
-Returns: | A non-const reference to m_iterator. | +
---|---|
Returns: | A non-const reference to m_iterator. |
typename iterator_adaptor::reference dereference() const;
-Returns: | *m_iterator | +
---|---|
Returns: | *m_iterator |
Returns: | m_iterator == x.base() | +
---|---|
Returns: | m_iterator == x.base() |
void advance(typename iterator_adaptor::difference_type n);
-Effects: | m_iterator += n; | +
---|---|
Effects: | m_iterator += n; |
void increment();
-Effects: | ++m_iterator; | +
---|---|
Effects: | ++m_iterator; |
void decrement();
-Effects: | --m_iterator; | +
---|---|
Effects: | --m_iterator; |
Returns: | y.base() - m_iterator | +
---|---|
Returns: | y.base() - m_iterator |
The reference type of a readable iterator (and today's input iterator) need not in fact be a reference, so long as it is convertible to the iterator's value_type. When the value_type @@ -355,12 +355,12 @@ template <class Dr, class V, class TC, class R, class D> Derived operator+ (typename Derived::difference_type n, iterator_facade<Dr,V,TC,R,D> const&); -
The iterator_category member of iterator_facade is
+The iterator_category member of iterator_facade is
iterator-category(CategoryOrTraversal, value_type, reference)
where iterator-category is defined as follows:
-+iterator-category(C,R,V) := if (C is convertible to std::input_iterator_tag || C is convertible to std::output_iterator_tag @@ -442,7 +442,7 @@ object of type X, X, and z is a constant object of a random access traversal iterator type interoperable with X. -+iterator_facade Core Operations
-
@@ -534,7 +534,7 @@ of type pointer equal unspecified operator[](difference_type n) const;
+unspecified operator[](difference_type n) const;
-
@@ -794,7 +794,7 @@ operator >=(iterator_facade<Dr1,V1,TC1,R1,D1> const& lhs, +template <class Dr1, class V1, class TC1, class R1, class D1, class Dr2, class V2, class TC2, class R2, class D2> typename enable_if_interoperable<Dr1,Dr2,difference>::type @@ -1110,7 +1110,7 @@ changes:class const_node_iterator : public boost::iterator_facade< - node_iterator + const_node_iterator , node_base const , boost::forward_traversal_tag > @@ -1269,8 +1269,8 @@ If we try to convert from node_co constructor tries to initialize node_iterator's m_node, a node* with a node const*. So what's the problem?
The problem is that -boost::is_convertible<node_const_iterator,node_iterator>::value -will be true, but it should be false. is_convertible +boost::is_convertible<node_const_iterator,node_iterator>::value +will be true, but it should be false. is_convertible lies because it can only see as far as the declaration of node_iter's converting constructor, but can't look inside at the definition to make sure it will compile. A perfect solution diff --git a/doc/iterator_facade.pdf b/doc/iterator_facade.pdf index bfa17bf..30d46d2 100755 Binary files a/doc/iterator_facade.pdf and b/doc/iterator_facade.pdf differ diff --git a/doc/new-iter-concepts.pdf b/doc/new-iter-concepts.pdf index 2118e6c..636aaab 100755 Binary files a/doc/new-iter-concepts.pdf and b/doc/new-iter-concepts.pdf differ diff --git a/doc/permutation_iterator.pdf b/doc/permutation_iterator.pdf index 37fef06..3f69d1d 100755 Binary files a/doc/permutation_iterator.pdf and b/doc/permutation_iterator.pdf differ diff --git a/doc/pointee.pdf b/doc/pointee.pdf index 98efe93..53f9f6d 100755 Binary files a/doc/pointee.pdf and b/doc/pointee.pdf differ diff --git a/doc/reverse_iterator.pdf b/doc/reverse_iterator.pdf index 761c451..8cfd925 100755 Binary files a/doc/reverse_iterator.pdf and b/doc/reverse_iterator.pdf differ diff --git a/doc/rst2html b/doc/rst2html index b332e1c..9251164 100755 --- a/doc/rst2html +++ b/doc/rst2html @@ -1,7 +1,7 @@ #!/bin/sh -PYTHONPATH="c:/src/docutils/docutils;c:/src/docutils/docutils/extras" +PYTHONPATH="c:/src/docutils;c:/src/docutils/extras" export PYTHONPATH -python c:/src/docutils/docutils/tools/rst2html.py -gs $1 `echo $1 | sed 's/\(.*\)\..*/\1.html/'` +python c:/src/docutils/tools/rst2html.py -gs $1 `echo $1 | sed 's/\(.*\)\..*/\1.html/'` diff --git a/doc/rst2latex b/doc/rst2latex index 3636587..129a15f 100755 --- a/doc/rst2latex +++ b/doc/rst2latex @@ -1,4 +1,4 @@ #!/bin/sh -PYTHONPATH="c:/src/docutils/docutils;c:/src/docutils/docutils/extras" +PYTHONPATH="c:/src/docutils;c:/src/docutils/extras" export PYTHONPATH -python c:/src/docutils/docutils/tools/rst2latex.py --documentoptions pdftex --stylesheet=docutils.sty $1 `echo $1 | sed 's/\(.*\)\..*/\1.tex/'` +python c:/src/docutils/tools/rst2latex.py --documentoptions pdftex --stylesheet=docutils.sty $1 `echo $1 | sed 's/\(.*\)\..*/\1.tex/'` diff --git a/doc/transform_iterator.pdf b/doc/transform_iterator.pdf index 5517e99..2af10ab 100755 Binary files a/doc/transform_iterator.pdf and b/doc/transform_iterator.pdf differ diff --git a/doc/zip_iterator.pdf b/doc/zip_iterator.pdf index 81374a6..c5a6f21 100755 Binary files a/doc/zip_iterator.pdf and b/doc/zip_iterator.pdf differ