Compare commits

..

522 Commits

Author SHA1 Message Date
b90f548ff3 Renamed remotely
[SVN r38365]
2007-08-02 02:20:09 +00:00
21fa6df366 .
[SVN r25039]
2004-09-13 13:53:02 +00:00
2bd11a540f This commit was manufactured by cvs2svn to create branch 'build'.
[SVN r25038]
2004-09-13 13:31:34 +00:00
3318c82f83 Copyright
[SVN r25037]
2004-09-13 13:31:33 +00:00
68791c337a Remove GPL'd material
[SVN r25036]
2004-09-13 13:30:33 +00:00
a396085bc0 Added new types boost::long_long_type and boost::ulong_long_type in boost/config.hpp and applied these types in place of "long long" throughout. As a result, almost all of boost now compiles cleanly with -ansi -pedantic with gcc. Changes tested with gcc 3.3, 2.95, VC7.1 and Intel 8.
[SVN r24899]
2004-09-04 10:34:49 +00:00
6196a6e591 merge new MPL version from 'mplbook' branch
[SVN r24874]
2004-09-02 15:41:37 +00:00
4e07575b78 Update tests for fixed postfix increment
[SVN r24617]
2004-08-20 16:04:11 +00:00
557ef60557 Converted files to the BSL.
[SVN r24614]
2004-08-20 11:10:24 +00:00
4b583d3aa0 License update
[SVN r24598]
2004-08-19 15:23:47 +00:00
3eca5e8f60 License updates
[SVN r24597]
2004-08-19 15:19:17 +00:00
5947d569b9 License update
[SVN r24596]
2004-08-19 15:11:49 +00:00
e469abbf57 Work around an MSVC-stlport ICE
[SVN r24567]
2004-08-18 19:00:18 +00:00
c141f6cc59 obsolete
[SVN r24508]
2004-08-16 14:24:49 +00:00
55f8a6380a Moved to BSL
[SVN r24446]
2004-08-12 17:13:07 +00:00
9c955e8af2 Moved to BSL
[SVN r24445]
2004-08-12 17:02:24 +00:00
82108581b9 Make sure that X(r++) works for writable iterators.
[SVN r24420]
2004-08-11 19:54:40 +00:00
c4834d363e More (C).
[SVN r24383]
2004-08-10 15:12:53 +00:00
7194aff64c Fixed license added (only) my (C).
[SVN r24379]
2004-08-10 14:44:17 +00:00
ca41a4f902 Fixed (C) and license.
[SVN r24378]
2004-08-10 14:41:52 +00:00
47a3392c80 Removed Boost.org copyrights and replaced with originating authors copyright instead.
[SVN r24372]
2004-08-10 12:53:34 +00:00
bd765a21fb Eliminated unreviewed, unused, noncompiling code
[SVN r24314]
2004-08-05 18:57:39 +00:00
cad110e0f3 aCC workaround from From: "DY, JERRY U \(SBCSI\)" <jd2419-at-sbc.com>
[SVN r24254]
2004-08-03 00:38:26 +00:00
3599398eca Workaround CW8 issues with using static_cast on templates with template ctors.
[SVN r24214]
2004-07-31 22:56:49 +00:00
dd72d599c8 Disable interop properly for vc6/7 using known SFINAE capabilities.
[SVN r24209]
2004-07-31 18:10:00 +00:00
1a9677d9dc Stop support CW7; workaround for aCC
[SVN r24191]
2004-07-30 16:36:36 +00:00
a6d200f262 Converted to Boost Software License, Version 1.0
[SVN r24055]
2004-07-26 00:32:12 +00:00
0c28649d0b Remove tabs in file.
[SVN r24043]
2004-07-25 17:12:17 +00:00
d6405ddd54 Fix license
[SVN r24034]
2004-07-25 14:24:27 +00:00
700db48ac7 add nested typedefs
[SVN r23644]
2004-07-16 19:58:03 +00:00
2241bb1ae3 A few fixes
[SVN r23542]
2004-07-14 12:33:36 +00:00
539add7de6 Made what I thought were the right fixes
[SVN r23519]
2004-07-14 01:19:14 +00:00
edb7528136 Only use proxy for *r++ if *r is also a proxy.
[SVN r23516]
2004-07-14 00:40:04 +00:00
254186d6bd added requirement to Forward Traversal Iterator concerning a == b iff *a == *b
[SVN r23513]
2004-07-13 20:19:56 +00:00
aa62f4f9c7 fixed a little buglet in the spec of Incrementable Iterator
[SVN r23511]
2004-07-13 20:06:07 +00:00
f0bc339d55 change Incrementable Iterator reqs to better match those of Input/Output Iterators
[SVN r23510]
2004-07-13 19:50:09 +00:00
2721c3c97e Repair postfix increment proxies for input iterators
[SVN r23508]
2004-07-13 17:23:53 +00:00
f49f68c8fe Fixed postfix increment for incrementable and single-pass iterator facade
[SVN r23456]
2004-07-12 03:18:49 +00:00
02f606816d faster compile (no iostream)
[SVN r23451]
2004-07-12 02:21:35 +00:00
1ffc31cc37 Bugfix
[SVN r23306]
2004-07-01 18:41:47 +00:00
0acc6c38ef Need to include <algorithm> to get std::swap
[SVN r23213]
2004-06-27 18:48:11 +00:00
da1e5aa3e8 Made value_ mutable to enable operator long() const to compile
[SVN r23208]
2004-06-27 15:09:46 +00:00
db0bc36f58 Update
[SVN r23085]
2004-06-11 11:18:50 +00:00
99bafe363c Remove is_xxx dependency.
[SVN r22878]
2004-05-20 15:35:56 +00:00
b310ccda97 Fixed typo
[SVN r22708]
2004-04-29 00:38:46 +00:00
2a9c00f5b2 Work around CW bug; see http://lists.boost.org/MailArchives/boost/msg57316.php.
[SVN r22655]
2004-04-18 12:23:53 +00:00
020d0b8f99 fixed a typop
[SVN r22612]
2004-04-06 15:59:40 +00:00
d21781d8d1 fixed a typo
[SVN r22611]
2004-04-06 15:41:34 +00:00
bed1d7fa7a Incorporated Keith MacDonald's comments
[SVN r22567]
2004-03-30 22:38:47 +00:00
0c3a68530e shared_container_iterator library:
- updated Copyright and License notices
 - Added shared_iterator_test to the iterator test suite.


[SVN r22140]
2004-02-02 22:16:36 +00:00
d3daa47561 Don't allow non-random-access-traversal iterators to be subtracted.
[SVN r22121]
2004-02-01 22:11:47 +00:00
62c993978a unneeded
[SVN r22100]
2004-02-01 04:14:03 +00:00
74f41dcb5b not needed
[SVN r22099]
2004-02-01 04:13:28 +00:00
c8d1461340 Added function_output_iterator and shared_container_iterator to index.
Updated outdated pdfs.


[SVN r22097]
2004-02-01 03:58:49 +00:00
13dcd5590f GCC2 workarounds; fixed permutation_iterator_example
[SVN r22048]
2004-01-29 13:33:33 +00:00
7f125cacb9 roll back mistake
[SVN r22045]
2004-01-29 05:56:47 +00:00
8cf04e1c7b Fixed PDF format as article
Added iterator_traits docs


[SVN r22043]
2004-01-29 05:55:26 +00:00
0122a0c8ec initial commit
[SVN r22041]
2004-01-29 03:44:57 +00:00
09549783cc added lvalue_concept_fail_expected.cpp
[SVN r22019]
2004-01-28 14:05:33 +00:00
273c1d784c new file
[SVN r22018]
2004-01-28 14:04:21 +00:00
a99ab81803 changed LvalueIteratorConcept to really catch errors
[SVN r22017]
2004-01-28 14:01:45 +00:00
0cb4ce54ef No need to test things not related to zip_iterator
[SVN r22012]
2004-01-27 21:24:20 +00:00
0670e05297 improved the abstract
[SVN r22010]
2004-01-27 18:47:31 +00:00
b353d45f2d added boost::ignore_unused_variable_warning(r);
[SVN r22009]
2004-01-27 18:34:00 +00:00
19d339c916 removed ReadableLvalue and WritableLvalue, added Lvalue
[SVN r22005]
2004-01-27 18:14:48 +00:00
506517191c new files for iterator concepts
[SVN r22004]
2004-01-27 17:03:46 +00:00
b502873f00 A few simplifications with the help of Intel tech support
[SVN r21997]
2004-01-27 12:42:59 +00:00
b838d27aa3 HTML updates
[SVN r21990]
2004-01-27 04:13:36 +00:00
17c373ded3 Added zip_iterator docs
[SVN r21988]
2004-01-27 04:12:54 +00:00
09e1cb9a38 Added transform_iterator, zip_iterator, and iterator_archetypes
[SVN r21987]
2004-01-27 04:07:10 +00:00
58288cfb48 Fixed parsed-literal
[SVN r21986]
2004-01-27 04:06:21 +00:00
cd730895ca Added PDF references
[SVN r21985]
2004-01-27 04:05:33 +00:00
2d2a84f8c4 Remove GPL'd material from CVS
[SVN r21984]
2004-01-27 04:04:00 +00:00
4871736269 Added pdfs
[SVN r21983]
2004-01-27 03:53:56 +00:00
fec82e2de8 Fixed interop downcasts
[SVN r21982]
2004-01-27 03:19:34 +00:00
a5b14e1a4f Remove copyright
[SVN r21981]
2004-01-27 03:17:30 +00:00
8480d452a9 vc6 ICE workarounds,
General simplification for compilers that don't support strict
interop.

Renamed "minus" -> "distance_from".


[SVN r21973]
2004-01-26 14:52:39 +00:00
5f870d780d vc6 linker workarounds
[SVN r21896]
2004-01-24 18:28:48 +00:00
010f715950 Borland workarounds
[SVN r21893]
2004-01-24 17:39:45 +00:00
020f2ab867 untabified
[SVN r21890]
2004-01-24 16:14:46 +00:00
2071230859 split constructor into two
[SVN r21863]
2004-01-21 16:26:04 +00:00
413d0b01cf added default constructor stuff to 9.31
[SVN r21862]
2004-01-21 16:25:41 +00:00
4abd97910d split the one constructor into two
[SVN r21861]
2004-01-21 16:20:39 +00:00
564ed3ed88 added a typo to 9.45
[SVN r21860]
2004-01-21 16:02:56 +00:00
c90814e515 removed mention of projection_iterator
[SVN r21859]
2004-01-21 15:58:29 +00:00
576395a469 added stuff about reference
[SVN r21858]
2004-01-21 14:24:50 +00:00
f75a60e074 #if def'd out the test on a writable base iterator
[SVN r21851]
2004-01-21 03:56:49 +00:00
3e5f366f4f added missing reverse_iterator wrapping of Iter
[SVN r21850]
2004-01-21 03:28:25 +00:00
a456f8d969 Workaround GCC2 eager instantiation bug.
[SVN r21847]
2004-01-20 19:40:50 +00:00
cfe17e7fe5 GCC2 workaround
[SVN r21846]
2004-01-20 19:38:54 +00:00
99891db75c last nights intense scramble to get a revision ready for the C++ std committee
[SVN r21828]
2004-01-19 18:52:48 +00:00
287c7ed0e7 Fixed some formatting.
[SVN r21824]
2004-01-18 21:21:06 +00:00
8bd881070c added changes from indirect iterator
[SVN r21823]
2004-01-18 21:18:22 +00:00
9cce6e8052 Finished 9.46 and fixed the ReST.
[SVN r21822]
2004-01-18 21:04:11 +00:00
b6068667c9 Fixed base() to always return const&. Cleaned up iterator_adaptor
specification of inheritance and base class parameters.


[SVN r21821]
2004-01-18 20:54:59 +00:00
309f741588 blah
[SVN r21818]
2004-01-18 20:44:10 +00:00
858e0e0c0b new file
[SVN r21817]
2004-01-18 20:26:02 +00:00
01fd0c92e3 initial commit
[SVN r21816]
2004-01-18 20:14:06 +00:00
23dcc53fed Add typos issue
[SVN r21815]
2004-01-18 20:13:23 +00:00
08cd7bf6e7 blah
[SVN r21814]
2004-01-18 20:09:56 +00:00
35c14adc12 initial commit
[SVN r21813]
2004-01-18 20:04:59 +00:00
3b992521af removed the word "options"
[SVN r21812]
2004-01-18 20:04:24 +00:00
646e78dc14 added transform_iterator_ref.diff's to 9.37
[SVN r21811]
2004-01-18 19:57:58 +00:00
4a7f6afd6a initial commit
[SVN r21810]
2004-01-18 19:56:39 +00:00
8294e14664 added smart pointer issue
[SVN r21809]
2004-01-18 19:53:29 +00:00
1102c88de7 removed an unchanged line
[SVN r21808]
2004-01-18 19:40:32 +00:00
c98620a552 new file
[SVN r21807]
2004-01-18 19:38:51 +00:00
24fcaed649 removed obsolete comment about istreambuf_iterator
[SVN r21806]
2004-01-18 19:23:42 +00:00
2c1eadfea3 added numbers for the new issues
also added new issue about transform iter


