diff --git a/doc/GNUmakefile b/doc/GNUmakefile index 0774517..f1f1a86 100755 --- a/doc/GNUmakefile +++ b/doc/GNUmakefile @@ -12,6 +12,7 @@ MV = /bin/mv EGREP = /bin/egrep ECHO = /bin/echo PERL = /usr/bin/perl +PYTHON = python CAT = /bin/cat TOUCH = /bin/touch ZIP = /usr/bin/zip @@ -48,7 +49,7 @@ PRINTZIP = prints.zip SLIDEZIP = slides.zip # ... Depend -DEPENDFILES = .depend .depend-rst +DEPENDFILES = .depend GENFILE = .generated # ... List of extensions and files generated @@ -211,26 +212,21 @@ clean: ${RMRF} ${generated} # ... Target: create dependencies -depend: .depend-rst +depend: .depend # ... Target: dependency file (parse TEXFILES for multiinclude and includegraphics) -.depend: GNUmakefile ${TEXFILES} - ${RMRF} $@ - @for t in ${TEXSTEMS} ; do \ - ${ECHO} "Scanning $$t.tex"; \ - ${PERL} -e 'my $$target = shift @ARGV;' -e 'while (<>) { /\\multiinclude(\[.*?\])?{(.*?)}/ && print "$$target: $$2.0\n";}' $$t.pdf < $$t.tex >> $@; \ - ${PERL} -e 'my $$target = shift @ARGV;' -e 'while (<>) { /\\includegraphics(\[.*?\])?{(.*?)\.(.*?)}/ && print "$$target: $$2.$$3\n";}' $$t.pdf < $$t.tex >> $@; \ - done +# .depend: GNUmakefile ${TEXFILES} +# ${RMRF} $@ +# @for t in ${TEXSTEMS} ; do \ +# ${ECHO} "Scanning $$t.tex"; \ +# ${PERL} -e 'my $$target = shift @ARGV;' -e 'while (<>) { /\\multiinclude(\[.*?\])?{(.*?)}/ && print "$$target: $$2.0\n";}' $$t.pdf < $$t.tex >> $@; \ +# ${PERL} -e 'my $$target = shift @ARGV;' -e 'while (<>) { /\\includegraphics(\[.*?\])?{(.*?)\.(.*?)}/ && print "$$target: $$2.$$3\n";}' $$t.pdf < $$t.tex >> $@; \ +# done -.depend-rst: GNUmakefile ${RSTFILES} +.depend: GNUmakefile ${RSTFILES} ${RMRF} $@ - @for t in ${RSTSTEMS} ; do \ - ${ECHO} "Scanning $$t.rst"; \ - ${PERL} -e 'my $$target = shift @ARGV;' -e 'while (<>) { /^\.\. (include|image)::\s+(.*)/ && print "$$target: $$2\n";}' $$t.html < $$t.rst >> $@; \ - ${PERL} -e 'my $$target = shift @ARGV;' -e 'while (<>) { /^\.\. (include|image)::\s+(.*)/ && print "$$target: $$2\n";}' $$t.tex < $$t.rst >> $@; \ - done - + ${PYTHON} scanrst.py ${RSTFILES} > $@ # ... include dependency files # -include .depend --include .depend-rst +-include .depend diff --git a/doc/facade-and-adaptor.html b/doc/facade-and-adaptor.html index 5728b08..f754bcf 100755 --- a/doc/facade-and-adaptor.html +++ b/doc/facade-and-adaptor.html @@ -1415,7 +1415,7 @@ else R is reference and V is value_type, and where: if CategoryOrTraversal is use_default, C is iterator_traversal<Iterator>::type and otherwise C is -CategoryOrTraversal:
+CategoryOrTraversal.
if C is convertible to std::input_iterator_tag or @@ -1465,38 +1465,42 @@ convertible, and not to any more-derived traversal tag type.
indirect_iterator requirements
-CategoryOrTraversal argument shall be use_default or it -shall be convertible to one of the standard iterator or traversal -tags. If CategoryOrTraversal is not use_default, it shall -indicate the traversal category modeled by Iterator. If
-The expression *v, where v is an object of type +
The expression *v, where v is an object of iterator_traits<Iterator>::value_type, shall be valid -expression and convertible to reference. Also -indirect_iterator::reference must be convertible to -indirect_iterator::value. There are further requirements on -the iterator_traits<Iterator>::value_type if the Value +expression and convertible to reference. Iterator shall +model the traversal concept indicated by iterator_category. +Value, Reference, and Difference shall be chosen so +that value_type, reference, and difference_type meet +the requirements indicated by iterator_category.
+[Note: there are further requirements on the +iterator_traits<Iterator>::value_type if the Value parameter is not use_default, as implied by the algorithm for -deducing the default for the value_type member.
+deducing the default for the value_type member.]indirect_iterator models
-If CategoryOrTraversal is a standard iterator tag, -indirect_iterator is a model of the iterator concept corresponding -to the tag, otherwise indirect_iterator satisfies the requirements -of the most refined standard traversal concept that is satisfied by -the Iterator argument.
-indirect_iterator models Readable Iterator. If -indirect_iterator::reference(*v) = t is a valid expression (where -t is an object of type indirect_iterator::value_type) then -indirect_iterator models Writable Iterator. If -indirect_iterator::reference is a reference then -indirect_iterator models Lvalue Iterator.
+In addition to the concepts indicated by iterator_category, a +specialization of indirect_iterator models the following +concepts, Where v is an object of +iterator_traits<Iterator>::value_type:
++++
+- Readable Iterator if reference(*v) is convertible to +value_type.
+- Writable Iterator if reference(*v) = t is a valid +expression (where t is an object of type +indirect_iterator::value_type)
+- Lvalue Iterator if reference is a reference type.
+Two specializations of indirect_iterator are interoperable if +their Iterator parameters are interoperable.
indirect_iterator operations
-In addition to the operations required by the concepts modeled by -indirect_iterator, indirect_iterator provides the following -operations.
+In addition to the operations required by the concepts described +above, specializations of indirect_iterator provide the +following operations.
indirect_iterator();
diff --git a/doc/indirect_iterator.html b/doc/indirect_iterator.html index ab8bf92..14b31dc 100644 --- a/doc/indirect_iterator.html +++ b/doc/indirect_iterator.html @@ -129,7 +129,7 @@ else R is reference and V is value_type, and where: if CategoryOrTraversal is use_default, C is iterator_traversal<Iterator>::type and otherwise C is -CategoryOrTraversal: +CategoryOrTraversal.
if C is convertible to std::input_iterator_tag or @@ -179,38 +179,42 @@ convertible, and not to any more-derived traversal tag type.
indirect_iterator requirements
-CategoryOrTraversal argument shall be use_default or it -shall be convertible to one of the standard iterator or traversal -tags. If CategoryOrTraversal is not use_default, it shall -indicate the traversal category modeled by Iterator. If
-The expression *v, where v is an object of type +
The expression *v, where v is an object of iterator_traits<Iterator>::value_type, shall be valid -expression and convertible to reference. Also -indirect_iterator::reference must be convertible to -indirect_iterator::value. There are further requirements on -the iterator_traits<Iterator>::value_type if the Value +expression and convertible to reference. Iterator shall +model the traversal concept indicated by iterator_category. +Value, Reference, and Difference shall be chosen so +that value_type, reference, and difference_type meet +the requirements indicated by iterator_category.
+[Note: there are further requirements on the +iterator_traits<Iterator>::value_type if the Value parameter is not use_default, as implied by the algorithm for -deducing the default for the value_type member.
+deducing the default for the value_type member.]indirect_iterator models
-If CategoryOrTraversal is a standard iterator tag, -indirect_iterator is a model of the iterator concept corresponding -to the tag, otherwise indirect_iterator satisfies the requirements -of the most refined standard traversal concept that is satisfied by -the Iterator argument.
-indirect_iterator models Readable Iterator. If -indirect_iterator::reference(*v) = t is a valid expression (where -t is an object of type indirect_iterator::value_type) then -indirect_iterator models Writable Iterator. If -indirect_iterator::reference is a reference then -indirect_iterator models Lvalue Iterator.
+In addition to the concepts indicated by iterator_category, a +specialization of indirect_iterator models the following +concepts, Where v is an object of +iterator_traits<Iterator>::value_type:
++++
+- Readable Iterator if reference(*v) is convertible to +value_type.
+- Writable Iterator if reference(*v) = t is a valid +expression (where t is an object of type +indirect_iterator::value_type)
+- Lvalue Iterator if reference is a reference type.
+Two specializations of indirect_iterator are interoperable if +their Iterator parameters are interoperable.
indirect_iterator operations
-In addition to the operations required by the concepts modeled by -indirect_iterator, indirect_iterator provides the following -operations.
+In addition to the operations required by the concepts described +above, specializations of indirect_iterator provide the +following operations.
indirect_iterator();
diff --git a/doc/indirect_iterator_ref.rst b/doc/indirect_iterator_ref.rst index 700815b..627834e 100644 --- a/doc/indirect_iterator_ref.rst +++ b/doc/indirect_iterator_ref.rst @@ -70,45 +70,52 @@ following pseudo-code. We use the abbreviation ``R`` is ``reference`` and ``V`` is ``value_type``, and where: if ``CategoryOrTraversal`` is ``use_default``, ``C`` is ``iterator_traversal ::type`` and otherwise ``C`` is -``CategoryOrTraversal``: +``CategoryOrTraversal``. .. include:: facade_iterator_category.rst ``indirect_iterator`` requirements .................................. -The expression ``*v``, where ``v`` is an object of type +The expression ``*v``, where ``v`` is an object of ``iterator_traits ::value_type``, shall be valid -expression and convertible to ``reference``. [Note: there are -further requirements on the +expression and convertible to ``reference``. ``Iterator`` shall +model the traversal concept indicated by ``iterator_category``. +``Value``, ``Reference``, and ``Difference`` shall be chosen so +that ``value_type``, ``reference``, and ``difference_type`` meet +the requirements indicated by ``iterator_category``. + +[Note: there are further requirements on the ``iterator_traits ::value_type`` if the ``Value`` parameter is not ``use_default``, as implied by the algorithm for deducing the default for the ``value_type`` member.] - ``indirect_iterator`` models ............................ -If ``CategoryOrTraversal`` is a standard iterator tag, -``indirect_iterator`` is a model of the iterator concept -corresponding to the tag. Otherwise, ``indirect_iterator`` -satisfies the requirements of the most refined standard traversal -concept that is satisfied by the ``Iterator`` argument. +In addition to the concepts indicated by ``iterator_category``, a +specialization of ``indirect_iterator`` models the following +concepts, Where ``v`` is an object of +``iterator_traits ::value_type``: -``indirect_iterator`` models Readable Iterator. If -``indirect_iterator::reference(*v) = t`` is a valid expression (where -``t`` is an object of type ``indirect_iterator::value_type``) then -``indirect_iterator`` models Writable Iterator. If -``indirect_iterator::reference`` is a reference then -``indirect_iterator`` models Lvalue Iterator. + * Readable Iterator if ``reference(*v)`` is convertible to + ``value_type``. + + * Writable Iterator if ``reference(*v) = t`` is a valid + expression (where ``t`` is an object of type + ``indirect_iterator::value_type``) + * Lvalue Iterator if ``reference`` is a reference type. + +Two specializations of ``indirect_iterator`` are interoperable if +their ``Iterator`` parameters are interoperable. ``indirect_iterator`` operations ................................ -In addition to the operations required by the concepts modeled by -``indirect_iterator``, ``indirect_iterator`` provides the following -operations. +In addition to the operations required by the concepts described +above, specializations of ``indirect_iterator`` provide the +following operations. ``indirect_iterator();`` diff --git a/doc/new-iter-concepts.html b/doc/new-iter-concepts.html index c71fd0d..58e61ba 100755 --- a/doc/new-iter-concepts.html +++ b/doc/new-iter-concepts.html @@ -1024,7 +1024,6 @@ LocalWords: TraversalTag typename lvalues DWA Hmm JGS mis enum -->