[SVN r21805]
2004-01-18 18:57:02 +00:00
ffe87e904f Changed contact witt. Fixed typo.
[SVN r21804]
2004-01-18 17:04:54 +00:00
fbd5da7237 Removed reference to numeri types.
[SVN r21803]
2004-01-18 17:02:58 +00:00
ecccc89a70 Updated contact details witt.
[SVN r21802]
2004-01-18 16:41:20 +00:00
2bacc663b1 vc6 workaround and a bugfix
[SVN r21799]
2004-01-18 16:17:39 +00:00
c5dc0fbf0e Updated contact details witt.
[SVN r21797]
2004-01-18 15:51:06 +00:00
f358cf3bf4 Fixed typo. Fixed operator- Returns clause.
[SVN r21796]
2004-01-18 14:52:21 +00:00
6b00e8e0ca fixed bug in copy constructor of iterator_archetype, base was not
being copy constructed


[SVN r21785]
2004-01-16 18:46:08 +00:00
5abf4d7556 Added iterator_archetype doc.
[SVN r21783]
2004-01-16 18:31:09 +00:00
8ca421c140 Disabled default construction for iterator archetypes that are not forward traversal iterators
[SVN r21781]
2004-01-16 06:18:44 +00:00
1e3da4b77f Return base by const&
[SVN r21775]
2004-01-15 19:06:25 +00:00
7c784ad112 Base returns by const&
[SVN r21773]
2004-01-15 19:02:46 +00:00
f72d264b6b changed the element type to be different from the index type to bring out more errors
[SVN r21771]
2004-01-15 19:01:38 +00:00
c6526fc609 fixed the value_type and reference
[SVN r21770]
2004-01-15 19:01:03 +00:00
3741fa77d2 changed m_iterator to m_elt and changed semantics of base() to return m_order
[SVN r21768]
2004-01-15 18:51:59 +00:00
ca70d5dee8 small change to models section with respect to interop
[SVN r21767]
2004-01-15 18:50:43 +00:00
85ad1f59da removed the use of += and + on a non-random access iterator
[SVN r21766]
2004-01-15 18:49:05 +00:00
73e6736566 removed use of std::distance and std::advance
also simplified the implementation by using the index iterator as
the base instead of the element iterator


[SVN r21765]
2004-01-15 18:48:35 +00:00
c08cc33394 Added thomas' interoperability idea
[SVN r21762]
2004-01-15 17:08:04 +00:00
8c3ed628dc Handled the rest of my issues.
[SVN r21752]
2004-01-15 04:31:50 +00:00
792acdb408 small linguistic cleanups
[SVN r21747]
2004-01-15 00:06:57 +00:00
c3fd7076c1 Applied use of iterator-category to specialized adapters
[SVN r21745]
2004-01-15 00:01:33 +00:00
33f630beca deleted the paragraph about iterator_traversal that was the result of my confusion
[SVN r21744]
2004-01-14 23:50:59 +00:00
f1f6262be7 Fixed up definition of facade's iterator_category
fixed table widths in new-iter-concepts

cross-referenced interoperability concept in iterator_facade_tutorial

iterator_traversal can't satisfy UnaryTypeTrait: that's a boolean trait.


[SVN r21742]
2004-01-14 23:23:54 +00:00
42147b9e86 added more rationale to the operator-> issue
[SVN r21739]
2004-01-14 20:29:51 +00:00
2854c5c761 added pseudo-code for facade_iterator_category type function
[SVN r21736]
2004-01-14 19:57:11 +00:00
731576fbfe updates
[SVN r21735]
2004-01-14 18:04:41 +00:00
36329b053d Issue 9.23, 9.35
[SVN r21734]
2004-01-14 17:32:12 +00:00
3b93bb25ff Issue 9.26
[SVN r21733]
2004-01-14 17:15:32 +00:00
2496402a8c changed use of interoperable to say "if and only if"
also changed models section in indirect_iterator to mention
  iterator_traversal<>::type in addition to iterator_category


[SVN r21732]
2004-01-14 17:04:04 +00:00
8a0e9a4fe5 updated as per Dave's comments (about Interoperable Iterators)
[SVN r21730]
2004-01-14 14:25:45 +00:00
5049bcdce5 some changes to Interoperable Iterators as per Dave's comments
[SVN r21729]
2004-01-14 14:23:38 +00:00
1c77a5a4ab fix typo
[SVN r21723]
2004-01-14 04:48:53 +00:00
9c42ccb0bd Undo regressions
[SVN r21721]
2004-01-14 04:38:14 +00:00
dd50d3f2ab More progress on indirect_iterator
[SVN r21720]
2004-01-14 04:16:27 +00:00
5f3b97ceff added more examples
[SVN r21719]
2004-01-14 03:56:16 +00:00
2d1e40bd20 made some changes to InteroperableIteratorConcept to match the current
docs, as per suggestions from Dave and Thomas


[SVN r21718]
2004-01-14 03:44:45 +00:00
a0bb423311 added test for InteroperableIteratorConcept
[SVN r21717]
2004-01-14 03:43:48 +00:00
0f8c236e9d Some progress on indirect_iterator
[SVN r21710]
2004-01-13 23:03:18 +00:00
736044938d added interoperability to permutation iterator
[SVN r21707]
2004-01-13 21:22:34 +00:00
983ba32def changes from Thomas for Interoperable Iterators
[SVN r21706]
2004-01-13 21:18:09 +00:00
d2dae62215 removed same diff type req from Interoperator
and did some work on permutation iterator


[SVN r21705]
2004-01-13 21:00:31 +00:00
9540444061 Some progress on indirect_iterator
[SVN r21704]
2004-01-13 20:22:58 +00:00
482c0cf52b changed comments about inheritance overspec
[SVN r21702]
2004-01-13 19:58:23 +00:00
849f01a0d1 added use of interoperable with to specialized iterators
[SVN r21701]
2004-01-13 19:55:24 +00:00
11770763df a couple small edits to the iterator adaptor tutorial
[SVN r21700]
2004-01-13 19:35:41 +00:00
df66940f0f added another valid expression to Interoperable Iterators
[SVN r21699]
2004-01-13 19:25:15 +00:00
80f6a13e79 added Interoperable Iterators
[SVN r21698]
2004-01-13 19:21:18 +00:00
0f8aa07e5c Kill off outer cv-stripping of Dereferenceable
[SVN r21696]
2004-01-13 19:18:42 +00:00
6b77e7f8bd added that Interoperable Iterator refines Single Pass Iterator
[SVN r21694]
2004-01-13 19:02:19 +00:00
838decca95 chagned the name from InteroperatorConcept to InteroperatorIteratorConcept
[SVN r21693]
2004-01-13 18:56:36 +00:00
e6c5b80afd uncommented the constrains on the operations for InteroperableIteratorConcept
(also changed the name)


[SVN r21692]
2004-01-13 18:52:30 +00:00
e7b5604ec5 fixed a transform_iterator issue
[SVN r21688]
2004-01-13 18:30:23 +00:00
ea3baba376 changed the stuff about iterator_category in reverse_iterator to match
the language we decided on for filter_iterator


[SVN r21687]
2004-01-13 18:17:27 +00:00
c6a5b7c292 changed algorithm for iterator_facade::iterator_category
and for filter_iterator


[SVN r21686]
2004-01-13 18:09:30 +00:00
45e90e0134 switched to using the no_proxy version of input_iterator_archetype
[SVN r21685]
2004-01-13 18:06:08 +00:00
18b1414d6c changed iterator_facade_default_category to stop lying about output_iterator_tag
[SVN r21683]
2004-01-13 18:04:13 +00:00
7facdd8590 simplified make_filter_iterator
also regen html using newer rst


[SVN r21682]
2004-01-13 15:59:47 +00:00
6cf1230c13 tweaked the models section of counting_iterator
[SVN r21678]
2004-01-13 14:22:39 +00:00
d70b0d3f05 fix from Dave, removed req. for Readable Iterator from reverse_iterator
[SVN r21677]
2004-01-13 14:14:47 +00:00
527b5e3caa more fixes from Dave
[SVN r21676]
2004-01-13 14:10:54 +00:00
4e1b53ed36 added the requirement that Predicate be a class (not a function pointer)
to one of filter iterator's constructors


[SVN r21675]
2004-01-13 13:53:34 +00:00
eb69638be1 unspecified instead of implementation defined
[SVN r21674]
2004-01-13 13:51:28 +00:00
a5c4497c01 Separate scanning of .rst and .tex files
[SVN r21673]
2004-01-13 13:38:19 +00:00
1033aeb186 tweaks
[SVN r21672]
2004-01-13 13:36:55 +00:00
e5d502d2f8 tweaks
[SVN r21671]
2004-01-13 13:12:45 +00:00
55e4fe2ab7 Fix abstract formatting
[SVN r21670]
2004-01-13 12:54:41 +00:00
8e2d210d42 Various fixups
[SVN r21669]
2004-01-13 12:51:08 +00:00
ec8d069057 more work on the specification of iterator_category
[SVN r21662]
2004-01-13 05:56:29 +00:00
2edb688882 further edits to filter_iterator's iterator_category
[SVN r21661]
2004-01-13 05:19:22 +00:00
3403cbbae6 fixes to iterator_category spec for filter_iterator
[SVN r21660]
2004-01-13 03:20:14 +00:00
b52b9325ba regen the html
[SVN r21659]
2004-01-13 02:58:21 +00:00
1e3b131a84 some changes from Dave
[SVN r21658]
2004-01-13 02:53:04 +00:00
250a374e07 changes as per Dave's comments
[SVN r21656]
2004-01-13 02:15:04 +00:00
f618d71c0e generating html
[SVN r21653]
2004-01-13 00:29:42 +00:00
3d37ba5120 updated abstract for counting iterator
[SVN r21652]
2004-01-13 00:27:51 +00:00
e785cc70d1 some major changes to the requirements/models section of counting_iterator
[SVN r21651]
2004-01-12 21:18:52 +00:00
3bf52ec2f2 Finished iterator_adaptor tutorial
Added example test code
Rolled forward old counting_iterator abstract for boost docs.


[SVN r21649]
2004-01-12 20:58:22 +00:00
19dbb5304c I forget
[SVN r21648]
2004-01-12 20:50:44 +00:00
4d13c285ea updated to match the changes to the standards proposal
[SVN r21647]
2004-01-12 20:43:30 +00:00
08ce6903ce resolved Howards issue about a->m
[SVN r21646]
2004-01-12 20:31:44 +00:00
75e76eb637 added member typedefs to reverse_iterator spec
[SVN r21645]
2004-01-12 20:26:36 +00:00
954d12a04d indenting, and forgot to say on the last checkin, added member typedefs
[SVN r21644]
2004-01-12 20:19:50 +00:00
bcc0e80439 improved the models section of transform iterator to discuss old iterator
categories


[SVN r21643]
2004-01-12 20:18:41 +00:00
436f7411f8 resolved the istreambuf_iterator/reference issue
[SVN r21642]
2004-01-12 20:03:47 +00:00
21381f3fa7 removed constraints on reference from Readable Iterator
[SVN r21641]
2004-01-12 19:54:57 +00:00
db9d88ad7b updated some issues for indirect_iterator
[SVN r21640]
2004-01-12 19:30:48 +00:00
6085e03da0 resolved some issues with counting_iterator
[SVN r21639]
2004-01-12 19:01:57 +00:00
b2407b0191 resolved some issues with transform iterator
[SVN r21638]
2004-01-12 18:38:32 +00:00
8181625365 resolved issue with reverse iterator abstract
[SVN r21637]
2004-01-12 18:31:01 +00:00
24052c3dff a couple edits
[SVN r21636]
2004-01-12 18:07:12 +00:00
c15707fd70 added requirements on the Base argument
[SVN r21635]
2004-01-12 18:03:04 +00:00
b4f1b069be Really re-resolved title level problem
A few minor edits


[SVN r21634]
2004-01-12 18:02:50 +00:00
129815f3dd added links to example source code
[SVN r21632]
2004-01-12 16:10:29 +00:00
a7eaa017b1 Fixed general formatting, re-resolved title level problem,
acknowledged Keith MacDonald for inspiring the tutorial.


[SVN r21631]
2004-01-12 16:05:15 +00:00
6e326921f9 moved from utility
[SVN r21630]
2004-01-12 16:00:57 +00:00
4a3fd9984d filled out some missing operator--, added a comment about the operations and concepts,
and added some text to the indirect iterator example


[SVN r21629]
2004-01-12 15:53:04 +00:00
0074f50573 fixed problem with V, C, R, D
[SVN r21628]
2004-01-12 15:26:20 +00:00
ba8dc44eac new file
[SVN r21627]
2004-01-12 15:20:01 +00:00
b0d3d34fcd small edit to emphasize where the iterator adaptor and facade docs are
[SVN r21626]
2004-01-12 15:14:26 +00:00
7f0ed4f5be resolved title level problem
[SVN r21625]
2004-01-12 15:02:21 +00:00
7fc54ec2d8 a couple small edits to the iterator facade tutorial
[SVN r21620]
2004-01-12 04:36:23 +00:00
f0add8a043 added base() function to the interface of the specialized adaptors
[SVN r21619]
2004-01-12 04:17:26 +00:00
5b608e114b added example to permutation iterator, and also the make_... function
[SVN r21616]
2004-01-12 03:41:47 +00:00
06e1fa88b9 tutorial updates
[SVN r21615]
2004-01-12 02:49:55 +00:00
a6b2a098c1 new file
[SVN r21614]
2004-01-12 01:53:23 +00:00
4f0684ffac fixed a typo
[SVN r21613]
2004-01-12 01:52:47 +00:00
fbfcf97e18 some progress on transform_iterator
[SVN r21612]
2004-01-12 01:51:27 +00:00
45b6a92f61 added make_xxx functions for some of the iterators
[SVN r21611]
2004-01-12 01:30:47 +00:00
c6814925ac some progress
[SVN r21610]
2004-01-12 00:48:21 +00:00
6c114a539d changed models section
[SVN r21609]
2004-01-12 00:14:12 +00:00
b6c82968b8 new file
[SVN r21605]
2004-01-11 17:48:31 +00:00
2271aceab8 improvements to the spec
[SVN r21604]
2004-01-11 17:46:42 +00:00
0db07e9455 added concept checks
[SVN r21603]
2004-01-11 17:45:33 +00:00
f158591054 added const to dummyT for readable_lvalue
[SVN r21601]
2004-01-11 17:28:45 +00:00
1b210355bf added bodies to functions to prevent linker errors
[SVN r21600]
2004-01-11 17:27:59 +00:00
075c341a37 added const to operator*
[SVN r21599]
2004-01-11 16:54:00 +00:00
bab25c04db added some missing peices to the spec
[SVN r21598]
2004-01-11 16:40:48 +00:00
2a60dfa087 progress on filter iterator
[SVN r21594]
2004-01-11 15:46:34 +00:00
ef69c73e89 added some concept checks
[SVN r21593]
2004-01-11 15:45:16 +00:00
bf9534e1ee Changed the constructor parameter to be a const reference.
[SVN r21592]
2004-01-11 15:43:29 +00:00
0e11bd6a0c added some more tests
[SVN r21591]
2004-01-11 15:13:07 +00:00
ff10cfd5dc Fix case of is_pod.hpp
[SVN r21589]
2004-01-11 15:11:52 +00:00
400f35cbb0 fixed some bugs
[SVN r21588]
2004-01-11 15:09:26 +00:00
59340bca4c Began tutorial and examples.
[SVN r21584]
2004-01-11 01:02:36 +00:00
6c62f31f0a Updated pointee and indirect_reference so that pointee represents the
immutability of the pointed-to type via const qualification.  The
pointee of a proxy-based iterator will be const qualified unless a
mutable reference to the value_type can be bound to the returned
proxy.

Added a test for pointee

Fixed iterator_facade so operator[] result type computation didn't
cause a problem with abstract types.

Updated iterator_facade operator[] docs for accuracy.

Allowed Borland to simply fail the indirect_iterator_member_types test
because of its lame const-dropping, instead of trying to work around
it.


[SVN r21579]
2004-01-11 00:03:09 +00:00
dd5fb425fa updates
[SVN r21577]
2004-01-10 19:00:48 +00:00
c903cf4801 resolved a cvs confict in merge
added a rationale note about indirect_iterator requirements muddled


[SVN r21576]
2004-01-10 18:05:19 +00:00
1c26f7dd43 ETI workarounds for vc6
[SVN r21547]
2004-01-08 14:57:59 +00:00
c546a3e875 Intel8 GCC-spoofing workaround
[SVN r21531]
2004-01-07 15:21:57 +00:00
2183de96a1 Reverted unwanted checkin.
[SVN r21520]
2004-01-06 19:44:06 +00:00
fb1fc6f909 *** empty log message ***
[SVN r21519]
2004-01-06 19:37:17 +00:00
20b31d1cca Added traits:
is_incrementable.hpp: checks whether ++x is well-formed

   pointee.hpp: value_type of iterators or smart pointers

   indirect_reference.hpp: reference type of iterators or smart pointers

indirect_iterator.hpp
indirect_iterator_member_types.cpp

   Use pointee/indirect_reference to select value/reference type.

iterator_concepts.hpp: Fixed interoperable test.  Hardly tests enough, but it's a start

minimum_category.hpp: Better error messages for vc6

indirect_iterator_test.cpp: Workarounds for compilers without SFINAE

static_assert_same.hpp: Informative error reports; added a macro.

zip_iterator_test.hpp: Added missing #include

Jamfile: made zip_iterator test pass with vc6/stlport


[SVN r21514]
2004-01-06 17:35:36 +00:00
f716d705c5 change to iterator_traits for custom pointer
[SVN r21483]
2004-01-04 18:44:54 +00:00
1fca93be10 first stab at simplified version
[SVN r21482]
2004-01-04 18:44:29 +00:00
f96a2b3d81 removed referent, use iterator_traits for smart pointers too
[SVN r21481]
2004-01-04 18:17:32 +00:00
a7edd713d8 added no_traversal_tag
[SVN r21480]
2004-01-04 18:03:13 +00:00
bca1c2dea5 Added my name to some issues, fixed more of the formatting.
[SVN r21479]
2004-01-04 17:08:56 +00:00
dfad37d0f9 added indirect_iterator_member_types.cpp
[SVN r21478]
2004-01-04 16:35:22 +00:00
3376955b80 added a test with no defaults
[SVN r21477]
2004-01-04 16:15:55 +00:00
e98b130d77 fixed a bug in get_from_iter
[SVN r21476]
2004-01-04 16:07:58 +00:00
a450053b0a no change
[SVN r21475]
2004-01-04 16:07:24 +00:00
0b5b315a7f Re-ReST-ify
[SVN r21474]
2004-01-04 14:10:44 +00:00
5cc31f6539 removed inheritance, specified member types explicitly
[SVN r21471]
2004-01-04 04:29:50 +00:00
f0248daa1e a few edits
[SVN r21470]
2004-01-04 04:27:43 +00:00
798562e75b fixed a bug in default_indirect_value
[SVN r21469]
2004-01-04 04:26:23 +00:00
68e7d3f0d5 new file
[SVN r21468]
2004-01-03 22:58:56 +00:00
e9bb297ed2 ReST-ified
[SVN r21467]
2004-01-03 21:55:25 +00:00
d5e525dd19 added my name to a bunch of them
[SVN r21465]
2004-01-03 20:39:39 +00:00
c326818764 intel 8.0 workaround
[SVN r21464]
2004-01-03 20:38:58 +00:00
57ec457f32 replaced old list with Matt's list, and added some missing ones
[SVN r21463]
2004-01-03 20:31:48 +00:00
c04b13641f GCC-3.1 deque iterator no-interop workaround.
[SVN r21461]
2004-01-03 20:21:41 +00:00
0bf570c98d Workaround for older EDGs
[SVN r21455]
2004-01-03 16:00:49 +00:00
28dfcbd6b0 Fixes for gcc-3.4
[SVN r21453]
2004-01-03 02:47:08 +00:00
9338b11799 Fix tabs in file.
[SVN r21399]
2003-12-26 23:26:49 +00:00
ad5defc9af edits to take into account that the access requirements for Iterator are not
determined by the CategoryOrTraversal tag. The access req. is just readable.


[SVN r21343]
2003-12-19 21:20:36 +00:00
81242ad5ae further edits attempting to get the requirements section right
[SVN r21341]
2003-12-19 16:47:47 +00:00
8997a587e9 VC 7.1 workaround
[SVN r21320]
2003-12-18 11:31:25 +00:00
83de27a445 change from "same as" to "convertible to"
[SVN r21309]
2003-12-17 20:16:46 +00:00
44d7dfeb9b more edits
[SVN r21307]
2003-12-17 19:32:31 +00:00
84f22cde8d a little progress with indirect iterator
[SVN r21294]
2003-12-16 22:15:48 +00:00
9387c05d12 some edits
[SVN r21293]
2003-12-16 22:10:51 +00:00
66feb45676 finished adding all the issues form the reflector
[SVN r21292]
2003-12-16 20:43:27 +00:00
bdbfcd308e starting dumping some issues in here
[SVN r21291]
2003-12-16 17:04:15 +00:00
44757cfcc1 Fixed typo
[SVN r21240]
2003-12-12 16:42:51 +00:00
c1be620888 Fix vc7.1 workaround. Beman reports vc8 working on this case.
[SVN r21228]
2003-12-11 15:27:16 +00:00
36d9a73a60 Workaround vc7.1 bug
[SVN r21223]
2003-12-11 13:37:09 +00:00
f14701232a Fix const/non-const interop for transform_iterator
[SVN r21172]
2003-12-07 20:33:18 +00:00
296ce3aa89 const/non-const interoperability.
[SVN r21171]
2003-12-07 20:28:30 +00:00
1f7c08615f Added BOOST_NO_SFINAE config macro, removed internal version from
the iterator library


[SVN r21125]
2003-12-03 19:26:15 +00:00
1b29ec1741 Fixed issue with "writable iterators must include in their
documentation..."


[SVN r21082]
2003-12-02 14:44:43 +00:00
593311f43e Cleaned up some of Jeremy's wording. Added a few comments on changes
from the accepted paper.  Committed Python doc regeneration scripts.


[SVN r21079]
2003-12-02 13:10:55 +00:00
fe52e0d665 updated to match .rst
[SVN r21059]
2003-12-02 03:12:04 +00:00
52e34b2e26 removed iterator_tag and reworded some paragraphs
[SVN r21046]
2003-12-01 16:38:36 +00:00
8cfa950f10 moved a paragraph about algorithm changes
[SVN r21043]
2003-12-01 15:02:48 +00:00
cc282d81c0 vc6 workaround
[SVN r21007]
2003-11-29 21:02:45 +00:00
8c01469b3c Fixes for libs without numeric_limits<wchar_t> specializations.
[SVN r21006]
2003-11-29 18:19:24 +00:00
a6ffdb8ebf More warning suppression
[SVN r20996]
2003-11-28 16:25:35 +00:00
2ad29da3b5 Bcc564 workaround
[SVN r20995]
2003-11-28 16:21:15 +00:00
459387273b Minor doc fixes
[SVN r20933]
2003-11-24 05:13:03 +00:00
09ea8d27e2 Documentation updates, added GNUMakefile for building
[SVN r20931]
2003-11-24 05:02:46 +00:00
ca1ee306b7 Remove bogus check for use_default
[SVN r20926]
2003-11-23 17:07:36 +00:00
b63814d3f2 Check *implicit* convertibility from reference to value
[SVN r20925]
2003-11-23 17:07:04 +00:00
dfc09c4b26 Make sure a precise copy of n1550 is in the CVS.
[SVN r20908]
2003-11-22 13:57:57 +00:00
f6715137cf vc6 workaround
[SVN r20906]
2003-11-22 03:20:17 +00:00
f18906ac6b Removed access category tags from iterator library, made corresponding
changes elsewhere.

boost/iterator and libs/iterator/test were updated from
branch "simplify"


[SVN r20905]
2003-11-22 01:18:37 +00:00
522195fd64 Stop making the incorrect assumption that x == j[n] is legitimate
whenever x = j[n] and x == x are.  j[n] may be a proxy convertible to
typeof(x) and x == x may use a templated operator==, which wouldn't
match the proxy.


[SVN r20887]
2003-11-20 21:36:54 +00:00
bdc1304326 Got everything working with GCC
[SVN r20864]
2003-11-19 20:08:00 +00:00
633bb0762e new version
[SVN r20852]
2003-11-19 01:24:28 +00:00
b0b5699a01 added more stuff about removing iterator_tag
[SVN r20851]
2003-11-19 01:23:55 +00:00
943d2c872b removing iterator_tag
[SVN r20850]
2003-11-19 01:05:00 +00:00
4ec68b7a0e Note missing link
[SVN r20845]
2003-11-18 16:03:24 +00:00
e295f71a85 fix emacs-o
#2


[SVN r20840]
2003-11-18 03:04:15 +00:00
a8a68dbb7b fix emacs-o
[SVN r20839]
2003-11-18 03:02:40 +00:00
8d5717081e Factor out any_conversion_eater
[SVN r20838]
2003-11-18 03:00:39 +00:00
76880f6ce2 initial commit
[SVN r20837]
2003-11-18 02:58:15 +00:00
50e645261c responses to Dave's comments
[SVN r20835]
2003-11-17 20:21:40 +00:00
f25ff7a1a4 Edits for clarity and correctness.
[SVN r20831]
2003-11-17 17:15:26 +00:00
104faa5ab3 new file
[SVN r20830]
2003-11-17 16:52:29 +00:00
4cc5f9a4d6 iterator_categories reformed, test added
[SVN r20829]
2003-11-17 16:52:15 +00:00
7946d32cef added my name to the Author list
[SVN r20828]
2003-11-17 16:33:28 +00:00
69d8856572 major revision, narrowed the focus of the paper
[SVN r20826]
2003-11-17 16:24:29 +00:00
c055f1afae fixed typo
[SVN r20805]
2003-11-13 18:18:23 +00:00
cb34b65f3f Fix missing is_readable_iterator test
Fix naming for is_lvalue_iterator and is_mutable_lvalue_iterator


[SVN r20772]
2003-11-10 04:13:16 +00:00
f8cd96cb2e Added
[SVN r20771]
2003-11-10 04:07:26 +00:00
fed5967d9d checkpoint
[SVN r20728]
2003-11-07 19:03:58 +00:00
81870ac8b6 progress
[SVN r20691]
2003-11-06 03:07:31 +00:00
6ef3e5d1c7 Added is_readable_iterator, is_writable_iterator tests and preliminary issues document
[SVN r20686]
2003-11-05 21:48:16 +00:00
dfa751077a Added is_lvalue_iterator
[SVN r20632]
2003-11-04 08:03:29 +00:00
14134e4610 Revert attempted fix for MSVC 6, which broke Borland
[SVN r20618]
2003-11-03 22:04:07 +00:00
c7bec1cf56 A little extra qualification to help out MSVC 6
[SVN r20606]
2003-11-02 19:51:23 +00:00
e888f18b5a Edits for committee meeting, moving algorithm changes to suggestions for WP.
[SVN r20568]
2003-10-30 21:11:10 +00:00
15abd4c56e removed algorithm changes
[SVN r20567]
2003-10-30 19:10:02 +00:00
17026cc30d Fixed is-writable computation. Traits protocol still needs fixing.
[SVN r20398]
2003-10-16 13:57:35 +00:00
1c39976ccd Correct broken #include
[SVN r20231]
2003-09-30 12:22:56 +00:00
361f62d022 Add V2 Jamfile
[SVN r20211]
2003-09-29 16:27:55 +00:00
ebb09db44e Separate access and traversal for iterator_adaptor
[SVN r20162]
2003-09-22 19:55:01 +00:00
50fe1b062b fixed another small bug in inherit-category
[SVN r20161]
2003-09-22 16:51:02 +00:00
30ca43dd08 fixed bug in inherit-category that Thomas found
[SVN r20160]
2003-09-22 16:48:40 +00:00
ac0c6461fb small edits
[SVN r20159]
2003-09-22 16:32:56 +00:00
d85b8db0aa added more design rationale, and moved some text
[SVN r20158]
2003-09-22 16:28:27 +00:00
a3856b5c60 Typos
[SVN r20157]
2003-09-22 16:24:44 +00:00
20e2818844 fixed iterator_tag in first part to match iterator_tag in the second part
[SVN r20156]
2003-09-22 16:07:24 +00:00
d68ac3db4c hierarchy->group
[SVN r20155]
2003-09-22 16:04:44 +00:00
5efcabf3bd small change to iterator_tag body
[SVN r20154]
2003-09-22 15:55:22 +00:00
9ac583096c added the paper number and resolved some conflicts
[SVN r20152]
2003-09-22 15:45:58 +00:00
1710c484b3 Table formatting tweaks for PDF/tex generation.
Some minor editing for language improvements.


[SVN r20151]
2003-09-22 15:10:34 +00:00
f6cbffeda0 updated to match the rst file
[SVN r20150]
2003-09-22 13:58:20 +00:00
50ab635593 Changed email address.
[SVN r20148]
2003-09-22 08:43:20 +00:00
d958a5bc82 change to lvalue stuff and changing access tag to enum and bits
[SVN r20145]
2003-09-22 04:57:00 +00:00
5339d7a9d4 Reverted change to traversal category.
[SVN r20131]
2003-09-21 11:13:46 +00:00
fd29e538ed Minor grammatical correction + comment
[SVN r20130]
2003-09-21 09:17:31 +00:00
1c41a7d0ec some edits based on comments from Howard Hinnant
[SVN r20125]
2003-09-21 00:30:15 +00:00
85873e924a some minor edits
[SVN r20124]
2003-09-20 23:43:30 +00:00
d9b4e41d5a Made transform_iterator documentation refer to result_of.
[SVN r20123]
2003-09-20 21:30:10 +00:00
4968b50fc2 Remove outdated comment; use boost::detail::iterator_traits instead of
std::iterator_traits exclusively.


[SVN r20117]
2003-09-19 18:44:53 +00:00
cbeb7f0632 fixed up copyrights, some small progress on new adaptor category choice semantics
[SVN r20047]
2003-09-14 02:17:41 +00:00
abf8390020 Fix the implementation of operator_arrow_result so that it checks the
reference type instead of the category.


[SVN r20046]
2003-09-14 01:53:59 +00:00
2c89e2b15a initial commit
[SVN r19978]
2003-09-09 03:22:50 +00:00
3f49409843 Use the import rule
[SVN r19968]
2003-09-08 17:38:49 +00:00
abafc5d1be Added missing lambda support for broken compilers
[SVN r19936]
2003-09-06 14:24:01 +00:00
2b7ed5f7a8 Added traversal_category and access_category specializations for MPL lambda support
[SVN r19921]
2003-09-04 21:15:38 +00:00
f801c39a59 Removed code-breaking change from boost/detail/iterator.hpp and
corresponding workarounds from tests.

Added permutation_iterator_test to the suite after fixing it up -- it
was riddled with bugs!


[SVN r19841]
2003-08-28 20:18:51 +00:00
bb7ac6bd84 Moved to much cleaner system of using BOOST_TT_BROKEN_COMPILER_SPEC
for handling vc6/7 deficiencies with iterator_traits.

Fixed a bug in iterator_facade which was causing incomplete types to
be passed through is_convertible.

Reinstated libs/utility/iterator_traits_test.cpp


[SVN r19840]
2003-08-28 16:52:02 +00:00
f325582c40 some fixes to writable iterators
[SVN r19609]
2003-08-14 20:05:44 +00:00
36feca8a52 Updated shared_container_iterator to use the new iterator adaptors library.
Updated the documentation and examples as well to reflect the changes.


[SVN r19535]
2003-08-11 16:29:47 +00:00
a5179f6dfc clean up formatting
[SVN r19476]
2003-08-06 14:36:16 +00:00
f98f3497b8 generated output
[SVN r19468]
2003-08-05 19:48:41 +00:00
76af84c0e7 factoring the specialized iterator adaptors
[SVN r19467]
2003-08-05 19:42:37 +00:00
0f42b93c3b factored iterator adaptor stuff and a few other edits
[SVN r19465]
2003-08-05 18:19:55 +00:00
19977c757f factored iterator facade stuff into several files
[SVN r19464]
2003-08-05 16:36:51 +00:00
508696a169 initial commit
[SVN r19349]
2003-07-29 22:25:39 +00:00
3ab9da6a99 Added dividers
[SVN r19348]
2003-07-29 22:24:57 +00:00
bd3312cdf2 Add empty :alt: field for the logo so it doesn't produce document
title text


[SVN r19347]
2003-07-29 21:20:39 +00:00
87f93ec521 initial commit
[SVN r19345]
2003-07-29 16:11:14 +00:00
afa92675a2 Fixed struct/class mixup in indirect_iterator declaration.
[SVN r19249]
2003-07-22 07:56:08 +00:00
ed8c60c20b Improved category handling in iterator_adaptor.
[SVN r19231]
2003-07-20 19:18:40 +00:00
3fe0d4b532 * Use boost::referent<> metafunction for detecting the value type of
indirect_iterator.

* Change the order of tests in the Jamfile so expected failures come
  last, accounting for some recent Boost.Build change I suppose.


[SVN r19158]
2003-07-16 19:35:46 +00:00
8a51271e3b deque libcomo workaround
[SVN r19143]
2003-07-16 10:36:53 +00:00
52c0d22cff Bugfixes and workarounds
[SVN r19121]
2003-07-14 23:05:57 +00:00
e4447b8e83 Bug fix for code not being exercised currently.
[SVN r19118]
2003-07-14 21:31:44 +00:00
42e873e10c various bugfixes. filter_/transform_iterator were misusing enable_if
in a non-template context , and iterator_facade needed a forward
declaration for full conformance.


[SVN r19112]
2003-07-14 16:22:10 +00:00
57a40c8cd2 Added arg dependent workaround for msvc < 7.1
[SVN r19110]
2003-07-14 13:13:49 +00:00
a982c42303 Various updates and clarifications.
[SVN r19106]
2003-07-13 22:47:15 +00:00
9db269bb5b iterator-categories.html is obsolete.
[SVN r19103]
2003-07-13 21:50:30 +00:00
e5eaaf6a55 Fix detail::enable_if -> iterators::enable_if (really this time)
^


[SVN r19102]
2003-07-13 21:45:33 +00:00
2225787093 Fix detail::enable_if -> iterator::enable_if
[SVN r19101]
2003-07-13 20:22:47 +00:00
f19c1c4059 Moved enable_if to boost::iterators from boost::detail to avoid
conflicting with the definition in the function library.


[SVN r19092]
2003-07-13 01:27:38 +00:00
b0aef5a66d Fixup some tables. Restore the equivalence between readable
single-pass iterator and input iterator by restricting the allowed
return type of r++.


[SVN r19091]
2003-07-12 20:16:49 +00:00
dfc43d81cf Fix a couple of typos
[SVN r19089]
2003-07-12 16:39:19 +00:00
eda969d7b5 add "subproject" line
[SVN r19086]
2003-07-12 10:41:38 +00:00
4c8415a99f Get examples working, mostly. Some interface expansion for a few of
the adaptors, allowing default construction of UnaryFunction and
Predicate arguments when they are class types.


[SVN r19081]
2003-07-12 04:15:13 +00:00
1d6f36e35d Move to new iterator adaptors
[SVN r19074]
2003-07-11 22:18:58 +00:00
04301ac6e9 Workaround some CWPro8 bugs
[SVN r19072]
2003-07-11 22:16:52 +00:00
a1ec9da737 Moved to boost/iterator (new version)
[SVN r19026]
2003-07-10 12:58:28 +00:00
e2a47bdbe5 Moved to boost/iterator
[SVN r19025]
2003-07-10 12:52:06 +00:00
2b1fc22b61 Move to Iterator Adapters from sand-box
[SVN r19024]
2003-07-10 12:49:49 +00:00
273ec4b975 BOOST_NO_MPL_AUX_HAS_XXX -> BOOST_MPL_NO_AUX_HAS_XXX
[SVN r18974]
2003-07-08 05:10:04 +00:00
4716891117 Move from boost-sandbox
[SVN r18960]
2003-07-07 14:26:16 +00:00
80d9e8e4c1 Move from boost-sandbox
[SVN r18959]
2003-07-07 14:20:34 +00:00
53eb5346de Move from boost-sanbox [ JDG ]
[SVN r18958]
2003-07-07 14:14:36 +00:00
e28ca345ea added copyright/license
[SVN r18836]
2003-06-18 13:20:02 +00:00
92d461cda1 Removed unused #include
[SVN r18474]
2003-05-20 23:20:49 +00:00
8dace06f04 add or update See www.boost.org comments
[SVN r16708]
2002-12-27 16:51:53 +00:00
ef0bff57d3 Use BOOST_WORKAROUND
[SVN r16528]
2002-12-06 19:09:22 +00:00
5bacd289b6 Roll back MPL v2 fix as it's no longer needed and was breaking Borland
[SVN r15264]
2002-09-11 14:46:40 +00:00
77c1698c6e mpl_v2 branch checkin
[SVN r15258]
2002-09-11 05:35:41 +00:00
2c302ee549 operator[] workaround from "Yitzhak Sapir" <yitzhaks@actimize.com>
[SVN r15244]
2002-09-09 21:15:41 +00:00
a586f20d19 Added Shared Container Iterator adaptor to iterator adaptor library.
[SVN r15169]
2002-09-05 14:05:29 +00:00
34c159dd8d Minor sunpro compartibility fix
[SVN r14741]
2002-08-08 16:42:18 +00:00
b22a3adc02 Add BOOST_NO_STD_ITERATOR_TRAITS workaround
[SVN r14663]
2002-08-03 22:45:13 +00:00
4a24e0f401 Fixed for VC7.1
[SVN r14433]
2002-07-13 12:11:06 +00:00
3844edc4bf Fixed input iterator requirements. For a == b a++ == b++ is no longer
required. See 24.1.1/3 for details. (Thomas Witt)


[SVN r13716]
2002-05-07 11:56:08 +00:00
fdd1601ba4 Added new config macro BOOST_HAS_MS_INT64 to detect presence of __int64 data type.
Modified boost source to use BOOST_HAS_LONG_LONG and BOOST_HAS_MS_INT64
   where appropriate to do so.


[SVN r13714]
2002-05-07 11:24:29 +00:00
e9b33b336c added typename keyword (Bertolt Mildner)
[SVN r13675]
2002-05-06 06:44:14 +00:00
2574365b5c added support for reference named_parameters
[SVN r13638]
2002-05-03 13:52:39 +00:00
12b9366f33 BOOST_NO_LIMITS should not be used by user code; use <boost/limits.hpp> instead
BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS should not be defined when
BOOST_NO_LIMITS is defined


[SVN r13340]
2002-04-01 18:57:43 +00:00
4772bb099e added more comments in the default_iterator_policies
[SVN r12706]
2002-02-04 20:25:45 +00:00
2be5179020 killed tabs
[SVN r12702]
2002-02-04 20:01:51 +00:00
8cb49713b4 half_open_range.hpp:
- counting_iterator_traits does not contain the iterator traits value_type,
    reference, pointer, etc.


[SVN r12526]
2002-01-27 14:55:20 +00:00
bd666dc0e9 added include guards
[SVN r12517]
2002-01-26 09:26:09 +00:00
57251d58cc Moved concept checks into a separate class, which makes MSVC better at dealing with them
[SVN r12255]
2002-01-09 12:14:16 +00:00
ebcb4d861a Borland workarounds
[SVN r12251]
2002-01-08 18:36:26 +00:00
15a7a839f9 Choose proxy for operator->() only if the reference type is not a reference.
Updated workarounds for __MWERKS__ == 0x2406


[SVN r12245]
2002-01-07 15:43:30 +00:00
76a307d31e fixes
[SVN r12146]
2001-12-24 19:27:39 +00:00
37aee7c13b Re-enabled some STATIC_ASSERTs for MSVC, using bitwise operators to avoid ICEs.
[SVN r12030]
2001-12-13 14:34:11 +00:00
50a502bb81 uses proper template argument names : ElementIterator and IndexIterator
[SVN r11826]
2001-11-30 11:14:24 +00:00
8a4839354e permutation_iterator_adaptor and generator
[SVN r11823]
2001-11-30 10:38:36 +00:00
4da7371246 *** empty log message ***
[SVN r11611]
2001-11-06 15:52:56 +00:00
e162a75e53 *** empty log message ***
[SVN r11609]
2001-11-06 15:28:04 +00:00
e60df6ad92 Workarounds for CWPro7, MSVC
Changed all "bind" to "select" (again), to avoid conflicting with Peter Dimov's code.


[SVN r11590]
2001-11-05 16:33:40 +00:00
4c2b3a9d2c Cleanups for MWERKS, without changing functionality
[SVN r11585]
2001-11-05 15:25:45 +00:00
75023a1dd3 Fixed comparison bugs; more remain.
[SVN r11581]
2001-11-05 06:25:31 +00:00
79370a6dfb non-named parameter version of some BGL algorithms
some VC++ compiler stuff


[SVN r11576]
2001-11-04 23:24:12 +00:00
4566798afc iterator adaptor update and related changes
[SVN r11554]
2001-11-04 02:50:10 +00:00
3fd1c4bc5d Changed projection_iterator to not rely on the default reference,
working around a limitation of detail::iterator_traits


[SVN r11340]
2001-10-04 21:02:12 +00:00
2d6f48d5ab Applied indirect_iterator patch from George A. Heintzelman <georgeh@aya.yale.edu>
Changed name of "bind" to "select" to avoid problems with MSVC.


[SVN r11337]
2001-10-04 19:36:28 +00:00
d1c7594344 Added borland bug fix
[SVN r11290]
2001-09-27 00:26:01 +00:00
ac327f51e9 commit of split-config, including any changes required to existing libraries (mainly regex).
[SVN r11138]
2001-09-18 11:13:39 +00:00
4e18b11263 metrowerks fix for decrement()
[SVN r10997]
2001-09-03 15:38:05 +00:00
81e3df2b36 changed _MSC_VER to BOOST_MSVC
[SVN r10705]
2001-07-25 19:38:41 +00:00
ac05307515 added "Traversal" to the names
[SVN r10297]
2001-06-08 17:05:37 +00:00
552a1e6785 replaced by iterator_categories.htm
[SVN r10296]
2001-06-08 16:58:44 +00:00
134b8b51aa updated
[SVN r10295]
2001-06-08 15:37:16 +00:00
efecfd17b9 updated to match working group paper
[SVN r10294]
2001-06-08 15:36:30 +00:00
799158841e this is the original
[SVN r10293]
2001-06-08 15:17:14 +00:00
582ebfd054 updated to match changes in the headers
[SVN r10260]
2001-06-03 21:07:46 +00:00
42e4db1539 updated to match my paper to the committee
[SVN r10259]
2001-06-03 21:06:49 +00:00
d7023154a3 Fix broken hyperlinks
[SVN r9980]
2001-04-25 13:22:53 +00:00
9582b2223c Change all eGroups references to YahooGroups
[SVN r9979]
2001-04-25 00:24:50 +00:00
d7908fb81f added public before the typedef for "type" in non_bidirectional_category
[SVN r9711]
2001-04-05 02:32:00 +00:00
e48cdcb94f blah
[SVN r9588]
2001-03-19 19:35:51 +00:00
0846ad5fd0 added links to iterator_traits.htm
[SVN r9587]
2001-03-19 18:05:17 +00:00
84663ff2e2 added more doc
[SVN r9586]
2001-03-19 18:01:41 +00:00
6de1934420 new file
[SVN r9585]
2001-03-19 17:41:49 +00:00
a110b9fd27 new files
[SVN r9578]
2001-03-18 19:06:33 +00:00
eb06c122d1 rigged new iterator_traits for backward compatibility
[SVN r9577]
2001-03-18 18:37:49 +00:00
cbbe851adb VC++ workaround: the forward_iterator real ref check is not working
[SVN r9499]
2001-03-08 20:01:35 +00:00
f6cc2e520f parameters following a named parameter list must get their types from
the named parameter list and not use the default


[SVN r9496]
2001-03-08 19:03:44 +00:00
4e29b5aa29 removed some #if 0's
[SVN r9491]
2001-03-08 17:01:25 +00:00
d924f56ad8 added support for optional named template parameters
[SVN r9487]
2001-03-08 16:33:14 +00:00
f27fd095f7 new file, part of the iterator adaptors library
[SVN r9350]
2001-02-27 05:49:55 +00:00
d22edf735a put policies type in private
[SVN r9290]
2001-02-20 16:00:21 +00:00
af8dd117d5 Rolled back reverse_iterator_pair_generator again, as it doesn't save typing on a conforming compiler
[SVN r9279]
2001-02-19 20:41:22 +00:00
149d07cda0 Fix missing comma bug
[SVN r9274]
2001-02-19 16:22:03 +00:00
e9d9bdbb10 Reinstated reverse_iterator_pair_generator
[SVN r9264]
2001-02-18 22:21:14 +00:00
8d8f828da5 changes to order of indirect_iterator_generator param list
[SVN r9246]
2001-02-17 22:03:06 +00:00
fc15f5f710 added Category parameter to the indirect iterator
[SVN r9240]
2001-02-17 19:59:54 +00:00
ef66d28b19 added "explicit" to iterator_adaptor constructor
[SVN r9234]
2001-02-17 01:44:41 +00:00
0c8d74863f Add an implicit conversion operator to operator_arrow_proxy as CW and BCC workarounds.
[SVN r9233]
2001-02-16 23:06:57 +00:00
1c73f1f2ae made filter_iterator_generator::policies_type public
[SVN r9230]
2001-02-16 21:27:26 +00:00
ee20a630dd Remove implication that a type generator may only generate a single type
[SVN r9221]
2001-02-16 05:24:45 +00:00
c2472221ef made the typedef policies_type public in iterator_adaptor
and private in filter_iterator_generator


[SVN r9205]
2001-02-15 06:07:00 +00:00
bf45977491 removed unnecessary typedefs from counting_iterator_traits
[SVN r9203]
2001-02-15 05:51:40 +00:00
1988994bd3 added dummy_constructor to dummyT so it can be used in concept archetypes
[SVN r9181]
2001-02-13 02:03:59 +00:00
5482763a93 added missing const qualifier
[SVN r9148]
2001-02-12 04:45:02 +00:00
2c2a3eab21 Use new iterator_adaptor interface, Fixes for Borland.
[SVN r9131]
2001-02-11 19:36:43 +00:00
dca20fae75 Use BOOST_STATIC_CONSTANT
[SVN r9129]
2001-02-11 19:33:47 +00:00
e3aaf2cc91 Switch to use of BOOST_STATIC_CONSTANT where possible
[SVN r9127]
2001-02-11 19:29:28 +00:00
ea4c7c7dd9 Removed workaround for older MIPSpro compiler. The workaround was
preventing the proper functionality of the underlying iterator being
carried forward into the iterator adaptor.

Also added is_bidirectional enum to avoid EDG compiler error.


[SVN r9123]
2001-02-11 18:57:31 +00:00
fd6ba58d5e Borland fixes up the wazoo. It finally works!
[SVN r9114]
2001-02-11 16:09:22 +00:00
268e70faa1 Reinstate one of John's fixes
[SVN r9113]
2001-02-11 16:06:12 +00:00
170b44763d Clean up after John Maddocks's (finally effective!) Borland fixes
[SVN r9111]
2001-02-11 14:07:11 +00:00
b2701f9f78 Borland compiler fixes
[SVN r9110]
2001-02-11 12:50:06 +00:00
ad4c5ab089 Use new iterator_adaptor<> interface
[SVN r9106]
2001-02-11 03:10:01 +00:00
c585adde71 Removed traits argument from iterator_adaptor<> and switched to explicit trait
specification for maximum ease-of-use.

Added comments to detail::iterator_defaults<>

Began using detail::iterator_defaults<> unconditionally for code clarity

Changed uses of `Iterator' to `Base' where non-iterators can be used.


[SVN r9104]
2001-02-11 03:05:50 +00:00
c5f24d0d72 A baby step that worked.
[SVN r9095]
2001-02-10 23:14:42 +00:00
dbb99b1cf3 Rolled in supposed Borland fixes from John Maddock, but not seeing any improvement yet
[SVN r9093]
2001-02-10 20:23:35 +00:00
be44a4714b Rolled in supposed Borland fixes from John Maddock, but not seeing any
improvement yet

Changed argument order to indirect_ generator, for convenience in the case of
input iterators (where Reference must be a value type).

Removed derivation of filter_iterator_policies from default_iterator_policies,
since the iterator category is likely to be reduced (we don't want to allow
illegal operations like decrement).

Support for a simpler filter iterator interface.


[SVN r9092]
2001-02-10 20:22:05 +00:00
e9f24023d4 completely removed constructor that was #if 0'd
[SVN r9076]
2001-02-10 17:57:51 +00:00
51616fa845 removed superfluous "typename"
[SVN r9068]
2001-02-10 09:34:19 +00:00
d7884b5613 *** empty log message ***
[SVN r9066]
2001-02-10 00:35:45 +00:00
15b5b66776 Improved interface to indirect_ and reverse_ iterators
[SVN r9065]
2001-02-10 00:26:55 +00:00
6f90982a45 roll back mistaken changes
[SVN r9062]
2001-02-09 21:04:09 +00:00
bfda34e9e0 try a better interface to indirect iterators
[SVN r9060]
2001-02-09 19:26:19 +00:00
5bfc03ed4a Cleaned up redundant test is_integral<T> || is_same<T,char> -> is_integral<T>
[SVN r9059]
2001-02-09 15:43:57 +00:00
490bee3a06 Factored out is_numeric computation. Borland still unhappy :(
[SVN r9057]
2001-02-09 15:21:02 +00:00
8174963a45 Rolled back Jeremy's new constructor for now; it was causing problems with counting_iterator_test
Attempted fix for Borland


[SVN r9055]
2001-02-09 15:17:17 +00:00
86e183c75e MSVC porting
[SVN r9052]
2001-02-09 05:44:13 +00:00
a94c9d0db2 Added iterator constructor to allow const adaptor
from non-const adaptee.

      Changed make_xxx to pass iterators by-value to
      get arrays converted to pointers.

      Removed InnerIterator template parameter from
      indirect_iterator_generator.

      Rearranged parameters for make_filter_iterator


[SVN r9050]
2001-02-09 05:26:01 +00:00
8a73dcd052 Fixed bidirectional iterator test so that --i is no longer a precondition.
[SVN r9048]
2001-02-09 04:29:11 +00:00
8496571204 Fold in Jeremy's improvement to make_reverse_iterator
[SVN r9042]
2001-02-09 03:29:11 +00:00
bafe0703a6 Beginning of a failed attempt to appease Borland
[SVN r9041]
2001-02-09 03:27:40 +00:00
b05b38810c just whitespace
[SVN r9030]
2001-02-08 04:45:18 +00:00
edf17ba001 put indirect_iterator_pair_generator back in
[SVN r9027]
2001-02-08 03:41:23 +00:00
ee9f140fae Removed all pair generator's except for projection and
some const adaptor generators.

Added make_xxx_iterator() helper functions for remaining
iterator adaptors.

Removed some traits template parameters where they
where no longer needed thanks to detail::iterator_traits.

Moved some of the compile-time logic into enums for
EDG compatibility.


[SVN r9024]
2001-02-08 03:07:33 +00:00
762e603013 rename counting_iterator() -> make_counting_iterator()
[SVN r9015]
2001-02-07 22:27:02 +00:00
6eeeb23332 Removed iterator_adaptor_pair_generator and
reverse_iterator_pair_generator (more such culling to come)

Improved comments

Changed all uses of std::iterator_traits as default arguments
to boost::detail::iterator_traits for improved utility in
non-generic contexts

Fixed naming convention of non-template parameter names


[SVN r9003]
2001-02-07 17:22:16 +00:00
07482538ed Produce operator-> proxy objects for InputIterators
Added static assertions to do some basic concept checks

Renamed single-type generators -> xxx_generator
Renamed const/nonconst iterator generators -> xxx_pair_generator

Added make_transform_iterator(iter, function)

The existence of boost::detail::iterator_traits allowed many
template arguments to be defaulted. Some arguments had to be
moved to accomplish it.


[SVN r8994]
2001-02-07 05:15:42 +00:00
d17e8dae9b codewarrior bug workaround
[SVN r8989]
2001-02-06 23:59:02 +00:00
5e1bc30db9 1st draft
[SVN r8939]
2001-02-05 05:39:43 +00:00
e8389d5f49 start of iterator concept tests
[SVN r8938]
2001-02-05 05:38:44 +00:00
332f18cf9f changed category for transform iterator traits to input iterator
[SVN r8936]
2001-02-04 23:45:57 +00:00
7aea7b7881 Factored counting_iterator stuff into boost/counting_iterator.hpp
[SVN r8935]
2001-02-04 23:37:01 +00:00
3e6796ab91 Fixed lvalue test
[SVN r8934]
2001-02-04 23:35:26 +00:00
893b5c0e25 Moved contents to boost/iterator_adaptors.hpp
[SVN r8933]
2001-02-04 23:34:29 +00:00
41c334d718 MWERKS bug workaround
[SVN r8931]
2001-02-04 20:35:23 +00:00
05336f45c4 Support for user-defined iterator categories
[SVN r8930]
2001-02-04 20:33:45 +00:00
90299982a6 Added counting_iterator_generator; updated comments
[SVN r8928]
2001-02-04 19:38:28 +00:00
93b54c15c8 Inital checkin
[SVN r8927]
2001-02-04 19:11:30 +00:00
25f9acabac corrected preconditions
[SVN r8925]
2001-02-04 19:00:03 +00:00
bb2ffadade Added lvalue test
[SVN r8922]
2001-02-04 18:25:55 +00:00
b6aa32721f Inital checkin
[SVN r8813]
2001-01-30 16:00:37 +00:00
8f41e88f85 fixed bug in assignment operator under VC++, which was the cause of
the access violation error in graph/test/graph.cpp. The root
  of this bug is in compressed pair, which VC++ has a hard time
  generating a correct operator= for.


[SVN r8767]
2001-01-25 04:57:16 +00:00
58b56fbabb Initial checkin
[SVN r8757]
2001-01-24 18:36:52 +00:00
9a4b0b576d added filter iterator
[SVN r8735]
2001-01-23 19:09:30 +00:00
c948483ec1 added some #ifdefs to prevent compilation of workaround code
[SVN r8688]
2001-01-21 20:28:02 +00:00
a31a89ae7d fixed some mwerks compiler errors
[SVN r8683]
2001-01-21 19:33:06 +00:00
b8ccd48fa3 Moved type<> to boost/type.hpp
[SVN r8678]
2001-01-21 06:20:20 +00:00
cf1d6a30af fixed some warnings under g++
[SVN r8600]
2001-01-15 03:10:11 +00:00
7fa5da6778 fixed dispatch for MIPSpro workaround
[SVN r8599]
2001-01-15 02:51:45 +00:00
34a9d4e702 another MIPSpro workaround
[SVN r8597]
2001-01-14 21:10:44 +00:00
42710d0967 also, advance_impl should take non-const Iter param
[SVN r8595]
2001-01-14 19:23:19 +00:00
487acf8c1c iter() should be i.iter()
[SVN r8594]
2001-01-14 19:21:29 +00:00
2 changed files with 232 additions and 767 deletions

232
doc/GNUmakefile Executable file
View File

@ -0,0 +1,232 @@
# GNUmakefile for postprocessing PDF files
#
# <20> 2000 IBM Corporation.
# Licensed under the GNU GPL.
########################################################################
# Make sure that the following macros are correct for your setup
########################################################################
# ... System utilities
RMRF = /bin/rm -rf
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
# ... TeX & postprocessors
PPOWER4 = ppower4
PDFLATEX = pdflatex
METAPOST = mpost
FIG2DEV = fig2dev
BIBTEX = bibtex
FOLIAGECUTTER = foliageCutter --verbose
RST2LATEX = rst2latex
RST2HTML = rst2html
TEX = latex
export TEX
########################################################################
# End of user servicable parts; don't fiddle with the remainder of this
# makefile unless you know what you do.
#
# You have been warned ;=)
########################################################################
# ... Variables
TEXFILES = $(strip $(wildcard *.tex))
RSTFILES = $(strip $(wildcard *.rst))
-include GNUmakefile.local
TEXSTEMS = $(strip $(patsubst %.tex,%,${TEXFILES}))
RSTSTEMS = $(strip $(patsubst %.rst,%,${RSTFILES}))
CUTFOILS = $(strip $(patsubst %,%---toc.tex,${TEXSTEMS}))
PDFFILES = $(strip $(patsubst %.tex,%.pdf,${TEXFILES}))
PRINTS = $(patsubst %.pdf,%-print.pdf,${PDFFILES})
PRINTZIP = prints.zip
SLIDEZIP = slides.zip
# ... Depend
DEPENDFILES = .depend
GENFILE = .generated
# ... List of extensions and files generated
texcrap = *.mpx *.log *.aux *.blg *-print.brf *-print.tex *.out
mpxcrap = mpxerr.tex mpxerr.pdf
generated = *.out *.[0-9] *.[0-9][0-9] *.bbl *.brf \
*.mp *.mmp *.pdf *.ps TMP-*.pdf *.ftoc\
${PRINTZIP} ${SLIDEZIP} ${GENFILE} ${DEPENDFILES} \
${texcrap} ${mpxcrap} ${CUTFOILS} $(strip $(wildcard *---*.tex))
# ... canned command to run PDFLaTeX
define run-pdflatex
@${ECHO} ""
@${ECHO} "---- Running PDFLaTeX on $<" && ${PDFLATEX} $<
@${ECHO} "---- Running PDFLaTeX on $< again" && ${PDFLATEX} $<
-@(${EGREP} -qi 'Rerun to get' $*.log && \
${ECHO} "---- Rerunning PDFLaTeX on $* to get cross-refs right" && \
${PDFLATEX} $<) || \
${ECHO} "---- No cross-refs correcting PDFLaTeX rerun required for $*"
-@(${EGREP} -qi $*.ftoc $*.log && \
${ECHO} "---- Rerunning PDFLaTeX on $* for FTOC" && \
${PDFLATEX} $<) || \
${ECHO} "---- No FTOC PDFLaTeX run required for $*"
-@(${EGREP} -qi 'Warning: Citation' $*.log && \
${ECHO} "---- Running BIBTeX on $*" && \
${BIBTEX} $* && \
${ECHO} "---- Running PDFLaTeX on $<" && \
${PDFLATEX} $<) || \
${ECHO} "---- No BIBTeX run required for $*"
-@(${EGREP} -qi 'Warning: .+undefined references' $*.log && \
${ECHO} "---- Running PDFLaTeX on $<" && \
${PDFLATEX} $<) || \
${ECHO} "---- No further PDFLaTex run required for $<"
@${ECHO} "Generated: $@ {$<}" >> ${GENFILE}
@${RMRF} ${texcrap}
endef
# ... canned command to run PDFLaTeX for printable versions
define run-pdflatex-for-print
@${ECHO} ""
@${ECHO} "---- Running PDFLaTeX on $*-print.tex" && ${PDFLATEX} $*-print.tex
@${ECHO} "---- Running PDFLaTeX on $< again" && ${PDFLATEX} $<
-@(${EGREP} -qi 'Warning: Citation' $*-print.log && \
${ECHO} "---- Running BIBTeX on $*-print" && \
${BIBTEX} $*-print && \
${ECHO} "---- Running PDFLaTeX on $*-print.tex" && \
${PDFLATEX} $*-print.tex) || \
${ECHO} "---- No BIBTeX run required for $*"
-@(${EGREP} -qi 'Warning: .+undefined references' $*-print.log && \
${ECHO} "---- Running PDFLaTeX on $*-print" && \
${PDFLATEX} $*-print.tex) || \
${ECHO} "---- No further PDFLaTex run required for $*-print"
@${ECHO} "Generated: $@ {$<}" >> ${GENFILE}
@${RMRF} ${texcrap}
endef
# DWA begin modifications
# ... Rule: How to generate TeX from ReST
%.tex: %.txt
@${ECHO} "---- Running rst2latex on $<"
${RST2LATEX} $< $@
@${ECHO} "Generated: $@ {$<}" >> ${GENFILE}
# ... Rule: How to generate TeX from ReST
%.tex: %.rst
@${ECHO} "---- Running rst2latex on $<"
${RST2LATEX} $< $@
@${ECHO} "Generated: $@ {$<}" >> ${GENFILE}
# ... Rule: How to generate HTML from ReST
%.html: %.txt
@${ECHO} "---- Running rst2html on $<"
${RST2HTML} $< $@
@${ECHO} "Generated: $@ {$<}" >> ${GENFILE}
# ... Rule: How to generate HTML from ReST
%.html: %.rst
@${ECHO} "---- Running rst2html on $<"
${RST2HTML} $< $@
@${ECHO} "Generated: $@ {$<}" >> ${GENFILE}
# DWA end modifications
# ... Rule: How to generate PDF from TeX
%.pdf: %.tex
$(run-pdflatex)
@${MV} $@ TMP-$@
@${ECHO} "---- Running PPower4 on $*"
${PPOWER4} -v TMP-$@ $@
@${RMRF} TMP-$@
@${ECHO} "Postprocessed: $*.pdf {$*.pdf}" >> ${GENFILE}
# ... Rule: How to generate printable PDF from TeX
%-print.pdf: %.tex
${PERL} -pe 's/^\\documentclass\[(.*?)\]/\\documentclass\[$$1,prints\]/;' < $< > $*-print.tex
$(run-pdflatex-for-print)
@${ECHO} "Generated: $*-print.pdf {$*.pdf}" >> ${GENFILE}
# ... Rule: How to generate cut foils from TeX master
%---toc.tex: %.tex
${FOLIAGECUTTER} --prefix=$* $<
# ... Rule: How to generate MetaPost from FIG
%.mp: %.fig
@${ECHO} "---- Running Fig2Dev (mp) on $<"
${FIG2DEV} -L mp $< $@
@${ECHO} "Generated: $@ {$<}" >> ${GENFILE}
# ... Rule: How to generate MultiMetaPost from FIG
%.mmp: %.fig
@${ECHO} "---- Running Fig2Dev (mmp) on $<"
${FIG2DEV} -L mmp $< $@
@${ECHO} "Generated: $@ {$<}" >> ${GENFILE}
# ... Rule: How to generate includable PS from FIG via MetaPost
%.mps: %.fig
@${ECHO} "---- Running Fig2Dev (mps) on $<"
${FIG2DEV} -L mp $< $*.mps.mp
@${RMRF} $*.mps.[0-9]
${METAPOST} $*.mps.mp
@${MV} $*.mps.0 $@
@${ECHO} "Generated: $@ {$<}" >> ${GENFILE}
# ... Rule: How to generate includable PS files from MultiMetaPost
%.0: %.mmp
@${ECHO} "---- Running MetaPost on $<"
@${RMRF} $*.[0-9] $*.[0-9][0-9]
${METAPOST} $<
@${ECHO} "Generated: $*.0{...} {$<}" >> ${GENFILE}
cleanup-crap:
@${RMRF} ${mpxcrap}
# ... Target: all
all: cleanup-crap ${DEPENDFILES} ${PDFFILES} ${PRINTS} ${PRINTZIP} ${SLIDEZIP}
@${ECHO} ""
@${TOUCH} ${GENFILE}
@${CAT} ${GENFILE}
@${RMRF} ${GENFILE}
# ... Target: ZIP files
zip zips: ${PRINTZIP} ${SLIDEZIP}
# ... Target: ZIP file containing printable versions of slides
${PRINTZIP}: .depend ${PDFFILES}
@${RMRF} ${PRINTZIP}
${ZIP} -r ${PRINTZIP} ${PRINTS}
@${ECHO} "Generated: ${PRINTZIP}" >> ${GENFILE}
# ... Target: ZIP file containing screen versions of slides
${SLIDEZIP}: .depend ${PDFFILES}
@${RMRF} ${SLIDEZIP}
${ZIP} -r ${SLIDEZIP} ${PDFFILES}
@${ECHO} "Generated: ${SLIDEZIP}" >> ${GENFILE}
# ... Target: clean up
clean:
${RMRF} ${generated}
# ... Target: create dependencies
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 ${RSTFILES}
${RMRF} $@
${PYTHON} scanrst.py ${RSTFILES} > $@
# ... include dependency files
# -include .depend
-include .depend

View File

@ -1,767 +0,0 @@
// (C) Copyright David Abrahams 2000. Permission to copy, use,
// modify, sell and distribute this software is granted provided this
// copyright notice appears in all copies. This software is provided
// "as is" without express or implied warranty, and with no claim as
// to its suitability for any purpose.
//
// (C) Copyright Jeremy Siek 2000. Permission to copy, use, modify,
// sell and distribute this software is granted provided this
// copyright notice appears in all copies. This software is provided
// "as is" without express or implied warranty, and with no claim as
// to its suitability for any purpose.
#ifndef BOOST_ITERATOR_ADAPTOR_DWA053000_HPP_
#define BOOST_ITERATOR_ADAPTOR_DWA053000_HPP_
#include <boost/iterator.hpp>
#include <boost/utility.hpp>
#include <boost/compressed_pair.hpp>
#include <boost/concept_check.hpp>
// I was having some problems with VC6. I couldn't tell whether our hack for
// stock GCC was causing problems so I needed an easy way to turn it on and
// off. Now we can test the hack with various compilers and still have an
// "out" if it doesn't work. -dwa 7/31/00
#if __GNUC__ == 2 && __GNUC_MINOR__ <= 96 && !defined(__STL_USE_NAMESPACES)
# define BOOST_RELOPS_AMBIGUITY_BUG 1
#endif
namespace boost {
// Just a "type envelope"; works around some MSVC deficiencies.
template <class T>
struct type {};
//============================================================================
// Concept checking classes that express the requirements for iterator
// policies and adapted types. These classes are mostly for
// documentation purposes, and are not used in this header file. They
// merely provide a more succinct statement of what is expected of the
// iterator policies.
template <class Policies, class Adapted, class Traits>
struct TrivialIteratorPoliciesConcept
{
typedef typename Traits::reference Reference;
void constraints() {
function_requires< AssignableConcept<Policies> >();
function_requires< DefaultConstructibleConcept<Policies> >();
function_requires< AssignableConcept<Adapted> >();
function_requires< DefaultConstructibleConcept<Adapted> >();
const_constraints();
}
void const_constraints() const {
Reference r = p.dereference(type<Reference>(), x);
b = p.equal(x, x);
}
Policies p;
Adapted x;
mutable bool b;
};
template <class Policies, class Adapted, class Traits>
struct ForwardIteratorPoliciesConcept
{
void constraints() {
function_requires<
TrivialIteratorPoliciesConcept<Policies, Adapted, Traits>
>();
p.increment(x);
}
Policies p;
Adapted x;
};
template <class Policies, class Adapted, class Traits>
struct BidirectionalIteratorPoliciesConcept
{
void constraints() {
function_requires<
ForwardIteratorPoliciesConcept<Policies, Adapted, Traits>
>();
p.decrement(x);
}
Policies p;
Adapted x;
};
template <class Policies, class Adapted, class Traits>
struct RandomAccessIteratorPoliciesConcept
{
typedef typename Traits::difference_type DifferenceType;
void constraints() {
function_requires<
BidirectionalIteratorPoliciesConcept<Policies, Adapted, Traits>
>();
p.advance(x, n);
const_constraints();
}
void const_constraints() const {
n = p.distance(type<DifferenceType>(), x, x);
b = p.less(x, x);
}
Policies p;
Adapted x;
mutable DifferenceType n;
mutable bool b;
};
//============================================================================
// Default policies for iterator adaptors. You can use this as a base
// class if you want to customize particular policies.
struct default_iterator_policies
{
// Some of these members were defined static, but Borland got confused
// and thought they were non-const. Also, Sun C++ does not like static
// function templates.
template <class Reference, class Iterator>
Reference dereference(type<Reference>, const Iterator& x) const
{ return *x; }
template <class Iterator>
void increment(Iterator& x)
{ ++x; }
template <class Iterator>
void decrement(Iterator& x)
{ --x; }
template <class Iterator, class DifferenceType>
void advance(Iterator& x, DifferenceType n)
{ x += n; }
template <class Difference, class Iterator1, class Iterator2>
Difference distance(type<Difference>, const Iterator1& x,
const Iterator2& y) const
{ return y - x; }
template <class Iterator1, class Iterator2>
bool equal(const Iterator1& x, const Iterator2& y) const
{ return x == y; }
template <class Iterator1, class Iterator2>
bool less(const Iterator1& x, const Iterator2& y) const
{ return x < y; }
};
// putting the comparisons in a base class avoids the g++
// ambiguous overload bug due to the relops operators
#ifdef BOOST_RELOPS_AMBIGUITY_BUG
template <class Derived, class Base>
struct iterator_comparisons : Base { };
template <class D1, class D2, class Base1, class Base2>
inline bool operator==(const iterator_comparisons<D1,Base1>& xb,
const iterator_comparisons<D2,Base2>& yb)
{
const D1& x = static_cast<const D1&>(xb);
const D2& y = static_cast<const D2&>(yb);
return x.policies().equal(x.iter(), y.iter());
}
template <class D1, class D2, class Base1, class Base2>
inline bool operator!=(const iterator_comparisons<D1,Base1>& xb,
const iterator_comparisons<D2,Base2>& yb)
{
const D1& x = static_cast<const D1&>(xb);
const D2& y = static_cast<const D2&>(yb);
return !x.policies().equal(x.iter(), y.iter());
}
template <class D1, class D2, class Base1, class Base2>
inline bool operator<(const iterator_comparisons<D1,Base1>& xb,
const iterator_comparisons<D2,Base2>& yb)
{
const D1& x = static_cast<const D1&>(xb);
const D2& y = static_cast<const D2&>(yb);
return x.policies().less(x.iter(), y.iter());
}
template <class D1, class D2, class Base1, class Base2>
inline bool operator>(const iterator_comparisons<D1,Base1>& xb,
const iterator_comparisons<D2,Base2>& yb)
{
const D1& x = static_cast<const D1&>(xb);
const D2& y = static_cast<const D2&>(yb);
return x.policies().less(y.iter(), x.iter());
}
template <class D1, class D2, class Base1, class Base2>
inline bool operator>=(const iterator_comparisons<D1,Base1>& xb,
const iterator_comparisons<D2,Base2>& yb)
{
const D1& x = static_cast<const D1&>(xb);
const D2& y = static_cast<const D2&>(yb);
return !x.policies().less(x.iter(), y.iter());
}
template <class D1, class D2, class Base1, class Base2>
inline bool operator<=(const iterator_comparisons<D1,Base1>& xb,
const iterator_comparisons<D2,Base2>& yb)
{
const D1& x = static_cast<const D1&>(xb);
const D2& y = static_cast<const D2&>(yb);
return !x.policies().less(y.iter(), x.iter());
}
#endif
//============================================================================
// Some compilers (SGI MIPSpro 7.1.3.3) instantiate/compile member functions
// whether or not they are used. The following functions make sure that
// when the base iterators do not support particular operators, those
// operators do not get used.
namespace detail {
// Dummy version for iterators that don't support member access
template <class Iter, class Cat>
inline typename Iter::pointer
operator_arrow(const Iter&, Cat) {
typedef typename Iter::pointer Pointer;
return Pointer();
}
// Real version
template <class Iter>
inline typename Iter::pointer
operator_arrow(const Iter& i, std::forward_iterator_tag) {
return &(*i);
}
// Dummy version for iterators that don't support member access
template <class Iter, class Diff, class Cat>
inline void advance_impl(const Iter&, Diff, Cat) { }
// Real version
template <class Iter, class Diff>
inline typename Iter::pointer
advance_impl(const Iter& i, Diff n, std::random_access_iterator_tag) {
#ifdef __MWERKS__
i.policies().advance<Iter>(iter(), n);
#else
i.policies().advance(iter(), n);
#endif
}
} // namespace detail
//============================================================================
// iterator_adaptor - A generalized adaptor around an existing
// iterator, which is itself an iterator
//
// Iterator - the iterator type being wrapped.
//
// Policies - a set of policies determining how the resulting iterator
// works.
//
// Traits - a class satisfying the same requirements as a specialization of
// std::iterator_traits for the resulting iterator.
//
template <class Iterator, class Policies,
#ifdef BOOST_NO_STD_ITERATOR_TRAITS
class Traits
#else
class Traits = std::iterator_traits<Iterator>
#endif
>
struct iterator_adaptor :
#ifdef BOOST_RELOPS_AMBIGUITY_BUG
iterator_comparisons<
iterator_adaptor<Iterator,Policies,Traits>,
#endif
boost::iterator<typename Traits::iterator_category,
typename Traits::value_type, typename Traits::difference_type,
typename Traits::pointer, typename Traits::reference>
#ifdef BOOST_RELOPS_AMBIGUITY_BUG
>
#endif
{
typedef iterator_adaptor<Iterator, Policies, Traits> Self;
public:
typedef typename Traits::difference_type difference_type;
typedef typename Traits::value_type value_type;
typedef typename Traits::pointer pointer;
typedef typename Traits::reference reference;
typedef typename Traits::iterator_category iterator_category;
typedef Iterator iterator_type;
iterator_adaptor() { }
iterator_adaptor(const Iterator& iter, const Policies& p = Policies())
: m_iter_p(iter, p) {}
template <class OtherIter, class OtherTraits>
iterator_adaptor (const iterator_adaptor<OtherIter, Policies,
OtherTraits>& src)
: m_iter_p(src.iter(), src.policies()) {
}
reference operator*() const {
return policies().dereference(type<reference>(), iter());
}
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning( disable : 4284 )
#endif
pointer operator->() const
{ return detail::operator_arrow(*this, iterator_category()); }
#ifdef _MSC_VER
# pragma warning(pop)
#endif
reference operator[](difference_type n) const
{ return *(*this + n); }
Self& operator++() {
#ifdef __MWERKS__
// Odd bug, MWERKS couldn't deduce the type for the member template
// Workaround by explicitly specifying the type.
policies().increment<Iterator>(iter());
#else
policies().increment(iter());
#endif
return *this;
}
Self operator++(int) { Self tmp(*this); ++*this; return tmp; }
Self& operator--() {
#ifdef __MWERKS__
policies().decrement<Iterator>(iter());
#else
policies().decrement(iter());
#endif
return *this;
}
Self operator--(int) { Self tmp(*this); --*this; return tmp; }
Self& operator+=(difference_type n) {
detail::advance_impl(*this, n, iterator_category());
return *this;
}
Self& operator-=(difference_type n) {
detail::advance_impl(*this, -n, iterator_category());
return *this;
}
iterator_type base() const { return m_iter_p.first(); }
private:
typedef Policies policies_type;
compressed_pair<Iterator,Policies> m_iter_p;
public: // too many compilers have trouble when these are private.
Policies& policies() { return m_iter_p.second(); }
const Policies& policies() const { return m_iter_p.second(); }
Iterator& iter() { return m_iter_p.first(); }
const Iterator& iter() const { return m_iter_p.first(); }
};
template <class Iterator, class Policies, class Traits>
iterator_adaptor<Iterator,Policies,Traits>
operator-(iterator_adaptor<Iterator,Policies,Traits> p, const typename Traits::difference_type x)
{
return p -= x;
}
template <class Iterator, class Policies, class Traits>
iterator_adaptor<Iterator,Policies,Traits>
operator+(iterator_adaptor<Iterator,Policies,Traits> p, typename Traits::difference_type x)
{
return p += x;
}
template <class Iterator, class Policies, class Traits>
iterator_adaptor<Iterator,Policies,Traits>
operator+(typename Traits::difference_type x, iterator_adaptor<Iterator,Policies,Traits> p)
{
return p += x;
}
template <class Iterator1, class Iterator2, class Policies, class Traits1, class Traits2>
typename Traits1::difference_type operator-(
const iterator_adaptor<Iterator1,Policies,Traits1>& x,
const iterator_adaptor<Iterator2,Policies,Traits2>& y )
{
typedef typename Traits1::difference_type difference_type;
return x.policies().distance(type<difference_type>(), y.iter(), x.iter());
}
#ifndef BOOST_RELOPS_AMBIGUITY_BUG
template <class Iterator1, class Iterator2, class Policies, class Traits1, class Traits2>
inline bool
operator==(const iterator_adaptor<Iterator1,Policies,Traits1>& x, const iterator_adaptor<Iterator2,Policies,Traits2>& y) {
return x.policies().equal(x.iter(), y.iter());
}
template <class Iterator1, class Iterator2, class Policies, class Traits1, class Traits2>
inline bool
operator<(const iterator_adaptor<Iterator1,Policies,Traits1>& x, const iterator_adaptor<Iterator2,Policies,Traits2>& y) {
return x.policies().less(x.iter(), y.iter());
}
template <class Iterator1, class Iterator2, class Policies, class Traits1, class Traits2>
inline bool
operator>(const iterator_adaptor<Iterator1,Policies,Traits1>& x,
const iterator_adaptor<Iterator2,Policies,Traits2>& y) {
return x.policies().less(y.iter(), x.iter());
}
template <class Iterator1, class Iterator2, class Policies, class Traits1, class Traits2>
inline bool
operator>=(const iterator_adaptor<Iterator1,Policies,Traits1>& x, const iterator_adaptor<Iterator2,Policies,Traits2>& y) {
return !x.policies().less(x.iter(), y.iter());
}
template <class Iterator1, class Iterator2, class Policies, class Traits1, class Traits2>
inline bool
operator<=(const iterator_adaptor<Iterator1,Policies,Traits1>& x,
const iterator_adaptor<Iterator2,Policies,Traits2>& y) {
return !x.policies().less(y.iter(), x.iter());
}
template <class Iterator1, class Iterator2, class Policies, class Traits1, class Traits2>
inline bool
operator!=(const iterator_adaptor<Iterator1,Policies,Traits1>& x,
const iterator_adaptor<Iterator2,Policies,Traits2>& y) {
return !x.policies().equal(x.iter(), y.iter());
}
#endif
//=============================================================================
// iterator_adaptors - A type generator that simplifies creating
// mutable/const pairs of iterator adaptors.
template <class Iterator, class ConstIterator,
#ifdef BOOST_NO_STD_ITERATOR_TRAITS
class Traits,
class ConstTraits,
#else
class Traits = std::iterator_traits<Iterator>,
class ConstTraits = std::iterator_traits<ConstIterator>,
#endif
class Policies = default_iterator_policies>
class iterator_adaptors
{
public:
typedef iterator_adaptor<Iterator, Policies, Traits> iterator;
typedef iterator_adaptor<ConstIterator, Policies, ConstTraits>
const_iterator;
};
//=============================================================================
// Transform Iterator Adaptor
//
// Upon deference, apply some unary function object and return the
// result by value.
template <class AdaptableUnaryFunction>
struct transform_iterator_policies : public default_iterator_policies
{
transform_iterator_policies() { }
transform_iterator_policies(const AdaptableUnaryFunction& f) : m_f(f) { }
template <class Reference, class Iterator>
Reference dereference(type<Reference>, const Iterator& iter) const
{ return m_f(*iter); }
AdaptableUnaryFunction m_f;
};
template <class AdaptableUnaryFunction, class IteratorTraits>
struct transform_iterator_traits {
typedef typename AdaptableUnaryFunction::result_type value_type;
typedef value_type reference;
typedef value_type* pointer;
typedef typename IteratorTraits::difference_type difference_type;
typedef typename IteratorTraits::iterator_category iterator_category;
};
template <class AdaptableUnaryFunction,
class Iterator,
#ifndef BOOST_NO_STD_ITERATOR_TRAITS
class Traits = std::iterator_traits<Iterator>
#else
class Traits
#endif
>
struct transform_iterator
{
typedef transform_iterator_traits<AdaptableUnaryFunction,Traits>
TransTraits;
typedef iterator_adaptor<Iterator,
transform_iterator_policies<AdaptableUnaryFunction>, TransTraits>
type;
};
//=============================================================================
// Indirect Iterators Adaptor
// Given a pointer to pointers (or iterator to iterators),
// apply a double dereference inside operator*().
//
// We use the term "outer" to refer to the first level iterator type
// and "inner" to refer to the second level iterator type. For
// example, given T**, T* is the inner iterator type and T** is the
// outer iterator type. Also, const T* would be the const inner
// iterator.
// We tried to implement this with transform_iterator, but that required
// using boost::remove_ref, which is not compiler portable.
struct indirect_iterator_policies : public default_iterator_policies
{
template <class Reference, class Iterator>
Reference dereference(type<Reference>, const Iterator& x) const
{ return **x; }
};
template <class OuterIterator, class InnerIterator,
#ifdef BOOST_NO_STD_ITERATOR_TRAITS
class OuterTraits,
class InnerTraits
#else
class OuterTraits = std::iterator_traits<OuterIterator>,
class InnerTraits = std::iterator_traits<InnerIterator>
#endif
>
struct indirect_traits
{
typedef typename OuterTraits::difference_type difference_type;
typedef typename InnerTraits::value_type value_type;
typedef typename InnerTraits::pointer pointer;
typedef typename InnerTraits::reference reference;
typedef typename OuterTraits::iterator_category iterator_category;
};
template <class OuterIterator, // Mutable or Immutable, does not matter
class InnerIterator, // Mutable -> mutable indirect iterator
// Immutable -> immutable indirect iterator
#ifdef BOOST_NO_STD_ITERATOR_TRAITS
class OuterTraits,
class InnerTraits
#else
class OuterTraits = std::iterator_traits<OuterIterator>,
class InnerTraits = std::iterator_traits<InnerIterator>
#endif
>
struct indirect_iterator
{
typedef iterator_adaptor<OuterIterator,
indirect_iterator_policies,
indirect_traits<OuterIterator, InnerIterator,
OuterTraits, InnerTraits>
> type;
};
template <class OuterIterator, // Mutable or Immutable, does not matter
class InnerIterator, // Mutable
class ConstInnerIterator, // Immutable
#ifdef BOOST_NO_STD_ITERATOR_TRAITS
class OuterTraits,
class InnerTraits,
class ConstInnerTraits
#else
class OuterTraits = std::iterator_traits<OuterIterator>,
class InnerTraits = std::iterator_traits<InnerIterator>,
class ConstInnerTraits = std::iterator_traits<ConstInnerIterator>
#endif
>
struct indirect_iterators
{
typedef iterator_adaptors<OuterIterator, OuterIterator,
indirect_traits<OuterIterator, InnerIterator,
OuterTraits, InnerTraits>,
indirect_traits<OuterIterator, ConstInnerIterator,
OuterTraits, ConstInnerTraits>,
indirect_iterator_policies
> Adaptors;
typedef typename Adaptors::iterator iterator;
typedef typename Adaptors::const_iterator const_iterator;
};
//=============================================================================
// Reverse Iterators Adaptor
struct reverse_iterator_policies
{
template <class Reference, class Iterator>
Reference dereference(type<Reference>, const Iterator& x) const
{ return *boost::prior(x); }
template <class Iterator>
void increment(Iterator& x) const
{ --x; }
template <class Iterator>
void decrement(Iterator& x) const
{ ++x; }
template <class Iterator, class DifferenceType>
void advance(Iterator& x, DifferenceType n) const
{ x -= n; }
template <class Difference, class Iterator1, class Iterator2>
Difference distance(type<Difference>, const Iterator1& x,
const Iterator2& y) const
{ return x - y; }
template <class Iterator1, class Iterator2>
bool equal(const Iterator1& x, const Iterator2& y) const
{ return x == y; }
template <class Iterator1, class Iterator2>
bool less(const Iterator1& x, const Iterator2& y) const
{ return y < x; }
};
template <class Iterator,
#ifndef BOOST_NO_STD_ITERATOR_TRAITS
class Traits = std::iterator_traits<Iterator>
#else
class Traits
#endif
>
struct reverse_iterator
{
typedef iterator_adaptor<Iterator, reverse_iterator_policies,
Traits> type;
};
template <class ConstIterator,
#ifndef BOOST_NO_STD_ITERATOR_TRAITS
class ConstTraits = std::iterator_traits<ConstIterator>
#else
class ConstTraits
#endif
>
struct const_reverse_iterator
{
typedef iterator_adaptor<ConstIterator, reverse_iterator_policies,
ConstTraits> type;
};
template <class Iterator, class ConstIterator,
#ifndef BOOST_NO_STD_ITERATOR_TRAITS
class Traits = std::iterator_traits<Iterator>,
class ConstTraits = std::iterator_traits<ConstIterator>
#else
class Traits,
class ConstTraits
#endif
>
struct reverse_iterators
{
typedef iterator_adaptors<Iterator,ConstIterator,Traits,ConstTraits,
reverse_iterator_policies> Adaptor;
typedef typename Adaptor::iterator iterator;
typedef typename Adaptor::const_iterator const_iterator;
};
//=============================================================================
// Projection Iterators Adaptor
template <class AdaptableUnaryFunction>
struct projection_iterator_policies : public default_iterator_policies
{
projection_iterator_policies() { }
projection_iterator_policies(const AdaptableUnaryFunction& f) : m_f(f) { }
template <class Reference, class Iterator>
Reference dereference (type<Reference>, Iterator const& iter) const {
return m_f(*iter);
}
AdaptableUnaryFunction m_f;
};
template <class AdaptableUnaryFunction, class Traits>
struct projection_iterator_traits {
typedef typename AdaptableUnaryFunction::result_type value_type;
typedef value_type& reference;
typedef value_type* pointer;
typedef typename Traits::difference_type difference_type;
typedef typename Traits::iterator_category iterator_category;
};
template <class AdaptableUnaryFunction, class Traits>
struct const_projection_iterator_traits {
typedef typename AdaptableUnaryFunction::result_type value_type;
typedef value_type const& reference;
typedef value_type const* pointer;
typedef typename Traits::difference_type difference_type;
typedef typename Traits::iterator_category iterator_category;
};
template <class AdaptableUnaryFunction, class Iterator,
#ifndef BOOST_NO_STD_ITERATOR_TRAITS
class Traits = std::iterator_traits<Iterator>
#else
class Traits
#endif
>
struct projection_iterator {
typedef projection_iterator_traits<AdaptableUnaryFunction, Traits>
Projection_Traits;
typedef iterator_adaptor<Iterator,
projection_iterator_policies<AdaptableUnaryFunction>,
Projection_Traits> type;
};
template <class AdaptableUnaryFunction, class Iterator,
#ifndef BOOST_NO_STD_ITERATOR_TRAITS
class Traits = std::iterator_traits<Iterator>
#else
class Traits
#endif
>
struct const_projection_iterator {
typedef const_projection_iterator_traits<AdaptableUnaryFunction,
Traits> Projection_Traits;
typedef iterator_adaptor<Iterator,
projection_iterator_policies<AdaptableUnaryFunction>,
Projection_Traits> type;
};
template <class AdaptableUnaryFunction, class Iterator, class ConstIterator,
#ifndef BOOST_NO_STD_ITERATOR_TRAITS
class Traits = std::iterator_traits<Iterator>,
class ConstTraits = std::iterator_traits<ConstIterator>
#else
class Traits,
class ConstTraits
#endif
>
struct projection_iterators {
typedef projection_iterator_traits<AdaptableUnaryFunction, Traits>
Projection_Traits;
typedef const_projection_iterator_traits<AdaptableUnaryFunction,
ConstTraits> Const_Projection_Traits;
typedef iterator_adaptors<Iterator, ConstIterator,
Projection_Traits, Const_Projection_Traits,
projection_iterator_policies<AdaptableUnaryFunction> > Adaptors;
typedef typename Adaptors::iterator iterator;
typedef typename Adaptors::const_iterator const_iterator;
};
} // namespace boost
#endif