Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r57038 - in sandbox/ggl/formal_review_request/libs/ggl/doc: . doxygen_input/sourcecode doxygen_output/html
From: barend.gehrels_at_[hidden]
Date: 2009-10-21 05:23:44


Author: barendgehrels
Date: 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
New Revision: 57038
URL: http://svn.boost.org/trac/boost/changeset/57038

Log:
Updated doc to reflect changes in simplify/convex hull/point order

Added:
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1distance_1_1cross__track-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1distance_1_1cross__track.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/distance__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/distance__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/distance__cross__track_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/distance__cross__track_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/distance__haversine_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/distance__haversine_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x62.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x63.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x64.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x65.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x67.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x68.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x69.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x6c.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x6d.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x6e.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x6f.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x70.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x72.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x73.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x74.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x75.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x76.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x77.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x78.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x79.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func_0x7e.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/iterators_2vertex__iterator_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/iterators_2vertex__iterator_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2iterators_2vertex__iterator_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2iterators_2vertex__iterator_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespacemembers_enum.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespacemembers_eval.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point__order_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point__order_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/simplify__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/simplify__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/simplify__douglas__peucker_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/simplify__douglas__peucker_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_point_distance_strategy-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_point_distance_strategy.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_point_segment_distance_strategy-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_point_segment_distance_strategy.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_simplify_strategy-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_simplify_strategy.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1point__order-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1point__order.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1point__order-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1point__order.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1vertex__iterator-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1vertex__iterator.html (contents, props changed)
Removed:
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign__box__corner_8hpp.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign__box__corner_8hpp_source.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/iterators_2point__const__iterator_8hpp.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/iterators_2point__const__iterator_8hpp_source.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2iterators_2point__const__iterator_8hpp.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2iterators_2point__const__iterator_8hpp_source.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1point__const__iterator-members.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1point__const__iterator.html
Text files modified:
   sandbox/ggl/formal_review_request/libs/ggl/doc/Doxyfile | 1
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_input/sourcecode/doxygen_examples.cpp | 15
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/02__linestring__example_8cpp-example.html | 18
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/03__polygon__example_8cpp-example.html | 8
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__convex__hull_8hpp_source.html | 425 ++++++++-------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__simplify_8hpp_source.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp_source.html | 417 ++++++++-------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp_source.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp.html | 8
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp_source.html | 285 +++++++---
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp_source.html | 318 ++++++-----
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp_source.html | 345 ++++++------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp_source.html | 18
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp_source.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp_source.html | 1015 +++++++++++++++++++--------------------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp.html | 28
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp_source.html | 505 ++++++++++---------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp_source.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/annotated.html | 12
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/append_8hpp_source.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/as__range_8hpp.html | 3
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/as__range_8hpp_source.html | 174 ++++--
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign_8hpp.html | 8
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign_8hpp_source.html | 467 ++++++++++-------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/box_8hpp_source.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/buffer_8hpp_source.html | 209 ++++----
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c04__b__custom__triangle__example_8cpp-example.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__distance_8hpp_source.html | 268 +++++-----
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/class_point_list.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classes.html | 41
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1linear__ring-members.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1linear__ring.html | 8
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1point.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1point__xy-members.html | 1
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1point__xy.html | 29 -
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1polygon-members.html | 18
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1polygon.html | 94 +-
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1convex__hull_1_1graham-members.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1convex__hull_1_1graham.html | 25
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1distance_1_1haversine-members.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1distance_1_1haversine.html | 105 ++++
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1simplify_1_1douglas__peucker-members.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html | 77 +++
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1transform_1_1ublas__transformer.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_012_00_012_01_4.html | 18
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4.html | 18
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/combine_8hpp_source.html | 293 +++++-----
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/convert_8hpp_source.html | 187 +++---
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/copy_8hpp.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/copy_8hpp_source.html | 68 +-
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/copy__segments_8hpp_source.html | 10
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2point__type_8hpp_source.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/disjoint_8hpp_source.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen__design__cross__section_8hpp_source.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/equals_8hpp_source.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/files.html | 11
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x62.html | 11
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x63.html | 30
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x64.html | 3
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x67.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x69.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x6e.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x6f.html | 24
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x70.html | 11
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x72.html | 16
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x74.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x76.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func.html | 340 ------------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_type.html | 31
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_vars.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/get__intersection__points_8hpp_source.html | 12
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/globals.html | 3
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/globals_defs.html | 3
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__access.html | 12
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__area.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__buffer.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__centroid.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__combine.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__concepts.html | 9
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__convert.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__convex__hull.html | 80 ++
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__core.html | 3
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__distance.html | 3
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__envelope.html | 8
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__loop.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__sectionalize.html | 12
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__simplify.html | 175 +++---
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__traits.html | 3
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__utility.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/haversine_8hpp_source.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/hierarchy.html | 12
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/interior__rings_8hpp_source.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersection__linestring_8hpp_source.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/inverse__transformer_8hpp.html | 21
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/inverse__transformer_8hpp_source.html | 91 +-
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/linear__ring_8hpp.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/linear__ring_8hpp_source.html | 106 ++-
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/math_8hpp_source.html | 113 ++-
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/matrix__transformers_8hpp.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/matrix__transformers_8hpp_source.html | 587 +++++++++++-----------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/merge__intersection__points_8hpp_source.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2area_8hpp_source.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2convex__hull_8hpp_source.html | 182 ++++--
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2correct_8hpp.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2correct_8hpp_source.html | 95 ++-
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2get__section_8hpp_source.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2simplify_8hpp.html | 13
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2simplify_8hpp_source.html | 151 +++--
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl.html | 476 ++++++-----------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1concept.html | 9
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1math.html | 14
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1distance.html | 3
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1traits.html | 3
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespacemembers.html | 36
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespacemembers_func.html | 26
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespacemembers_type.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespacemembers_vars.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/nsphere_8hpp_source.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point__xy_8hpp_source.html | 8
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/polygon_8hpp.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/polygon_8hpp_source.html | 282 +++++-----
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/radian__access_8hpp_source.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/segment__iterator_8hpp_source.html | 170 +++---
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/sph__area_8hpp_source.html | 8
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/sph__envelope_8hpp_source.html | 285 +++++-----
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/strategies_8hpp_source.html | 32
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/strategy__transform_8hpp_source.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1area__result.html | 8
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1as__range__type-members.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1as__range__type.html | 14
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_point.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1point__type.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1section.html | 26
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1sections.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__iterator.html | 12
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1distance_1_1pythagoras-members.html | 1
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1distance_1_1pythagoras.html | 25
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1distance_1_1xy__point__segment-members.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1distance_1_1xy__point__segment.html | 28
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1grow__ll.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1grow__ll_1_1state.html | 28
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1shift_1_1shifted.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1shift_1_1shifted_3_01degree_01_4.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1shift_1_1shifted_3_01radian_01_4.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1inverse__transformer.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1rotate__transformer.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1scale__transformer.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1scale__transformer_3_01_p1_00_01_p2_00_012_00_012_01_4.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1scale__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1translate__transformer.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1translate__transformer_3_01_p1_00_01_p2_00_012_00_012_01_4.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1translate__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_013_00_012_01_4.html | 10
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1pythagoras_3_01_p1_00_01_p2_01_4_01_4.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1xy__point__segment_3_01_point_00_01_segment_00_01_p_p_strategy_01_4_01_4.html | 4
   157 files changed, 4970 insertions(+), 4464 deletions(-)

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/Doxyfile
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/Doxyfile (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/Doxyfile 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -98,6 +98,7 @@
                         ../../../boost/ggl/multi/iterators \
                         ../../../boost/ggl/policies/relate \
                         ../../../boost/ggl/strategies \
+ ../../../boost/ggl/strategies/concepts \
                         ../../../boost/ggl/strategies/agnostic \
                         ../../../boost/ggl/strategies/cartesian \
                         ../../../boost/ggl/strategies/spherical \

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_input/sourcecode/doxygen_examples.cpp
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_input/sourcecode/doxygen_examples.cpp (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_input/sourcecode/doxygen_examples.cpp 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -218,7 +218,7 @@
 {
     ggl::linestring<ggl::point_xy<double> > line, simplified;
     ggl::read_wkt("linestring(1.1 1.1, 2.5 2.1, 3.1 3.1, 4.9 1.1, 3.1 1.9)", line);
- ggl::simplify(line, std::back_inserter(simplified), 0.5);
+ ggl::simplify(line, simplified, 0.5);
     std::cout
         << " original line: " << ggl::dsv(line) << std::endl
         << "simplified line: " << ggl::dsv(simplified) << std::endl;
@@ -233,9 +233,8 @@
     ggl::read_wkt("linestring(1.1 1.1, 2.5 2.1, 3.1 3.1, 4.9 1.1, 3.1 1.9)", line);
 
     typedef ggl::strategy::distance::xy_point_segment<P, ggl::segment<const P> > DS;
- typedef std::ostream_iterator<P> OUT;
- typedef ggl::strategy::simplify::douglas_peucker<L, OUT, DS> simplification;
- ggl::simplify(line, OUT(std::cout, "\n"), 0.5, simplification());
+ typedef ggl::strategy::simplify::douglas_peucker<P, DS> simplification;
+ ggl::simplify_inserter(line, std::ostream_iterator<P>(std::cout, "\n"), 0.5, simplification());
 }
 
 
@@ -454,7 +453,7 @@
         ggl::loop(poly.outer(), perimeter<P>(), peri);
         std::cout << "Perimeter: " << peri.sum << std::endl;
     }
-} //:\\
+} //:\\ --
 
 
 namespace example_loop2
@@ -486,7 +485,7 @@
         std::cout << "Perimeter: " << peri.sum/1000.0 << " km" << std::endl;
         */
     }
-} //:\\
+} //:\\ --
 
 
 
@@ -560,7 +559,7 @@
         test1(p);
         test2(p);
     }
-} //:\\
+} //:\\ --
 
 
 
@@ -619,7 +618,7 @@
         example_point_2 p(1,2);
         test3(p);
     }
-} //:\\
+} //:\\ --
 
 
 

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/02__linestring__example_8cpp-example.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/02__linestring__example_8cpp-example.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/02__linestring__example_8cpp-example.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -137,7 +137,7 @@
 
     <span class="comment">// The distance from a point to a linestring can be calculated</span>
     <a class="code" href="classggl_1_1point__xy.html" title="2D point in Cartesian coordinate system">point_2d</a> p(1.9, 1.2);
- std::cout &lt;&lt; <span class="stringliteral">"distance of "</span> &lt;&lt; <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(p)
+ std::cout &lt;&lt; <span class="stringliteral">"distance of "</span> &lt;&lt; <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(p)
         &lt;&lt; <span class="stringliteral">" to line: "</span> &lt;&lt; <a name="a10"></a><a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>(p, ls) &lt;&lt; std::endl;
 
     <span class="comment">// A linestring is a vector. However, some algorithms consider "segments",</span>
@@ -184,7 +184,7 @@
 
     {
         <a class="code" href="classggl_1_1linestring.html" title="A linestring (named so by OGC) is a collection (default a vector) of points.">linestring_2d</a> ls_copy;
- std::unique_copy(ls.begin(), ls.end(), std::back_inserter(ls_copy),
+ std::unique_copy(ls.begin(), ls.end(), std::back_inserter(ls_copy),
             point_equal&lt;point_2d&gt;());
         ls = ls_copy;
         std::cout &lt;&lt; <span class="stringliteral">"uniquecopy: "</span> &lt;&lt; <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(ls) &lt;&lt; std::endl;
@@ -192,7 +192,7 @@
 
     <span class="comment">// Lines can be simplified. This removes points, but preserves the shape</span>
     <a class="code" href="classggl_1_1linestring.html" title="A linestring (named so by OGC) is a collection (default a vector) of points.">linestring_2d</a> ls_simplified;
- <a name="a12"></a><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>(ls, std::back_inserter(ls_simplified), 0.5);
+ <a name="a12"></a><a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry.">simplify</a>(ls, ls_simplified, 0.5);
     std::cout &lt;&lt; <span class="stringliteral">"simplified: "</span> &lt;&lt; <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(ls_simplified) &lt;&lt; std::endl;
 
 
@@ -221,7 +221,7 @@
     intersection&lt;std::vector&lt;point_2d&gt; &gt;(cb, ls, std::back_inserter(vector_out));
 
     std::cout &lt;&lt; <span class="stringliteral">"clipped output as vector:"</span> &lt;&lt; std::endl;
- <span class="keywordflow">for</span> (std::vector&lt;std::vector&lt;point_2d&gt; &gt;::const_iterator it
+ <span class="keywordflow">for</span> (std::vector&lt;std::vector&lt;point_2d&gt; &gt;::const_iterator it
             = vector_out.begin(); it != vector_out.end(); ++it)
     {
         std::cout &lt;&lt; <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(*it) &lt;&lt; std::endl;
@@ -229,12 +229,12 @@
 
     <span class="comment">// Calculate the convex hull of the linestring</span>
     <a name="_a15"></a><a class="code" href="classggl_1_1polygon.html" title="The polygon contains an outer ring and zero or more inner rings.">polygon_2d</a> hull;
- <a name="a16"></a><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a>(ls, std::back_inserter(hull.<a name="a17"></a><a class="code" href="classggl_1_1polygon.html#be04d3ead04813a25be1a219076358a8">outer</a>()));
+ <a name="a16"></a><a class="code" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7" title="Calculate the convex hull of a geometry.">convex_hull</a>(ls, hull);
     std::cout &lt;&lt; <span class="stringliteral">"Convex hull:"</span> &lt;&lt; <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(hull) &lt;&lt; std::endl;
 
     <span class="comment">// All the above assumed 2D Cartesian linestrings. 3D is possible as well</span>
     <span class="comment">// Let's define a 3D point ourselves, this time using 'float'</span>
- <span class="keyword">typedef</span> <a name="_a18"></a><a class="code" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point&lt;float, 3, cs::cartesian&gt;</a> <a name="_a19"></a><a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+ <span class="keyword">typedef</span> <a name="_a17"></a><a class="code" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point&lt;float, 3, cs::cartesian&gt;</a> <a name="_a18"></a><a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
     <span class="keyword">typedef</span> <a class="code" href="classggl_1_1linestring.html" title="A linestring (named so by OGC) is a collection (default a vector) of points.">linestring&lt;point_type&gt;</a> line_type;
     line_type line3d;
     line3d.push_back(make&lt;point_type&gt;(1,2,3));
@@ -242,12 +242,12 @@
     line3d.push_back(make&lt;point_type&gt;(7,8,9));
 
     <span class="comment">// Not all algorithms work on 3d lines. For example convex hull does NOT.</span>
- <span class="comment">// But for example length, distance, simplify, envelope and stream do.</span>
+ <span class="comment">// But, for example, length, distance, simplify, envelope and stream do.</span>
     std::cout &lt;&lt; <span class="stringliteral">"3D: length: "</span> &lt;&lt; <a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">length</a>(line3d) &lt;&lt; <span class="stringliteral">" line: "</span> &lt;&lt; <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(line3d) &lt;&lt; std::endl;
 
     <span class="comment">// With DSV you can also use other delimiters, e.g. JSON style</span>
- std::cout &lt;&lt; <span class="stringliteral">"JSON: "</span>
- &lt;&lt; <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(ls, <span class="stringliteral">", "</span>, <span class="stringliteral">"["</span>, <span class="stringliteral">"]"</span>, <span class="stringliteral">", "</span>, <span class="stringliteral">"[ "</span>, <span class="stringliteral">" ]"</span>)
+ std::cout &lt;&lt; <span class="stringliteral">"JSON: "</span>
+ &lt;&lt; <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(ls, <span class="stringliteral">", "</span>, <span class="stringliteral">"["</span>, <span class="stringliteral">"]"</span>, <span class="stringliteral">", "</span>, <span class="stringliteral">"[ "</span>, <span class="stringliteral">" ]"</span>)
         &lt;&lt; std::endl;
 
     <span class="keywordflow">return</span> 0;

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/03__polygon__example_8cpp-example.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/03__polygon__example_8cpp-example.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/03__polygon__example_8cpp-example.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -121,13 +121,13 @@
 <span class="comment"> */</span>
 
     <span class="comment">// The number of points have to called per ring separately</span>
- std::cout &lt;&lt; <span class="stringliteral">"number of points in outer ring: "</span> &lt;&lt; poly.<a name="a9"></a><a class="code" href="classggl_1_1polygon.html#be04d3ead04813a25be1a219076358a8">outer</a>().size() &lt;&lt; std::endl;
+ std::cout &lt;&lt; <span class="stringliteral">"number of points in outer ring: "</span> &lt;&lt; poly.<a name="a9"></a><a class="code" href="classggl_1_1polygon.html#5faae375ec2c4b4547da615fa8864e74">outer</a>().size() &lt;&lt; std::endl;
 
     <span class="comment">// Polygons can have one or more inner rings, also called holes, donuts, islands, interior rings.</span>
     <span class="comment">// Let's add one</span>
     {
- poly.<a name="a10"></a><a class="code" href="classggl_1_1polygon.html#0d41c7b42a1444fdc759550644c7924e">inners</a>().resize(1);
- <a name="_a11"></a><a class="code" href="classggl_1_1linear__ring.html" title="A linear_ring (linear linear_ring) is a closed line which should not be selfintersecting...">linear_ring&lt;point_2d&gt;</a>&amp; inner = poly.<a class="code" href="classggl_1_1polygon.html#0d41c7b42a1444fdc759550644c7924e">inners</a>().back();
+ poly.<a name="a10"></a><a class="code" href="classggl_1_1polygon.html#5a8564eeeaa4f244e6f70ab10395a63f">inners</a>().resize(1);
+ <a name="_a11"></a><a class="code" href="classggl_1_1linear__ring.html" title="A linear_ring (linear linear_ring) is a closed line which should not be selfintersecting...">linear_ring&lt;point_2d&gt;</a>&amp; inner = poly.<a class="code" href="classggl_1_1polygon.html#5a8564eeeaa4f244e6f70ab10395a63f">inners</a>().back();
 
         <span class="keyword">const</span> <span class="keywordtype">double</span> coor[][2] = { {4.0, 2.0}, {4.2, 1.4}, {4.8, 1.9}, {4.4, 2.2}, {4.0, 2.0} };
         <a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>(inner, coor);
@@ -169,7 +169,7 @@
     }
 
     <a class="code" href="classggl_1_1polygon.html" title="The polygon contains an outer ring and zero or more inner rings.">polygon_2d</a> hull;
- <a name="a13"></a><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a>(poly, std::back_inserter(hull.<a class="code" href="classggl_1_1polygon.html#be04d3ead04813a25be1a219076358a8">outer</a>()));
+ <a name="a13"></a><a class="code" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7" title="Calculate the convex hull of a geometry.">convex_hull</a>(poly, hull);
     std::cout &lt;&lt; <span class="stringliteral">"Convex hull:"</span> &lt;&lt; <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(hull) &lt;&lt; std::endl;
 
     <span class="comment">// If you really want:</span>

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__convex__hull_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__convex__hull_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__convex__hull_8hpp_source.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -51,129 +51,129 @@
 <a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_STRATEGIES_AGNOSTIC_CONVEX_HULL_HPP</span>
 <a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_STRATEGIES_AGNOSTIC_CONVEX_HULL_HPP</span>
 <a name="l00011"></a>00011 <span class="preprocessor"></span>
-<a name="l00012"></a>00012 <span class="preprocessor">#ifdef _MSC_VER</span>
-<a name="l00013"></a>00013 <span class="preprocessor"></span><span class="preprocessor">#pragma warning( disable : 4101 )</span>
-<a name="l00014"></a>00014 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00015"></a>00015 <span class="preprocessor"></span>
-<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;cstddef&gt;</span>
-<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;algorithm&gt;</span>
-<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;vector&gt;</span>
+<a name="l00012"></a>00012
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;cstddef&gt;</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;algorithm&gt;</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;vector&gt;</span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;boost/concept_check.hpp&gt;</span> <span class="comment">// for ignore-variable</span>
 <a name="l00019"></a>00019
-<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
-<a name="l00021"></a>00021
-<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="strategy__traits_8hpp.html">ggl/strategies/strategy_traits.hpp</a>&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="strategy__traits_8hpp.html">ggl/strategies/strategy_traits.hpp</a>&gt;</span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="less_8hpp.html">ggl/util/less.hpp</a>&gt;</span>
 <a name="l00024"></a>00024
-<a name="l00025"></a>00025 <span class="comment">// TODO: Temporary, comparing tests, this can be removed in the end</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#if defined(GGL_USE_SMOOTH_SORT)</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor"># include "SmoothSort.hpp"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#elif defined(GGL_USE_MERGE_SORT)</span>
-<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor"># include "MergeSort.hpp"</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#else</span>
-<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00032"></a>00032 <span class="preprocessor"></span>
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>ggl
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035
-<a name="l00036"></a><a class="code" href="namespaceggl_1_1strategy_1_1convex__hull.html">00036</a> <span class="keyword">namespace </span>strategy { <span class="keyword">namespace </span><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a> {
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 <span class="comment">// TODO: Temporary, comparing tests, this can be removed in the end</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#if defined(GGL_USE_SMOOTH_SORT)</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor"># include "SmoothSort.hpp"</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#elif defined(GGL_USE_MERGE_SORT)</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor"># include "MergeSort.hpp"</span>
+<a name="l00032"></a>00032 <span class="preprocessor">#else</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span>
+<a name="l00035"></a>00035 <span class="keyword">namespace </span>ggl
+<a name="l00036"></a>00036 {
 <a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
-<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="keyword">namespace </span>detail
-<a name="l00040"></a>00040 {
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> RangeIterator, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00043"></a>00043 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> get_extremes(<span class="keyword">const</span> Range&amp; range,
-<a name="l00044"></a>00044 RangeIterator&amp; min_it, RangeIterator&amp; max_it,
-<a name="l00045"></a>00045 <span class="keyword">const</span> Strategy&amp; strategy)
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 min_it = boost::begin(range);
-<a name="l00048"></a>00048 max_it = boost::begin(range);
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050 <span class="keywordflow">for</span> (RangeIterator it = boost::begin(range) + 1; it != boost::end(range); ++it)
-<a name="l00051"></a>00051 {
-<a name="l00052"></a>00052 <span class="keywordflow">if</span> (strategy.smaller(*it, *min_it))
-<a name="l00053"></a>00053 {
-<a name="l00054"></a>00054 min_it = it;
-<a name="l00055"></a>00055 }
-<a name="l00056"></a>00056
-<a name="l00057"></a>00057 <span class="keywordflow">if</span> (strategy.larger(*it, *max_it))
-<a name="l00058"></a>00058 {
-<a name="l00059"></a>00059 max_it = it;
-<a name="l00060"></a>00060 }
-<a name="l00061"></a>00061 }
-<a name="l00062"></a>00062 }
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R&gt;
-<a name="l00065"></a>00065 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> sort(R&amp; range)
-<a name="l00066"></a>00066 {
-<a name="l00067"></a>00067 <span class="preprocessor"> #if defined(USE_SMOOTH_SORT)</span>
-<a name="l00068"></a>00068 <span class="preprocessor"></span> smoothsort::sort(boost::begin(range), boost::end(range));
-<a name="l00069"></a>00069 <span class="preprocessor"> #elif defined(USE_MERGE_SORT)</span>
-<a name="l00070"></a>00070 <span class="preprocessor"></span> comparing::merge_sort&lt;thread_count&gt;(boost::begin(range), boost::end(range), std::less&lt;P&gt;());
-<a name="l00071"></a>00071 <span class="preprocessor"> #else</span>
-<a name="l00072"></a>00072 <span class="preprocessor"></span> std::sort(boost::begin(range), boost::end(range));
-<a name="l00073"></a>00073 <span class="preprocessor"> #endif</span>
-<a name="l00074"></a>00074 <span class="preprocessor"></span>}
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 } <span class="comment">// namespace detail</span>
-<a name="l00077"></a>00077 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00038"></a><a class="code" href="namespaceggl_1_1strategy_1_1convex__hull.html">00038</a> <span class="keyword">namespace </span>strategy { <span class="keyword">namespace </span><a class="code" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7" title="Calculate the convex hull of a geometry.">convex_hull</a> {
+<a name="l00039"></a>00039
+<a name="l00040"></a>00040 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="keyword">namespace </span>detail
+<a name="l00042"></a>00042 {
+<a name="l00043"></a>00043
+<a name="l00044"></a>00044 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> RangeIterator, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00045"></a>00045 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> get_extremes(<span class="keyword">const</span> Range&amp; range,
+<a name="l00046"></a>00046 RangeIterator&amp; min_it, RangeIterator&amp; max_it,
+<a name="l00047"></a>00047 <span class="keyword">const</span> Strategy&amp; strategy)
+<a name="l00048"></a>00048 {
+<a name="l00049"></a>00049 min_it = boost::begin(range);
+<a name="l00050"></a>00050 max_it = boost::begin(range);
+<a name="l00051"></a>00051
+<a name="l00052"></a>00052 <span class="keywordflow">for</span> (RangeIterator it = boost::begin(range) + 1; it != boost::end(range); ++it)
+<a name="l00053"></a>00053 {
+<a name="l00054"></a>00054 <span class="keywordflow">if</span> (strategy.smaller(*it, *min_it))
+<a name="l00055"></a>00055 {
+<a name="l00056"></a>00056 min_it = it;
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058
+<a name="l00059"></a>00059 <span class="keywordflow">if</span> (strategy.larger(*it, *max_it))
+<a name="l00060"></a>00060 {
+<a name="l00061"></a>00061 max_it = it;
+<a name="l00062"></a>00062 }
+<a name="l00063"></a>00063 }
+<a name="l00064"></a>00064 }
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R&gt;
+<a name="l00067"></a>00067 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> sort(R&amp; range)
+<a name="l00068"></a>00068 {
+<a name="l00069"></a>00069 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_value&lt;R&gt;::type <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071 <span class="preprocessor">#if defined(USE_SMOOTH_SORT)</span>
+<a name="l00072"></a>00072 <span class="preprocessor"></span> smoothsort::sort
+<a name="l00073"></a>00073 <span class="preprocessor">#elif defined(USE_MERGE_SORT)</span>
+<a name="l00074"></a>00074 <span class="preprocessor"></span> comparing::merge_sort&lt;thread_count&gt;
+<a name="l00075"></a>00075 <span class="preprocessor">#else</span>
+<a name="l00076"></a>00076 <span class="preprocessor"></span> std::sort
+<a name="l00077"></a>00077 <span class="preprocessor">#endif</span>
 <a name="l00078"></a>00078 <span class="preprocessor"></span>
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080 <span class="comment">// Completely reworked version from source at:</span>
-<a name="l00081"></a>00081 <span class="comment">// http://www.ddj.com/architect/201806315>
-<a name="l00082"></a>00082 <span class="comment">// also available at
http://marknelson.us/2007/08/22/convex>
-<a name="l00083"></a>00083 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P&gt;
-<a name="l00084"></a><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html">00084</a> <span class="keyword">class </span><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html">graham</a>
-<a name="l00085"></a>00085 {
-<a name="l00086"></a>00086 <span class="keyword">private</span>:
-<a name="l00087"></a>00087
-<a name="l00088"></a>00088 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;P&gt;::type</a> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag</a>;
-<a name="l00089"></a>00089 <span class="keyword">typedef</span> <span class="keyword">typename</span> std::vector&lt;P&gt; container;
-<a name="l00090"></a>00090 <span class="keyword">typedef</span> <span class="keyword">typename</span> std::vector&lt;P&gt;::const_iterator iterator;
-<a name="l00091"></a>00091 <span class="keyword">typedef</span> <span class="keyword">typename</span> std::vector&lt;P&gt;::const_reverse_iterator rev_iterator;
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 container m_lower_hull;
-<a name="l00094"></a>00094 container m_upper_hull;
-<a name="l00095"></a>00095 container m_copied_input;
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097
-<a name="l00098"></a>00098 <span class="keyword">public</span>:
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <span class="comment">// Default constructor, ranges can be added using "add_range" but note they'll be copied</span>
-<a name="l00101"></a><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#00ccb1a05057f89cd1d557506e9eba1d">00101</a> <span class="keyword">inline</span> <a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#00ccb1a05057f89cd1d557506e9eba1d">graham</a>()
-<a name="l00102"></a>00102 {
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 <span class="comment">// Constructor with a range</span>
-<a name="l00106"></a>00106 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range&gt;
-<a name="l00107"></a><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#03467845cee70dffe77e7469290d4e62">00107</a> <span class="keyword">inline</span> <a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#00ccb1a05057f89cd1d557506e9eba1d">graham</a>(<span class="keyword">const</span> Range&amp; range)
+<a name="l00079"></a>00079 (boost::begin(range), boost::end(range), <a class="code" href="structggl_1_1less.html" title="Less predicate for usage in e.g. std::map.">ggl::less&lt;point_type&gt;</a>());
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081
+<a name="l00082"></a>00082 } <span class="comment">// namespace detail</span>
+<a name="l00083"></a>00083 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00084"></a>00084 <span class="preprocessor"></span>
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 <span class="comment">// Completely reworked version from source at:</span>
+<a name="l00087"></a>00087 <span class="comment">//
http://www.ddj.com/architect/201806315>
+<a name="l00088"></a>00088 <span class="comment">// also available at
http://marknelson.us/2007/08/22/convex>
+<a name="l00089"></a>00089 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P&gt;
+<a name="l00090"></a><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html">00090</a> <span class="keyword">class </span><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html">graham</a>
+<a name="l00091"></a>00091 {
+<a name="l00092"></a>00092 <span class="keyword">private</span>:
+<a name="l00093"></a>00093
+<a name="l00094"></a>00094 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;P&gt;::type</a> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag</a>;
+<a name="l00095"></a>00095 <span class="keyword">typedef</span> <span class="keyword">typename</span> std::vector&lt;P&gt; container;
+<a name="l00096"></a>00096 <span class="keyword">typedef</span> <span class="keyword">typename</span> std::vector&lt;P&gt;::const_iterator iterator;
+<a name="l00097"></a>00097 <span class="keyword">typedef</span> <span class="keyword">typename</span> std::vector&lt;P&gt;::const_reverse_iterator rev_iterator;
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 container m_lower_hull;
+<a name="l00100"></a>00100 container m_upper_hull;
+<a name="l00101"></a>00101 container m_copied_input;
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104 <span class="keyword">public</span>:
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 <span class="comment">// Default constructor, ranges can be added using "add_range" but note they'll be copied</span>
+<a name="l00107"></a><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#00ccb1a05057f89cd1d557506e9eba1d">00107</a> <span class="keyword">inline</span> <a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#00ccb1a05057f89cd1d557506e9eba1d">graham</a>()
 <a name="l00108"></a>00108 {
-<a name="l00109"></a>00109 handle_range(range);
-<a name="l00110"></a>00110 }
-<a name="l00111"></a>00111
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputIterator&gt;
-<a name="l00114"></a><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#23378d3d7d381ddac21b68e449fbccbc">00114</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">get</span>(OutputIterator out)
-<a name="l00115"></a>00115 {
-<a name="l00116"></a>00116 <span class="keywordflow">for</span> (iterator it = m_upper_hull.begin(); it != m_upper_hull.end(); ++it, ++out)
-<a name="l00117"></a>00117 {
-<a name="l00118"></a>00118 *out = *it;
-<a name="l00119"></a>00119 }
-<a name="l00120"></a>00120
-<a name="l00121"></a>00121 <span class="comment">// STL Port does not accept iterating from rbegin+1 to rend</span>
-<a name="l00122"></a>00122 std::size_t size = m_lower_hull.size();
-<a name="l00123"></a>00123 <span class="keywordflow">if</span> (size &gt; 0)
-<a name="l00124"></a>00124 {
-<a name="l00125"></a>00125 rev_iterator it = m_lower_hull.rbegin() + 1;
-<a name="l00126"></a>00126 <span class="keywordflow">for</span> (std::size_t i = 1; i &lt; size; ++i, ++it, ++out)
-<a name="l00127"></a>00127 {
-<a name="l00128"></a>00128 *out = *it;
-<a name="l00129"></a>00129 }
-<a name="l00130"></a>00130 }
-<a name="l00131"></a>00131 }
-<a name="l00132"></a>00132
+<a name="l00109"></a>00109 }
+<a name="l00110"></a>00110
+<a name="l00111"></a>00111 <span class="comment">// Constructor with a range</span>
+<a name="l00112"></a>00112 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range&gt;
+<a name="l00113"></a><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#03467845cee70dffe77e7469290d4e62">00113</a> <span class="keyword">inline</span> <a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#00ccb1a05057f89cd1d557506e9eba1d">graham</a>(<span class="keyword">const</span> Range&amp; range)
+<a name="l00114"></a>00114 {
+<a name="l00115"></a>00115 handle_range(range);
+<a name="l00116"></a>00116 }
+<a name="l00117"></a>00117
+<a name="l00118"></a>00118
+<a name="l00119"></a>00119 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00120"></a><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#67876d356c1bf48171f46c116510f166">00120</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">get</span>(OutputIterator out, <span class="keywordtype">bool</span> <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d55fe53c1821ca13eb0eacb9084cb1d1c">clockwise</a>)
+<a name="l00121"></a>00121 {
+<a name="l00122"></a>00122 <span class="keywordflow">if</span> (<a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d55fe53c1821ca13eb0eacb9084cb1d1c">clockwise</a>)
+<a name="l00123"></a>00123 {
+<a name="l00124"></a>00124 get_range_forward(m_upper_hull, out);
+<a name="l00125"></a>00125 get_range_reverse(m_lower_hull, out);
+<a name="l00126"></a>00126 }
+<a name="l00127"></a>00127 <span class="keywordflow">else</span>
+<a name="l00128"></a>00128 {
+<a name="l00129"></a>00129 get_range_forward(m_lower_hull, out);
+<a name="l00130"></a>00130 get_range_reverse(m_upper_hull, out);
+<a name="l00131"></a>00131 }
+<a name="l00132"></a>00132 }
 <a name="l00133"></a>00133
-<a name="l00134"></a>00134 <span class="comment">// Note /</span>
+<a name="l00134"></a>00134
 <a name="l00135"></a>00135 <span class="comment">// TODO:</span>
 <a name="l00136"></a>00136 <span class="comment">// Consider if it is better to create an iterator over a multi, which is then used here,</span>
 <a name="l00137"></a>00137 <span class="comment">// instead of copying the range</span>
@@ -223,8 +223,8 @@
 <a name="l00181"></a>00181 detail::sort(lower_points);
 <a name="l00182"></a>00182 detail::sort(upper_points);
 <a name="l00183"></a>00183
-<a name="l00184"></a>00184 build_half_hull&lt;1&gt;(lower_points, m_lower_hull, *left_it, *right_it);
-<a name="l00185"></a>00185 build_half_hull&lt;-1&gt;(upper_points, m_upper_hull, *left_it, *right_it);
+<a name="l00184"></a>00184 build_half_hull&lt;-1&gt;(lower_points, m_lower_hull, *left_it, *right_it);
+<a name="l00185"></a>00185 build_half_hull&lt;1&gt;(upper_points, m_upper_hull, *left_it, *right_it);
 <a name="l00186"></a>00186 }
 <a name="l00187"></a>00187
 <a name="l00188"></a>00188
@@ -237,87 +237,114 @@
 <a name="l00195"></a>00195 container&amp; upper_points)
 <a name="l00196"></a>00196 {
 <a name="l00197"></a>00197 <span class="keyword">typename</span> strategy_side&lt;cs_tag, P&gt;::type side;
-<a name="l00198"></a>00198
-<a name="l00199"></a>00199 <span class="comment">// Put points in one of the two output sequences</span>
-<a name="l00200"></a>00200 <span class="keywordflow">for</span> (RangeIterator it = boost::begin(range);
-<a name="l00201"></a>00201 it != boost::end(range);
-<a name="l00202"></a>00202 ++it)
-<a name="l00203"></a>00203 {
-<a name="l00204"></a>00204 <span class="keywordflow">if</span> (it != left_it &amp;&amp; it != right_it)
-<a name="l00205"></a>00205 {
-<a name="l00206"></a>00206 <span class="keywordtype">int</span> dir = side.side(*left_it, *right_it, *it);
-<a name="l00207"></a>00207 <span class="keywordflow">if</span> ( dir &lt; 0 )
-<a name="l00208"></a>00208 {
-<a name="l00209"></a>00209 upper_points.push_back(*it);
-<a name="l00210"></a>00210 }
-<a name="l00211"></a>00211 <span class="keywordflow">else</span>
-<a name="l00212"></a>00212 {
-<a name="l00213"></a>00213 lower_points.push_back(*it);
-<a name="l00214"></a>00214 }
-<a name="l00215"></a>00215 }
-<a name="l00216"></a>00216 }
-<a name="l00217"></a>00217 }
-<a name="l00218"></a>00218
-<a name="l00219"></a>00219
-<a name="l00220"></a>00220 <span class="keyword">template</span> &lt;<span class="keywordtype">int</span> Factor&gt;
-<a name="l00221"></a>00221 <span class="keyword">inline</span> <span class="keywordtype">void</span> build_half_hull(<span class="keyword">const</span> container&amp; input, container&amp; output,
-<a name="l00222"></a>00222 <span class="keyword">const</span> P&amp; left, <span class="keyword">const</span> P&amp; right)
-<a name="l00223"></a>00223 {
-<a name="l00224"></a>00224 output.push_back(left);
-<a name="l00225"></a>00225 <span class="keywordflow">for</span>(iterator it = input.begin(); it != input.end(); ++it)
-<a name="l00226"></a>00226 {
-<a name="l00227"></a>00227 add_to_hull&lt;Factor&gt;(*it, output);
-<a name="l00228"></a>00228 }
-<a name="l00229"></a>00229 add_to_hull&lt;Factor&gt;(right, output);
-<a name="l00230"></a>00230 }
-<a name="l00231"></a>00231
-<a name="l00232"></a>00232 <span class="keyword">template</span> &lt;<span class="keywordtype">int</span> Factor&gt;
-<a name="l00233"></a>00233 <span class="keyword">inline</span> <span class="keywordtype">void</span> add_to_hull(<span class="keyword">const</span> P&amp; p, container&amp; output)
-<a name="l00234"></a>00234 {
-<a name="l00235"></a>00235 <span class="keyword">typename</span> strategy_side&lt;cs_tag, P&gt;::type side;
-<a name="l00236"></a>00236
-<a name="l00237"></a>00237 output.push_back(p);
-<a name="l00238"></a>00238 <span class="keyword">register</span> std::size_t output_size = output.size();
-<a name="l00239"></a>00239 <span class="keywordflow">while</span> (output_size &gt;= 3)
-<a name="l00240"></a>00240 {
-<a name="l00241"></a>00241 rev_iterator rit = output.rbegin();
-<a name="l00242"></a>00242 <span class="keyword">const</span> P&amp; last = *rit++;
-<a name="l00243"></a>00243 <span class="keyword">const</span> P&amp; last2 = *rit++;
-<a name="l00244"></a>00244
-<a name="l00245"></a>00245 <span class="keywordflow">if</span> (Factor * side.side(*rit, last, last2) &lt;= 0)
-<a name="l00246"></a>00246 {
-<a name="l00247"></a>00247 <span class="comment">// Remove last two points from stack, and add last again</span>
-<a name="l00248"></a>00248 <span class="comment">// This is much faster then erasing the one but last.</span>
-<a name="l00249"></a>00249 output.pop_back();
-<a name="l00250"></a>00250 output.pop_back();
-<a name="l00251"></a>00251 output.push_back(last);
-<a name="l00252"></a>00252 output_size--;
-<a name="l00253"></a>00253 }
-<a name="l00254"></a>00254 <span class="keywordflow">else</span>
-<a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 <span class="keywordflow">return</span>;
+<a name="l00198"></a>00198 boost::ignore_unused_variable_warning(side);
+<a name="l00199"></a>00199
+<a name="l00200"></a>00200 <span class="comment">// Put points in one of the two output sequences</span>
+<a name="l00201"></a>00201 <span class="keywordflow">for</span> (RangeIterator it = boost::begin(range);
+<a name="l00202"></a>00202 it != boost::end(range);
+<a name="l00203"></a>00203 ++it)
+<a name="l00204"></a>00204 {
+<a name="l00205"></a>00205 <span class="keywordflow">if</span> (it != left_it &amp;&amp; it != right_it)
+<a name="l00206"></a>00206 {
+<a name="l00207"></a>00207 <span class="keywordtype">int</span> dir = side.side(*left_it, *right_it, *it);
+<a name="l00208"></a>00208 <span class="keywordflow">switch</span>(dir)
+<a name="l00209"></a>00209 {
+<a name="l00210"></a>00210 <span class="keywordflow">case</span> 1 : <span class="comment">// left</span>
+<a name="l00211"></a>00211 upper_points.push_back(*it);
+<a name="l00212"></a>00212 <span class="keywordflow">break</span>;
+<a name="l00213"></a>00213 <span class="keywordflow">case</span> -1 : <span class="comment">// right</span>
+<a name="l00214"></a>00214 lower_points.push_back(*it);
+<a name="l00215"></a>00215 <span class="keywordflow">break</span>;
+<a name="l00216"></a>00216 <span class="comment">// zero: on line left-right, never part of hull</span>
+<a name="l00217"></a>00217 }
+<a name="l00218"></a>00218 }
+<a name="l00219"></a>00219 }
+<a name="l00220"></a>00220 }
+<a name="l00221"></a>00221
+<a name="l00222"></a>00222
+<a name="l00223"></a>00223 <span class="keyword">template</span> &lt;<span class="keywordtype">int</span> Factor&gt;
+<a name="l00224"></a>00224 <span class="keyword">inline</span> <span class="keywordtype">void</span> build_half_hull(<span class="keyword">const</span> container&amp; input, container&amp; output,
+<a name="l00225"></a>00225 <span class="keyword">const</span> P&amp; left, <span class="keyword">const</span> P&amp; right)
+<a name="l00226"></a>00226 {
+<a name="l00227"></a>00227 output.push_back(left);
+<a name="l00228"></a>00228 <span class="keywordflow">for</span>(iterator it = input.begin(); it != input.end(); ++it)
+<a name="l00229"></a>00229 {
+<a name="l00230"></a>00230 add_to_hull&lt;Factor&gt;(*it, output);
+<a name="l00231"></a>00231 }
+<a name="l00232"></a>00232 add_to_hull&lt;Factor&gt;(right, output);
+<a name="l00233"></a>00233 }
+<a name="l00234"></a>00234
+<a name="l00235"></a>00235 <span class="keyword">template</span> &lt;<span class="keywordtype">int</span> Factor&gt;
+<a name="l00236"></a>00236 <span class="keyword">inline</span> <span class="keywordtype">void</span> add_to_hull(<span class="keyword">const</span> P&amp; p, container&amp; output)
+<a name="l00237"></a>00237 {
+<a name="l00238"></a>00238 <span class="keyword">typename</span> strategy_side&lt;cs_tag, P&gt;::type side;
+<a name="l00239"></a>00239 boost::ignore_unused_variable_warning(side);
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241 output.push_back(p);
+<a name="l00242"></a>00242 <span class="keyword">register</span> std::size_t output_size = output.size();
+<a name="l00243"></a>00243 <span class="keywordflow">while</span> (output_size &gt;= 3)
+<a name="l00244"></a>00244 {
+<a name="l00245"></a>00245 rev_iterator rit = output.rbegin();
+<a name="l00246"></a>00246 <span class="keyword">const</span> P&amp; last = *rit++;
+<a name="l00247"></a>00247 <span class="keyword">const</span> P&amp; last2 = *rit++;
+<a name="l00248"></a>00248
+<a name="l00249"></a>00249 <span class="keywordflow">if</span> (Factor * side.side(*rit, last, last2) &lt;= 0)
+<a name="l00250"></a>00250 {
+<a name="l00251"></a>00251 <span class="comment">// Remove last two points from stack, and add last again</span>
+<a name="l00252"></a>00252 <span class="comment">// This is much faster then erasing the one but last.</span>
+<a name="l00253"></a>00253 output.pop_back();
+<a name="l00254"></a>00254 output.pop_back();
+<a name="l00255"></a>00255 output.push_back(last);
+<a name="l00256"></a>00256 output_size--;
 <a name="l00257"></a>00257 }
-<a name="l00258"></a>00258 }
-<a name="l00259"></a>00259 }
-<a name="l00260"></a>00260
-<a name="l00261"></a>00261
-<a name="l00262"></a>00262 };
-<a name="l00263"></a>00263
-<a name="l00264"></a>00264 }} <span class="comment">// namespace strategy::convex_hull</span>
-<a name="l00265"></a>00265
-<a name="l00266"></a>00266
-<a name="l00267"></a>00267 <span class="preprocessor">#ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS</span>
-<a name="l00268"></a>00268 <span class="preprocessor"></span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> P&gt;
-<a name="l00269"></a>00269 <span class="keyword">struct </span>strategy_convex_hull&lt;cartesian_tag, P&gt;
-<a name="l00270"></a>00270 {
-<a name="l00271"></a>00271 <span class="keyword">typedef</span> strategy::convex_hull::graham&lt;P&gt; <a class="code" href="structggl_1_1strategy__convex__hull.html#ec3cbad2b86bbd620de9d6c669863f32">type</a>;
-<a name="l00272"></a>00272 };
-<a name="l00273"></a>00273 <span class="preprocessor">#endif</span>
-<a name="l00274"></a>00274 <span class="preprocessor"></span>
-<a name="l00275"></a>00275 } <span class="comment">// namespace ggl</span>
-<a name="l00276"></a>00276
-<a name="l00277"></a>00277
-<a name="l00278"></a>00278 <span class="preprocessor">#endif // GGL_STRATEGY_AGNOSTIC_CONVEX_HULL_HPP</span>
+<a name="l00258"></a>00258 <span class="keywordflow">else</span>
+<a name="l00259"></a>00259 {
+<a name="l00260"></a>00260 <span class="keywordflow">return</span>;
+<a name="l00261"></a>00261 }
+<a name="l00262"></a>00262 }
+<a name="l00263"></a>00263 }
+<a name="l00264"></a>00264
+<a name="l00265"></a>00265 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00266"></a>00266 <span class="keyword">inline</span> <span class="keywordtype">void</span> get_range_forward(Range <span class="keyword">const</span>&amp; range, OutputIterator out)
+<a name="l00267"></a>00267 {
+<a name="l00268"></a>00268 <span class="keywordflow">for</span> (iterator it = range.begin(); it != range.end(); ++it, ++out)
+<a name="l00269"></a>00269 {
+<a name="l00270"></a>00270 *out = *it;
+<a name="l00271"></a>00271 }
+<a name="l00272"></a>00272 }
+<a name="l00273"></a>00273
+<a name="l00274"></a>00274 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00275"></a>00275 <span class="keyword">inline</span> <span class="keywordtype">void</span> get_range_reverse(Range <span class="keyword">const</span>&amp; range, OutputIterator out)
+<a name="l00276"></a>00276 {
+<a name="l00277"></a>00277 <span class="comment">// STL Port does not accept iterating from rbegin+1 to rend</span>
+<a name="l00278"></a>00278 std::size_t size = range.size();
+<a name="l00279"></a>00279 <span class="keywordflow">if</span> (size &gt; 0)
+<a name="l00280"></a>00280 {
+<a name="l00281"></a>00281 rev_iterator it = range.rbegin() + 1;
+<a name="l00282"></a>00282 <span class="keywordflow">for</span> (std::size_t i = 1; i &lt; size; ++i, ++it, ++out)
+<a name="l00283"></a>00283 {
+<a name="l00284"></a>00284 *out = *it;
+<a name="l00285"></a>00285 }
+<a name="l00286"></a>00286 }
+<a name="l00287"></a>00287 }
+<a name="l00288"></a>00288
+<a name="l00289"></a>00289 };
+<a name="l00290"></a>00290
+<a name="l00291"></a>00291 }} <span class="comment">// namespace strategy::convex_hull</span>
+<a name="l00292"></a>00292
+<a name="l00293"></a>00293
+<a name="l00294"></a>00294 <span class="preprocessor">#ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS</span>
+<a name="l00295"></a>00295 <span class="preprocessor"></span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> P&gt;
+<a name="l00296"></a>00296 <span class="keyword">struct </span>strategy_convex_hull&lt;cartesian_tag, P&gt;
+<a name="l00297"></a>00297 {
+<a name="l00298"></a>00298 <span class="keyword">typedef</span> strategy::convex_hull::graham&lt;P&gt; <a class="code" href="structggl_1_1strategy__convex__hull.html#ec3cbad2b86bbd620de9d6c669863f32">type</a>;
+<a name="l00299"></a>00299 };
+<a name="l00300"></a>00300 <span class="preprocessor">#endif</span>
+<a name="l00301"></a>00301 <span class="preprocessor"></span>
+<a name="l00302"></a>00302 } <span class="comment">// namespace ggl</span>
+<a name="l00303"></a>00303
+<a name="l00304"></a>00304
+<a name="l00305"></a>00305 <span class="preprocessor">#endif // GGL_STRATEGY_AGNOSTIC_CONVEX_HULL_HPP</span>
 </pre></div></div>
 <hr size="1">
 <table width="100%">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__simplify_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__simplify_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__simplify_8hpp_source.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -69,7 +69,7 @@
 <a name="l00027"></a>00027 {
 <a name="l00028"></a>00028 <span class="keyword">namespace </span>strategy
 <a name="l00029"></a>00029 {
-<a name="l00030"></a><a class="code" href="namespaceggl_1_1strategy_1_1simplify.html">00030</a> <span class="keyword">namespace </span><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>
+<a name="l00030"></a><a class="code" href="namespaceggl_1_1strategy_1_1simplify.html">00030</a> <span class="keyword">namespace </span><a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry.">simplify</a>
 <a name="l00031"></a>00031 {
 <a name="l00032"></a>00032 <span class="preprocessor"> #ifndef DOXYGEN_NO_DETAIL</span>
 <a name="l00033"></a>00033 <span class="preprocessor"></span> <span class="keyword">namespace </span>detail

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp_source.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -56,200 +56,239 @@
 <a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
 <a name="l00015"></a>00015
 <a name="l00016"></a>00016 <span class="preprocessor">#include &lt;<a class="code" href="calculate__null_8hpp.html">ggl/algorithms/detail/calculate_null.hpp</a>&gt;</span>
-<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
-<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>&gt;</span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>&gt;</span>
-<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="nsphere__concept_8hpp.html">ggl/core/concepts/nsphere_concept.hpp</a>&gt;</span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="loop_8hpp.html">ggl/util/loop.hpp</a>&gt;</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="math_8hpp.html">ggl/util/math.hpp</a>&gt;</span>
-<a name="l00025"></a>00025
-<a name="l00048"></a>00048 <span class="keyword">namespace </span>ggl
-<a name="l00049"></a>00049 {
-<a name="l00050"></a>00050
-<a name="l00051"></a>00051 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
-<a name="l00052"></a>00052 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a> {
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> S&gt;
-<a name="l00055"></a>00055 <span class="keyword">struct </span>box_area
-<a name="l00056"></a>00056 {
-<a name="l00057"></a>00057 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html#b723a443a97f7c4ed7c47ac96d7e29ee">coordinate_type&lt;B&gt;::type</a> return_type;
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059 <span class="keyword">static</span> <span class="keyword">inline</span> return_type apply(B <span class="keyword">const</span>&amp; b, S <span class="keyword">const</span>&amp;)
-<a name="l00060"></a>00060 {
-<a name="l00061"></a>00061 <span class="comment">// Currently only works for Cartesian boxes</span>
-<a name="l00062"></a>00062 <span class="comment">// Todo: use strategy</span>
-<a name="l00063"></a>00063 <span class="comment">// Todo: use concept</span>
-<a name="l00064"></a>00064 assert_dimension&lt;B, 2&gt;();
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066 return_type <span class="keyword">const</span> dx = get&lt;max_corner, 0&gt;(b) - get&lt;min_corner, 0&gt;(b);
-<a name="l00067"></a>00067 return_type <span class="keyword">const</span> dy = get&lt;max_corner, 1&gt;(b) - get&lt;min_corner, 1&gt;(b);
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069 <span class="keywordflow">return</span> dx * dy;
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071 };
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="point__order_8hpp.html">ggl/core/point_order.hpp</a>&gt;</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="nsphere__concept_8hpp.html">ggl/core/concepts/nsphere_concept.hpp</a>&gt;</span>
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;<a class="code" href="loop_8hpp.html">ggl/util/loop.hpp</a>&gt;</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;<a class="code" href="math_8hpp.html">ggl/util/math.hpp</a>&gt;</span>
+<a name="l00029"></a>00029
+<a name="l00052"></a>00052 <span class="keyword">namespace </span>ggl
+<a name="l00053"></a>00053 {
+<a name="l00054"></a>00054
+<a name="l00055"></a>00055 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00056"></a>00056 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a> {
+<a name="l00057"></a>00057
+<a name="l00058"></a>00058 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> S&gt;
+<a name="l00059"></a>00059 <span class="keyword">struct </span>box_area
+<a name="l00060"></a>00060 {
+<a name="l00061"></a>00061 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html#b723a443a97f7c4ed7c47ac96d7e29ee">coordinate_type&lt;B&gt;::type</a> return_type;
+<a name="l00062"></a>00062
+<a name="l00063"></a>00063 <span class="keyword">static</span> <span class="keyword">inline</span> return_type apply(B <span class="keyword">const</span>&amp; b, S <span class="keyword">const</span>&amp;)
+<a name="l00064"></a>00064 {
+<a name="l00065"></a>00065 <span class="comment">// Currently only works for Cartesian boxes</span>
+<a name="l00066"></a>00066 <span class="comment">// Todo: use strategy</span>
+<a name="l00067"></a>00067 <span class="comment">// Todo: use concept</span>
+<a name="l00068"></a>00068 assert_dimension&lt;B, 2&gt;();
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070 return_type <span class="keyword">const</span> dx = get&lt;max_corner, 0&gt;(b) - get&lt;min_corner, 0&gt;(b);
+<a name="l00071"></a>00071 return_type <span class="keyword">const</span> dy = get&lt;max_corner, 1&gt;(b) - get&lt;min_corner, 1&gt;(b);
 <a name="l00072"></a>00072
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> C, <span class="keyword">typename</span> S&gt;
-<a name="l00075"></a>00075 <span class="keyword">struct </span>circle_area
-<a name="l00076"></a>00076 {
-<a name="l00077"></a>00077 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;C&gt;::type coordinate_type;
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079 <span class="comment">// Returning the coordinate precision, but if integer, returning a double</span>
-<a name="l00080"></a>00080 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_c
-<a name="l00081"></a>00081 &lt;
-<a name="l00082"></a>00082 boost::is_integral&lt;coordinate_type&gt;::type::value,
-<a name="l00083"></a>00083 double,
-<a name="l00084"></a>00084 coordinate_type
-<a name="l00085"></a>00085 &gt;::type return_type;
-<a name="l00086"></a>00086
-<a name="l00087"></a>00087 <span class="keyword">static</span> <span class="keyword">inline</span> return_type apply(C <span class="keyword">const</span>&amp; c, S <span class="keyword">const</span>&amp;)
-<a name="l00088"></a>00088 {
-<a name="l00089"></a>00089 <span class="comment">// Currently only works for Cartesian circles</span>
-<a name="l00090"></a>00090 <span class="comment">// Todo: use strategy</span>
-<a name="l00091"></a>00091 <span class="comment">// Todo: use concept</span>
-<a name="l00092"></a>00092 assert_dimension&lt;C, 2&gt;();
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 return_type r = get_radius&lt;0&gt;(c);
-<a name="l00095"></a>00095 r *= r * <a class="code" href="namespaceggl_1_1math.html#54fc384779fa97a61e07149d880a599c">ggl::math::pi</a>;
-<a name="l00096"></a>00096 <span class="keywordflow">return</span> r;
-<a name="l00097"></a>00097 }
-<a name="l00098"></a>00098 };
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100
-<a name="l00101"></a>00101 <span class="comment">// Area of a linear linear_ring, assuming a closed linear_ring</span>
-<a name="l00102"></a>00102 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> S&gt;
-<a name="l00103"></a>00103 <span class="keyword">struct </span>ring_area
-<a name="l00104"></a>00104 {
-<a name="l00105"></a>00105 <span class="keyword">typedef</span> <span class="keyword">typename</span> S::return_type type;
-<a name="l00106"></a>00106 <span class="keyword">static</span> <span class="keyword">inline</span> type apply(R <span class="keyword">const</span>&amp; ring, S <span class="keyword">const</span>&amp; strategy)
-<a name="l00107"></a>00107 {
-<a name="l00108"></a>00108 assert_dimension&lt;R, 2&gt;();
-<a name="l00109"></a>00109
-<a name="l00110"></a>00110 <span class="comment">// A closed linear_ring has at least four points, if not there is no area</span>
-<a name="l00111"></a>00111 <span class="keywordflow">if</span> (boost::size(ring) &gt;= 4)
-<a name="l00112"></a>00112 {
-<a name="l00113"></a>00113 <span class="keyword">typename</span> S::state_type state_type;
-<a name="l00114"></a>00114 <span class="keywordflow">if</span> (<a class="code" href="group__loop.html#g1ff95a74f261e15dfa714146bdcbf23f" title="Loops through segments of a container and call specified functor for all segments...">loop</a>(ring, strategy, state_type))
-<a name="l00115"></a>00115 {
-<a name="l00116"></a>00116 <span class="keywordflow">return</span> state_type.area();
-<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118 }
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 <span class="keywordflow">return</span> type();
-<a name="l00121"></a>00121 }
-<a name="l00122"></a>00122 };
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <span class="comment">// Area of a polygon, either clockwise or anticlockwise</span>
-<a name="l00125"></a>00125 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00126"></a>00126 <span class="keyword">class </span>polygon_area
-<a name="l00127"></a>00127 {
-<a name="l00128"></a>00128 <span class="keyword">typedef</span> <span class="keyword">typename</span> Strategy::return_type type;
-<a name="l00129"></a>00129 <span class="keyword">static</span> <span class="keyword">inline</span> type call_abs(type <span class="keyword">const</span>&amp; v)
-<a name="l00130"></a>00130 {
-<a name="l00131"></a>00131 <span class="preprocessor">#if defined(NUMERIC_ADAPTOR_INCLUDED)</span>
-<a name="l00132"></a>00132 <span class="preprocessor"></span> <span class="keywordflow">return</span> boost::abs(v);
-<a name="l00133"></a>00133 <span class="preprocessor">#else</span>
-<a name="l00134"></a>00134 <span class="preprocessor"></span> <span class="keywordflow">return</span> std::abs(v);
-<a name="l00135"></a>00135 <span class="preprocessor">#endif</span>
-<a name="l00136"></a>00136 <span class="preprocessor"></span> }
-<a name="l00137"></a>00137
-<a name="l00138"></a>00138 <span class="keyword">public</span>:
-<a name="l00139"></a>00139 <span class="keyword">static</span> <span class="keyword">inline</span> type apply(Polygon <span class="keyword">const</span>&amp; poly,
-<a name="l00140"></a>00140 Strategy <span class="keyword">const</span>&amp; strategy)
-<a name="l00141"></a>00141 {
-<a name="l00142"></a>00142 assert_dimension&lt;Polygon, 2&gt;();
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type&lt;Polygon&gt;::type ring_type;
-<a name="l00145"></a>00145 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
-<a name="l00146"></a>00146 &lt;
-<a name="l00147"></a>00147 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type
-<a name="l00148"></a>00148 &gt;::type iterator_type;
-<a name="l00149"></a>00149
-<a name="l00150"></a>00150 type a = call_abs(
-<a name="l00151"></a>00151 ring_area&lt;ring_type, Strategy&gt;::apply(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), strategy));
-<a name="l00152"></a>00152
-<a name="l00153"></a>00153 <span class="keywordflow">for</span> (iterator_type it = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
-<a name="l00154"></a>00154 it != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly)); ++it)
-<a name="l00155"></a>00155 {
-<a name="l00156"></a>00156 a -= call_abs(ring_area&lt;ring_type, Strategy&gt;::apply(*it, strategy));
-<a name="l00157"></a>00157 }
-<a name="l00158"></a>00158 <span class="keywordflow">return</span> a;
-<a name="l00159"></a>00159 }
-<a name="l00160"></a>00160 };
-<a name="l00161"></a>00161
-<a name="l00162"></a>00162 }} <span class="comment">// namespace detail::area</span>
+<a name="l00073"></a>00073 <span class="keywordflow">return</span> dx * dy;
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075 };
+<a name="l00076"></a>00076
+<a name="l00077"></a>00077
+<a name="l00078"></a>00078 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> C, <span class="keyword">typename</span> S&gt;
+<a name="l00079"></a>00079 <span class="keyword">struct </span>circle_area
+<a name="l00080"></a>00080 {
+<a name="l00081"></a>00081 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;C&gt;::type coordinate_type;
+<a name="l00082"></a>00082
+<a name="l00083"></a>00083 <span class="comment">// Returning the coordinate precision, but if integer, returning a double</span>
+<a name="l00084"></a>00084 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_c
+<a name="l00085"></a>00085 &lt;
+<a name="l00086"></a>00086 boost::is_integral&lt;coordinate_type&gt;::type::value,
+<a name="l00087"></a>00087 double,
+<a name="l00088"></a>00088 coordinate_type
+<a name="l00089"></a>00089 &gt;::type return_type;
+<a name="l00090"></a>00090
+<a name="l00091"></a>00091 <span class="keyword">static</span> <span class="keyword">inline</span> return_type apply(C <span class="keyword">const</span>&amp; c, S <span class="keyword">const</span>&amp;)
+<a name="l00092"></a>00092 {
+<a name="l00093"></a>00093 <span class="comment">// Currently only works for Cartesian circles</span>
+<a name="l00094"></a>00094 <span class="comment">// Todo: use strategy</span>
+<a name="l00095"></a>00095 <span class="comment">// Todo: use concept</span>
+<a name="l00096"></a>00096 assert_dimension&lt;C, 2&gt;();
+<a name="l00097"></a>00097
+<a name="l00098"></a>00098 return_type r = get_radius&lt;0&gt;(c);
+<a name="l00099"></a>00099 r *= r * <a class="code" href="namespaceggl_1_1math.html#54fc384779fa97a61e07149d880a599c">ggl::math::pi</a>;
+<a name="l00100"></a>00100 <span class="keywordflow">return</span> r;
+<a name="l00101"></a>00101 }
+<a name="l00102"></a>00102 };
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105 <span class="comment">// Area of a linear linear_ring</span>
+<a name="l00106"></a>00106 <span class="keyword">template</span>
+<a name="l00107"></a>00107 &lt;
+<a name="l00108"></a>00108 <span class="keyword">typename</span> R,
+<a name="l00109"></a>00109 <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d">order_selector</a> Order,
+<a name="l00110"></a>00110 <span class="comment">// closing_selector Closed -- for now assuming CLOSED, p(0) == p(n-1)</span>
+<a name="l00111"></a>00111 <span class="keyword">typename</span> S
+<a name="l00112"></a>00112 &gt;
+<a name="l00113"></a>00113 <span class="keyword">struct </span>ring_area
+<a name="l00114"></a>00114 {};
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116
+<a name="l00117"></a>00117 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> S&gt;
+<a name="l00118"></a>00118 <span class="keyword">struct </span>ring_area&lt;R, <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d55fe53c1821ca13eb0eacb9084cb1d1c">clockwise</a>, S&gt;
+<a name="l00119"></a>00119 {
+<a name="l00120"></a>00120 <span class="keyword">typedef</span> <span class="keyword">typename</span> S::return_type type;
+<a name="l00121"></a>00121 <span class="keyword">static</span> <span class="keyword">inline</span> type apply(R <span class="keyword">const</span>&amp; ring, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00122"></a>00122 {
+<a name="l00123"></a>00123 assert_dimension&lt;R, 2&gt;();
+<a name="l00124"></a>00124
+<a name="l00125"></a>00125 <span class="comment">// A closed linear_ring has at least four points,</span>
+<a name="l00126"></a>00126 <span class="comment">// if not, there is no (zero) area</span>
+<a name="l00127"></a>00127 <span class="keywordflow">if</span> (boost::size(ring) &gt;= 4)
+<a name="l00128"></a>00128 {
+<a name="l00129"></a>00129 <span class="keyword">typename</span> S::state_type state_type;
+<a name="l00130"></a>00130 <span class="keywordflow">if</span> (<a class="code" href="group__loop.html#g1ff95a74f261e15dfa714146bdcbf23f" title="Loops through segments of a container and call specified functor for all segments...">loop</a>(ring, strategy, state_type))
+<a name="l00131"></a>00131 {
+<a name="l00132"></a>00132 <span class="keywordflow">return</span> state_type.area();
+<a name="l00133"></a>00133 }
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135
+<a name="l00136"></a>00136 <span class="keywordflow">return</span> type();
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138 };
+<a name="l00139"></a>00139
+<a name="l00140"></a>00140 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> S&gt;
+<a name="l00141"></a>00141 <span class="keyword">struct </span>ring_area&lt;R, <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d7242f3377ee5283786ecb2bc2d90015a">counterclockwise</a>, S&gt;
+<a name="l00142"></a>00142 {
+<a name="l00143"></a>00143 <span class="keyword">typedef</span> <span class="keyword">typename</span> S::return_type type;
+<a name="l00144"></a>00144 <span class="keyword">static</span> <span class="keyword">inline</span> type apply(R <span class="keyword">const</span>&amp; ring, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00145"></a>00145 {
+<a name="l00146"></a>00146 <span class="comment">// Counter clockwise rings negate the area result</span>
+<a name="l00147"></a>00147 <span class="keywordflow">return</span> -ring_area&lt;R, clockwise, S&gt;::apply(ring, strategy);
+<a name="l00148"></a>00148 }
+<a name="l00149"></a>00149 };
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151
+<a name="l00152"></a>00152 <span class="comment">// Area of a polygon, either clockwise or anticlockwise</span>
+<a name="l00153"></a>00153 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Polygon, order_selector Order, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00154"></a>00154 <span class="keyword">class </span>polygon_area
+<a name="l00155"></a>00155 {
+<a name="l00156"></a>00156 <span class="keyword">typedef</span> <span class="keyword">typename</span> Strategy::return_type type;
+<a name="l00157"></a>00157
+<a name="l00158"></a>00158 <span class="keyword">public</span>:
+<a name="l00159"></a>00159 <span class="keyword">static</span> <span class="keyword">inline</span> type apply(Polygon <span class="keyword">const</span>&amp; poly,
+<a name="l00160"></a>00160 Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00161"></a>00161 {
+<a name="l00162"></a>00162 assert_dimension&lt;Polygon, 2&gt;();
 <a name="l00163"></a>00163
-<a name="l00164"></a>00164 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
-<a name="l00165"></a>00165 <span class="preprocessor"></span>
-<a name="l00166"></a>00166 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
-<a name="l00167"></a>00167 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch {
-<a name="l00168"></a>00168
-<a name="l00169"></a>00169 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
-<a name="l00170"></a>00170 <span class="keyword">struct </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a> : detail::calculate_null&lt;typename S::return_type, G, S&gt; {};
-<a name="l00171"></a>00171
-<a name="l00172"></a>00172
-<a name="l00173"></a>00173 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
-<a name="l00174"></a>00174 <span class="keyword">struct </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>&lt;box_tag, G, S&gt; : detail::<a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>::box_area&lt;G, S&gt; {};
+<a name="l00164"></a>00164 <span class="keyword">typedef</span> ring_area
+<a name="l00165"></a>00165 &lt;
+<a name="l00166"></a>00166 <span class="keyword">typename</span> ring_type&lt;Polygon&gt;::type,
+<a name="l00167"></a>00167 Order,
+<a name="l00168"></a>00168 Strategy
+<a name="l00169"></a>00169 &gt; ring_area_type;
+<a name="l00170"></a>00170
+<a name="l00171"></a>00171 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00172"></a>00172 &lt;
+<a name="l00173"></a>00173 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type
+<a name="l00174"></a>00174 &gt;::type iterator_type;
 <a name="l00175"></a>00175
-<a name="l00176"></a>00176
-<a name="l00177"></a>00177 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
-<a name="l00178"></a>00178 <span class="keyword">struct </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>&lt;nsphere_tag, G, S&gt; : detail::<a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>::circle_area&lt;G, S&gt; {};
-<a name="l00179"></a>00179
-<a name="l00180"></a>00180
-<a name="l00181"></a>00181 <span class="comment">// Area of ring currently returns area of closed rings but it might be argued</span>
-<a name="l00182"></a>00182 <span class="comment">// that it is 0.0, because a ring is just a line.</span>
-<a name="l00183"></a>00183 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
-<a name="l00184"></a>00184 <span class="keyword">struct </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>&lt;ring_tag, G, S&gt; : detail::<a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>::ring_area&lt;G, S&gt; {};
-<a name="l00185"></a>00185
-<a name="l00186"></a>00186 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
-<a name="l00187"></a>00187 <span class="keyword">struct </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>&lt;polygon_tag, G, S&gt; : detail::<a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>::polygon_area&lt;G, S&gt; {};
+<a name="l00176"></a>00176 type a = ring_area_type::apply(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), strategy);
+<a name="l00177"></a>00177
+<a name="l00178"></a>00178 <span class="keywordflow">for</span> (iterator_type it = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00179"></a>00179 it != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly)); ++it)
+<a name="l00180"></a>00180 {
+<a name="l00181"></a>00181 <span class="comment">// Add ring-area (area of hole should be negative</span>
+<a name="l00182"></a>00182 <span class="comment">// (because other order))</span>
+<a name="l00183"></a>00183 a += ring_area_type::apply(*it, strategy);
+<a name="l00184"></a>00184 }
+<a name="l00185"></a>00185 <span class="keywordflow">return</span> a;
+<a name="l00186"></a>00186 }
+<a name="l00187"></a>00187 };
 <a name="l00188"></a>00188
-<a name="l00189"></a>00189 } <span class="comment">// namespace dispatch</span>
-<a name="l00190"></a>00190 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
-<a name="l00191"></a>00191 <span class="preprocessor"></span>
-<a name="l00192"></a>00192
-<a name="l00193"></a>00193 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
-<a name="l00194"></a><a class="code" href="structggl_1_1area__result.html">00194</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1area__result.html">area_result</a>
-<a name="l00195"></a>00195 {
-<a name="l00196"></a><a class="code" href="structggl_1_1area__result.html#d6428313802f153cd99b803ecde23872">00196</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;Geometry&gt;::type</a> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
-<a name="l00197"></a>00197 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__area.html" title="Traits class binding an area strategy to a coordinate system.">strategy_area</a>
-<a name="l00198"></a>00198 &lt;
-<a name="l00199"></a>00199 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;point_type&gt;::type</a>,
-<a name="l00200"></a>00200 <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>
-<a name="l00201"></a><a class="code" href="structggl_1_1area__result.html#ccb03cf635c157788a99c33d8f3c3a1e">00201</a> &gt;::type <a class="code" href="structggl_1_1strategy_1_1not__implemented.html" title="Indicate compiler/library user that strategy is not implemented.">strategy_type</a>;
-<a name="l00202"></a><a class="code" href="structggl_1_1area__result.html#4915057a85bc6a0c7292b3db1e4f33be">00202</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_type::return_type <a class="code" href="structggl_1_1area__result.html#4915057a85bc6a0c7292b3db1e4f33be">return_type</a>;
-<a name="l00203"></a>00203 };
+<a name="l00189"></a>00189 }} <span class="comment">// namespace detail::area</span>
+<a name="l00190"></a>00190
+<a name="l00191"></a>00191 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00192"></a>00192 <span class="preprocessor"></span>
+<a name="l00193"></a>00193 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00194"></a>00194 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch {
+<a name="l00195"></a>00195
+<a name="l00196"></a>00196 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry, order_selector Order, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00197"></a>00197 <span class="keyword">struct </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>
+<a name="l00198"></a>00198 : detail::calculate_null
+<a name="l00199"></a>00199 &lt;
+<a name="l00200"></a>00200 typename Strategy::return_type,
+<a name="l00201"></a>00201 Geometry,
+<a name="l00202"></a>00202 Strategy
+<a name="l00203"></a>00203 &gt; {};
 <a name="l00204"></a>00204
-<a name="l00216"></a>00216 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
-<a name="l00217"></a><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3">00217</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1area__result.html">area_result&lt;Geometry&gt;::return_type</a> <a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>(Geometry <span class="keyword">const</span>&amp; geometry)
-<a name="l00218"></a>00218 {
-<a name="l00219"></a>00219 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy_1_1not__implemented.html" title="Indicate compiler/library user that strategy is not implemented.">area_result&lt;Geometry&gt;::strategy_type</a> strategy_type;
-<a name="l00220"></a>00220
-<a name="l00221"></a>00221 <span class="keywordflow">return</span> <a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">dispatch::area</a>
-<a name="l00222"></a>00222 &lt;
-<a name="l00223"></a>00223 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
-<a name="l00224"></a>00224 Geometry,
-<a name="l00225"></a>00225 strategy_type
-<a name="l00226"></a>00226 &gt;::apply(geometry, strategy_type());
-<a name="l00227"></a>00227 }
-<a name="l00228"></a>00228
-<a name="l00238"></a>00238 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00239"></a><a class="code" href="group__area.html#g7e0783c73b5f561707c50b445a01b833">00239</a> <span class="keyword">inline</span> <span class="keyword">typename</span> Strategy::return_type <a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>(
-<a name="l00240"></a>00240 Geometry <span class="keyword">const</span>&amp; geometry, Strategy <span class="keyword">const</span>&amp; strategy)
-<a name="l00241"></a>00241 {
-<a name="l00242"></a>00242 <span class="keywordflow">return</span> <a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">dispatch::area</a>
-<a name="l00243"></a>00243 &lt;
-<a name="l00244"></a>00244 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
-<a name="l00245"></a>00245 Geometry,
-<a name="l00246"></a>00246 Strategy
-<a name="l00247"></a>00247 &gt;::apply(geometry, strategy);
-<a name="l00248"></a>00248 }
-<a name="l00249"></a>00249
-<a name="l00250"></a>00250 } <span class="comment">// namespace ggl</span>
-<a name="l00251"></a>00251
-<a name="l00252"></a>00252 <span class="preprocessor">#endif // GGL_ALGORITHMS_AREA_HPP</span>
+<a name="l00205"></a>00205
+<a name="l00206"></a>00206 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, order_selector Order, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00207"></a>00207 <span class="keyword">struct </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>&lt;box_tag, Geometry, Order, Strategy&gt;
+<a name="l00208"></a>00208 : detail::<a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>::box_area&lt;Geometry, Strategy&gt; {};
+<a name="l00209"></a>00209
+<a name="l00210"></a>00210
+<a name="l00211"></a>00211 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, order_selector Order, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00212"></a>00212 <span class="keyword">struct </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>&lt;nsphere_tag, Geometry, Order, Strategy&gt;
+<a name="l00213"></a>00213 : detail::<a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>::circle_area&lt;Geometry, Strategy&gt; {};
+<a name="l00214"></a>00214
+<a name="l00215"></a>00215
+<a name="l00216"></a>00216 <span class="comment">// Area of ring currently returns area of closed rings but it might be argued</span>
+<a name="l00217"></a>00217 <span class="comment">// that it is 0.0, because a ring is just a line.</span>
+<a name="l00218"></a>00218 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, order_selector Order, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00219"></a>00219 <span class="keyword">struct </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>&lt;ring_tag, Geometry, Order, Strategy&gt;
+<a name="l00220"></a>00220 : detail::<a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>::ring_area&lt;Geometry, Order, Strategy&gt; {};
+<a name="l00221"></a>00221
+<a name="l00222"></a>00222 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, order_selector Order, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00223"></a>00223 <span class="keyword">struct </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>&lt;polygon_tag, Geometry, Order, Strategy&gt;
+<a name="l00224"></a>00224 : detail::<a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>::polygon_area&lt;Geometry, Order, Strategy&gt; {};
+<a name="l00225"></a>00225
+<a name="l00226"></a>00226 } <span class="comment">// namespace dispatch</span>
+<a name="l00227"></a>00227 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00228"></a>00228 <span class="preprocessor"></span>
+<a name="l00229"></a>00229
+<a name="l00230"></a>00230 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00231"></a><a class="code" href="structggl_1_1area__result.html">00231</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1area__result.html">area_result</a>
+<a name="l00232"></a>00232 {
+<a name="l00233"></a><a class="code" href="structggl_1_1area__result.html#d6428313802f153cd99b803ecde23872">00233</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;Geometry&gt;::type</a> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+<a name="l00234"></a>00234 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__area.html" title="Traits class binding an area strategy to a coordinate system.">strategy_area</a>
+<a name="l00235"></a>00235 &lt;
+<a name="l00236"></a>00236 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;point_type&gt;::type</a>,
+<a name="l00237"></a>00237 <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>
+<a name="l00238"></a><a class="code" href="structggl_1_1area__result.html#ccb03cf635c157788a99c33d8f3c3a1e">00238</a> &gt;::type <a class="code" href="structggl_1_1strategy_1_1not__implemented.html" title="Indicate compiler/library user that strategy is not implemented.">strategy_type</a>;
+<a name="l00239"></a><a class="code" href="structggl_1_1area__result.html#4915057a85bc6a0c7292b3db1e4f33be">00239</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_type::return_type <a class="code" href="structggl_1_1area__result.html#4915057a85bc6a0c7292b3db1e4f33be">return_type</a>;
+<a name="l00240"></a>00240 };
+<a name="l00241"></a>00241
+<a name="l00253"></a>00253 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00254"></a><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3">00254</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1area__result.html">area_result&lt;Geometry&gt;::return_type</a> <a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>(Geometry <span class="keyword">const</span>&amp; geometry)
+<a name="l00255"></a>00255 {
+<a name="l00256"></a>00256 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy_1_1not__implemented.html" title="Indicate compiler/library user that strategy is not implemented.">area_result&lt;Geometry&gt;::strategy_type</a> strategy_type;
+<a name="l00257"></a>00257
+<a name="l00258"></a>00258 <span class="keywordflow">return</span> <a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">dispatch::area</a>
+<a name="l00259"></a>00259 &lt;
+<a name="l00260"></a>00260 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00261"></a>00261 Geometry,
+<a name="l00262"></a>00262 <a class="code" href="structggl_1_1point__order.html" title="Meta-function which defines point type of any geometry.">ggl::point_order&lt;Geometry&gt;::value</a>,
+<a name="l00263"></a>00263 strategy_type
+<a name="l00264"></a>00264 &gt;::apply(geometry, strategy_type());
+<a name="l00265"></a>00265 }
+<a name="l00266"></a>00266
+<a name="l00276"></a>00276 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00277"></a><a class="code" href="group__area.html#g7e0783c73b5f561707c50b445a01b833">00277</a> <span class="keyword">inline</span> <span class="keyword">typename</span> Strategy::return_type <a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>(
+<a name="l00278"></a>00278 Geometry <span class="keyword">const</span>&amp; geometry, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00279"></a>00279 {
+<a name="l00280"></a>00280 <span class="keywordflow">return</span> <a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">dispatch::area</a>
+<a name="l00281"></a>00281 &lt;
+<a name="l00282"></a>00282 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00283"></a>00283 Geometry,
+<a name="l00284"></a>00284 <a class="code" href="structggl_1_1point__order.html" title="Meta-function which defines point type of any geometry.">ggl::point_order&lt;Geometry&gt;::value</a>,
+<a name="l00285"></a>00285 Strategy
+<a name="l00286"></a>00286 &gt;::apply(geometry, strategy);
+<a name="l00287"></a>00287 }
+<a name="l00288"></a>00288
+<a name="l00289"></a>00289 } <span class="comment">// namespace ggl</span>
+<a name="l00290"></a>00290
+<a name="l00291"></a>00291 <span class="preprocessor">#endif // GGL_ALGORITHMS_AREA_HPP</span>
 </pre></div></div>
 <hr size="1">
 <table width="100%">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp_source.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -101,7 +101,7 @@
 <a name="l00080"></a>00080 <span class="keywordflow">else</span>
 <a name="l00081"></a>00081 {
 <a name="l00082"></a>00082 <span class="comment">// n == 1: Take over the first point in a "coordinate neutral way"</span>
-<a name="l00083"></a>00083 <a class="code" href="namespaceggl.html#173003fecd63871d3a6aee07f4ba7011" title="Copies coordinates from source to destination point.">copy_coordinates</a>(ring.front(), c);
+<a name="l00083"></a>00083 <a class="code" href="namespaceggl.html#f8cee6dd577bebfd1dbbe4cc503304d4" title="Copies coordinates from source to destination point.">copy_coordinates</a>(ring.front(), c);
 <a name="l00084"></a>00084 <span class="keywordflow">return</span> <span class="keyword">false</span>;
 <a name="l00085"></a>00085 }
 <a name="l00086"></a>00086 <span class="keywordflow">return</span> <span class="keyword">true</span>;

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -50,10 +50,14 @@
 <tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
 
 <tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry1 , typename Geometry2 &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7">ggl::convex_hull</a> (Geometry1 const &amp;geometry, Geometry2 &amp;out)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the convex hull of a geometry.
<br></td></tr>
 <tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , typename OutputIterator &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">OutputIterator&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18">ggl::convex_hull</a> (Geometry const &amp;geometry, OutputIterator out)</td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">OutputIterator&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__convex__hull.html#g33e400e40f14217ab0239d33fa6def72">ggl::convex_hull_inserter</a> (Geometry const &amp;geometry, OutputIterator out)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the convex hull of a geometry. <br></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the convex hull of a geometry, output-iterator version. <br></td></tr>
 </table>
 </div>
 <hr size="1">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp_source.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -52,96 +52,205 @@
 <a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_CONVEX_HULL_HPP</span>
 <a name="l00011"></a>00011 <span class="preprocessor"></span>
 <a name="l00012"></a>00012
-<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;boost/concept/requires.hpp&gt;</span>
-<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/type_traits/remove_const.hpp&gt;</span>
-<a name="l00015"></a>00015
-<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
-<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="core_2is__multi_8hpp.html">ggl/core/is_multi.hpp</a>&gt;</span>
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>&gt;</span>
-<a name="l00020"></a>00020
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;boost/type_traits/remove_const.hpp&gt;</span>
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;<a class="code" href="core_2is__multi_8hpp.html">ggl/core/is_multi.hpp</a>&gt;</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="point__order_8hpp.html">ggl/core/point_order.hpp</a>&gt;</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>&gt;</span>
 <a name="l00021"></a>00021
-<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="as__range_8hpp.html">ggl/util/as_range.hpp</a>&gt;</span>
-<a name="l00024"></a>00024
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="as__range_8hpp.html">ggl/util/as_range.hpp</a>&gt;</span>
 <a name="l00025"></a>00025
-<a name="l00044"></a>00044 <span class="keyword">namespace </span>ggl {
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
-<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a> {
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator&gt;
-<a name="l00050"></a>00050 <span class="keyword">struct </span>hull
-<a name="l00051"></a>00051 {
-<a name="l00052"></a>00052 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Geometry <span class="keyword">const</span>&amp; geometry,
-<a name="l00053"></a>00053 OutputIterator out)
-<a name="l00054"></a>00054 {
-<a name="l00055"></a>00055 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;Geometry&gt;::type point_type;
-<a name="l00056"></a>00056
-<a name="l00057"></a>00057 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_convex_hull
-<a name="l00058"></a>00058 &lt;
-<a name="l00059"></a>00059 <span class="keyword">typename</span> cs_tag&lt;point_type&gt;::type,
-<a name="l00060"></a>00060 point_type
-<a name="l00061"></a>00061 &gt;::type strategy_type;
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063 strategy_type s(<a class="code" href="group__utility.html#g1868bde329b825c540572ac0a73e4f2b" title="Function getting either the range (ring, linestring) itself or the outer ring.">as_range</a>&lt;<span class="keyword">typename</span> as_range_type&lt;Geometry&gt;::type&gt;(geometry));
-<a name="l00064"></a>00064 s.get(out);
-<a name="l00065"></a>00065 <span class="keywordflow">return</span> out;
-<a name="l00066"></a>00066 }
-<a name="l00067"></a>00067 };
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 }} <span class="comment">// namespace detail::convex_hull</span>
-<a name="l00071"></a>00071 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
-<a name="l00072"></a>00072 <span class="preprocessor"></span>
-<a name="l00073"></a>00073 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
-<a name="l00074"></a>00074 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
-<a name="l00075"></a>00075 {
-<a name="l00076"></a>00076
-<a name="l00077"></a>00077 <span class="keyword">template</span>
-<a name="l00078"></a>00078 &lt;
-<a name="l00079"></a>00079 <span class="keyword">typename</span> GeometryTag,
-<a name="l00080"></a>00080 <span class="keywordtype">bool</span> IsMulti,
-<a name="l00081"></a>00081 <span class="keyword">typename</span> Geometry,
-<a name="l00082"></a>00082 <span class="keyword">typename</span> OutputIterator
-<a name="l00083"></a>00083 &gt;
-<a name="l00084"></a>00084 <span class="keyword">struct </span><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a> {};
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> OutputIterator&gt;
-<a name="l00087"></a>00087 <span class="keyword">struct </span><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a>&lt;linestring_tag, false, Linestring, OutputIterator&gt;
-<a name="l00088"></a>00088 : detail::<a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a>::hull&lt;Linestring, OutputIterator&gt;
-<a name="l00089"></a>00089 {};
-<a name="l00090"></a>00090
-<a name="l00091"></a>00091 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> OutputIterator&gt;
-<a name="l00092"></a>00092 <span class="keyword">struct </span><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a>&lt;ring_tag, false, Ring, OutputIterator&gt;
-<a name="l00093"></a>00093 : detail::<a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a>::hull&lt;Ring, OutputIterator&gt;
-<a name="l00094"></a>00094 {};
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> OutputIterator&gt;
-<a name="l00097"></a>00097 <span class="keyword">struct </span><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a>&lt;polygon_tag, false, Polygon, OutputIterator&gt;
-<a name="l00098"></a>00098 : detail::<a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a>::hull&lt;Polygon, OutputIterator&gt;
-<a name="l00099"></a>00099 {};
-<a name="l00100"></a>00100
-<a name="l00101"></a>00101 } <span class="comment">// namespace dispatch</span>
-<a name="l00102"></a>00102 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
-<a name="l00103"></a>00103 <span class="preprocessor"></span>
-<a name="l00111"></a>00111 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator&gt;
-<a name="l00112"></a><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18">00112</a> <span class="keyword">inline</span> OutputIterator <a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a>(Geometry <span class="keyword">const</span>&amp; geometry, OutputIterator out)
-<a name="l00113"></a>00113 {
-<a name="l00114"></a>00114 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;Geometry&gt;::type ncg_type;
-<a name="l00115"></a>00115
-<a name="l00116"></a>00116 <span class="keywordflow">return</span> <a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">dispatch::convex_hull</a>
-<a name="l00117"></a>00117 &lt;
-<a name="l00118"></a>00118 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;ncg_type&gt;::type</a>,
-<a name="l00119"></a>00119 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &amp;quot;true&amp;quot; for multi geometries (multi_point, etc).">is_multi&lt;ncg_type&gt;::type::value</a>,
-<a name="l00120"></a>00120 Geometry,
-<a name="l00121"></a>00121 OutputIterator
-<a name="l00122"></a>00122 &gt;::apply(geometry, out);
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124
-<a name="l00125"></a>00125 } <span class="comment">// namespace ggl</span>
-<a name="l00126"></a>00126
-<a name="l00127"></a>00127 <span class="preprocessor">#endif // GGL_ALGORITHMS_CONVEX_HULL_HPP</span>
+<a name="l00026"></a>00026
+<a name="l00045"></a>00045 <span class="keyword">namespace </span>ggl {
+<a name="l00046"></a>00046
+<a name="l00047"></a>00047 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00048"></a>00048 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7" title="Calculate the convex hull of a geometry.">convex_hull</a> {
+<a name="l00049"></a>00049
+<a name="l00050"></a>00050 <span class="keyword">template</span>
+<a name="l00051"></a>00051 &lt;
+<a name="l00052"></a>00052 <span class="keyword">typename</span> Geometry,
+<a name="l00053"></a>00053 <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d">order_selector</a> Order
+<a name="l00054"></a>00054 &gt;
+<a name="l00055"></a>00055 <span class="keyword">struct </span>hull_inserter
+<a name="l00056"></a>00056 {
+<a name="l00057"></a>00057 <span class="comment">// Member template function, to avoid inconvenient declaration</span>
+<a name="l00058"></a>00058 <span class="comment">// of output-iterator-type</span>
+<a name="l00059"></a>00059 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00060"></a>00060 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Geometry <span class="keyword">const</span>&amp; geometry,
+<a name="l00061"></a>00061 OutputIterator out)
+<a name="l00062"></a>00062 {
+<a name="l00063"></a>00063 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;Geometry&gt;::type point_type;
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_convex_hull
+<a name="l00066"></a>00066 &lt;
+<a name="l00067"></a>00067 <span class="keyword">typename</span> cs_tag&lt;point_type&gt;::type,
+<a name="l00068"></a>00068 point_type
+<a name="l00069"></a>00069 &gt;::type strategy_type;
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071 strategy_type s(<a class="code" href="group__utility.html#g1868bde329b825c540572ac0a73e4f2b" title="Function getting either the range (ring, linestring) itself or the outer ring.">as_range</a>
+<a name="l00072"></a>00072 &lt;
+<a name="l00073"></a>00073 <span class="keyword">typename</span> as_range_type&lt;Geometry&gt;::type
+<a name="l00074"></a>00074 &gt;(geometry));
+<a name="l00075"></a>00075 s.get(out, Order == <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d55fe53c1821ca13eb0eacb9084cb1d1c">clockwise</a>);
+<a name="l00076"></a>00076 <span class="keywordflow">return</span> out;
+<a name="l00077"></a>00077 }
+<a name="l00078"></a>00078 };
+<a name="l00079"></a>00079
+<a name="l00080"></a>00080 <span class="keyword">template</span>
+<a name="l00081"></a>00081 &lt;
+<a name="l00082"></a>00082 <span class="keyword">typename</span> Geometry,
+<a name="l00083"></a>00083 <span class="keyword">typename</span> OutputGeometry
+<a name="l00084"></a>00084 &gt;
+<a name="l00085"></a>00085 <span class="keyword">struct </span>hull_to_geometry
+<a name="l00086"></a>00086 {
+<a name="l00087"></a>00087 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Geometry <span class="keyword">const</span>&amp; geometry, OutputGeometry&amp; out)
+<a name="l00088"></a>00088 {
+<a name="l00089"></a>00089 hull_inserter
+<a name="l00090"></a>00090 &lt;
+<a name="l00091"></a>00091 Geometry,
+<a name="l00092"></a>00092 <a class="code" href="structggl_1_1point__order.html" title="Meta-function which defines point type of any geometry.">ggl::point_order&lt;OutputGeometry&gt;::value</a>
+<a name="l00093"></a>00093 &gt;::apply(geometry,
+<a name="l00094"></a>00094 std::back_inserter(
+<a name="l00095"></a>00095 <a class="code" href="group__utility.html#g1868bde329b825c540572ac0a73e4f2b" title="Function getting either the range (ring, linestring) itself or the outer ring.">ggl::as_range</a>
+<a name="l00096"></a>00096 &lt;
+<a name="l00097"></a>00097 <span class="keyword">typename</span> <a class="code" href="structggl_1_1as__range__type.html" title="Meta-function utility returning either type itself, or outer ring.">ggl::as_range_type&lt;OutputGeometry&gt;::type</a>
+<a name="l00098"></a>00098 &gt;(out)));
+<a name="l00099"></a>00099 }
+<a name="l00100"></a>00100 };
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105 }} <span class="comment">// namespace detail::convex_hull</span>
+<a name="l00106"></a>00106 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00107"></a>00107 <span class="preprocessor"></span>
+<a name="l00108"></a>00108 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00109"></a>00109 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00110"></a>00110 {
+<a name="l00111"></a>00111
+<a name="l00112"></a>00112 <span class="keyword">template</span>
+<a name="l00113"></a>00113 &lt;
+<a name="l00114"></a>00114 <span class="keyword">typename</span> Tag1,
+<a name="l00115"></a>00115 <span class="keywordtype">bool</span> IsMulti,
+<a name="l00116"></a>00116 <span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Output
+<a name="l00117"></a>00117 &gt;
+<a name="l00118"></a>00118 <span class="keyword">struct </span><a class="code" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7" title="Calculate the convex hull of a geometry.">convex_hull</a>
+<a name="l00119"></a>00119 {};
+<a name="l00120"></a>00120
+<a name="l00121"></a>00121
+<a name="l00122"></a>00122 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Output&gt;
+<a name="l00123"></a>00123 <span class="keyword">struct </span><a class="code" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7" title="Calculate the convex hull of a geometry.">convex_hull</a>
+<a name="l00124"></a>00124 &lt;
+<a name="l00125"></a>00125 polygon_tag, false,
+<a name="l00126"></a>00126 Polygon, Output
+<a name="l00127"></a>00127 &gt;
+<a name="l00128"></a>00128 : detail::<a class="code" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7" title="Calculate the convex hull of a geometry.">convex_hull</a>::hull_to_geometry&lt;Polygon, Output&gt;
+<a name="l00129"></a>00129 {};
+<a name="l00130"></a>00130
+<a name="l00131"></a>00131 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Output&gt;
+<a name="l00132"></a>00132 <span class="keyword">struct </span><a class="code" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7" title="Calculate the convex hull of a geometry.">convex_hull</a>
+<a name="l00133"></a>00133 &lt;
+<a name="l00134"></a>00134 ring_tag, false,
+<a name="l00135"></a>00135 Polygon, Output
+<a name="l00136"></a>00136 &gt;
+<a name="l00137"></a>00137 : detail::<a class="code" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7" title="Calculate the convex hull of a geometry.">convex_hull</a>::hull_to_geometry&lt;Polygon, Output&gt;
+<a name="l00138"></a>00138 {};
+<a name="l00139"></a>00139
+<a name="l00140"></a>00140 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Output&gt;
+<a name="l00141"></a>00141 <span class="keyword">struct </span><a class="code" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7" title="Calculate the convex hull of a geometry.">convex_hull</a>
+<a name="l00142"></a>00142 &lt;
+<a name="l00143"></a>00143 linestring_tag, false,
+<a name="l00144"></a>00144 Polygon, Output
+<a name="l00145"></a>00145 &gt;
+<a name="l00146"></a>00146 : detail::<a class="code" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7" title="Calculate the convex hull of a geometry.">convex_hull</a>::hull_to_geometry&lt;Polygon, Output&gt;
+<a name="l00147"></a>00147 {};
+<a name="l00148"></a>00148
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151 <span class="keyword">template</span>
+<a name="l00152"></a>00152 &lt;
+<a name="l00153"></a>00153 <span class="keyword">typename</span> GeometryTag,
+<a name="l00154"></a>00154 <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d">order_selector</a> Order,
+<a name="l00155"></a>00155 <span class="keywordtype">bool</span> IsMulti,
+<a name="l00156"></a>00156 <span class="keyword">typename</span> GeometryIn
+<a name="l00157"></a>00157 &gt;
+<a name="l00158"></a>00158 <span class="keyword">struct </span><a class="code" href="group__convex__hull.html#g33e400e40f14217ab0239d33fa6def72" title="Calculate the convex hull of a geometry, output-iterator version.">convex_hull_inserter</a> {};
+<a name="l00159"></a>00159
+<a name="l00160"></a>00160 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, order_selector Order&gt;
+<a name="l00161"></a>00161 <span class="keyword">struct </span><a class="code" href="group__convex__hull.html#g33e400e40f14217ab0239d33fa6def72" title="Calculate the convex hull of a geometry, output-iterator version.">convex_hull_inserter</a>
+<a name="l00162"></a>00162 &lt;
+<a name="l00163"></a>00163 linestring_tag,
+<a name="l00164"></a>00164 Order, false,
+<a name="l00165"></a>00165 Linestring
+<a name="l00166"></a>00166 &gt;
+<a name="l00167"></a>00167 : detail::<a class="code" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7" title="Calculate the convex hull of a geometry.">convex_hull</a>::hull_inserter&lt;Linestring, Order&gt;
+<a name="l00168"></a>00168 {};
+<a name="l00169"></a>00169
+<a name="l00170"></a>00170
+<a name="l00171"></a>00171 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ring, order_selector Order&gt;
+<a name="l00172"></a>00172 <span class="keyword">struct </span><a class="code" href="group__convex__hull.html#g33e400e40f14217ab0239d33fa6def72" title="Calculate the convex hull of a geometry, output-iterator version.">convex_hull_inserter</a>
+<a name="l00173"></a>00173 &lt;
+<a name="l00174"></a>00174 ring_tag,
+<a name="l00175"></a>00175 Order, false,
+<a name="l00176"></a>00176 Ring
+<a name="l00177"></a>00177 &gt;
+<a name="l00178"></a>00178 : detail::<a class="code" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7" title="Calculate the convex hull of a geometry.">convex_hull</a>::hull_inserter&lt;Ring, Order&gt;
+<a name="l00179"></a>00179 {};
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181
+<a name="l00182"></a>00182 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, order_selector Order&gt;
+<a name="l00183"></a>00183 <span class="keyword">struct </span><a class="code" href="group__convex__hull.html#g33e400e40f14217ab0239d33fa6def72" title="Calculate the convex hull of a geometry, output-iterator version.">convex_hull_inserter</a>
+<a name="l00184"></a>00184 &lt;
+<a name="l00185"></a>00185 polygon_tag,
+<a name="l00186"></a>00186 Order, false,
+<a name="l00187"></a>00187 Polygon
+<a name="l00188"></a>00188 &gt;
+<a name="l00189"></a>00189 : detail::<a class="code" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7" title="Calculate the convex hull of a geometry.">convex_hull</a>::hull_inserter&lt;Polygon, Order&gt;
+<a name="l00190"></a>00190 {};
+<a name="l00191"></a>00191
+<a name="l00192"></a>00192
+<a name="l00193"></a>00193
+<a name="l00194"></a>00194 } <span class="comment">// namespace dispatch</span>
+<a name="l00195"></a>00195 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00196"></a>00196 <span class="preprocessor"></span>
+<a name="l00197"></a>00197
+<a name="l00198"></a>00198
+<a name="l00211"></a>00211 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry1, <span class="keyword">typename</span> Geometry2&gt;
+<a name="l00212"></a><a class="code" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7">00212</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7" title="Calculate the convex hull of a geometry.">convex_hull</a>(Geometry1 <span class="keyword">const</span>&amp; geometry,
+<a name="l00213"></a>00213 Geometry2&amp; out)
+<a name="l00214"></a>00214 {
+<a name="l00215"></a>00215 <a class="code" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7" title="Calculate the convex hull of a geometry.">dispatch::convex_hull</a>
+<a name="l00216"></a>00216 &lt;
+<a name="l00217"></a>00217 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry1&gt;::type</a>,
+<a name="l00218"></a>00218 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &amp;quot;true&amp;quot; for multi geometries (multi_point, etc).">is_multi&lt;Geometry1&gt;::type::value</a>,
+<a name="l00219"></a>00219 Geometry1,
+<a name="l00220"></a>00220 Geometry2
+<a name="l00221"></a>00221 &gt;::apply(geometry, out);
+<a name="l00222"></a>00222 }
+<a name="l00223"></a>00223
+<a name="l00224"></a>00224
+<a name="l00237"></a>00237 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00238"></a><a class="code" href="group__convex__hull.html#g33e400e40f14217ab0239d33fa6def72">00238</a> <span class="keyword">inline</span> OutputIterator <a class="code" href="group__convex__hull.html#g33e400e40f14217ab0239d33fa6def72" title="Calculate the convex hull of a geometry, output-iterator version.">convex_hull_inserter</a>(Geometry <span class="keyword">const</span>&amp; geometry,
+<a name="l00239"></a>00239 OutputIterator out)
+<a name="l00240"></a>00240 {
+<a name="l00241"></a>00241 <span class="keywordflow">return</span> <a class="code" href="group__convex__hull.html#g33e400e40f14217ab0239d33fa6def72" title="Calculate the convex hull of a geometry, output-iterator version.">dispatch::convex_hull_inserter</a>
+<a name="l00242"></a>00242 &lt;
+<a name="l00243"></a>00243 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00244"></a>00244 <a class="code" href="structggl_1_1point__order.html" title="Meta-function which defines point type of any geometry.">ggl::point_order&lt;Geometry&gt;::value</a>,
+<a name="l00245"></a>00245 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &amp;quot;true&amp;quot; for multi geometries (multi_point, etc).">is_multi&lt;Geometry&gt;::type::value</a>,
+<a name="l00246"></a>00246 Geometry
+<a name="l00247"></a>00247 &gt;::apply(geometry, out);
+<a name="l00248"></a>00248 }
+<a name="l00249"></a>00249
+<a name="l00250"></a>00250
+<a name="l00251"></a>00251 } <span class="comment">// namespace ggl</span>
+<a name="l00252"></a>00252
+<a name="l00253"></a>00253 <span class="preprocessor">#endif // GGL_ALGORITHMS_CONVEX_HULL_HPP</span>
 </pre></div></div>
 <hr size="1">
 <table width="100%">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp_source.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -52,155 +52,183 @@
 <a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_CORRECT_HPP</span>
 <a name="l00011"></a>00011 <span class="preprocessor"></span>
 <a name="l00012"></a>00012 <span class="preprocessor">#include &lt;algorithm&gt;</span>
-<a name="l00013"></a>00013
-<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
-<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
-<a name="l00016"></a>00016
-<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
-<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>&gt;</span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
-<a name="l00021"></a>00021
-<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>&gt;</span>
-<a name="l00023"></a>00023
-<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="algorithms_2area_8hpp.html">ggl/algorithms/area.hpp</a>&gt;</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="disjoint_8hpp.html">ggl/algorithms/disjoint.hpp</a>&gt;</span>
-<a name="l00026"></a>00026
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;functional&gt;</span>
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>&gt;</span>
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="algorithms_2area_8hpp.html">ggl/algorithms/area.hpp</a>&gt;</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;<a class="code" href="disjoint_8hpp.html">ggl/algorithms/disjoint.hpp</a>&gt;</span>
 <a name="l00027"></a>00027
-<a name="l00028"></a>00028 <span class="keyword">namespace </span>ggl
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
-<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a> {
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="comment">// correct an box: make min/max are correct</span>
-<a name="l00035"></a>00035 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B&gt;
-<a name="l00036"></a>00036 <span class="keyword">inline</span> <span class="keywordtype">void</span> correct_box(B&amp; b)
-<a name="l00037"></a>00037 {
-<a name="l00038"></a>00038 <span class="comment">// Currently only for Cartesian coordinates</span>
-<a name="l00039"></a>00039 <span class="comment">// TODO: adapt using strategies</span>
-<a name="l00040"></a>00040 <span class="comment">// TODO: adapt using traits</span>
-<a name="l00041"></a>00041 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html#b723a443a97f7c4ed7c47ac96d7e29ee">coordinate_type&lt;B&gt;::type</a> coordinate_type;
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043 <span class="keywordflow">if</span> (get&lt;min_corner, 0&gt;(b) &gt; get&lt;max_corner, 0&gt;(b))
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045 coordinate_type max_value = get&lt;min_corner, 0&gt;(b);
-<a name="l00046"></a>00046 coordinate_type min_value = get&lt;max_corner, 0&gt;(b);
-<a name="l00047"></a>00047 set&lt;min_corner, 0&gt;(b, min_value);
-<a name="l00048"></a>00048 set&lt;max_corner, 0&gt;(b, max_value);
-<a name="l00049"></a>00049 }
-<a name="l00050"></a>00050
-<a name="l00051"></a>00051 <span class="keywordflow">if</span> (get&lt;min_corner, 1&gt;(b) &gt; get&lt;max_corner, 1&gt;(b))
-<a name="l00052"></a>00052 {
-<a name="l00053"></a>00053 coordinate_type max_value = get&lt;min_corner, 1&gt;(b);
-<a name="l00054"></a>00054 coordinate_type min_value = get&lt;max_corner, 1&gt;(b);
-<a name="l00055"></a>00055 set&lt;min_corner, 1&gt;(b, min_value);
-<a name="l00056"></a>00056 set&lt;max_corner, 1&gt;(b, max_value);
-<a name="l00057"></a>00057 }
-<a name="l00058"></a>00058 }
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029 <span class="keyword">namespace </span>ggl
+<a name="l00030"></a>00030 {
+<a name="l00031"></a>00031
+<a name="l00032"></a>00032 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a> {
+<a name="l00034"></a>00034
+<a name="l00035"></a>00035
+<a name="l00036"></a>00036 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box, <span class="keywordtype">int</span> Dimension, <span class="keywordtype">int</span> DimensionCount&gt;
+<a name="l00037"></a>00037 <span class="keyword">struct </span>correct_box_loop
+<a name="l00038"></a>00038 {
+<a name="l00039"></a>00039 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;Box&gt;::type coordinate_type;
+<a name="l00040"></a>00040
+<a name="l00041"></a>00041 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box&amp; box)
+<a name="l00042"></a>00042 {
+<a name="l00043"></a>00043 <span class="keywordflow">if</span> (get&lt;min_corner, Dimension&gt;(box) &gt; get&lt;max_corner, Dimension&gt;(box))
+<a name="l00044"></a>00044 {
+<a name="l00045"></a>00045 <span class="comment">// Swap the coordinates</span>
+<a name="l00046"></a>00046 coordinate_type max_value = get&lt;min_corner, Dimension&gt;(box);
+<a name="l00047"></a>00047 coordinate_type min_value = get&lt;max_corner, Dimension&gt;(box);
+<a name="l00048"></a>00048 set&lt;min_corner, Dimension&gt;(box, min_value);
+<a name="l00049"></a>00049 set&lt;max_corner, Dimension&gt;(box, max_value);
+<a name="l00050"></a>00050 }
+<a name="l00051"></a>00051
+<a name="l00052"></a>00052 correct_box_loop
+<a name="l00053"></a>00053 &lt;
+<a name="l00054"></a>00054 Box, Dimension + 1, DimensionCount
+<a name="l00055"></a>00055 &gt;::apply(box);
+<a name="l00056"></a>00056 }
+<a name="l00057"></a>00057 };
+<a name="l00058"></a>00058
 <a name="l00059"></a>00059
-<a name="l00060"></a>00060 <span class="comment">// close a linear_ring, if not closed</span>
-<a name="l00061"></a>00061 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R&gt;
-<a name="l00062"></a>00062 <span class="keyword">inline</span> <span class="keywordtype">void</span> ensure_closed_ring(R&amp; r)
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box, <span class="keywordtype">int</span> DimensionCount&gt;
+<a name="l00062"></a>00062 <span class="keyword">struct </span>correct_box_loop&lt;Box, DimensionCount, DimensionCount&gt;
 <a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 <span class="keywordflow">if</span> (boost::size(r) &gt; 2)
-<a name="l00065"></a>00065 {
-<a name="l00066"></a>00066 <span class="comment">// check if closed, if not, close it</span>
-<a name="l00067"></a>00067 <span class="keywordflow">if</span> (<a class="code" href="group__boolean__relations.html#g6d772a2eb8ad083e056bdbf0ec7ae8a1" title="Calculate if two geometries are disjoint.">ggl::disjoint</a>(r.front(), r.back()))
-<a name="l00068"></a>00068 {
-<a name="l00069"></a>00069 r.push_back(r.front());
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071 }
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074 <span class="comment">// correct a polygon: normalizes all rings, sets outer linear_ring clockwise, sets all</span>
-<a name="l00075"></a>00075 <span class="comment">// inner rings counter clockwise</span>
-<a name="l00076"></a>00076 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Y&gt;
-<a name="l00077"></a>00077 <span class="keyword">inline</span> <span class="keywordtype">void</span> correct_polygon(Y&amp; poly)
-<a name="l00078"></a>00078 {
-<a name="l00079"></a>00079 <span class="keyword">typename</span> ring_type&lt;Y&gt;::type&amp; outer = <a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly);
-<a name="l00080"></a>00080 ensure_closed_ring(outer);
-<a name="l00081"></a>00081
-<a name="l00082"></a>00082 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;Y&gt;::type point_type;
-<a name="l00083"></a>00083 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type&lt;Y&gt;::type ring_type;
-<a name="l00084"></a>00084 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_area
-<a name="l00085"></a>00085 &lt;
-<a name="l00086"></a>00086 <span class="keyword">typename</span> cs_tag&lt;point_type&gt;::type,
-<a name="l00087"></a>00087 point_type
-<a name="l00088"></a>00088 &gt;::type strategy_type;
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090 strategy_type strategy;
-<a name="l00091"></a>00091
-<a name="l00092"></a>00092 <span class="keywordflow">if</span> (detail::area::ring_area&lt;ring_type, strategy_type&gt;::apply(outer, strategy) &lt; 0)
-<a name="l00093"></a>00093 {
-<a name="l00094"></a>00094 std::reverse(boost::begin(outer), boost::end(outer));
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator
-<a name="l00098"></a>00098 &lt;
-<a name="l00099"></a>00099 <span class="keyword">typename</span> interior_type&lt;Y&gt;::type
-<a name="l00100"></a>00100 &gt;::type iterator_type;
-<a name="l00101"></a>00101
-<a name="l00102"></a>00102 <span class="keywordflow">for</span> (iterator_type it = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
-<a name="l00103"></a>00103 it != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly)); ++it)
-<a name="l00104"></a>00104 {
-<a name="l00105"></a>00105 ensure_closed_ring(*it);
-<a name="l00106"></a>00106 <span class="keywordflow">if</span> (detail::area::ring_area&lt;ring_type, strategy_type&gt;::apply(*it, strategy) &gt; 0)
-<a name="l00107"></a>00107 {
-<a name="l00108"></a>00108 std::reverse(boost::begin(*it), boost::end(*it));
-<a name="l00109"></a>00109 }
-<a name="l00110"></a>00110 }
-<a name="l00111"></a>00111 }
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113 }} <span class="comment">// namespace detail::correct</span>
-<a name="l00114"></a>00114 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
-<a name="l00115"></a>00115 <span class="preprocessor"></span>
-<a name="l00116"></a>00116 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
-<a name="l00117"></a>00117 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
-<a name="l00118"></a>00118 {
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> G&gt;
-<a name="l00121"></a>00121 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a> {};
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B&gt;
-<a name="l00124"></a>00124 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>&lt;box_tag, B&gt;
-<a name="l00125"></a>00125 {
-<a name="l00126"></a>00126 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(B&amp; box)
-<a name="l00127"></a>00127 {
-<a name="l00128"></a>00128 detail::correct::correct_box(box);
-<a name="l00129"></a>00129 }
-<a name="l00130"></a>00130 };
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R&gt;
-<a name="l00133"></a>00133 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>&lt;ring_tag, R&gt;
-<a name="l00134"></a>00134 {
-<a name="l00135"></a>00135 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(R&amp; ring)
-<a name="l00136"></a>00136 {
-<a name="l00137"></a>00137 detail::correct::ensure_closed_ring(ring);
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139 };
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P&gt;
-<a name="l00142"></a>00142 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>&lt;polygon_tag, P&gt;
-<a name="l00143"></a>00143 {
-<a name="l00144"></a>00144 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(P&amp; poly)
-<a name="l00145"></a>00145 {
-<a name="l00146"></a>00146 detail::correct::correct_polygon(poly);
-<a name="l00147"></a>00147 }
-<a name="l00148"></a>00148 };
-<a name="l00149"></a>00149
-<a name="l00150"></a>00150 } <span class="comment">// namespace dispatch</span>
-<a name="l00151"></a>00151 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
-<a name="l00152"></a>00152 <span class="preprocessor"></span>
-<a name="l00153"></a>00153 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G&gt;
-<a name="l00154"></a><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">00154</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>(G&amp; geometry)
-<a name="l00155"></a>00155 {
-<a name="l00156"></a>00156 dispatch::correct&lt;typename tag&lt;G&gt;::type, G&gt;::apply(geometry);
-<a name="l00157"></a>00157 }
+<a name="l00064"></a>00064 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box&amp; box)
+<a name="l00065"></a>00065 {}
+<a name="l00066"></a>00066
+<a name="l00067"></a>00067 };
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070 <span class="comment">// correct an box: make min/max are correct</span>
+<a name="l00071"></a>00071 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box&gt;
+<a name="l00072"></a>00072 <span class="keyword">struct </span>correct_box
+<a name="l00073"></a>00073 {
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box&amp; box)
+<a name="l00076"></a>00076 {
+<a name="l00077"></a>00077 <span class="comment">// Currently only for Cartesian coordinates</span>
+<a name="l00078"></a>00078 <span class="comment">// TODO: adapt using strategies</span>
+<a name="l00079"></a>00079 correct_box_loop
+<a name="l00080"></a>00080 &lt;
+<a name="l00081"></a>00081 Box, 0, <a class="code" href="classcore__dispatch_1_1dimension.html">dimension&lt;Box&gt;::type::value</a>
+<a name="l00082"></a>00082 &gt;::apply(box);
+<a name="l00083"></a>00083 }
+<a name="l00084"></a>00084 };
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 <span class="comment">// close a linear_ring, if not closed</span>
+<a name="l00088"></a>00088 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Predicate&gt;
+<a name="l00089"></a>00089 <span class="keyword">struct </span>correct_ring
+<a name="l00090"></a>00090 {
+<a name="l00091"></a>00091 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;Ring&gt;::type point_type;
+<a name="l00092"></a>00092
+<a name="l00093"></a>00093 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_area
+<a name="l00094"></a>00094 &lt;
+<a name="l00095"></a>00095 <span class="keyword">typename</span> cs_tag&lt;point_type&gt;::type,
+<a name="l00096"></a>00096 point_type
+<a name="l00097"></a>00097 &gt;::type strategy_type;
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <span class="keyword">typedef</span> detail::area::ring_area
+<a name="l00100"></a>00100 &lt;
+<a name="l00101"></a>00101 Ring,
+<a name="l00102"></a>00102 <a class="code" href="structggl_1_1point__order.html" title="Meta-function which defines point type of any geometry.">ggl::point_order&lt;Ring&gt;::value</a>,
+<a name="l00103"></a>00103 strategy_type
+<a name="l00104"></a>00104 &gt; ring_area_type;
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Ring&amp; r)
+<a name="l00108"></a>00108 {
+<a name="l00109"></a>00109 <span class="comment">// Check close-ness</span>
+<a name="l00110"></a>00110 <span class="keywordflow">if</span> (boost::size(r) &gt; 2)
+<a name="l00111"></a>00111 {
+<a name="l00112"></a>00112 <span class="comment">// check if closed, if not, close it</span>
+<a name="l00113"></a>00113 <span class="keywordflow">if</span> (<a class="code" href="group__boolean__relations.html#g6d772a2eb8ad083e056bdbf0ec7ae8a1" title="Calculate if two geometries are disjoint.">ggl::disjoint</a>(r.front(), r.back()))
+<a name="l00114"></a>00114 {
+<a name="l00115"></a>00115 r.push_back(r.front());
+<a name="l00116"></a>00116 }
+<a name="l00117"></a>00117 }
+<a name="l00118"></a>00118 <span class="comment">// Check area</span>
+<a name="l00119"></a>00119 Predicate predicate;
+<a name="l00120"></a>00120 <span class="keywordflow">if</span> (predicate(ring_area_type::apply(r, strategy_type()), 0))
+<a name="l00121"></a>00121 {
+<a name="l00122"></a>00122 std::reverse(boost::begin(r), boost::end(r));
+<a name="l00123"></a>00123 }
+<a name="l00124"></a>00124 }
+<a name="l00125"></a>00125 };
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127 <span class="comment">// correct a polygon: normalizes all rings, sets outer linear_ring clockwise, sets all</span>
+<a name="l00128"></a>00128 <span class="comment">// inner rings counter clockwise</span>
+<a name="l00129"></a>00129 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon&gt;
+<a name="l00130"></a>00130 <span class="keyword">struct </span>correct_polygon
+<a name="l00131"></a>00131 {
+<a name="l00132"></a>00132 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type&lt;Polygon&gt;::type ring_type;
+<a name="l00133"></a>00133
+<a name="l00134"></a>00134 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Polygon&amp; poly)
+<a name="l00135"></a>00135 {
+<a name="l00136"></a>00136 correct_ring&lt;ring_type, std::less&lt;double&gt; &gt;::apply(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly));
+<a name="l00137"></a>00137
+<a name="l00138"></a>00138 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator
+<a name="l00139"></a>00139 &lt;
+<a name="l00140"></a>00140 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type
+<a name="l00141"></a>00141 &gt;::type iterator_type;
+<a name="l00142"></a>00142
+<a name="l00143"></a>00143 <span class="keywordflow">for</span> (iterator_type it = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00144"></a>00144 it != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly)); ++it)
+<a name="l00145"></a>00145 {
+<a name="l00146"></a>00146 correct_ring&lt;ring_type, std::greater&lt;double&gt; &gt;::apply(*it);
+<a name="l00147"></a>00147 }
+<a name="l00148"></a>00148 }
+<a name="l00149"></a>00149 };
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151
+<a name="l00152"></a>00152 }} <span class="comment">// namespace detail::correct</span>
+<a name="l00153"></a>00153 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00154"></a>00154 <span class="preprocessor"></span>
+<a name="l00155"></a>00155 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00156"></a>00156 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00157"></a>00157 {
 <a name="l00158"></a>00158
-<a name="l00159"></a>00159 } <span class="comment">// namespace ggl</span>
-<a name="l00160"></a>00160
-<a name="l00161"></a>00161 <span class="preprocessor">#endif // GGL_ALGORITHMS_CORRECT_HPP</span>
+<a name="l00159"></a>00159 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> G&gt;
+<a name="l00160"></a>00160 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a> {};
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B&gt;
+<a name="l00163"></a>00163 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>&lt;box_tag, B&gt;
+<a name="l00164"></a>00164 : detail::<a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>::correct_box&lt;B&gt;
+<a name="l00165"></a>00165 {};
+<a name="l00166"></a>00166
+<a name="l00167"></a>00167 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R&gt;
+<a name="l00168"></a>00168 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>&lt;ring_tag, R&gt;
+<a name="l00169"></a>00169 : detail::<a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>::correct_ring&lt;R, std::less&lt;double&gt; &gt;
+<a name="l00170"></a>00170 {};
+<a name="l00171"></a>00171
+<a name="l00172"></a>00172 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P&gt;
+<a name="l00173"></a>00173 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>&lt;polygon_tag, P&gt;
+<a name="l00174"></a>00174 : detail::<a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>::correct_polygon&lt;P&gt;
+<a name="l00175"></a>00175 {};
+<a name="l00176"></a>00176
+<a name="l00177"></a>00177
+<a name="l00178"></a>00178 } <span class="comment">// namespace dispatch</span>
+<a name="l00179"></a>00179 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00180"></a>00180 <span class="preprocessor"></span>
+<a name="l00181"></a>00181 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G&gt;
+<a name="l00182"></a><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">00182</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>(G&amp; geometry)
+<a name="l00183"></a>00183 {
+<a name="l00184"></a>00184 dispatch::correct&lt;typename tag&lt;G&gt;::type, G&gt;::apply(geometry);
+<a name="l00185"></a>00185 }
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 } <span class="comment">// namespace ggl</span>
+<a name="l00188"></a>00188
+<a name="l00189"></a>00189 <span class="preprocessor">#endif // GGL_ALGORITHMS_CORRECT_HPP</span>
 </pre></div></div>
 <hr size="1">
 <table width="100%">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp_source.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -108,194 +108,195 @@
 <a name="l00101"></a>00101 {
 <a name="l00102"></a>00102 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(S <span class="keyword">const</span>&amp; s, B&amp; mbr, Strategy <span class="keyword">const</span>&amp;)
 <a name="l00103"></a>00103 {
-<a name="l00104"></a>00104 <a class="code" href="group__access.html#gaa27514a7d1c16133d28dd5601cd32fd" title="assign to a box inverse infinite">ggl::assign_inverse</a>(mbr);
-<a name="l00105"></a>00105 <a class="code" href="group__combine.html#gf2336ad085ad8b79cde5a759ab229199" title="Combines a box with another geometry (box, point).">ggl::combine</a>(mbr, s.first);
-<a name="l00106"></a>00106 <a class="code" href="group__combine.html#gf2336ad085ad8b79cde5a759ab229199" title="Combines a box with another geometry (box, point).">ggl::combine</a>(mbr, s.second);
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108 };
-<a name="l00109"></a>00109
+<a name="l00104"></a>00104 <span class="comment">// TODO: remove s.first/s.second, use strategies</span>
+<a name="l00105"></a>00105 <a class="code" href="group__access.html#gaa27514a7d1c16133d28dd5601cd32fd" title="assign to a box inverse infinite">ggl::assign_inverse</a>(mbr);
+<a name="l00106"></a>00106 <a class="code" href="group__combine.html#gf2336ad085ad8b79cde5a759ab229199" title="Combines a box with another geometry (box, point).">ggl::combine</a>(mbr, s.first);
+<a name="l00107"></a>00107 <a class="code" href="group__combine.html#gf2336ad085ad8b79cde5a759ab229199" title="Combines a box with another geometry (box, point).">ggl::combine</a>(mbr, s.second);
+<a name="l00108"></a>00108 }
+<a name="l00109"></a>00109 };
 <a name="l00110"></a>00110
-<a name="l00112"></a>00112 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00113"></a>00113 <span class="keyword">inline</span> <span class="keywordtype">void</span> envelope_range_state(R <span class="keyword">const</span>&amp; range, Strategy <span class="keyword">const</span>&amp; strategy, <span class="keyword">typename</span> Strategy::state_type&amp; state)
-<a name="l00114"></a>00114 {
-<a name="l00115"></a>00115 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator&lt;R&gt;::type iterator_type;
-<a name="l00116"></a>00116
-<a name="l00117"></a>00117 <span class="keywordflow">for</span> (iterator_type it = boost::begin(range); it != boost::end(range); it++)
-<a name="l00118"></a>00118 {
-<a name="l00119"></a>00119 strategy(*it, state);
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121 }
-<a name="l00122"></a>00122
+<a name="l00111"></a>00111
+<a name="l00113"></a>00113 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00114"></a>00114 <span class="keyword">inline</span> <span class="keywordtype">void</span> envelope_range_state(R <span class="keyword">const</span>&amp; range, Strategy <span class="keyword">const</span>&amp; strategy, <span class="keyword">typename</span> Strategy::state_type&amp; state)
+<a name="l00115"></a>00115 {
+<a name="l00116"></a>00116 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator&lt;R&gt;::type iterator_type;
+<a name="l00117"></a>00117
+<a name="l00118"></a>00118 <span class="keywordflow">for</span> (iterator_type it = boost::begin(range); it != boost::end(range); it++)
+<a name="l00119"></a>00119 {
+<a name="l00120"></a>00120 strategy(*it, state);
+<a name="l00121"></a>00121 }
+<a name="l00122"></a>00122 }
 <a name="l00123"></a>00123
 <a name="l00124"></a>00124
-<a name="l00126"></a>00126 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00127"></a>00127 <span class="keyword">struct </span>envelope_range
-<a name="l00128"></a>00128 {
-<a name="l00130"></a>00130 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(R <span class="keyword">const</span>&amp; range, B&amp; mbr, Strategy <span class="keyword">const</span>&amp; strategy)
-<a name="l00131"></a>00131 {
-<a name="l00132"></a>00132 <span class="keyword">typename</span> Strategy::state_type state(mbr);
-<a name="l00133"></a>00133 envelope_range_state(range, strategy, state);
-<a name="l00134"></a>00134 }
-<a name="l00135"></a>00135 };
-<a name="l00136"></a>00136
-<a name="l00137"></a>00137 }} <span class="comment">// namespace detail::envelope</span>
-<a name="l00138"></a>00138 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
-<a name="l00139"></a>00139 <span class="preprocessor"></span>
-<a name="l00140"></a>00140 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
-<a name="l00141"></a>00141 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
-<a name="l00142"></a>00142 {
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 <span class="keyword">template</span>
-<a name="l00145"></a>00145 &lt;
-<a name="l00146"></a>00146 <span class="keyword">typename</span> Tag1, <span class="keyword">typename</span> Tag2,
-<a name="l00147"></a>00147 <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Box,
-<a name="l00148"></a>00148 <span class="keyword">typename</span> Strategy
-<a name="l00149"></a>00149 &gt;
-<a name="l00150"></a>00150 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a> {};
-<a name="l00151"></a>00151
+<a name="l00125"></a>00125
+<a name="l00127"></a>00127 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00128"></a>00128 <span class="keyword">struct </span>envelope_range
+<a name="l00129"></a>00129 {
+<a name="l00131"></a>00131 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(R <span class="keyword">const</span>&amp; range, B&amp; mbr, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00132"></a>00132 {
+<a name="l00133"></a>00133 <span class="keyword">typename</span> Strategy::state_type state(mbr);
+<a name="l00134"></a>00134 envelope_range_state(range, strategy, state);
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136 };
+<a name="l00137"></a>00137
+<a name="l00138"></a>00138 }} <span class="comment">// namespace detail::envelope</span>
+<a name="l00139"></a>00139 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00140"></a>00140 <span class="preprocessor"></span>
+<a name="l00141"></a>00141 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00142"></a>00142 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00143"></a>00143 {
+<a name="l00144"></a>00144
+<a name="l00145"></a>00145 <span class="keyword">template</span>
+<a name="l00146"></a>00146 &lt;
+<a name="l00147"></a>00147 <span class="keyword">typename</span> Tag1, <span class="keyword">typename</span> Tag2,
+<a name="l00148"></a>00148 <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Box,
+<a name="l00149"></a>00149 <span class="keyword">typename</span> Strategy
+<a name="l00150"></a>00150 &gt;
+<a name="l00151"></a>00151 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a> {};
 <a name="l00152"></a>00152
-<a name="l00153"></a>00153 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00154"></a>00154 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;point_tag, box_tag, P, B, Strategy&gt;
-<a name="l00155"></a>00155 : detail::<a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_point&lt;P, B, Strategy&gt;
-<a name="l00156"></a>00156 {
-<a name="l00157"></a>00157 <span class="keyword">private</span>:
-<a name="l00158"></a>00158 BOOST_CONCEPT_ASSERT( (concept::ConstPoint&lt;P&gt;) );
-<a name="l00159"></a>00159 BOOST_CONCEPT_ASSERT( (concept::Box&lt;B&gt;) );
-<a name="l00160"></a>00160 };
-<a name="l00161"></a>00161
+<a name="l00153"></a>00153
+<a name="l00154"></a>00154 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00155"></a>00155 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;point_tag, box_tag, P, B, Strategy&gt;
+<a name="l00156"></a>00156 : detail::<a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_point&lt;P, B, Strategy&gt;
+<a name="l00157"></a>00157 {
+<a name="l00158"></a>00158 <span class="keyword">private</span>:
+<a name="l00159"></a>00159 BOOST_CONCEPT_ASSERT( (concept::ConstPoint&lt;P&gt;) );
+<a name="l00160"></a>00160 BOOST_CONCEPT_ASSERT( (concept::Box&lt;B&gt;) );
+<a name="l00161"></a>00161 };
 <a name="l00162"></a>00162
-<a name="l00163"></a>00163 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00164"></a>00164 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;box_tag, box_tag, B, B, Strategy&gt;
-<a name="l00165"></a>00165 {
-<a name="l00171"></a>00171 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(B <span class="keyword">const</span>&amp; b, B&amp; mbr, Strategy <span class="keyword">const</span>&amp;)
-<a name="l00172"></a>00172 {
-<a name="l00173"></a>00173 mbr = b;
-<a name="l00174"></a>00174 }
-<a name="l00175"></a>00175
-<a name="l00176"></a>00176 <span class="keyword">private</span>:
-<a name="l00177"></a>00177 BOOST_CONCEPT_ASSERT( (concept::Box&lt;B&gt;) );
-<a name="l00178"></a>00178 };
-<a name="l00179"></a>00179
+<a name="l00163"></a>00163
+<a name="l00164"></a>00164 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00165"></a>00165 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;box_tag, box_tag, B, B, Strategy&gt;
+<a name="l00166"></a>00166 {
+<a name="l00172"></a>00172 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(B <span class="keyword">const</span>&amp; b, B&amp; mbr, Strategy <span class="keyword">const</span>&amp;)
+<a name="l00173"></a>00173 {
+<a name="l00174"></a>00174 mbr = b;
+<a name="l00175"></a>00175 }
+<a name="l00176"></a>00176
+<a name="l00177"></a>00177 <span class="keyword">private</span>:
+<a name="l00178"></a>00178 BOOST_CONCEPT_ASSERT( (concept::Box&lt;B&gt;) );
+<a name="l00179"></a>00179 };
 <a name="l00180"></a>00180
-<a name="l00181"></a>00181 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> S, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00182"></a>00182 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;segment_tag, box_tag, S, B, Strategy&gt;
-<a name="l00183"></a>00183 : detail::<a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_segment&lt;S, B, Strategy&gt;
-<a name="l00184"></a>00184 {};
-<a name="l00185"></a>00185
+<a name="l00181"></a>00181
+<a name="l00182"></a>00182 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> S, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00183"></a>00183 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;segment_tag, box_tag, S, B, Strategy&gt;
+<a name="l00184"></a>00184 : detail::<a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_segment&lt;S, B, Strategy&gt;
+<a name="l00185"></a>00185 {};
 <a name="l00186"></a>00186
-<a name="l00187"></a>00187 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> S, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00188"></a>00188 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;nsphere_tag, box_tag, S, B, Strategy&gt;
-<a name="l00189"></a>00189 : detail::<a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_nsphere&lt;S, B, Strategy&gt;
-<a name="l00190"></a>00190 {
-<a name="l00191"></a>00191 <span class="keyword">private</span>:
-<a name="l00192"></a>00192 BOOST_CONCEPT_ASSERT( (concept::ConstNsphere&lt;S&gt;) );
-<a name="l00193"></a>00193 BOOST_CONCEPT_ASSERT( (concept::Box&lt;B&gt;) );
-<a name="l00194"></a>00194 };
-<a name="l00195"></a>00195
-<a name="l00196"></a>00196 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> L, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00197"></a>00197 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;linestring_tag, box_tag, L, B, Strategy&gt;
-<a name="l00198"></a>00198 : detail::<a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_range&lt;L, B, Strategy&gt;
-<a name="l00199"></a>00199 {
-<a name="l00200"></a>00200 <span class="keyword">private</span>:
-<a name="l00201"></a>00201 BOOST_CONCEPT_ASSERT( (concept::ConstLinestring&lt;L&gt;) );
-<a name="l00202"></a>00202 BOOST_CONCEPT_ASSERT( (concept::Box&lt;B&gt;) );
-<a name="l00203"></a>00203 };
-<a name="l00204"></a>00204
+<a name="l00187"></a>00187
+<a name="l00188"></a>00188 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> S, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00189"></a>00189 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;nsphere_tag, box_tag, S, B, Strategy&gt;
+<a name="l00190"></a>00190 : detail::<a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_nsphere&lt;S, B, Strategy&gt;
+<a name="l00191"></a>00191 {
+<a name="l00192"></a>00192 <span class="keyword">private</span>:
+<a name="l00193"></a>00193 BOOST_CONCEPT_ASSERT( (concept::ConstNsphere&lt;S&gt;) );
+<a name="l00194"></a>00194 BOOST_CONCEPT_ASSERT( (concept::Box&lt;B&gt;) );
+<a name="l00195"></a>00195 };
+<a name="l00196"></a>00196
+<a name="l00197"></a>00197 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> L, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00198"></a>00198 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;linestring_tag, box_tag, L, B, Strategy&gt;
+<a name="l00199"></a>00199 : detail::<a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_range&lt;L, B, Strategy&gt;
+<a name="l00200"></a>00200 {
+<a name="l00201"></a>00201 <span class="keyword">private</span>:
+<a name="l00202"></a>00202 BOOST_CONCEPT_ASSERT( (concept::ConstLinestring&lt;L&gt;) );
+<a name="l00203"></a>00203 BOOST_CONCEPT_ASSERT( (concept::Box&lt;B&gt;) );
+<a name="l00204"></a>00204 };
 <a name="l00205"></a>00205
-<a name="l00206"></a>00206 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00207"></a>00207 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;ring_tag, box_tag, R, B, Strategy&gt;
-<a name="l00208"></a>00208 : detail::<a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_range&lt;R, B, Strategy&gt;
-<a name="l00209"></a>00209 {
-<a name="l00210"></a>00210 <span class="keyword">private</span>:
-<a name="l00211"></a>00211 BOOST_CONCEPT_ASSERT( (concept::ConstRing&lt;R&gt;) );
-<a name="l00212"></a>00212 BOOST_CONCEPT_ASSERT( (concept::Box&lt;B&gt;) );
-<a name="l00213"></a>00213 };
-<a name="l00214"></a>00214
+<a name="l00206"></a>00206
+<a name="l00207"></a>00207 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00208"></a>00208 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;ring_tag, box_tag, R, B, Strategy&gt;
+<a name="l00209"></a>00209 : detail::<a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_range&lt;R, B, Strategy&gt;
+<a name="l00210"></a>00210 {
+<a name="l00211"></a>00211 <span class="keyword">private</span>:
+<a name="l00212"></a>00212 BOOST_CONCEPT_ASSERT( (concept::ConstRing&lt;R&gt;) );
+<a name="l00213"></a>00213 BOOST_CONCEPT_ASSERT( (concept::Box&lt;B&gt;) );
+<a name="l00214"></a>00214 };
 <a name="l00215"></a>00215
-<a name="l00216"></a>00216 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00217"></a>00217 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;polygon_tag, box_tag, P, B, Strategy&gt;
-<a name="l00218"></a>00218 {
-<a name="l00219"></a>00219 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(P <span class="keyword">const</span>&amp; poly, B&amp; mbr, Strategy <span class="keyword">const</span>&amp; strategy)
-<a name="l00220"></a>00220 {
-<a name="l00221"></a>00221 <span class="comment">// For polygon inspecting outer linear_ring is sufficient</span>
-<a name="l00222"></a>00222
-<a name="l00223"></a>00223 detail::envelope::envelope_range
-<a name="l00224"></a>00224 &lt;
-<a name="l00225"></a>00225 <span class="keyword">typename</span> ring_type&lt;P&gt;::type,
-<a name="l00226"></a>00226 B,
-<a name="l00227"></a>00227 Strategy
-<a name="l00228"></a>00228 &gt;::apply(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), mbr, strategy);
-<a name="l00229"></a>00229 }
-<a name="l00230"></a>00230
-<a name="l00231"></a>00231 <span class="keyword">private</span>:
-<a name="l00232"></a>00232 BOOST_CONCEPT_ASSERT( (concept::ConstPolygon&lt;P&gt;) );
-<a name="l00233"></a>00233 BOOST_CONCEPT_ASSERT( (concept::Box&lt;B&gt;) );
-<a name="l00234"></a>00234 };
-<a name="l00235"></a>00235
+<a name="l00216"></a>00216
+<a name="l00217"></a>00217 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00218"></a>00218 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;polygon_tag, box_tag, P, B, Strategy&gt;
+<a name="l00219"></a>00219 {
+<a name="l00220"></a>00220 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(P <span class="keyword">const</span>&amp; poly, B&amp; mbr, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00221"></a>00221 {
+<a name="l00222"></a>00222 <span class="comment">// For polygon inspecting outer linear_ring is sufficient</span>
+<a name="l00223"></a>00223
+<a name="l00224"></a>00224 detail::envelope::envelope_range
+<a name="l00225"></a>00225 &lt;
+<a name="l00226"></a>00226 <span class="keyword">typename</span> ring_type&lt;P&gt;::type,
+<a name="l00227"></a>00227 B,
+<a name="l00228"></a>00228 Strategy
+<a name="l00229"></a>00229 &gt;::apply(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), mbr, strategy);
+<a name="l00230"></a>00230 }
+<a name="l00231"></a>00231
+<a name="l00232"></a>00232 <span class="keyword">private</span>:
+<a name="l00233"></a>00233 BOOST_CONCEPT_ASSERT( (concept::ConstPolygon&lt;P&gt;) );
+<a name="l00234"></a>00234 BOOST_CONCEPT_ASSERT( (concept::Box&lt;B&gt;) );
+<a name="l00235"></a>00235 };
 <a name="l00236"></a>00236
-<a name="l00237"></a>00237 } <span class="comment">// namespace dispatch</span>
-<a name="l00238"></a>00238 <span class="preprocessor">#endif</span>
-<a name="l00239"></a>00239 <span class="preprocessor"></span>
-<a name="l00240"></a>00240
-<a name="l00248"></a>00248 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> B, <span class="keyword">typename</span> S&gt;
-<a name="l00249"></a><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36">00249</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>(G <span class="keyword">const</span>&amp; geometry, B&amp; mbr, S <span class="keyword">const</span>&amp; strategy)
-<a name="l00250"></a>00250 {
-<a name="l00251"></a>00251 <a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">dispatch::envelope</a>
-<a name="l00252"></a>00252 &lt;
-<a name="l00253"></a>00253 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>, <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;B&gt;::type</a>,
-<a name="l00254"></a>00254 G, B, S
-<a name="l00255"></a>00255 &gt;::apply(geometry, mbr, strategy);
-<a name="l00256"></a>00256 }
-<a name="l00257"></a>00257
+<a name="l00237"></a>00237
+<a name="l00238"></a>00238 } <span class="comment">// namespace dispatch</span>
+<a name="l00239"></a>00239 <span class="preprocessor">#endif</span>
+<a name="l00240"></a>00240 <span class="preprocessor"></span>
+<a name="l00241"></a>00241
+<a name="l00249"></a>00249 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> B, <span class="keyword">typename</span> S&gt;
+<a name="l00250"></a><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36">00250</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>(G <span class="keyword">const</span>&amp; geometry, B&amp; mbr, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00251"></a>00251 {
+<a name="l00252"></a>00252 <a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">dispatch::envelope</a>
+<a name="l00253"></a>00253 &lt;
+<a name="l00254"></a>00254 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>, <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;B&gt;::type</a>,
+<a name="l00255"></a>00255 G, B, S
+<a name="l00256"></a>00256 &gt;::apply(geometry, mbr, strategy);
+<a name="l00257"></a>00257 }
 <a name="l00258"></a>00258
 <a name="l00259"></a>00259
 <a name="l00260"></a>00260
-<a name="l00273"></a>00273 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> B&gt;
-<a name="l00274"></a><a class="code" href="group__envelope.html#g89671917cfb1753f65d4bcc2fc334bf9">00274</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>(G <span class="keyword">const</span>&amp; geometry, B&amp; mbr)
-<a name="l00275"></a>00275 {
-<a name="l00276"></a>00276 <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__envelope.html" title="Traits class binding envelope strategy to a coordinate system.">strategy_envelope</a>
-<a name="l00277"></a>00277 &lt;
-<a name="l00278"></a>00278 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;typename point_type&lt;G&gt;::type</a>&gt;::type,
-<a name="l00279"></a>00279 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;typename point_type&lt;B&gt;::type</a>&gt;::type,
-<a name="l00280"></a>00280 <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;G&gt;::type</a>,
-<a name="l00281"></a>00281 B
-<a name="l00282"></a>00282 &gt;::type strategy;
-<a name="l00283"></a>00283
-<a name="l00284"></a>00284 <a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>(geometry, mbr, strategy);
-<a name="l00285"></a>00285 }
-<a name="l00286"></a>00286
+<a name="l00261"></a>00261
+<a name="l00274"></a>00274 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> B&gt;
+<a name="l00275"></a><a class="code" href="group__envelope.html#g89671917cfb1753f65d4bcc2fc334bf9">00275</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>(G <span class="keyword">const</span>&amp; geometry, B&amp; mbr)
+<a name="l00276"></a>00276 {
+<a name="l00277"></a>00277 <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__envelope.html" title="Traits class binding envelope strategy to a coordinate system.">strategy_envelope</a>
+<a name="l00278"></a>00278 &lt;
+<a name="l00279"></a>00279 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;typename point_type&lt;G&gt;::type</a>&gt;::type,
+<a name="l00280"></a>00280 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;typename point_type&lt;B&gt;::type</a>&gt;::type,
+<a name="l00281"></a>00281 <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;G&gt;::type</a>,
+<a name="l00282"></a>00282 B
+<a name="l00283"></a>00283 &gt;::type strategy;
+<a name="l00284"></a>00284
+<a name="l00285"></a>00285 <a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>(geometry, mbr, strategy);
+<a name="l00286"></a>00286 }
 <a name="l00287"></a>00287
-<a name="l00294"></a>00294 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
-<a name="l00295"></a><a class="code" href="group__envelope.html#g0b2b7b9ef2bc07f4b45695606f3d292d">00295</a> <span class="keyword">inline</span> B <a class="code" href="group__envelope.html#g0b2b7b9ef2bc07f4b45695606f3d292d" title="Calculate and return envelope of a geometry.">make_envelope</a>(G <span class="keyword">const</span>&amp; geometry, S <span class="keyword">const</span>&amp; strategy)
-<a name="l00296"></a>00296 {
-<a name="l00297"></a>00297 B <a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a>;
-<a name="l00298"></a>00298 <a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">dispatch::envelope</a>
-<a name="l00299"></a>00299 &lt;
-<a name="l00300"></a>00300 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>, <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;B&gt;::type</a>,
-<a name="l00301"></a>00301 G, B, S
-<a name="l00302"></a>00302 &gt;::apply(geometry, box, strategy);
-<a name="l00303"></a>00303
-<a name="l00304"></a>00304 <span class="keywordflow">return</span> box;
-<a name="l00305"></a>00305 }
-<a name="l00306"></a>00306
+<a name="l00288"></a>00288
+<a name="l00295"></a>00295 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
+<a name="l00296"></a><a class="code" href="group__envelope.html#g0b2b7b9ef2bc07f4b45695606f3d292d">00296</a> <span class="keyword">inline</span> B <a class="code" href="group__envelope.html#g0b2b7b9ef2bc07f4b45695606f3d292d" title="Calculate and return envelope of a geometry.">make_envelope</a>(G <span class="keyword">const</span>&amp; geometry, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00297"></a>00297 {
+<a name="l00298"></a>00298 B <a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a>;
+<a name="l00299"></a>00299 <a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">dispatch::envelope</a>
+<a name="l00300"></a>00300 &lt;
+<a name="l00301"></a>00301 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>, <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;B&gt;::type</a>,
+<a name="l00302"></a>00302 G, B, S
+<a name="l00303"></a>00303 &gt;::apply(geometry, box, strategy);
+<a name="l00304"></a>00304
+<a name="l00305"></a>00305 <span class="keywordflow">return</span> box;
+<a name="l00306"></a>00306 }
 <a name="l00307"></a>00307
-<a name="l00313"></a>00313 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> G&gt;
-<a name="l00314"></a><a class="code" href="group__envelope.html#g938cf2804a87e138cbf4b5b65314a3e4">00314</a> <span class="keyword">inline</span> B <a class="code" href="group__envelope.html#g0b2b7b9ef2bc07f4b45695606f3d292d" title="Calculate and return envelope of a geometry.">make_envelope</a>(G <span class="keyword">const</span>&amp; geometry)
-<a name="l00315"></a>00315 {
-<a name="l00316"></a>00316 <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__envelope.html" title="Traits class binding envelope strategy to a coordinate system.">strategy_envelope</a>
-<a name="l00317"></a>00317 &lt;
-<a name="l00318"></a>00318 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;typename point_type&lt;G&gt;::type</a>&gt;::type,
-<a name="l00319"></a>00319 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;typename point_type&lt;B&gt;::type</a>&gt;::type,
-<a name="l00320"></a>00320 <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;G&gt;::type</a>,
-<a name="l00321"></a>00321 B
-<a name="l00322"></a>00322 &gt;::type strategy;
-<a name="l00323"></a>00323 <span class="keywordflow">return</span> make_envelope&lt;B&gt;(geometry, strategy);
-<a name="l00324"></a>00324 }
-<a name="l00325"></a>00325
+<a name="l00308"></a>00308
+<a name="l00314"></a>00314 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> G&gt;
+<a name="l00315"></a><a class="code" href="group__envelope.html#g938cf2804a87e138cbf4b5b65314a3e4">00315</a> <span class="keyword">inline</span> B <a class="code" href="group__envelope.html#g0b2b7b9ef2bc07f4b45695606f3d292d" title="Calculate and return envelope of a geometry.">make_envelope</a>(G <span class="keyword">const</span>&amp; geometry)
+<a name="l00316"></a>00316 {
+<a name="l00317"></a>00317 <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__envelope.html" title="Traits class binding envelope strategy to a coordinate system.">strategy_envelope</a>
+<a name="l00318"></a>00318 &lt;
+<a name="l00319"></a>00319 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;typename point_type&lt;G&gt;::type</a>&gt;::type,
+<a name="l00320"></a>00320 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;typename point_type&lt;B&gt;::type</a>&gt;::type,
+<a name="l00321"></a>00321 <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;G&gt;::type</a>,
+<a name="l00322"></a>00322 B
+<a name="l00323"></a>00323 &gt;::type strategy;
+<a name="l00324"></a>00324 <span class="keywordflow">return</span> make_envelope&lt;B&gt;(geometry, strategy);
+<a name="l00325"></a>00325 }
 <a name="l00326"></a>00326
-<a name="l00327"></a>00327 } <span class="comment">// namespace ggl</span>
-<a name="l00328"></a>00328
-<a name="l00329"></a>00329 <span class="preprocessor">#endif // GGL_ALGORITHMS_ENVELOPE_HPP</span>
+<a name="l00327"></a>00327
+<a name="l00328"></a>00328 } <span class="comment">// namespace ggl</span>
+<a name="l00329"></a>00329
+<a name="l00330"></a>00330 <span class="preprocessor">#endif // GGL_ALGORITHMS_ENVELOPE_HPP</span>
 </pre></div></div>
 <hr size="1">
 <table width="100%">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -51,9 +51,9 @@
 
 <tr><td colspan="2"><br><h2>Functions</h2></td></tr>
 <tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , typename Section &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__sectionalize.html#g5c0732d32eb6c6154f615b3a3337f4b9">ggl::get_section</a> (Geometry const &amp;geometry, Section const &amp;section, typename point_const_iterator&lt; Geometry &gt;::type &amp;begin, typename point_const_iterator&lt; Geometry &gt;::type &amp;end)</td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__sectionalize.html#gb862f6c883bcc3baddda33c91298b48a">ggl::get_section</a> (Geometry const &amp;geometry, Section const &amp;section, typename vertex_iterator&lt; Geometry, true &gt;::type &amp;begin, typename vertex_iterator&lt; Geometry, true &gt;::type &amp;end)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get iterators for a specified <a class="el" href="structggl_1_1section.html" title="Structure containing section information.">section</a>. <br></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get iterators for a specified <a class="el" href="structggl_1_1section.html" title="Structure containing section information.">section</a>. <br></td></tr>
 </table>
 </div>
 <hr size="1">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp_source.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -62,7 +62,7 @@
 <a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
 <a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
 <a name="l00022"></a>00022
-<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="iterators_2point__const__iterator_8hpp.html">ggl/iterators/point_const_iterator.hpp</a>&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="iterators_2vertex__iterator_8hpp.html">ggl/iterators/vertex_iterator.hpp</a>&gt;</span>
 <a name="l00024"></a>00024
 <a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>&gt;</span>
 <a name="l00026"></a>00026
@@ -77,9 +77,9 @@
 <a name="l00035"></a>00035 {
 <a name="l00036"></a>00036
 <a name="l00037"></a>00037 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Section&gt;
-<a name="l00038"></a>00038 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g5c0732d32eb6c6154f615b3a3337f4b9" title="Get iterators for a specified section.">get_section</a>
+<a name="l00038"></a>00038 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#gb862f6c883bcc3baddda33c91298b48a" title="Get iterators for a specified section.">get_section</a>
 <a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__const__iterator.html" title="Meta-function which defines point-const-iterator type.">ggl::point_const_iterator&lt;Geometry&gt;::type</a> iterator_type;
+<a name="l00040"></a>00040 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1vertex__iterator.html" title="Meta-function which defines vertex_iterator type.">ggl::vertex_iterator&lt;Geometry, true&gt;::type</a> iterator_type;
 <a name="l00041"></a>00041 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Geometry <span class="keyword">const</span>&amp; geometry, Section <span class="keyword">const</span>&amp; section,
 <a name="l00042"></a>00042 iterator_type&amp; begin, iterator_type&amp; end)
 <a name="l00043"></a>00043 {
@@ -89,9 +89,9 @@
 <a name="l00047"></a>00047 };
 <a name="l00048"></a>00048
 <a name="l00049"></a>00049 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Section&gt;
-<a name="l00050"></a>00050 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g5c0732d32eb6c6154f615b3a3337f4b9" title="Get iterators for a specified section.">get_section</a>&lt;polygon_tag, Polygon, Section&gt;
+<a name="l00050"></a>00050 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#gb862f6c883bcc3baddda33c91298b48a" title="Get iterators for a specified section.">get_section</a>&lt;polygon_tag, Polygon, Section&gt;
 <a name="l00051"></a>00051 {
-<a name="l00052"></a>00052 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__const__iterator.html" title="Meta-function which defines point-const-iterator type.">ggl::point_const_iterator&lt;Polygon&gt;::type</a> iterator_type;
+<a name="l00052"></a>00052 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1vertex__iterator.html" title="Meta-function which defines vertex_iterator type.">ggl::vertex_iterator&lt;Polygon, true&gt;::type</a> iterator_type;
 <a name="l00053"></a>00053 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Polygon <span class="keyword">const</span>&amp; polygon, Section <span class="keyword">const</span>&amp; section,
 <a name="l00054"></a>00054 iterator_type&amp; begin, iterator_type&amp; end)
 <a name="l00055"></a>00055 {
@@ -112,11 +112,11 @@
 <a name="l00070"></a>00070
 <a name="l00071"></a>00071
 <a name="l00084"></a>00084 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Section&gt;
-<a name="l00085"></a><a class="code" href="group__sectionalize.html#g5c0732d32eb6c6154f615b3a3337f4b9">00085</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__sectionalize.html#g5c0732d32eb6c6154f615b3a3337f4b9" title="Get iterators for a specified section.">get_section</a>(Geometry <span class="keyword">const</span>&amp; geometry, Section <span class="keyword">const</span>&amp; <a class="code" href="structggl_1_1section.html" title="Structure containing section information.">section</a>,
-<a name="l00086"></a>00086 <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__const__iterator.html" title="Meta-function which defines point-const-iterator type.">point_const_iterator&lt;Geometry&gt;::type</a>&amp; begin,
-<a name="l00087"></a>00087 <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__const__iterator.html" title="Meta-function which defines point-const-iterator type.">point_const_iterator&lt;Geometry&gt;::type</a>&amp; end)
+<a name="l00085"></a><a class="code" href="group__sectionalize.html#gb862f6c883bcc3baddda33c91298b48a">00085</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__sectionalize.html#gb862f6c883bcc3baddda33c91298b48a" title="Get iterators for a specified section.">get_section</a>(Geometry <span class="keyword">const</span>&amp; geometry, Section <span class="keyword">const</span>&amp; <a class="code" href="structggl_1_1section.html" title="Structure containing section information.">section</a>,
+<a name="l00086"></a>00086 <span class="keyword">typename</span> <a class="code" href="structggl_1_1vertex__iterator.html" title="Meta-function which defines vertex_iterator type.">vertex_iterator&lt;Geometry, true&gt;::type</a>&amp; begin,
+<a name="l00087"></a>00087 <span class="keyword">typename</span> <a class="code" href="structggl_1_1vertex__iterator.html" title="Meta-function which defines vertex_iterator type.">vertex_iterator&lt;Geometry, true&gt;::type</a>&amp; end)
 <a name="l00088"></a>00088 {
-<a name="l00089"></a>00089 <a class="code" href="group__sectionalize.html#g5c0732d32eb6c6154f615b3a3337f4b9" title="Get iterators for a specified section.">dispatch::get_section</a>
+<a name="l00089"></a>00089 <a class="code" href="group__sectionalize.html#gb862f6c883bcc3baddda33c91298b48a" title="Get iterators for a specified section.">dispatch::get_section</a>
 <a name="l00090"></a>00090 &lt;
 <a name="l00091"></a>00091 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
 <a name="l00092"></a>00092 Geometry,

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp_source.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -305,7 +305,7 @@
 <a name="l00308"></a>00308 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; is.count; i++)
 <a name="l00309"></a>00309 {
 <a name="l00310"></a>00310 GeometryOut p;
-<a name="l00311"></a>00311 <a class="code" href="namespaceggl.html#173003fecd63871d3a6aee07f4ba7011" title="Copies coordinates from source to destination point.">ggl::copy_coordinates</a>(is.intersections[i], p);
+<a name="l00311"></a>00311 <a class="code" href="namespaceggl.html#f8cee6dd577bebfd1dbbe4cc503304d4" title="Copies coordinates from source to destination point.">ggl::copy_coordinates</a>(is.intersections[i], p);
 <a name="l00312"></a>00312 *out = p;
 <a name="l00313"></a>00313 out++;
 <a name="l00314"></a>00314 }

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp_source.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -65,523 +65,520 @@
 <a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="access_8hpp.html">ggl/core/access.hpp</a>&gt;</span>
 <a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
 <a name="l00025"></a>00025
-<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;<a class="code" href="iterators_2point__const__iterator_8hpp.html">ggl/iterators/point_const_iterator.hpp</a>&gt;</span>
-<a name="l00027"></a>00027
-<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;<a class="code" href="assign__box__corner_8hpp.html">ggl/util/assign_box_corner.hpp</a>&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;<a class="code" href="math_8hpp.html">ggl/util/math.hpp</a>&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>&gt;</span>
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032
-<a name="l00044"></a>00044 <span class="keyword">namespace </span>ggl
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047
-<a name="l00059"></a>00059 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
-<a name="l00060"></a><a class="code" href="structggl_1_1section.html">00060</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1section.html" title="Structure containing section information.">section</a>
-<a name="l00061"></a>00061 {
-<a name="l00062"></a><a class="code" href="structggl_1_1section.html#da71a242258d79119fb6df06d290095e">00062</a> <span class="keyword">typedef</span> Box <a class="code" href="structggl_1_1section.html#da71a242258d79119fb6df06d290095e">box_type</a>;
-<a name="l00063"></a>00063
-<a name="l00064"></a><a class="code" href="structggl_1_1section.html#685294c3e7107f87fcb7def9e2a6f430">00064</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#685294c3e7107f87fcb7def9e2a6f430">directions</a>[DimensionCount];
-<a name="l00065"></a><a class="code" href="structggl_1_1section.html#fe6e8096e811d4248d64a0a4a9817edc">00065</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#fe6e8096e811d4248d64a0a4a9817edc">ring_index</a>;
-<a name="l00066"></a><a class="code" href="structggl_1_1section.html#0403b41208359f079cf29876de56d182">00066</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#0403b41208359f079cf29876de56d182">multi_index</a>;
-<a name="l00067"></a><a class="code" href="structggl_1_1section.html#dbdec35a5e0878ecc3ac31d28dd12f6f">00067</a> Box <a class="code" href="structggl_1_1section.html#dbdec35a5e0878ecc3ac31d28dd12f6f">bounding_box</a>;
-<a name="l00068"></a>00068
-<a name="l00069"></a><a class="code" href="structggl_1_1section.html#fcde79e0f07f3744382e8ecbb6ceeaa3">00069</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#fcde79e0f07f3744382e8ecbb6ceeaa3">begin_index</a>;
-<a name="l00070"></a><a class="code" href="structggl_1_1section.html#22897e4894f0d4dcaa80f0ab30376c68">00070</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#22897e4894f0d4dcaa80f0ab30376c68">end_index</a>;
-<a name="l00071"></a><a class="code" href="structggl_1_1section.html#c53669933d966cf7c9c19b8376b5b731">00071</a> std::size_t <a class="code" href="structggl_1_1section.html#c53669933d966cf7c9c19b8376b5b731">count</a>;
-<a name="l00072"></a><a class="code" href="structggl_1_1section.html#e8630665af85810bc73eaabbe8b8d1b5">00072</a> std::size_t <a class="code" href="structggl_1_1section.html#e8630665af85810bc73eaabbe8b8d1b5">range_count</a>;
-<a name="l00073"></a><a class="code" href="structggl_1_1section.html#ef8836af463d9d92f0c2fc6bc4668f54">00073</a> <span class="keywordtype">bool</span> <a class="code" href="structggl_1_1section.html#ef8836af463d9d92f0c2fc6bc4668f54">duplicate</a>;
-<a name="l00074"></a><a class="code" href="structggl_1_1section.html#0d442355c8be6a391319da7699ba4055">00074</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#0d442355c8be6a391319da7699ba4055">non_duplicate_index</a>;
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076
-<a name="l00077"></a><a class="code" href="structggl_1_1section.html#6b36770260c6a2c89a9a63fc641064c4">00077</a> <span class="keyword">inline</span> <a class="code" href="structggl_1_1section.html#6b36770260c6a2c89a9a63fc641064c4">section</a>()
-<a name="l00078"></a>00078 : <a class="code" href="structggl_1_1section.html#fe6e8096e811d4248d64a0a4a9817edc">ring_index</a>(-99)
-<a name="l00079"></a>00079 , <a class="code" href="structggl_1_1section.html#0403b41208359f079cf29876de56d182">multi_index</a>(-99)
-<a name="l00080"></a>00080 , <a class="code" href="structggl_1_1section.html#fcde79e0f07f3744382e8ecbb6ceeaa3">begin_index</a>(-1)
-<a name="l00081"></a>00081 , <a class="code" href="structggl_1_1section.html#22897e4894f0d4dcaa80f0ab30376c68">end_index</a>(-1)
-<a name="l00082"></a>00082 , <a class="code" href="structggl_1_1section.html#c53669933d966cf7c9c19b8376b5b731">count</a>(0)
-<a name="l00083"></a>00083 , <a class="code" href="structggl_1_1section.html#e8630665af85810bc73eaabbe8b8d1b5">range_count</a>(0)
-<a name="l00084"></a>00084 , <a class="code" href="structggl_1_1section.html#ef8836af463d9d92f0c2fc6bc4668f54">duplicate</a>(false)
-<a name="l00085"></a>00085 , <a class="code" href="structggl_1_1section.html#0d442355c8be6a391319da7699ba4055">non_duplicate_index</a>(-1)
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 <a class="code" href="group__access.html#gaa27514a7d1c16133d28dd5601cd32fd" title="assign to a box inverse infinite">assign_inverse</a>(<a class="code" href="structggl_1_1section.html#dbdec35a5e0878ecc3ac31d28dd12f6f">bounding_box</a>);
-<a name="l00088"></a>00088 <span class="keywordflow">for</span> (<span class="keyword">register</span> std::size_t i = 0; i &lt; DimensionCount; i++)
-<a name="l00089"></a>00089 {
-<a name="l00090"></a>00090 <a class="code" href="structggl_1_1section.html#685294c3e7107f87fcb7def9e2a6f430">directions</a>[i] = 0;
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093 };
-<a name="l00094"></a>00094
-<a name="l00095"></a>00095
-<a name="l00102"></a>00102 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
-<a name="l00103"></a><a class="code" href="structggl_1_1sections.html">00103</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a> : std::vector&lt;section&lt;Box, DimensionCount&gt; &gt;
-<a name="l00104"></a>00104 {
-<a name="l00105"></a><a class="code" href="structggl_1_1sections.html#9ad75a29e07d632e85847e4f206715ba">00105</a> <span class="keyword">typedef</span> Box <a class="code" href="structggl_1_1sections.html#9ad75a29e07d632e85847e4f206715ba">box_type</a>;
-<a name="l00106"></a><a class="code" href="structggl_1_1sections.html#1c9f89074b8fa60cc7c6e11ff323093e">00106</a> <span class="keyword">static</span> <span class="keyword">const</span> std::size_t <a class="code" href="structggl_1_1sections.html#1c9f89074b8fa60cc7c6e11ff323093e">value</a> = DimensionCount;
-<a name="l00107"></a>00107 };
-<a name="l00108"></a>00108
+<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;<a class="code" href="math_8hpp.html">ggl/util/math.hpp</a>&gt;</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>&gt;</span>
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029
+<a name="l00041"></a>00041 <span class="keyword">namespace </span>ggl
+<a name="l00042"></a>00042 {
+<a name="l00043"></a>00043
+<a name="l00044"></a>00044
+<a name="l00056"></a>00056 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00057"></a><a class="code" href="structggl_1_1section.html">00057</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1section.html" title="Structure containing section information.">section</a>
+<a name="l00058"></a>00058 {
+<a name="l00059"></a><a class="code" href="structggl_1_1section.html#da71a242258d79119fb6df06d290095e">00059</a> <span class="keyword">typedef</span> Box <a class="code" href="structggl_1_1section.html#da71a242258d79119fb6df06d290095e">box_type</a>;
+<a name="l00060"></a>00060
+<a name="l00061"></a><a class="code" href="structggl_1_1section.html#685294c3e7107f87fcb7def9e2a6f430">00061</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#685294c3e7107f87fcb7def9e2a6f430">directions</a>[DimensionCount];
+<a name="l00062"></a><a class="code" href="structggl_1_1section.html#fe6e8096e811d4248d64a0a4a9817edc">00062</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#fe6e8096e811d4248d64a0a4a9817edc">ring_index</a>;
+<a name="l00063"></a><a class="code" href="structggl_1_1section.html#0403b41208359f079cf29876de56d182">00063</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#0403b41208359f079cf29876de56d182">multi_index</a>;
+<a name="l00064"></a><a class="code" href="structggl_1_1section.html#dbdec35a5e0878ecc3ac31d28dd12f6f">00064</a> Box <a class="code" href="structggl_1_1section.html#dbdec35a5e0878ecc3ac31d28dd12f6f">bounding_box</a>;
+<a name="l00065"></a>00065
+<a name="l00066"></a><a class="code" href="structggl_1_1section.html#fcde79e0f07f3744382e8ecbb6ceeaa3">00066</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#fcde79e0f07f3744382e8ecbb6ceeaa3">begin_index</a>;
+<a name="l00067"></a><a class="code" href="structggl_1_1section.html#22897e4894f0d4dcaa80f0ab30376c68">00067</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#22897e4894f0d4dcaa80f0ab30376c68">end_index</a>;
+<a name="l00068"></a><a class="code" href="structggl_1_1section.html#c53669933d966cf7c9c19b8376b5b731">00068</a> std::size_t <a class="code" href="structggl_1_1section.html#c53669933d966cf7c9c19b8376b5b731">count</a>;
+<a name="l00069"></a><a class="code" href="structggl_1_1section.html#e8630665af85810bc73eaabbe8b8d1b5">00069</a> std::size_t <a class="code" href="structggl_1_1section.html#e8630665af85810bc73eaabbe8b8d1b5">range_count</a>;
+<a name="l00070"></a><a class="code" href="structggl_1_1section.html#ef8836af463d9d92f0c2fc6bc4668f54">00070</a> <span class="keywordtype">bool</span> <a class="code" href="structggl_1_1section.html#ef8836af463d9d92f0c2fc6bc4668f54">duplicate</a>;
+<a name="l00071"></a><a class="code" href="structggl_1_1section.html#0d442355c8be6a391319da7699ba4055">00071</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#0d442355c8be6a391319da7699ba4055">non_duplicate_index</a>;
+<a name="l00072"></a>00072
+<a name="l00073"></a>00073
+<a name="l00074"></a><a class="code" href="structggl_1_1section.html#6b36770260c6a2c89a9a63fc641064c4">00074</a> <span class="keyword">inline</span> <a class="code" href="structggl_1_1section.html#6b36770260c6a2c89a9a63fc641064c4">section</a>()
+<a name="l00075"></a>00075 : <a class="code" href="structggl_1_1section.html#fe6e8096e811d4248d64a0a4a9817edc">ring_index</a>(-99)
+<a name="l00076"></a>00076 , <a class="code" href="structggl_1_1section.html#0403b41208359f079cf29876de56d182">multi_index</a>(-99)
+<a name="l00077"></a>00077 , <a class="code" href="structggl_1_1section.html#fcde79e0f07f3744382e8ecbb6ceeaa3">begin_index</a>(-1)
+<a name="l00078"></a>00078 , <a class="code" href="structggl_1_1section.html#22897e4894f0d4dcaa80f0ab30376c68">end_index</a>(-1)
+<a name="l00079"></a>00079 , <a class="code" href="structggl_1_1section.html#c53669933d966cf7c9c19b8376b5b731">count</a>(0)
+<a name="l00080"></a>00080 , <a class="code" href="structggl_1_1section.html#e8630665af85810bc73eaabbe8b8d1b5">range_count</a>(0)
+<a name="l00081"></a>00081 , <a class="code" href="structggl_1_1section.html#ef8836af463d9d92f0c2fc6bc4668f54">duplicate</a>(false)
+<a name="l00082"></a>00082 , <a class="code" href="structggl_1_1section.html#0d442355c8be6a391319da7699ba4055">non_duplicate_index</a>(-1)
+<a name="l00083"></a>00083 {
+<a name="l00084"></a>00084 <a class="code" href="group__access.html#gaa27514a7d1c16133d28dd5601cd32fd" title="assign to a box inverse infinite">assign_inverse</a>(<a class="code" href="structggl_1_1section.html#dbdec35a5e0878ecc3ac31d28dd12f6f">bounding_box</a>);
+<a name="l00085"></a>00085 <span class="keywordflow">for</span> (<span class="keyword">register</span> std::size_t i = 0; i &lt; DimensionCount; i++)
+<a name="l00086"></a>00086 {
+<a name="l00087"></a>00087 <a class="code" href="structggl_1_1section.html#685294c3e7107f87fcb7def9e2a6f430">directions</a>[i] = 0;
+<a name="l00088"></a>00088 }
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 };
+<a name="l00091"></a>00091
+<a name="l00092"></a>00092
+<a name="l00099"></a>00099 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00100"></a><a class="code" href="structggl_1_1sections.html">00100</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a> : std::vector&lt;section&lt;Box, DimensionCount&gt; &gt;
+<a name="l00101"></a>00101 {
+<a name="l00102"></a><a class="code" href="structggl_1_1sections.html#9ad75a29e07d632e85847e4f206715ba">00102</a> <span class="keyword">typedef</span> Box <a class="code" href="structggl_1_1sections.html#9ad75a29e07d632e85847e4f206715ba">box_type</a>;
+<a name="l00103"></a><a class="code" href="structggl_1_1sections.html#1c9f89074b8fa60cc7c6e11ff323093e">00103</a> <span class="keyword">static</span> <span class="keyword">const</span> std::size_t <a class="code" href="structggl_1_1sections.html#1c9f89074b8fa60cc7c6e11ff323093e">value</a> = DimensionCount;
+<a name="l00104"></a>00104 };
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00108"></a>00108 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a> {
 <a name="l00109"></a>00109
-<a name="l00110"></a>00110 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
-<a name="l00111"></a>00111 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a> {
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
-<a name="l00114"></a>00114 <span class="keyword">struct </span>get_direction_loop
-<a name="l00115"></a>00115 {
-<a name="l00116"></a>00116 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type&lt;Segment&gt;::type</a> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a>;
-<a name="l00117"></a>00117
-<a name="l00118"></a>00118 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Segment <span class="keyword">const</span>&amp; seg,
-<a name="l00119"></a>00119 <span class="keywordtype">int</span> directions[DimensionCount])
-<a name="l00120"></a>00120 {
-<a name="l00121"></a>00121 <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a> <span class="keyword">const</span> diff =
-<a name="l00122"></a>00122 ggl::get&lt;1, Dimension&gt;(seg) - ggl::get&lt;0, Dimension&gt;(seg);
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 directions[Dimension] = diff &gt; 0 ? 1 : (diff &lt; 0 ? -1 : 0);
-<a name="l00125"></a>00125
-<a name="l00126"></a>00126 get_direction_loop
-<a name="l00127"></a>00127 &lt;
-<a name="l00128"></a>00128 Segment, Dimension + 1, DimensionCount
-<a name="l00129"></a>00129 &gt;::apply(seg, directions);
-<a name="l00130"></a>00130 }
-<a name="l00131"></a>00131 };
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
-<a name="l00134"></a>00134 <span class="keyword">struct </span>get_direction_loop&lt;Segment, DimensionCount, DimensionCount&gt;
-<a name="l00135"></a>00135 {
-<a name="l00136"></a>00136 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Segment <span class="keyword">const</span>&amp; seg,
-<a name="l00137"></a>00137 <span class="keywordtype">int</span> directions[DimensionCount])
-<a name="l00138"></a>00138 {
-<a name="l00139"></a>00139 boost::ignore_unused_variable_warning(seg);
-<a name="l00140"></a>00140 boost::ignore_unused_variable_warning(directions);
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142 };
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
-<a name="l00145"></a>00145 <span class="keyword">struct </span>copy_loop
-<a name="l00146"></a>00146 {
-<a name="l00147"></a>00147 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(<span class="keyword">const</span> T source[DimensionCount],
-<a name="l00148"></a>00148 T target[DimensionCount])
-<a name="l00149"></a>00149 {
-<a name="l00150"></a>00150 target[Dimension] = source[Dimension];
-<a name="l00151"></a>00151 copy_loop&lt;T, Dimension + 1, DimensionCount&gt;::apply(source, target);
-<a name="l00152"></a>00152 }
-<a name="l00153"></a>00153 };
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
-<a name="l00156"></a>00156 <span class="keyword">struct </span>copy_loop&lt;T, DimensionCount, DimensionCount&gt;
-<a name="l00157"></a>00157 {
-<a name="l00158"></a>00158 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(<span class="keyword">const</span> T source[DimensionCount],
-<a name="l00159"></a>00159 T target[DimensionCount])
-<a name="l00160"></a>00160 {
-<a name="l00161"></a>00161 boost::ignore_unused_variable_warning(source);
-<a name="l00162"></a>00162 boost::ignore_unused_variable_warning(target);
-<a name="l00163"></a>00163 }
-<a name="l00164"></a>00164 };
-<a name="l00165"></a>00165
-<a name="l00166"></a>00166 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
-<a name="l00167"></a>00167 <span class="keyword">struct </span>compare_loop
-<a name="l00168"></a>00168 {
-<a name="l00169"></a>00169 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(<span class="keyword">const</span> T source[DimensionCount],
-<a name="l00170"></a>00170 <span class="keyword">const</span> T target[DimensionCount])
-<a name="l00171"></a>00171 {
-<a name="l00172"></a>00172 <span class="keywordtype">bool</span> <span class="keyword">const</span> not_equal = target[Dimension] != source[Dimension];
-<a name="l00173"></a>00173
-<a name="l00174"></a>00174 <span class="keywordflow">return</span> not_equal
-<a name="l00175"></a>00175 ? <span class="keyword">false</span>
-<a name="l00176"></a>00176 : compare_loop
-<a name="l00177"></a>00177 &lt;
-<a name="l00178"></a>00178 T, Dimension + 1, DimensionCount
-<a name="l00179"></a>00179 &gt;::apply(source, target);
-<a name="l00180"></a>00180 }
-<a name="l00181"></a>00181 };
-<a name="l00182"></a>00182
-<a name="l00183"></a>00183 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
-<a name="l00184"></a>00184 <span class="keyword">struct </span>compare_loop&lt;T, DimensionCount, DimensionCount&gt;
-<a name="l00185"></a>00185 {
-<a name="l00186"></a>00186 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(<span class="keyword">const</span> T source[DimensionCount],
-<a name="l00187"></a>00187 <span class="keyword">const</span> T target[DimensionCount])
-<a name="l00188"></a>00188 {
-<a name="l00189"></a>00189 boost::ignore_unused_variable_warning(source);
-<a name="l00190"></a>00190 boost::ignore_unused_variable_warning(target);
-<a name="l00191"></a>00191
-<a name="l00192"></a>00192 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00193"></a>00193 }
-<a name="l00194"></a>00194 };
-<a name="l00195"></a>00195
-<a name="l00196"></a>00196
-<a name="l00197"></a>00197 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
-<a name="l00198"></a>00198 <span class="keyword">struct </span>check_duplicate_loop
-<a name="l00199"></a>00199 {
-<a name="l00200"></a>00200 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type&lt;Segment&gt;::type</a> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a>;
-<a name="l00201"></a>00201
-<a name="l00202"></a>00202 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(Segment <span class="keyword">const</span>&amp; seg)
-<a name="l00203"></a>00203 {
-<a name="l00204"></a>00204 <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a> <span class="keyword">const</span> diff =
-<a name="l00205"></a>00205 ggl::get&lt;1, Dimension&gt;(seg) - ggl::get&lt;0, Dimension&gt;(seg);
-<a name="l00206"></a>00206
-<a name="l00207"></a>00207 <span class="keywordflow">if</span> (! <a class="code" href="namespaceggl_1_1math.html#d90ba94c2d65876e9485b2bbd10def34" title="returns true if both arguments are equal.">ggl::math::equals</a>(diff, 0))
-<a name="l00208"></a>00208 {
-<a name="l00209"></a>00209 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00210"></a>00210 }
-<a name="l00211"></a>00211
-<a name="l00212"></a>00212 <span class="keywordflow">return</span> check_duplicate_loop
-<a name="l00213"></a>00213 &lt;
-<a name="l00214"></a>00214 Segment, Dimension + 1, DimensionCount
-<a name="l00215"></a>00215 &gt;::apply(seg);
-<a name="l00216"></a>00216 }
-<a name="l00217"></a>00217 };
-<a name="l00218"></a>00218
-<a name="l00219"></a>00219 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
-<a name="l00220"></a>00220 <span class="keyword">struct </span>check_duplicate_loop&lt;Segment, DimensionCount, DimensionCount&gt;
-<a name="l00221"></a>00221 {
-<a name="l00222"></a>00222 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(Segment <span class="keyword">const</span>&amp;)
-<a name="l00223"></a>00223 {
-<a name="l00224"></a>00224 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00225"></a>00225 }
-<a name="l00226"></a>00226 };
-<a name="l00227"></a>00227
-<a name="l00228"></a>00228 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
-<a name="l00229"></a>00229 <span class="keyword">struct </span>assign_loop
-<a name="l00230"></a>00230 {
-<a name="l00231"></a>00231 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(T dims[DimensionCount], <span class="keywordtype">int</span> <span class="keyword">const</span> value)
-<a name="l00232"></a>00232 {
-<a name="l00233"></a>00233 dims[Dimension] = value;
-<a name="l00234"></a>00234 assign_loop&lt;T, Dimension + 1, DimensionCount&gt;::apply(dims, value);
-<a name="l00235"></a>00235 }
-<a name="l00236"></a>00236 };
-<a name="l00237"></a>00237
-<a name="l00238"></a>00238 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
-<a name="l00239"></a>00239 <span class="keyword">struct </span>assign_loop&lt;T, DimensionCount, DimensionCount&gt;
-<a name="l00240"></a>00240 {
-<a name="l00241"></a>00241 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(T dims[DimensionCount], <span class="keywordtype">int</span> <span class="keyword">const</span>)
-<a name="l00242"></a>00242 {
-<a name="l00243"></a>00243 boost::ignore_unused_variable_warning(dims);
-<a name="l00244"></a>00244 }
-<a name="l00245"></a>00245 };
-<a name="l00246"></a>00246
-<a name="l00247"></a>00247
-<a name="l00248"></a>00248 <span class="keyword">template</span>
-<a name="l00249"></a>00249 &lt;
-<a name="l00250"></a>00250 <span class="keyword">typename</span> Range,
-<a name="l00251"></a>00251 <span class="keyword">typename</span> Point,
-<a name="l00252"></a>00252 <span class="keyword">typename</span> Sections,
-<a name="l00253"></a>00253 std::size_t DimensionCount,
-<a name="l00254"></a>00254 std::size_t MaxCount
-<a name="l00255"></a>00255 &gt;
-<a name="l00256"></a>00256 <span class="keyword">struct </span>sectionalize_range
-<a name="l00257"></a>00257 {
-<a name="l00258"></a>00258 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Range <span class="keyword">const</span>&amp; range, Sections&amp; <a class="code" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a>,
-<a name="l00259"></a>00259 <span class="keywordtype">int</span> ring_index = -1, <span class="keywordtype">int</span> multi_index = -1)
-<a name="l00260"></a>00260 {
-<a name="l00261"></a>00261 <span class="keyword">typedef</span> <a class="code" href="structggl_1_1segment.html" title="Class segment: small containing two (templatized) point references.">segment&lt;const Point&gt;</a> segment_type;
-<a name="l00262"></a>00262
-<a name="l00263"></a>00263 std::size_t <span class="keyword">const</span> n = boost::size(range);
-<a name="l00264"></a>00264 <span class="keywordflow">if</span> (n == 0)
-<a name="l00265"></a>00265 {
-<a name="l00266"></a>00266 <span class="comment">// Zero points, no section</span>
-<a name="l00267"></a>00267 <span class="keywordflow">return</span>;
-<a name="l00268"></a>00268 }
-<a name="l00269"></a>00269
-<a name="l00270"></a>00270 <span class="keywordflow">if</span> (n == 1)
-<a name="l00271"></a>00271 {
-<a name="l00272"></a>00272 <span class="comment">// Line with one point ==&gt; no sections</span>
-<a name="l00273"></a>00273 <span class="keywordflow">return</span>;
-<a name="l00274"></a>00274 }
+<a name="l00110"></a>00110 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00111"></a>00111 <span class="keyword">struct </span>get_direction_loop
+<a name="l00112"></a>00112 {
+<a name="l00113"></a>00113 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type&lt;Segment&gt;::type</a> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a>;
+<a name="l00114"></a>00114
+<a name="l00115"></a>00115 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Segment <span class="keyword">const</span>&amp; seg,
+<a name="l00116"></a>00116 <span class="keywordtype">int</span> directions[DimensionCount])
+<a name="l00117"></a>00117 {
+<a name="l00118"></a>00118 <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a> <span class="keyword">const</span> diff =
+<a name="l00119"></a>00119 ggl::get&lt;1, Dimension&gt;(seg) - ggl::get&lt;0, Dimension&gt;(seg);
+<a name="l00120"></a>00120
+<a name="l00121"></a>00121 directions[Dimension] = diff &gt; 0 ? 1 : (diff &lt; 0 ? -1 : 0);
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123 get_direction_loop
+<a name="l00124"></a>00124 &lt;
+<a name="l00125"></a>00125 Segment, Dimension + 1, DimensionCount
+<a name="l00126"></a>00126 &gt;::apply(seg, directions);
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128 };
+<a name="l00129"></a>00129
+<a name="l00130"></a>00130 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00131"></a>00131 <span class="keyword">struct </span>get_direction_loop&lt;Segment, DimensionCount, DimensionCount&gt;
+<a name="l00132"></a>00132 {
+<a name="l00133"></a>00133 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Segment <span class="keyword">const</span>&amp; seg,
+<a name="l00134"></a>00134 <span class="keywordtype">int</span> directions[DimensionCount])
+<a name="l00135"></a>00135 {
+<a name="l00136"></a>00136 boost::ignore_unused_variable_warning(seg);
+<a name="l00137"></a>00137 boost::ignore_unused_variable_warning(directions);
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139 };
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00142"></a>00142 <span class="keyword">struct </span>copy_loop
+<a name="l00143"></a>00143 {
+<a name="l00144"></a>00144 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(<span class="keyword">const</span> T source[DimensionCount],
+<a name="l00145"></a>00145 T target[DimensionCount])
+<a name="l00146"></a>00146 {
+<a name="l00147"></a>00147 target[Dimension] = source[Dimension];
+<a name="l00148"></a>00148 copy_loop&lt;T, Dimension + 1, DimensionCount&gt;::apply(source, target);
+<a name="l00149"></a>00149 }
+<a name="l00150"></a>00150 };
+<a name="l00151"></a>00151
+<a name="l00152"></a>00152 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00153"></a>00153 <span class="keyword">struct </span>copy_loop&lt;T, DimensionCount, DimensionCount&gt;
+<a name="l00154"></a>00154 {
+<a name="l00155"></a>00155 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(<span class="keyword">const</span> T source[DimensionCount],
+<a name="l00156"></a>00156 T target[DimensionCount])
+<a name="l00157"></a>00157 {
+<a name="l00158"></a>00158 boost::ignore_unused_variable_warning(source);
+<a name="l00159"></a>00159 boost::ignore_unused_variable_warning(target);
+<a name="l00160"></a>00160 }
+<a name="l00161"></a>00161 };
+<a name="l00162"></a>00162
+<a name="l00163"></a>00163 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00164"></a>00164 <span class="keyword">struct </span>compare_loop
+<a name="l00165"></a>00165 {
+<a name="l00166"></a>00166 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(<span class="keyword">const</span> T source[DimensionCount],
+<a name="l00167"></a>00167 <span class="keyword">const</span> T target[DimensionCount])
+<a name="l00168"></a>00168 {
+<a name="l00169"></a>00169 <span class="keywordtype">bool</span> <span class="keyword">const</span> not_equal = target[Dimension] != source[Dimension];
+<a name="l00170"></a>00170
+<a name="l00171"></a>00171 <span class="keywordflow">return</span> not_equal
+<a name="l00172"></a>00172 ? <span class="keyword">false</span>
+<a name="l00173"></a>00173 : compare_loop
+<a name="l00174"></a>00174 &lt;
+<a name="l00175"></a>00175 T, Dimension + 1, DimensionCount
+<a name="l00176"></a>00176 &gt;::apply(source, target);
+<a name="l00177"></a>00177 }
+<a name="l00178"></a>00178 };
+<a name="l00179"></a>00179
+<a name="l00180"></a>00180 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00181"></a>00181 <span class="keyword">struct </span>compare_loop&lt;T, DimensionCount, DimensionCount&gt;
+<a name="l00182"></a>00182 {
+<a name="l00183"></a>00183 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(<span class="keyword">const</span> T source[DimensionCount],
+<a name="l00184"></a>00184 <span class="keyword">const</span> T target[DimensionCount])
+<a name="l00185"></a>00185 {
+<a name="l00186"></a>00186 boost::ignore_unused_variable_warning(source);
+<a name="l00187"></a>00187 boost::ignore_unused_variable_warning(target);
+<a name="l00188"></a>00188
+<a name="l00189"></a>00189 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00190"></a>00190 }
+<a name="l00191"></a>00191 };
+<a name="l00192"></a>00192
+<a name="l00193"></a>00193
+<a name="l00194"></a>00194 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00195"></a>00195 <span class="keyword">struct </span>check_duplicate_loop
+<a name="l00196"></a>00196 {
+<a name="l00197"></a>00197 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type&lt;Segment&gt;::type</a> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a>;
+<a name="l00198"></a>00198
+<a name="l00199"></a>00199 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(Segment <span class="keyword">const</span>&amp; seg)
+<a name="l00200"></a>00200 {
+<a name="l00201"></a>00201 <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a> <span class="keyword">const</span> diff =
+<a name="l00202"></a>00202 ggl::get&lt;1, Dimension&gt;(seg) - ggl::get&lt;0, Dimension&gt;(seg);
+<a name="l00203"></a>00203
+<a name="l00204"></a>00204 <span class="keywordflow">if</span> (! <a class="code" href="namespaceggl_1_1math.html#d90ba94c2d65876e9485b2bbd10def34" title="returns true if both arguments are equal.">ggl::math::equals</a>(diff, 0))
+<a name="l00205"></a>00205 {
+<a name="l00206"></a>00206 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00207"></a>00207 }
+<a name="l00208"></a>00208
+<a name="l00209"></a>00209 <span class="keywordflow">return</span> check_duplicate_loop
+<a name="l00210"></a>00210 &lt;
+<a name="l00211"></a>00211 Segment, Dimension + 1, DimensionCount
+<a name="l00212"></a>00212 &gt;::apply(seg);
+<a name="l00213"></a>00213 }
+<a name="l00214"></a>00214 };
+<a name="l00215"></a>00215
+<a name="l00216"></a>00216 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00217"></a>00217 <span class="keyword">struct </span>check_duplicate_loop&lt;Segment, DimensionCount, DimensionCount&gt;
+<a name="l00218"></a>00218 {
+<a name="l00219"></a>00219 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(Segment <span class="keyword">const</span>&amp;)
+<a name="l00220"></a>00220 {
+<a name="l00221"></a>00221 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00222"></a>00222 }
+<a name="l00223"></a>00223 };
+<a name="l00224"></a>00224
+<a name="l00225"></a>00225 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00226"></a>00226 <span class="keyword">struct </span>assign_loop
+<a name="l00227"></a>00227 {
+<a name="l00228"></a>00228 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(T dims[DimensionCount], <span class="keywordtype">int</span> <span class="keyword">const</span> value)
+<a name="l00229"></a>00229 {
+<a name="l00230"></a>00230 dims[Dimension] = value;
+<a name="l00231"></a>00231 assign_loop&lt;T, Dimension + 1, DimensionCount&gt;::apply(dims, value);
+<a name="l00232"></a>00232 }
+<a name="l00233"></a>00233 };
+<a name="l00234"></a>00234
+<a name="l00235"></a>00235 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00236"></a>00236 <span class="keyword">struct </span>assign_loop&lt;T, DimensionCount, DimensionCount&gt;
+<a name="l00237"></a>00237 {
+<a name="l00238"></a>00238 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(T dims[DimensionCount], <span class="keywordtype">int</span> <span class="keyword">const</span>)
+<a name="l00239"></a>00239 {
+<a name="l00240"></a>00240 boost::ignore_unused_variable_warning(dims);
+<a name="l00241"></a>00241 }
+<a name="l00242"></a>00242 };
+<a name="l00243"></a>00243
+<a name="l00244"></a>00244
+<a name="l00245"></a>00245 <span class="keyword">template</span>
+<a name="l00246"></a>00246 &lt;
+<a name="l00247"></a>00247 <span class="keyword">typename</span> Range,
+<a name="l00248"></a>00248 <span class="keyword">typename</span> Point,
+<a name="l00249"></a>00249 <span class="keyword">typename</span> Sections,
+<a name="l00250"></a>00250 std::size_t DimensionCount,
+<a name="l00251"></a>00251 std::size_t MaxCount
+<a name="l00252"></a>00252 &gt;
+<a name="l00253"></a>00253 <span class="keyword">struct </span>sectionalize_range
+<a name="l00254"></a>00254 {
+<a name="l00255"></a>00255 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Range <span class="keyword">const</span>&amp; range, Sections&amp; <a class="code" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a>,
+<a name="l00256"></a>00256 <span class="keywordtype">int</span> ring_index = -1, <span class="keywordtype">int</span> multi_index = -1)
+<a name="l00257"></a>00257 {
+<a name="l00258"></a>00258 <span class="keyword">typedef</span> <a class="code" href="structggl_1_1segment.html" title="Class segment: small containing two (templatized) point references.">segment&lt;const Point&gt;</a> segment_type;
+<a name="l00259"></a>00259
+<a name="l00260"></a>00260 std::size_t <span class="keyword">const</span> n = boost::size(range);
+<a name="l00261"></a>00261 <span class="keywordflow">if</span> (n == 0)
+<a name="l00262"></a>00262 {
+<a name="l00263"></a>00263 <span class="comment">// Zero points, no section</span>
+<a name="l00264"></a>00264 <span class="keywordflow">return</span>;
+<a name="l00265"></a>00265 }
+<a name="l00266"></a>00266
+<a name="l00267"></a>00267 <span class="keywordflow">if</span> (n == 1)
+<a name="l00268"></a>00268 {
+<a name="l00269"></a>00269 <span class="comment">// Line with one point ==&gt; no sections</span>
+<a name="l00270"></a>00270 <span class="keywordflow">return</span>;
+<a name="l00271"></a>00271 }
+<a name="l00272"></a>00272
+<a name="l00273"></a>00273 <span class="keywordtype">int</span> i = 0;
+<a name="l00274"></a>00274 <span class="keywordtype">int</span> ndi = 0; <span class="comment">// non duplicate index</span>
 <a name="l00275"></a>00275
-<a name="l00276"></a>00276 <span class="keywordtype">int</span> i = 0;
-<a name="l00277"></a>00277 <span class="keywordtype">int</span> ndi = 0; <span class="comment">// non duplicate index</span>
+<a name="l00276"></a>00276 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_value&lt;Sections&gt;::type sections_range_type;
+<a name="l00277"></a>00277 sections_range_type <a class="code" href="structggl_1_1section.html" title="Structure containing section information.">section</a>;
 <a name="l00278"></a>00278
-<a name="l00279"></a>00279 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_value&lt;Sections&gt;::type sections_range_type;
-<a name="l00280"></a>00280 sections_range_type <a class="code" href="structggl_1_1section.html" title="Structure containing section information.">section</a>;
+<a name="l00279"></a>00279 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator&lt;Range&gt;::type iterator_type;
+<a name="l00280"></a>00280 iterator_type it = boost::begin(range);
 <a name="l00281"></a>00281
-<a name="l00282"></a>00282 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator&lt;Range&gt;::type iterator_type;
-<a name="l00283"></a>00283 iterator_type it = boost::begin(range);
-<a name="l00284"></a>00284
-<a name="l00285"></a>00285 <span class="keywordflow">for</span>(iterator_type previous = it++;
-<a name="l00286"></a>00286 it != boost::end(range);
-<a name="l00287"></a>00287 previous = it++, i++)
-<a name="l00288"></a>00288 {
-<a name="l00289"></a>00289 segment_type s(*previous, *it);
-<a name="l00290"></a>00290
-<a name="l00291"></a>00291 <span class="keywordtype">int</span> direction_classes[DimensionCount] = {0};
-<a name="l00292"></a>00292 get_direction_loop
-<a name="l00293"></a>00293 &lt;
-<a name="l00294"></a>00294 segment_type, 0, DimensionCount
-<a name="l00295"></a>00295 &gt;::apply(s, direction_classes);
-<a name="l00296"></a>00296
-<a name="l00297"></a>00297 <span class="comment">// if "dir" == 0 for all point-dimensions, it is duplicate.</span>
-<a name="l00298"></a>00298 <span class="comment">// Those sections might be omitted, if wished, lateron</span>
-<a name="l00299"></a>00299 <span class="keywordtype">bool</span> check_duplicate = <span class="keyword">true</span>; <span class="comment">//?</span>
-<a name="l00300"></a>00300 <span class="keywordtype">bool</span> duplicate = <span class="keyword">false</span>;
-<a name="l00301"></a>00301
-<a name="l00302"></a>00302 <span class="keywordflow">if</span> (check_duplicate &amp;&amp; direction_classes[0] == 0)
-<a name="l00303"></a>00303 {
-<a name="l00304"></a>00304 <span class="comment">// Recheck because all dimensions should be checked,</span>
-<a name="l00305"></a>00305 <span class="comment">// not only first one,</span>
-<a name="l00306"></a>00306 <span class="comment">// Note that DimensionCount might be &lt; dimension&lt;P&gt;::value</span>
-<a name="l00307"></a>00307 <span class="keywordflow">if</span> (check_duplicate_loop
-<a name="l00308"></a>00308 &lt;
-<a name="l00309"></a>00309 segment_type, 0, <a class="code" href="structggl_1_1dimension.html" title="Meta-function which defines coordinate dimensions, i.e. the number of axes of any...">ggl::dimension&lt;Point&gt;::type::value</a>
-<a name="l00310"></a>00310 &gt;::apply(s)
-<a name="l00311"></a>00311 )
-<a name="l00312"></a>00312 {
-<a name="l00313"></a>00313 duplicate = <span class="keyword">true</span>;
-<a name="l00314"></a>00314
-<a name="l00315"></a>00315 <span class="comment">// Change direction-info to force new section</span>
-<a name="l00316"></a>00316 <span class="comment">// Note that wo consecutive duplicate segments will generate</span>
-<a name="l00317"></a>00317 <span class="comment">// only one duplicate-section.</span>
-<a name="l00318"></a>00318 <span class="comment">// Actual value is not important as long as it is not -1,0,1</span>
-<a name="l00319"></a>00319 assign_loop
-<a name="l00320"></a>00320 &lt;
-<a name="l00321"></a>00321 int, 0, DimensionCount
-<a name="l00322"></a>00322 &gt;::apply(direction_classes, -99);
-<a name="l00323"></a>00323 }
-<a name="l00324"></a>00324 }
-<a name="l00325"></a>00325
-<a name="l00326"></a>00326 <span class="keywordflow">if</span> (section.count &gt; 0
-<a name="l00327"></a>00327 &amp;&amp; (!compare_loop
-<a name="l00328"></a>00328 &lt;
-<a name="l00329"></a>00329 <span class="keywordtype">int</span>, 0, DimensionCount
-<a name="l00330"></a>00330 &gt;::apply(direction_classes, section.directions)
-<a name="l00331"></a>00331 || section.count &gt; MaxCount
-<a name="l00332"></a>00332 )
-<a name="l00333"></a>00333 )
-<a name="l00334"></a>00334 {
-<a name="l00335"></a>00335 sections.push_back(section);
-<a name="l00336"></a>00336 section = sections_range_type();
-<a name="l00337"></a>00337 }
-<a name="l00338"></a>00338
-<a name="l00339"></a>00339 <span class="keywordflow">if</span> (section.count == 0)
-<a name="l00340"></a>00340 {
-<a name="l00341"></a>00341 section.begin_index = i;
-<a name="l00342"></a>00342 section.ring_index = ring_index;
-<a name="l00343"></a>00343 section.multi_index = multi_index;
-<a name="l00344"></a>00344 section.duplicate = duplicate;
-<a name="l00345"></a>00345 section.non_duplicate_index = ndi;
-<a name="l00346"></a>00346 section.range_count = boost::size(range);
-<a name="l00347"></a>00347
-<a name="l00348"></a>00348 copy_loop
-<a name="l00349"></a>00349 &lt;
-<a name="l00350"></a>00350 int, 0, DimensionCount
-<a name="l00351"></a>00351 &gt;::apply(direction_classes, section.directions);
-<a name="l00352"></a>00352 <a class="code" href="group__combine.html#gf2336ad085ad8b79cde5a759ab229199" title="Combines a box with another geometry (box, point).">ggl::combine</a>(section.bounding_box, *previous);
-<a name="l00353"></a>00353 }
-<a name="l00354"></a>00354
-<a name="l00355"></a>00355 <a class="code" href="group__combine.html#gf2336ad085ad8b79cde5a759ab229199" title="Combines a box with another geometry (box, point).">ggl::combine</a>(section.bounding_box, *it);
-<a name="l00356"></a>00356 section.end_index = i + 1;
-<a name="l00357"></a>00357 section.count++;
-<a name="l00358"></a>00358 <span class="keywordflow">if</span> (! duplicate)
-<a name="l00359"></a>00359 {
-<a name="l00360"></a>00360 ndi++;
-<a name="l00361"></a>00361 }
-<a name="l00362"></a>00362 }
-<a name="l00363"></a>00363
-<a name="l00364"></a>00364 <span class="keywordflow">if</span> (section.count &gt; 0)
-<a name="l00365"></a>00365 {
-<a name="l00366"></a>00366 sections.push_back(section);
-<a name="l00367"></a>00367 }
-<a name="l00368"></a>00368 }
-<a name="l00369"></a>00369 };
-<a name="l00370"></a>00370
-<a name="l00371"></a>00371 <span class="keyword">template</span>
-<a name="l00372"></a>00372 &lt;
-<a name="l00373"></a>00373 <span class="keyword">typename</span> Polygon,
-<a name="l00374"></a>00374 <span class="keyword">typename</span> Sections,
-<a name="l00375"></a>00375 std::size_t DimensionCount,
-<a name="l00376"></a>00376 std::size_t MaxCount
-<a name="l00377"></a>00377 &gt;
-<a name="l00378"></a>00378 <span class="keyword">struct </span>sectionalize_polygon
-<a name="l00379"></a>00379 {
-<a name="l00380"></a>00380 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Polygon <span class="keyword">const</span>&amp; poly, Sections&amp; <a class="code" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a>,
-<a name="l00381"></a>00381 <span class="keywordtype">int</span> multi_index = -1)
-<a name="l00382"></a>00382 {
-<a name="l00383"></a>00383 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;Polygon&gt;::type</a> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
-<a name="l00384"></a>00384 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1ring__type.html" title="Meta-function which defines ring type of (multi)polygon geometry.">ring_type&lt;Polygon&gt;::type</a> <a class="code" href="structggl_1_1ring__type.html" title="Meta-function which defines ring type of (multi)polygon geometry.">ring_type</a>;
-<a name="l00385"></a>00385 <span class="keyword">typedef</span> sectionalize_range
-<a name="l00386"></a>00386 &lt;
-<a name="l00387"></a>00387 ring_type, point_type, Sections, DimensionCount, MaxCount
-<a name="l00388"></a>00388 &gt; sectionalizer_type;
-<a name="l00389"></a>00389
-<a name="l00390"></a>00390 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
-<a name="l00391"></a>00391 &lt;
-<a name="l00392"></a>00392 <span class="keyword">typename</span> <a class="code" href="structggl_1_1interior__type.html" title="Meta-function defining container type of inner rings of (multi)polygon geometriy...">interior_type&lt;Polygon&gt;::type</a>
-<a name="l00393"></a>00393 &gt;::type iterator_type;
-<a name="l00394"></a>00394
-<a name="l00395"></a>00395 sectionalizer_type::apply(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), sections, -1, multi_index);
-<a name="l00396"></a>00396
-<a name="l00397"></a>00397 <span class="keywordtype">int</span> i = 0;
-<a name="l00398"></a>00398 <span class="keywordflow">for</span> (iterator_type it = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
-<a name="l00399"></a>00399 it != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
-<a name="l00400"></a>00400 ++it, ++i)
-<a name="l00401"></a>00401 {
-<a name="l00402"></a>00402 sectionalizer_type::apply(*it, sections, i, multi_index);
-<a name="l00403"></a>00403 }
-<a name="l00404"></a>00404 }
-<a name="l00405"></a>00405 };
-<a name="l00406"></a>00406
-<a name="l00407"></a>00407 <span class="keyword">template</span>
-<a name="l00408"></a>00408 &lt;
-<a name="l00409"></a>00409 <span class="keyword">typename</span> Box,
-<a name="l00410"></a>00410 <span class="keyword">typename</span> Sections,
-<a name="l00411"></a>00411 std::size_t DimensionCount,
-<a name="l00412"></a>00412 std::size_t MaxCount
-<a name="l00413"></a>00413 &gt;
-<a name="l00414"></a>00414 <span class="keyword">struct </span>sectionalize_box
-<a name="l00415"></a>00415 {
-<a name="l00416"></a>00416 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box <span class="keyword">const</span>&amp; <a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a>, Sections&amp; <a class="code" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a>)
-<a name="l00417"></a>00417 {
-<a name="l00418"></a>00418 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;Box&gt;::type</a> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
-<a name="l00419"></a>00419
-<a name="l00420"></a>00420 assert_dimension&lt;Box, 2&gt;();
-<a name="l00421"></a>00421
-<a name="l00422"></a>00422 <span class="comment">// Add all four sides of the 2D-box as separate section.</span>
-<a name="l00423"></a>00423 <span class="comment">// Easiest is to convert it to a polygon.</span>
-<a name="l00424"></a>00424 <span class="comment">// However, we don't have the polygon type</span>
-<a name="l00425"></a>00425 <span class="comment">// (or polygon would be a helper-type).</span>
-<a name="l00426"></a>00426 <span class="comment">// Therefore we mimic a linestring/std::vector of 5 points</span>
+<a name="l00282"></a>00282 <span class="keywordflow">for</span>(iterator_type previous = it++;
+<a name="l00283"></a>00283 it != boost::end(range);
+<a name="l00284"></a>00284 previous = it++, i++)
+<a name="l00285"></a>00285 {
+<a name="l00286"></a>00286 segment_type s(*previous, *it);
+<a name="l00287"></a>00287
+<a name="l00288"></a>00288 <span class="keywordtype">int</span> direction_classes[DimensionCount] = {0};
+<a name="l00289"></a>00289 get_direction_loop
+<a name="l00290"></a>00290 &lt;
+<a name="l00291"></a>00291 segment_type, 0, DimensionCount
+<a name="l00292"></a>00292 &gt;::apply(s, direction_classes);
+<a name="l00293"></a>00293
+<a name="l00294"></a>00294 <span class="comment">// if "dir" == 0 for all point-dimensions, it is duplicate.</span>
+<a name="l00295"></a>00295 <span class="comment">// Those sections might be omitted, if wished, lateron</span>
+<a name="l00296"></a>00296 <span class="keywordtype">bool</span> check_duplicate = <span class="keyword">true</span>; <span class="comment">//?</span>
+<a name="l00297"></a>00297 <span class="keywordtype">bool</span> duplicate = <span class="keyword">false</span>;
+<a name="l00298"></a>00298
+<a name="l00299"></a>00299 <span class="keywordflow">if</span> (check_duplicate &amp;&amp; direction_classes[0] == 0)
+<a name="l00300"></a>00300 {
+<a name="l00301"></a>00301 <span class="comment">// Recheck because all dimensions should be checked,</span>
+<a name="l00302"></a>00302 <span class="comment">// not only first one,</span>
+<a name="l00303"></a>00303 <span class="comment">// Note that DimensionCount might be &lt; dimension&lt;P&gt;::value</span>
+<a name="l00304"></a>00304 <span class="keywordflow">if</span> (check_duplicate_loop
+<a name="l00305"></a>00305 &lt;
+<a name="l00306"></a>00306 segment_type, 0, <a class="code" href="structggl_1_1dimension.html" title="Meta-function which defines coordinate dimensions, i.e. the number of axes of any...">ggl::dimension&lt;Point&gt;::type::value</a>
+<a name="l00307"></a>00307 &gt;::apply(s)
+<a name="l00308"></a>00308 )
+<a name="l00309"></a>00309 {
+<a name="l00310"></a>00310 duplicate = <span class="keyword">true</span>;
+<a name="l00311"></a>00311
+<a name="l00312"></a>00312 <span class="comment">// Change direction-info to force new section</span>
+<a name="l00313"></a>00313 <span class="comment">// Note that wo consecutive duplicate segments will generate</span>
+<a name="l00314"></a>00314 <span class="comment">// only one duplicate-section.</span>
+<a name="l00315"></a>00315 <span class="comment">// Actual value is not important as long as it is not -1,0,1</span>
+<a name="l00316"></a>00316 assign_loop
+<a name="l00317"></a>00317 &lt;
+<a name="l00318"></a>00318 int, 0, DimensionCount
+<a name="l00319"></a>00319 &gt;::apply(direction_classes, -99);
+<a name="l00320"></a>00320 }
+<a name="l00321"></a>00321 }
+<a name="l00322"></a>00322
+<a name="l00323"></a>00323 <span class="keywordflow">if</span> (section.count &gt; 0
+<a name="l00324"></a>00324 &amp;&amp; (!compare_loop
+<a name="l00325"></a>00325 &lt;
+<a name="l00326"></a>00326 <span class="keywordtype">int</span>, 0, DimensionCount
+<a name="l00327"></a>00327 &gt;::apply(direction_classes, section.directions)
+<a name="l00328"></a>00328 || section.count &gt; MaxCount
+<a name="l00329"></a>00329 )
+<a name="l00330"></a>00330 )
+<a name="l00331"></a>00331 {
+<a name="l00332"></a>00332 sections.push_back(section);
+<a name="l00333"></a>00333 section = sections_range_type();
+<a name="l00334"></a>00334 }
+<a name="l00335"></a>00335
+<a name="l00336"></a>00336 <span class="keywordflow">if</span> (section.count == 0)
+<a name="l00337"></a>00337 {
+<a name="l00338"></a>00338 section.begin_index = i;
+<a name="l00339"></a>00339 section.ring_index = ring_index;
+<a name="l00340"></a>00340 section.multi_index = multi_index;
+<a name="l00341"></a>00341 section.duplicate = duplicate;
+<a name="l00342"></a>00342 section.non_duplicate_index = ndi;
+<a name="l00343"></a>00343 section.range_count = boost::size(range);
+<a name="l00344"></a>00344
+<a name="l00345"></a>00345 copy_loop
+<a name="l00346"></a>00346 &lt;
+<a name="l00347"></a>00347 int, 0, DimensionCount
+<a name="l00348"></a>00348 &gt;::apply(direction_classes, section.directions);
+<a name="l00349"></a>00349 <a class="code" href="group__combine.html#gf2336ad085ad8b79cde5a759ab229199" title="Combines a box with another geometry (box, point).">ggl::combine</a>(section.bounding_box, *previous);
+<a name="l00350"></a>00350 }
+<a name="l00351"></a>00351
+<a name="l00352"></a>00352 <a class="code" href="group__combine.html#gf2336ad085ad8b79cde5a759ab229199" title="Combines a box with another geometry (box, point).">ggl::combine</a>(section.bounding_box, *it);
+<a name="l00353"></a>00353 section.end_index = i + 1;
+<a name="l00354"></a>00354 section.count++;
+<a name="l00355"></a>00355 <span class="keywordflow">if</span> (! duplicate)
+<a name="l00356"></a>00356 {
+<a name="l00357"></a>00357 ndi++;
+<a name="l00358"></a>00358 }
+<a name="l00359"></a>00359 }
+<a name="l00360"></a>00360
+<a name="l00361"></a>00361 <span class="keywordflow">if</span> (section.count &gt; 0)
+<a name="l00362"></a>00362 {
+<a name="l00363"></a>00363 sections.push_back(section);
+<a name="l00364"></a>00364 }
+<a name="l00365"></a>00365 }
+<a name="l00366"></a>00366 };
+<a name="l00367"></a>00367
+<a name="l00368"></a>00368 <span class="keyword">template</span>
+<a name="l00369"></a>00369 &lt;
+<a name="l00370"></a>00370 <span class="keyword">typename</span> Polygon,
+<a name="l00371"></a>00371 <span class="keyword">typename</span> Sections,
+<a name="l00372"></a>00372 std::size_t DimensionCount,
+<a name="l00373"></a>00373 std::size_t MaxCount
+<a name="l00374"></a>00374 &gt;
+<a name="l00375"></a>00375 <span class="keyword">struct </span>sectionalize_polygon
+<a name="l00376"></a>00376 {
+<a name="l00377"></a>00377 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Polygon <span class="keyword">const</span>&amp; poly, Sections&amp; <a class="code" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a>,
+<a name="l00378"></a>00378 <span class="keywordtype">int</span> multi_index = -1)
+<a name="l00379"></a>00379 {
+<a name="l00380"></a>00380 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;Polygon&gt;::type</a> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+<a name="l00381"></a>00381 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1ring__type.html" title="Meta-function which defines ring type of (multi)polygon geometry.">ring_type&lt;Polygon&gt;::type</a> <a class="code" href="structggl_1_1ring__type.html" title="Meta-function which defines ring type of (multi)polygon geometry.">ring_type</a>;
+<a name="l00382"></a>00382 <span class="keyword">typedef</span> sectionalize_range
+<a name="l00383"></a>00383 &lt;
+<a name="l00384"></a>00384 ring_type, point_type, Sections, DimensionCount, MaxCount
+<a name="l00385"></a>00385 &gt; sectionalizer_type;
+<a name="l00386"></a>00386
+<a name="l00387"></a>00387 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00388"></a>00388 &lt;
+<a name="l00389"></a>00389 <span class="keyword">typename</span> <a class="code" href="structggl_1_1interior__type.html" title="Meta-function defining container type of inner rings of (multi)polygon geometriy...">interior_type&lt;Polygon&gt;::type</a>
+<a name="l00390"></a>00390 &gt;::type iterator_type;
+<a name="l00391"></a>00391
+<a name="l00392"></a>00392 sectionalizer_type::apply(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), sections, -1, multi_index);
+<a name="l00393"></a>00393
+<a name="l00394"></a>00394 <span class="keywordtype">int</span> i = 0;
+<a name="l00395"></a>00395 <span class="keywordflow">for</span> (iterator_type it = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00396"></a>00396 it != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00397"></a>00397 ++it, ++i)
+<a name="l00398"></a>00398 {
+<a name="l00399"></a>00399 sectionalizer_type::apply(*it, sections, i, multi_index);
+<a name="l00400"></a>00400 }
+<a name="l00401"></a>00401 }
+<a name="l00402"></a>00402 };
+<a name="l00403"></a>00403
+<a name="l00404"></a>00404 <span class="keyword">template</span>
+<a name="l00405"></a>00405 &lt;
+<a name="l00406"></a>00406 <span class="keyword">typename</span> Box,
+<a name="l00407"></a>00407 <span class="keyword">typename</span> Sections,
+<a name="l00408"></a>00408 std::size_t DimensionCount,
+<a name="l00409"></a>00409 std::size_t MaxCount
+<a name="l00410"></a>00410 &gt;
+<a name="l00411"></a>00411 <span class="keyword">struct </span>sectionalize_box
+<a name="l00412"></a>00412 {
+<a name="l00413"></a>00413 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box <span class="keyword">const</span>&amp; <a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a>, Sections&amp; <a class="code" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a>)
+<a name="l00414"></a>00414 {
+<a name="l00415"></a>00415 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;Box&gt;::type</a> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+<a name="l00416"></a>00416
+<a name="l00417"></a>00417 assert_dimension&lt;Box, 2&gt;();
+<a name="l00418"></a>00418
+<a name="l00419"></a>00419 <span class="comment">// Add all four sides of the 2D-box as separate section.</span>
+<a name="l00420"></a>00420 <span class="comment">// Easiest is to convert it to a polygon.</span>
+<a name="l00421"></a>00421 <span class="comment">// However, we don't have the polygon type</span>
+<a name="l00422"></a>00422 <span class="comment">// (or polygon would be a helper-type).</span>
+<a name="l00423"></a>00423 <span class="comment">// Therefore we mimic a linestring/std::vector of 5 points</span>
+<a name="l00424"></a>00424
+<a name="l00425"></a>00425 point_type ll, lr, ul, ur;
+<a name="l00426"></a>00426 <a class="code" href="namespaceggl.html#a658e33964ece2cc6e48c622595ad271" title="Assign the 4 points of a 2D box.">assign_box_corners</a>(box, ll, lr, ul, ur);
 <a name="l00427"></a>00427
-<a name="l00428"></a>00428 point_type ll, lr, ul, ur;
-<a name="l00429"></a>00429 <a class="code" href="namespaceggl.html#a658e33964ece2cc6e48c622595ad271" title="Assign the 4 points of a 2D box.">assign_box_corners</a>(box, ll, lr, ul, ur);
-<a name="l00430"></a>00430
-<a name="l00431"></a>00431 std::vector&lt;point_type&gt; points;
-<a name="l00432"></a>00432 points.push_back(ll);
-<a name="l00433"></a>00433 points.push_back(ul);
-<a name="l00434"></a>00434 points.push_back(ur);
-<a name="l00435"></a>00435 points.push_back(lr);
-<a name="l00436"></a>00436 points.push_back(ll);
-<a name="l00437"></a>00437
-<a name="l00438"></a>00438 sectionalize_range
-<a name="l00439"></a>00439 &lt;
-<a name="l00440"></a>00440 std::vector&lt;point_type&gt;,
-<a name="l00441"></a>00441 point_type,
-<a name="l00442"></a>00442 Sections,
-<a name="l00443"></a>00443 DimensionCount,
-<a name="l00444"></a>00444 MaxCount
-<a name="l00445"></a>00445 &gt;::apply(points, sections);
-<a name="l00446"></a>00446 }
-<a name="l00447"></a>00447 };
-<a name="l00448"></a>00448
-<a name="l00449"></a>00449 }} <span class="comment">// namespace detail::sectionalize</span>
-<a name="l00450"></a>00450 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
-<a name="l00451"></a>00451 <span class="preprocessor"></span>
-<a name="l00452"></a>00452
-<a name="l00453"></a>00453 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
-<a name="l00454"></a>00454 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
-<a name="l00455"></a>00455 {
-<a name="l00456"></a>00456
-<a name="l00457"></a>00457 <span class="keyword">template</span>
-<a name="l00458"></a>00458 &lt;
-<a name="l00459"></a>00459 <span class="keyword">typename</span> Tag,
-<a name="l00460"></a>00460 <span class="keyword">typename</span> Geometry,
-<a name="l00461"></a>00461 <span class="keyword">typename</span> Sections,
-<a name="l00462"></a>00462 std::size_t DimensionCount,
-<a name="l00463"></a>00463 std::size_t MaxCount
-<a name="l00464"></a>00464 &gt;
-<a name="l00465"></a>00465 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>
-<a name="l00466"></a>00466 {};
-<a name="l00467"></a>00467
-<a name="l00468"></a>00468 <span class="keyword">template</span>
-<a name="l00469"></a>00469 &lt;
-<a name="l00470"></a>00470 <span class="keyword">typename</span> Box,
-<a name="l00471"></a>00471 <span class="keyword">typename</span> Sections,
-<a name="l00472"></a>00472 std::size_t DimensionCount,
-<a name="l00473"></a>00473 std::size_t MaxCount
-<a name="l00474"></a>00474 &gt;
-<a name="l00475"></a>00475 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>&lt;box_tag, Box, Sections, DimensionCount, MaxCount&gt;
-<a name="l00476"></a>00476 : detail::<a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>::sectionalize_box
-<a name="l00477"></a>00477 &lt;
-<a name="l00478"></a>00478 Box,
-<a name="l00479"></a>00479 Sections,
-<a name="l00480"></a>00480 DimensionCount,
-<a name="l00481"></a>00481 MaxCount
-<a name="l00482"></a>00482 &gt;
-<a name="l00483"></a>00483 {};
-<a name="l00484"></a>00484
-<a name="l00485"></a>00485 <span class="keyword">template</span>
-<a name="l00486"></a>00486 &lt;
-<a name="l00487"></a>00487 <span class="keyword">typename</span> LineString, <span class="keyword">typename</span>
-<a name="l00488"></a>00488 Sections,
-<a name="l00489"></a>00489 std::size_t DimensionCount,
-<a name="l00490"></a>00490 std::size_t MaxCount
-<a name="l00491"></a>00491 &gt;
-<a name="l00492"></a>00492 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>
-<a name="l00493"></a>00493 &lt;
-<a name="l00494"></a>00494 linestring_tag,
-<a name="l00495"></a>00495 LineString,
-<a name="l00496"></a>00496 Sections,
-<a name="l00497"></a>00497 DimensionCount,
-<a name="l00498"></a>00498 MaxCount
-<a name="l00499"></a>00499 &gt;
-<a name="l00500"></a>00500 : detail::<a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>::sectionalize_range
-<a name="l00501"></a>00501 &lt;
-<a name="l00502"></a>00502 LineString,
-<a name="l00503"></a>00503 typename point_type&lt;LineString&gt;::type,
-<a name="l00504"></a>00504 Sections,
-<a name="l00505"></a>00505 DimensionCount,
-<a name="l00506"></a>00506 MaxCount
-<a name="l00507"></a>00507 &gt;
-<a name="l00508"></a>00508 {};
-<a name="l00509"></a>00509
-<a name="l00510"></a>00510 <span class="keyword">template</span>
-<a name="l00511"></a>00511 &lt;
-<a name="l00512"></a>00512 <span class="keyword">typename</span> Range,
-<a name="l00513"></a>00513 <span class="keyword">typename</span> Sections,
-<a name="l00514"></a>00514 std::size_t DimensionCount,
-<a name="l00515"></a>00515 std::size_t MaxCount
-<a name="l00516"></a>00516 &gt;
-<a name="l00517"></a>00517 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>&lt;ring_tag, Range, Sections, DimensionCount, MaxCount&gt;
-<a name="l00518"></a>00518 : detail::<a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>::sectionalize_range
-<a name="l00519"></a>00519 &lt;
-<a name="l00520"></a>00520 Range,
-<a name="l00521"></a>00521 typename point_type&lt;Range&gt;::type,
-<a name="l00522"></a>00522 Sections,
-<a name="l00523"></a>00523 DimensionCount,
-<a name="l00524"></a>00524 MaxCount
-<a name="l00525"></a>00525 &gt;
-<a name="l00526"></a>00526 {};
-<a name="l00527"></a>00527
-<a name="l00528"></a>00528 <span class="keyword">template</span>
-<a name="l00529"></a>00529 &lt;
-<a name="l00530"></a>00530 <span class="keyword">typename</span> Polygon,
-<a name="l00531"></a>00531 <span class="keyword">typename</span> Sections,
-<a name="l00532"></a>00532 std::size_t DimensionCount,
-<a name="l00533"></a>00533 std::size_t MaxCount
-<a name="l00534"></a>00534 &gt;
-<a name="l00535"></a>00535 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>&lt;polygon_tag, Polygon, Sections, DimensionCount, MaxCount&gt;
-<a name="l00536"></a>00536 : detail::<a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>::sectionalize_polygon
-<a name="l00537"></a>00537 &lt;
-<a name="l00538"></a>00538 Polygon, Sections, DimensionCount, MaxCount
-<a name="l00539"></a>00539 &gt;
-<a name="l00540"></a>00540 {};
-<a name="l00541"></a>00541
-<a name="l00542"></a>00542 } <span class="comment">// namespace dispatch</span>
-<a name="l00543"></a>00543 <span class="preprocessor">#endif</span>
-<a name="l00544"></a>00544 <span class="preprocessor"></span>
-<a name="l00545"></a>00545
-<a name="l00555"></a>00555 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Sections&gt;
-<a name="l00556"></a><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1">00556</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>(Geometry <span class="keyword">const</span>&amp; geometry, Sections&amp; <a class="code" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a>)
-<a name="l00557"></a>00557 {
-<a name="l00558"></a>00558 <span class="comment">// A maximum of 10 segments per section seems to give the fastest results</span>
-<a name="l00559"></a>00559 <span class="keyword">static</span> <span class="keyword">const</span> std::size_t max_segments_per_section = 10;
-<a name="l00560"></a>00560 <span class="keyword">typedef</span> <a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">dispatch::sectionalize</a>
-<a name="l00561"></a>00561 &lt;
-<a name="l00562"></a>00562 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
-<a name="l00563"></a>00563 Geometry,
-<a name="l00564"></a>00564 Sections,
-<a name="l00565"></a>00565 Sections::value,
-<a name="l00566"></a>00566 max_segments_per_section
-<a name="l00567"></a>00567 &gt; sectionalizer_type;
-<a name="l00568"></a>00568
-<a name="l00569"></a>00569 sections.clear();
-<a name="l00570"></a>00570 sectionalizer_type::apply(geometry, sections);
-<a name="l00571"></a>00571 }
+<a name="l00428"></a>00428 std::vector&lt;point_type&gt; points;
+<a name="l00429"></a>00429 points.push_back(ll);
+<a name="l00430"></a>00430 points.push_back(ul);
+<a name="l00431"></a>00431 points.push_back(ur);
+<a name="l00432"></a>00432 points.push_back(lr);
+<a name="l00433"></a>00433 points.push_back(ll);
+<a name="l00434"></a>00434
+<a name="l00435"></a>00435 sectionalize_range
+<a name="l00436"></a>00436 &lt;
+<a name="l00437"></a>00437 std::vector&lt;point_type&gt;,
+<a name="l00438"></a>00438 point_type,
+<a name="l00439"></a>00439 Sections,
+<a name="l00440"></a>00440 DimensionCount,
+<a name="l00441"></a>00441 MaxCount
+<a name="l00442"></a>00442 &gt;::apply(points, sections);
+<a name="l00443"></a>00443 }
+<a name="l00444"></a>00444 };
+<a name="l00445"></a>00445
+<a name="l00446"></a>00446 }} <span class="comment">// namespace detail::sectionalize</span>
+<a name="l00447"></a>00447 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00448"></a>00448 <span class="preprocessor"></span>
+<a name="l00449"></a>00449
+<a name="l00450"></a>00450 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00451"></a>00451 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00452"></a>00452 {
+<a name="l00453"></a>00453
+<a name="l00454"></a>00454 <span class="keyword">template</span>
+<a name="l00455"></a>00455 &lt;
+<a name="l00456"></a>00456 <span class="keyword">typename</span> Tag,
+<a name="l00457"></a>00457 <span class="keyword">typename</span> Geometry,
+<a name="l00458"></a>00458 <span class="keyword">typename</span> Sections,
+<a name="l00459"></a>00459 std::size_t DimensionCount,
+<a name="l00460"></a>00460 std::size_t MaxCount
+<a name="l00461"></a>00461 &gt;
+<a name="l00462"></a>00462 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>
+<a name="l00463"></a>00463 {};
+<a name="l00464"></a>00464
+<a name="l00465"></a>00465 <span class="keyword">template</span>
+<a name="l00466"></a>00466 &lt;
+<a name="l00467"></a>00467 <span class="keyword">typename</span> Box,
+<a name="l00468"></a>00468 <span class="keyword">typename</span> Sections,
+<a name="l00469"></a>00469 std::size_t DimensionCount,
+<a name="l00470"></a>00470 std::size_t MaxCount
+<a name="l00471"></a>00471 &gt;
+<a name="l00472"></a>00472 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>&lt;box_tag, Box, Sections, DimensionCount, MaxCount&gt;
+<a name="l00473"></a>00473 : detail::<a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>::sectionalize_box
+<a name="l00474"></a>00474 &lt;
+<a name="l00475"></a>00475 Box,
+<a name="l00476"></a>00476 Sections,
+<a name="l00477"></a>00477 DimensionCount,
+<a name="l00478"></a>00478 MaxCount
+<a name="l00479"></a>00479 &gt;
+<a name="l00480"></a>00480 {};
+<a name="l00481"></a>00481
+<a name="l00482"></a>00482 <span class="keyword">template</span>
+<a name="l00483"></a>00483 &lt;
+<a name="l00484"></a>00484 <span class="keyword">typename</span> LineString, <span class="keyword">typename</span>
+<a name="l00485"></a>00485 Sections,
+<a name="l00486"></a>00486 std::size_t DimensionCount,
+<a name="l00487"></a>00487 std::size_t MaxCount
+<a name="l00488"></a>00488 &gt;
+<a name="l00489"></a>00489 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>
+<a name="l00490"></a>00490 &lt;
+<a name="l00491"></a>00491 linestring_tag,
+<a name="l00492"></a>00492 LineString,
+<a name="l00493"></a>00493 Sections,
+<a name="l00494"></a>00494 DimensionCount,
+<a name="l00495"></a>00495 MaxCount
+<a name="l00496"></a>00496 &gt;
+<a name="l00497"></a>00497 : detail::<a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>::sectionalize_range
+<a name="l00498"></a>00498 &lt;
+<a name="l00499"></a>00499 LineString,
+<a name="l00500"></a>00500 typename point_type&lt;LineString&gt;::type,
+<a name="l00501"></a>00501 Sections,
+<a name="l00502"></a>00502 DimensionCount,
+<a name="l00503"></a>00503 MaxCount
+<a name="l00504"></a>00504 &gt;
+<a name="l00505"></a>00505 {};
+<a name="l00506"></a>00506
+<a name="l00507"></a>00507 <span class="keyword">template</span>
+<a name="l00508"></a>00508 &lt;
+<a name="l00509"></a>00509 <span class="keyword">typename</span> Range,
+<a name="l00510"></a>00510 <span class="keyword">typename</span> Sections,
+<a name="l00511"></a>00511 std::size_t DimensionCount,
+<a name="l00512"></a>00512 std::size_t MaxCount
+<a name="l00513"></a>00513 &gt;
+<a name="l00514"></a>00514 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>&lt;ring_tag, Range, Sections, DimensionCount, MaxCount&gt;
+<a name="l00515"></a>00515 : detail::<a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>::sectionalize_range
+<a name="l00516"></a>00516 &lt;
+<a name="l00517"></a>00517 Range,
+<a name="l00518"></a>00518 typename point_type&lt;Range&gt;::type,
+<a name="l00519"></a>00519 Sections,
+<a name="l00520"></a>00520 DimensionCount,
+<a name="l00521"></a>00521 MaxCount
+<a name="l00522"></a>00522 &gt;
+<a name="l00523"></a>00523 {};
+<a name="l00524"></a>00524
+<a name="l00525"></a>00525 <span class="keyword">template</span>
+<a name="l00526"></a>00526 &lt;
+<a name="l00527"></a>00527 <span class="keyword">typename</span> Polygon,
+<a name="l00528"></a>00528 <span class="keyword">typename</span> Sections,
+<a name="l00529"></a>00529 std::size_t DimensionCount,
+<a name="l00530"></a>00530 std::size_t MaxCount
+<a name="l00531"></a>00531 &gt;
+<a name="l00532"></a>00532 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>&lt;polygon_tag, Polygon, Sections, DimensionCount, MaxCount&gt;
+<a name="l00533"></a>00533 : detail::<a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>::sectionalize_polygon
+<a name="l00534"></a>00534 &lt;
+<a name="l00535"></a>00535 Polygon, Sections, DimensionCount, MaxCount
+<a name="l00536"></a>00536 &gt;
+<a name="l00537"></a>00537 {};
+<a name="l00538"></a>00538
+<a name="l00539"></a>00539 } <span class="comment">// namespace dispatch</span>
+<a name="l00540"></a>00540 <span class="preprocessor">#endif</span>
+<a name="l00541"></a>00541 <span class="preprocessor"></span>
+<a name="l00542"></a>00542
+<a name="l00552"></a>00552 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Sections&gt;
+<a name="l00553"></a><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1">00553</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>(Geometry <span class="keyword">const</span>&amp; geometry, Sections&amp; <a class="code" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a>)
+<a name="l00554"></a>00554 {
+<a name="l00555"></a>00555 <span class="comment">// A maximum of 10 segments per section seems to give the fastest results</span>
+<a name="l00556"></a>00556 <span class="keyword">static</span> <span class="keyword">const</span> std::size_t max_segments_per_section = 10;
+<a name="l00557"></a>00557 <span class="keyword">typedef</span> <a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">dispatch::sectionalize</a>
+<a name="l00558"></a>00558 &lt;
+<a name="l00559"></a>00559 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00560"></a>00560 Geometry,
+<a name="l00561"></a>00561 Sections,
+<a name="l00562"></a>00562 Sections::value,
+<a name="l00563"></a>00563 max_segments_per_section
+<a name="l00564"></a>00564 &gt; sectionalizer_type;
+<a name="l00565"></a>00565
+<a name="l00566"></a>00566 sections.clear();
+<a name="l00567"></a>00567 sectionalizer_type::apply(geometry, sections);
+<a name="l00568"></a>00568 }
+<a name="l00569"></a>00569
+<a name="l00570"></a>00570
+<a name="l00571"></a>00571
 <a name="l00572"></a>00572
 <a name="l00573"></a>00573
-<a name="l00574"></a>00574
+<a name="l00574"></a>00574 } <span class="comment">// namespace ggl</span>
 <a name="l00575"></a>00575
-<a name="l00576"></a>00576
-<a name="l00577"></a>00577 } <span class="comment">// namespace ggl</span>
-<a name="l00578"></a>00578
-<a name="l00579"></a>00579 <span class="preprocessor">#endif // GGL_ALGORITHMS_SECTIONALIZE_HPP</span>
+<a name="l00576"></a>00576 <span class="preprocessor">#endif // GGL_ALGORITHMS_SECTIONALIZE_HPP</span>
 </pre></div></div>
 <hr size="1">
 <table width="100%">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -50,22 +50,22 @@
 <tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
 
 <tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G , typename S &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__simplify.html#g00b5a49a676c29d790764ad67e9fdfbc">ggl::simplify</a> (const G &amp;geometry, G &amp;out, double max_distance, S const &amp;strategy)</td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__simplify.html#g953e1055914400f9ad3191adc5b42270">ggl::simplify</a> (Geometry const &amp;geometry, Geometry &amp;out, double max_distance)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simplify a geometry. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__simplify.html#g44130eb01685933927c05207a01a84f1">ggl::simplify</a> (const G &amp;geometry, G &amp;out, double max_distance)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simplify a geometry. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G , typename O , typename S &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__simplify.html#gfac2ab8188c31cf7fab43e423884e0ed">ggl::simplify</a> (const G &amp;geometry, O out, double max_distance, S const &amp;strategy)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simplify a geometry. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G , typename O &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb">ggl::simplify</a> (const G &amp;geometry, O out, double max_distance)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simplify a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , typename Strategy &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d">ggl::simplify</a> (Geometry const &amp;geometry, Geometry &amp;out, double max_distance, Strategy const &amp;strategy)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simplify a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , typename OutputIterator &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__simplify.html#g4285888f1598725bca124878ac16c656">ggl::simplify_inserter</a> (Geometry const &amp;geometry, OutputIterator out, double max_distance)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simplify a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , typename OutputIterator , typename Strategy &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a">ggl::simplify_inserter</a> (Geometry const &amp;geometry, OutputIterator out, double max_distance, Strategy const &amp;strategy)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simplify a geometry. <br></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simplify a geometry. <br></td></tr>
 </table>
 </div>
 <hr size="1">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp_source.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -54,129 +54,129 @@
 <a name="l00012"></a>00012 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
 <a name="l00013"></a>00013 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
 <a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;<a class="code" href="algorithms_2distance_8hpp.html">ggl/algorithms/distance.hpp</a>&gt;</span>
-<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
-<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>&gt;</span>
-<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="agn__simplify_8hpp.html">ggl/strategies/agnostic/agn_simplify.hpp</a>&gt;</span>
-<a name="l00021"></a>00021
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;boost/concept/requires.hpp&gt;</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;boost/concept_check.hpp&gt;</span>
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
 <a name="l00022"></a>00022
-<a name="l00046"></a>00046 <span class="keyword">namespace </span>ggl
-<a name="l00047"></a>00047 {
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
-<a name="l00050"></a>00050 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a> {
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> S&gt;
-<a name="l00053"></a>00053 <span class="keyword">inline</span> <span class="keywordtype">void</span> simplify_range_strategy(R <span class="keyword">const</span>&amp; range, OutputIterator out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>&amp; strategy)
-<a name="l00054"></a>00054 {
-<a name="l00055"></a>00055 <span class="keywordflow">if</span> (boost::begin(range) == boost::end(range) || max_distance &lt; 0)
-<a name="l00056"></a>00056 {
-<a name="l00057"></a>00057 std::copy(boost::begin(range), boost::end(range), out);
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059 <span class="keywordflow">else</span>
-<a name="l00060"></a>00060 {
-<a name="l00061"></a>00061 <span class="keyword">typename</span> boost::range_const_iterator&lt;R&gt;::type it = boost::begin(range) + 1;
-<a name="l00062"></a>00062 <span class="keywordflow">if</span> (it == boost::end(range) || it + 1 == boost::end(range))
-<a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 std::copy(boost::begin(range), boost::end(range), out);
-<a name="l00065"></a>00065 }
-<a name="l00066"></a>00066 <span class="keywordflow">else</span>
-<a name="l00067"></a>00067 {
-<a name="l00068"></a>00068 strategy.simplify(range, out, max_distance);
-<a name="l00069"></a>00069 }
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071 }
-<a name="l00072"></a>00072
-<a name="l00073"></a>00073 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> OutputIterator&gt;
-<a name="l00074"></a>00074 <span class="keyword">inline</span> <span class="keywordtype">void</span> simplify_range(R <span class="keyword">const</span>&amp; range, OutputIterator out, <span class="keywordtype">double</span> max_distance)
-<a name="l00075"></a>00075 {
-<a name="l00076"></a>00076 <span class="comment">// Define default strategy</span>
-<a name="l00077"></a>00077 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;R&gt;::type point_type;
-<a name="l00078"></a>00078 <span class="keyword">typedef</span> <span class="keyword">typename</span> cs_tag&lt;point_type&gt;::type cs_tag;
-<a name="l00079"></a>00079 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_distance_segment
-<a name="l00080"></a>00080 &lt;
-<a name="l00081"></a>00081 cs_tag,
-<a name="l00082"></a>00082 cs_tag,
-<a name="l00083"></a>00083 point_type,
-<a name="l00084"></a>00084 segment&lt;const point_type&gt;
-<a name="l00085"></a>00085 &gt;::type strategy_type;
-<a name="l00086"></a>00086
-<a name="l00087"></a>00087 strategy::simplify::douglas_peucker&lt;R, OutputIterator, strategy_type&gt; douglas;
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089 simplify_range_strategy(range, out, max_distance, douglas);
-<a name="l00090"></a>00090 }
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="simplify__douglas__peucker_8hpp.html">ggl/strategies/agnostic/simplify_douglas_peucker.hpp</a>&gt;</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="simplify__concept_8hpp.html">ggl/strategies/concepts/simplify_concept.hpp</a>&gt;</span>
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;<a class="code" href="clear_8hpp.html">ggl/algorithms/clear.hpp</a>&gt;</span>
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029
+<a name="l00030"></a>00030
+<a name="l00054"></a>00054 <span class="keyword">namespace </span>ggl
+<a name="l00055"></a>00055 {
+<a name="l00056"></a>00056
+<a name="l00057"></a>00057 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00058"></a>00058 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry.">simplify</a> {
+<a name="l00059"></a>00059
+<a name="l00060"></a>00060 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00061"></a>00061 <span class="keyword">struct </span>simplify_range_inserter
+<a name="l00062"></a>00062 {
+<a name="l00063"></a>00063 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00064"></a>00064 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Range <span class="keyword">const</span>&amp; range, OutputIterator out,
+<a name="l00065"></a>00065 <span class="keywordtype">double</span> max_distance, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00066"></a>00066 {
+<a name="l00067"></a>00067 <span class="keywordflow">if</span> (boost::size(range) &lt;= 2 || max_distance &lt; 0)
+<a name="l00068"></a>00068 {
+<a name="l00069"></a>00069 std::copy(boost::begin(range), boost::end(range), out);
+<a name="l00070"></a>00070 }
+<a name="l00071"></a>00071 <span class="keywordflow">else</span>
+<a name="l00072"></a>00072 {
+<a name="l00073"></a>00073 strategy.apply(range, out, max_distance);
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075 }
+<a name="l00076"></a>00076 };
+<a name="l00077"></a>00077
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00080"></a>00080 <span class="keyword">struct </span>simplify_copy
+<a name="l00081"></a>00081 {
+<a name="l00082"></a>00082 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Range <span class="keyword">const</span>&amp; range, Range&amp; out,
+<a name="l00083"></a>00083 <span class="keywordtype">double</span> max_distance, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00084"></a>00084 {
+<a name="l00085"></a>00085 std::copy
+<a name="l00086"></a>00086 (
+<a name="l00087"></a>00087 boost::begin(range), boost::end(range), std::back_inserter(out)
+<a name="l00088"></a>00088 );
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 };
 <a name="l00091"></a>00091
-<a name="l00092"></a>00092 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> S&gt;
-<a name="l00093"></a>00093 <span class="keyword">inline</span> <span class="keywordtype">void</span> simplify_ring(R <span class="keyword">const</span>&amp; r_in, OutputIterator out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>&amp; strategy)
-<a name="l00094"></a>00094 {
-<a name="l00095"></a>00095 <span class="comment">// Call do_container for a ring</span>
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097 <span class="comment">// The first/last point (the closing point of the ring) should maybe be excluded because it</span>
-<a name="l00098"></a>00098 <span class="comment">// lies on a line with second/one but last. Here it is never excluded.</span>
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <span class="comment">// Note also that, especially if max_distance is too large, the output ring might be self intersecting</span>
-<a name="l00101"></a>00101 <span class="comment">// while the input ring is not, although chances are low in normal polygons</span>
-<a name="l00102"></a>00102
-<a name="l00103"></a>00103 <span class="comment">// Finally the inputring might have 4 points (=correct), the output &lt; 4(=wrong)</span>
-<a name="l00104"></a>00104 <span class="keywordflow">if</span> (boost::size(r_in) &lt;= 4 || max_distance &lt; 0)
-<a name="l00105"></a>00105 {
-<a name="l00106"></a>00106 std::copy(boost::begin(r_in), boost::end(r_in), out);
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108 <span class="keywordflow">else</span>
-<a name="l00109"></a>00109 {
-<a name="l00110"></a>00110 simplify_range_strategy(r_in, out, max_distance, strategy);
-<a name="l00111"></a>00111 }
-<a name="l00112"></a>00112 }
-<a name="l00113"></a>00113
-<a name="l00114"></a>00114 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Y, <span class="keyword">typename</span> S&gt;
-<a name="l00115"></a>00115 <span class="keyword">inline</span> <span class="keywordtype">void</span> simplify_polygon(Y <span class="keyword">const</span>&amp; poly_in, Y&amp; poly_out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>&amp; strategy)
-<a name="l00116"></a>00116 {
-<a name="l00117"></a>00117 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator
-<a name="l00118"></a>00118 &lt;<span class="keyword">typename</span> interior_type&lt;Y&gt;::type&gt;::type iterator_type;
-<a name="l00119"></a>00119 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
-<a name="l00120"></a>00120 &lt;<span class="keyword">typename</span> interior_type&lt;Y&gt;::type&gt;::type const_iterator_type;
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122 poly_out.clear();
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <span class="comment">// Note that if there are inner rings, and distance is too large, they might intersect with the</span>
-<a name="l00125"></a>00125 <span class="comment">// outer ring in the output, while it didn't in the input.</span>
-<a name="l00126"></a>00126 simplify_ring(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly_in), std::back_inserter(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly_out)),
-<a name="l00127"></a>00127 max_distance, strategy);
-<a name="l00128"></a>00128
-<a name="l00129"></a>00129 <a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_out).resize(boost::size(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_in)));
-<a name="l00130"></a>00130
-<a name="l00131"></a>00131 const_iterator_type it_in = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_in));
-<a name="l00132"></a>00132 iterator_type it_out = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_out));
-<a name="l00133"></a>00133
-<a name="l00134"></a>00134 <span class="keywordflow">for</span> (; it_in != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_in)); it_in++, it_out++)
-<a name="l00135"></a>00135 {
-<a name="l00136"></a>00136 simplify_ring(*it_in, std::back_inserter(*it_out), max_distance, strategy);
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138 }
+<a name="l00092"></a>00092
+<a name="l00093"></a>00093 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Strategy, std::<span class="keywordtype">size_t</span> Minimum&gt;
+<a name="l00094"></a>00094 <span class="keyword">struct </span>simplify_range
+<a name="l00095"></a>00095 {
+<a name="l00096"></a>00096 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Range <span class="keyword">const</span>&amp; range, Range&amp; out,
+<a name="l00097"></a>00097 <span class="keywordtype">double</span> max_distance, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00098"></a>00098 {
+<a name="l00099"></a>00099 <span class="comment">// Call do_container for a linestring / ring</span>
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <span class="comment">// For a RING:</span>
+<a name="l00102"></a>00102 <span class="comment">// The first/last point (the closing point of the ring) should maybe be excluded because it</span>
+<a name="l00103"></a>00103 <span class="comment">// lies on a line with second/one but last. Here it is never excluded.</span>
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105 <span class="comment">// Note also that, especially if max_distance is too large, the output ring might be self intersecting</span>
+<a name="l00106"></a>00106 <span class="comment">// while the input ring is not, although chances are low in normal polygons</span>
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108 <span class="comment">// Finally the inputring might have 4 points (=correct), the output &lt; 4(=wrong)</span>
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110 <span class="keywordflow">if</span> (boost::size(range) &lt;= <span class="keywordtype">int</span>(Minimum) || max_distance &lt; 0.0)
+<a name="l00111"></a>00111 {
+<a name="l00112"></a>00112 simplify_copy&lt;Range, Strategy&gt;::apply
+<a name="l00113"></a>00113 (
+<a name="l00114"></a>00114 range, out, max_distance, strategy
+<a name="l00115"></a>00115 );
+<a name="l00116"></a>00116 }
+<a name="l00117"></a>00117 <span class="keywordflow">else</span>
+<a name="l00118"></a>00118 {
+<a name="l00119"></a>00119 simplify_range_inserter&lt;Range, Strategy&gt;::apply
+<a name="l00120"></a>00120 (
+<a name="l00121"></a>00121 range, std::back_inserter(out), max_distance, strategy
+<a name="l00122"></a>00122 );
+<a name="l00123"></a>00123 }
+<a name="l00124"></a>00124 }
+<a name="l00125"></a>00125 };
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00128"></a>00128 <span class="keyword">struct </span>simplify_polygon
+<a name="l00129"></a>00129 {
+<a name="l00130"></a>00130 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Polygon <span class="keyword">const</span>&amp; poly_in, Polygon&amp; poly_out,
+<a name="l00131"></a>00131 <span class="keywordtype">double</span> max_distance, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00132"></a>00132 {
+<a name="l00133"></a>00133 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type&lt;Polygon&gt;::type ring_type;
+<a name="l00134"></a>00134
+<a name="l00135"></a>00135 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator
+<a name="l00136"></a>00136 &lt;<span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type&gt;::type iterator_type;
+<a name="l00137"></a>00137 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00138"></a>00138 &lt;<span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type&gt;::type const_iterator_type;
 <a name="l00139"></a>00139
-<a name="l00140"></a>00140 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Y&gt;
-<a name="l00141"></a>00141 <span class="keyword">inline</span> <span class="keywordtype">void</span> simplify_polygon(Y <span class="keyword">const</span>&amp; poly_in, Y&amp; poly_out, <span class="keywordtype">double</span> max_distance)
-<a name="l00142"></a>00142 {
-<a name="l00143"></a>00143 <span class="comment">// Define default strategy</span>
-<a name="l00144"></a>00144 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type&lt;Y&gt;::type ring_type;
-<a name="l00145"></a>00145 <span class="keyword">typedef</span> std::back_insert_iterator&lt;ring_type&gt; iterator_type;
+<a name="l00140"></a>00140 <span class="comment">// Note that if there are inner rings, and distance is too large,</span>
+<a name="l00141"></a>00141 <span class="comment">// they might intersect with the outer ring in the output,</span>
+<a name="l00142"></a>00142 <span class="comment">// while it didn't in the input.</span>
+<a name="l00143"></a>00143 simplify_range&lt;ring_type, Strategy, 4&gt;::apply(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly_in),
+<a name="l00144"></a>00144 <a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly_out),
+<a name="l00145"></a>00145 max_distance, strategy);
 <a name="l00146"></a>00146
-<a name="l00147"></a>00147 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;Y&gt;::type point_type;
-<a name="l00148"></a>00148 <span class="keyword">typedef</span> <span class="keyword">typename</span> cs_tag&lt;point_type&gt;::type cs_tag;
-<a name="l00149"></a>00149 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_distance_segment
-<a name="l00150"></a>00150 &lt;
-<a name="l00151"></a>00151 cs_tag,
-<a name="l00152"></a>00152 cs_tag,
-<a name="l00153"></a>00153 point_type,
-<a name="l00154"></a>00154 segment&lt;const point_type&gt;
-<a name="l00155"></a>00155 &gt;::type strategy_type;
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157 strategy::simplify::douglas_peucker&lt;ring_type, iterator_type, strategy_type&gt; douglas;
-<a name="l00158"></a>00158
-<a name="l00159"></a>00159 simplify_polygon(poly_in, poly_out, max_distance, douglas);
-<a name="l00160"></a>00160 }
+<a name="l00147"></a>00147 <a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_out).resize(boost::size(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_in)));
+<a name="l00148"></a>00148
+<a name="l00149"></a>00149 iterator_type it_out = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_out));
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151 <span class="keywordflow">for</span> (const_iterator_type it_in = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_in));
+<a name="l00152"></a>00152 it_in != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_in));
+<a name="l00153"></a>00153 ++it_in, ++it_out)
+<a name="l00154"></a>00154 {
+<a name="l00155"></a>00155 simplify_range&lt;ring_type, Strategy, 4&gt;::apply(*it_in,
+<a name="l00156"></a>00156 *it_out, max_distance, strategy);
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158 }
+<a name="l00159"></a>00159 };
+<a name="l00160"></a>00160
 <a name="l00161"></a>00161
 <a name="l00162"></a>00162 }} <span class="comment">// namespace detail::simplify</span>
 <a name="l00163"></a>00163 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
@@ -186,125 +186,170 @@
 <a name="l00167"></a>00167 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
 <a name="l00168"></a>00168 {
 <a name="l00169"></a>00169
-<a name="l00170"></a>00170 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> G&gt;
-<a name="l00171"></a>00171 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>
+<a name="l00170"></a>00170 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00171"></a>00171 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry.">simplify</a>
 <a name="l00172"></a>00172 {
 <a name="l00173"></a>00173 };
 <a name="l00174"></a>00174
-<a name="l00175"></a>00175 <span class="comment">// Partial specializations</span>
-<a name="l00176"></a>00176 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R&gt;
-<a name="l00177"></a>00177 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>&lt;linestring_tag, R&gt;
-<a name="l00178"></a>00178 {
-<a name="l00179"></a>00179 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> S&gt;
-<a name="l00180"></a>00180 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(R <span class="keyword">const</span>&amp; range, OutputIterator out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>&amp; strategy)
-<a name="l00181"></a>00181 {
-<a name="l00182"></a>00182 strategy.simplify(range, out, max_distance);
-<a name="l00183"></a>00183 }
+<a name="l00175"></a>00175 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00176"></a>00176 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry.">simplify</a>&lt;point_tag, Point, Strategy&gt;
+<a name="l00177"></a>00177 {
+<a name="l00178"></a>00178 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Point <span class="keyword">const</span>&amp; point, Point&amp; out,
+<a name="l00179"></a>00179 <span class="keywordtype">double</span> max_distance, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00180"></a>00180 {
+<a name="l00181"></a>00181 <a class="code" href="namespaceggl.html#f8cee6dd577bebfd1dbbe4cc503304d4" title="Copies coordinates from source to destination point.">copy_coordinates</a>(point, out);
+<a name="l00182"></a>00182 }
+<a name="l00183"></a>00183 };
 <a name="l00184"></a>00184
-<a name="l00185"></a>00185 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputIterator&gt;
-<a name="l00186"></a>00186 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(R <span class="keyword">const</span>&amp; range, OutputIterator out, <span class="keywordtype">double</span> max_distance)
-<a name="l00187"></a>00187 {
-<a name="l00188"></a>00188 <span class="comment">// Define default strategy</span>
-<a name="l00189"></a>00189 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;R&gt;::type point_type;
-<a name="l00190"></a>00190 <span class="keyword">typedef</span> <span class="keyword">typename</span> cs_tag&lt;point_type&gt;::type cs_tag;
-<a name="l00191"></a>00191 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_distance_segment
-<a name="l00192"></a>00192 &lt;
-<a name="l00193"></a>00193 cs_tag,
-<a name="l00194"></a>00194 cs_tag,
-<a name="l00195"></a>00195 point_type,
-<a name="l00196"></a>00196 segment&lt;const point_type&gt;
-<a name="l00197"></a>00197 &gt;::type strategy_type;
-<a name="l00198"></a>00198
-<a name="l00199"></a>00199 strategy::simplify::douglas_peucker&lt;R, OutputIterator, strategy_type&gt; douglas;
-<a name="l00200"></a>00200
-<a name="l00201"></a>00201 detail::simplify::simplify_range_strategy(range, out, max_distance, douglas);
-<a name="l00202"></a>00202 }
-<a name="l00203"></a>00203 };
-<a name="l00204"></a>00204
-<a name="l00205"></a>00205 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R&gt;
-<a name="l00206"></a>00206 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>&lt;ring_tag, R&gt;
-<a name="l00207"></a>00207 {
-<a name="l00209"></a>00209 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> S&gt;
-<a name="l00210"></a>00210 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(R <span class="keyword">const</span>&amp; ring_in, R&amp; ring_out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>&amp; strategy)
-<a name="l00211"></a>00211 {
-<a name="l00212"></a>00212 <span class="keyword">using</span> detail::simplify::simplify_ring;
-<a name="l00213"></a>00213 simplify_ring(ring_in, std::back_inserter(ring_out), max_distance, strategy);
-<a name="l00214"></a>00214 }
+<a name="l00185"></a>00185
+<a name="l00186"></a>00186 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00187"></a>00187 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry.">simplify</a>&lt;linestring_tag, Linestring, Strategy&gt;
+<a name="l00188"></a>00188 : detail::<a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry.">simplify</a>::simplify_range
+<a name="l00189"></a>00189 &lt;
+<a name="l00190"></a>00190 Linestring,
+<a name="l00191"></a>00191 Strategy,
+<a name="l00192"></a>00192 2
+<a name="l00193"></a>00193 &gt;
+<a name="l00194"></a>00194 {};
+<a name="l00195"></a>00195
+<a name="l00196"></a>00196 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00197"></a>00197 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry.">simplify</a>&lt;ring_tag, Ring, Strategy&gt;
+<a name="l00198"></a>00198 : detail::<a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry.">simplify</a>::simplify_range
+<a name="l00199"></a>00199 &lt;
+<a name="l00200"></a>00200 Ring,
+<a name="l00201"></a>00201 Strategy,
+<a name="l00202"></a>00202 4
+<a name="l00203"></a>00203 &gt;
+<a name="l00204"></a>00204 {};
+<a name="l00205"></a>00205
+<a name="l00206"></a>00206 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00207"></a>00207 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry.">simplify</a>&lt;polygon_tag, Polygon, Strategy&gt;
+<a name="l00208"></a>00208 : detail::<a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry.">simplify</a>::simplify_polygon
+<a name="l00209"></a>00209 &lt;
+<a name="l00210"></a>00210 Polygon,
+<a name="l00211"></a>00211 Strategy
+<a name="l00212"></a>00212 &gt;
+<a name="l00213"></a>00213 {};
+<a name="l00214"></a>00214
 <a name="l00215"></a>00215
-<a name="l00217"></a>00217 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(R <span class="keyword">const</span>&amp; ring_in, R&amp; ring_out, <span class="keywordtype">double</span> max_distance)
-<a name="l00218"></a>00218 {
-<a name="l00219"></a>00219 <span class="comment">// Define default strategy</span>
-<a name="l00220"></a>00220 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;R&gt;::type point_type;
-<a name="l00221"></a>00221 <span class="keyword">typedef</span> <span class="keyword">typename</span> cs_tag&lt;point_type&gt;::type cs_tag;
-<a name="l00222"></a>00222 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_distance_segment
-<a name="l00223"></a>00223 &lt;
-<a name="l00224"></a>00224 cs_tag,
-<a name="l00225"></a>00225 cs_tag,
-<a name="l00226"></a>00226 point_type,
-<a name="l00227"></a>00227 segment&lt;const point_type&gt;
-<a name="l00228"></a>00228 &gt;::type strategy_type;
-<a name="l00229"></a>00229 <span class="keyword">typedef</span> std::back_insert_iterator&lt;R&gt; iterator_type;
+<a name="l00216"></a>00216 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00217"></a>00217 <span class="keyword">struct </span><a class="code" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a" title="Simplify a geometry.">simplify_inserter</a>
+<a name="l00218"></a>00218 {
+<a name="l00219"></a>00219 };
+<a name="l00220"></a>00220
+<a name="l00221"></a>00221
+<a name="l00222"></a>00222 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00223"></a>00223 <span class="keyword">struct </span><a class="code" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a" title="Simplify a geometry.">simplify_inserter</a>&lt;linestring_tag, Linestring, Strategy&gt;
+<a name="l00224"></a>00224 : detail::<a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry.">simplify</a>::simplify_range_inserter
+<a name="l00225"></a>00225 &lt;
+<a name="l00226"></a>00226 Linestring,
+<a name="l00227"></a>00227 Strategy
+<a name="l00228"></a>00228 &gt;
+<a name="l00229"></a>00229 {};
 <a name="l00230"></a>00230
-<a name="l00231"></a>00231 strategy::simplify::douglas_peucker&lt;R, iterator_type, strategy_type&gt; douglas;
-<a name="l00232"></a>00232
-<a name="l00233"></a>00233 detail::simplify::simplify_ring(ring_in, std::back_inserter(ring_out), max_distance, douglas);
-<a name="l00234"></a>00234 }
-<a name="l00235"></a>00235 };
-<a name="l00236"></a>00236
-<a name="l00237"></a>00237 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P&gt;
-<a name="l00238"></a>00238 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>&lt;polygon_tag, P&gt;
-<a name="l00239"></a>00239 {
-<a name="l00241"></a>00241 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> S&gt;
-<a name="l00242"></a>00242 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(P <span class="keyword">const</span>&amp; poly_in, P&amp; poly_out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>&amp; strategy)
-<a name="l00243"></a>00243 {
-<a name="l00244"></a>00244 detail::simplify::simplify_polygon(poly_in, poly_out, max_distance, strategy);
-<a name="l00245"></a>00245 }
-<a name="l00246"></a>00246
-<a name="l00248"></a>00248 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(P <span class="keyword">const</span>&amp; poly_in, P&amp; poly_out, <span class="keywordtype">double</span> max_distance)
-<a name="l00249"></a>00249 {
-<a name="l00250"></a>00250 detail::simplify::simplify_polygon(poly_in, poly_out, max_distance);
-<a name="l00251"></a>00251 }
-<a name="l00252"></a>00252 };
-<a name="l00253"></a>00253
-<a name="l00254"></a>00254 } <span class="comment">// namespace dispatch</span>
-<a name="l00255"></a>00255 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
-<a name="l00256"></a>00256 <span class="preprocessor"></span>
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258 <span class="comment">// Model 1, using output iterator</span>
-<a name="l00259"></a>00259
-<a name="l00275"></a>00275 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> O&gt;
-<a name="l00276"></a><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb">00276</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>(<span class="keyword">const</span> G&amp; geometry, O out, <span class="keywordtype">double</span> max_distance)
-<a name="l00277"></a>00277 {
-<a name="l00278"></a>00278 <span class="keyword">typedef</span> dispatch::simplify&lt;typename tag&lt;G&gt;::type, G&gt; simplify_type;
-<a name="l00279"></a>00279 simplify_type::apply(geometry, out, max_distance);
-<a name="l00280"></a>00280 }
-<a name="l00281"></a>00281
-<a name="l00298"></a>00298 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> O, <span class="keyword">typename</span> S&gt;
-<a name="l00299"></a><a class="code" href="group__simplify.html#gfac2ab8188c31cf7fab43e423884e0ed">00299</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>(<span class="keyword">const</span> G&amp; geometry, O out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>&amp; strategy)
-<a name="l00300"></a>00300 {
-<a name="l00301"></a>00301 <span class="keyword">typedef</span> dispatch::simplify&lt;typename tag&lt;G&gt;::type, G&gt; simplify_type;
-<a name="l00302"></a>00302 simplify_type::apply(geometry, out, max_distance, strategy);
+<a name="l00231"></a>00231 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00232"></a>00232 <span class="keyword">struct </span><a class="code" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a" title="Simplify a geometry.">simplify_inserter</a>&lt;ring_tag, Ring, Strategy&gt;
+<a name="l00233"></a>00233 : detail::<a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry.">simplify</a>::simplify_range_inserter
+<a name="l00234"></a>00234 &lt;
+<a name="l00235"></a>00235 Ring,
+<a name="l00236"></a>00236 Strategy
+<a name="l00237"></a>00237 &gt;
+<a name="l00238"></a>00238 {};
+<a name="l00239"></a>00239
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241 } <span class="comment">// namespace dispatch</span>
+<a name="l00242"></a>00242 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00243"></a>00243 <span class="preprocessor"></span>
+<a name="l00244"></a>00244
+<a name="l00255"></a>00255 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00256"></a><a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d">00256</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry.">simplify</a>(Geometry <span class="keyword">const</span>&amp; geometry, Geometry&amp; out,
+<a name="l00257"></a>00257 <span class="keywordtype">double</span> max_distance, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00258"></a>00258 {
+<a name="l00259"></a>00259 BOOST_CONCEPT_ASSERT( (<a class="code" href="structggl_1_1concept_1_1_simplify_strategy.html" title="Checks strategy for simplify.">ggl::concept::SimplifyStrategy&lt;Strategy&gt;</a>) );
+<a name="l00260"></a>00260
+<a name="l00261"></a>00261 <a class="code" href="group__access.html#g280e2b0e4bada6eac7b7370a4ded705f" title="Clears a linestring, linear ring or polygon (exterior+interiors) or multi*.">ggl::clear</a>(out);
+<a name="l00262"></a>00262
+<a name="l00263"></a>00263 <a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry.">dispatch::simplify</a>
+<a name="l00264"></a>00264 &lt;
+<a name="l00265"></a>00265 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00266"></a>00266 Geometry,
+<a name="l00267"></a>00267 Strategy
+<a name="l00268"></a>00268 &gt;::apply(geometry, out, max_distance, strategy);
+<a name="l00269"></a>00269 }
+<a name="l00270"></a>00270
+<a name="l00271"></a>00271
+<a name="l00272"></a>00272
+<a name="l00273"></a>00273
+<a name="l00283"></a>00283 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00284"></a><a class="code" href="group__simplify.html#g953e1055914400f9ad3191adc5b42270">00284</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry.">simplify</a>(Geometry <span class="keyword">const</span>&amp; geometry, Geometry&amp; out,
+<a name="l00285"></a>00285 <span class="keywordtype">double</span> max_distance)
+<a name="l00286"></a>00286 {
+<a name="l00287"></a>00287 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;Geometry&gt;::type</a> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+<a name="l00288"></a>00288 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;point_type&gt;::type</a> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag</a>;
+<a name="l00289"></a>00289 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__distance__segment.html" title="Traits class binding a distance-to-segment strategy to a (possibly two) coordinate...">strategy_distance_segment</a>
+<a name="l00290"></a>00290 &lt;
+<a name="l00291"></a>00291 cs_tag,
+<a name="l00292"></a>00292 cs_tag,
+<a name="l00293"></a>00293 point_type,
+<a name="l00294"></a>00294 <a class="code" href="structggl_1_1segment.html" title="Class segment: small containing two (templatized) point references.">ggl::segment&lt;const point_type&gt;</a>
+<a name="l00295"></a>00295 &gt;::type ds_strategy_type;
+<a name="l00296"></a>00296
+<a name="l00297"></a>00297 <span class="keyword">typedef</span> <a class="code" href="classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html" title="Implements the simplify algorithm.">strategy::simplify::douglas_peucker</a>
+<a name="l00298"></a>00298 &lt;
+<a name="l00299"></a>00299 point_type, ds_strategy_type
+<a name="l00300"></a>00300 &gt; strategy_type;
+<a name="l00301"></a>00301
+<a name="l00302"></a>00302 <a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry.">simplify</a>(geometry, out, max_distance, strategy_type());
 <a name="l00303"></a>00303 }
 <a name="l00304"></a>00304
-<a name="l00305"></a>00305 <span class="comment">// Model 2, where output is same type as input</span>
-<a name="l00306"></a>00306
-<a name="l00316"></a>00316 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G&gt;
-<a name="l00317"></a><a class="code" href="group__simplify.html#g44130eb01685933927c05207a01a84f1">00317</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>(<span class="keyword">const</span> G&amp; geometry, G&amp; out, <span class="keywordtype">double</span> max_distance)
-<a name="l00318"></a>00318 {
-<a name="l00319"></a>00319 <span class="keyword">typedef</span> dispatch::simplify&lt;typename tag&lt;G&gt;::type, G&gt; simplify_type;
-<a name="l00320"></a>00320 simplify_type::apply(geometry, out, max_distance);
-<a name="l00321"></a>00321 }
-<a name="l00322"></a>00322
-<a name="l00333"></a>00333 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
-<a name="l00334"></a><a class="code" href="group__simplify.html#g00b5a49a676c29d790764ad67e9fdfbc">00334</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>(<span class="keyword">const</span> G&amp; geometry, G&amp; out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>&amp; strategy)
-<a name="l00335"></a>00335 {
-<a name="l00336"></a>00336 <span class="keyword">typedef</span> dispatch::simplify&lt;typename tag&lt;G&gt;::type, G&gt; simplify_type;
-<a name="l00337"></a>00337 simplify_type::apply(geometry, out, max_distance, strategy);
-<a name="l00338"></a>00338 }
-<a name="l00339"></a>00339
-<a name="l00340"></a>00340 } <span class="comment">// namespace ggl</span>
-<a name="l00341"></a>00341
-<a name="l00342"></a>00342 <span class="preprocessor">#endif // GGL_ALGORITHMS_SIMPLIFY_HPP</span>
+<a name="l00305"></a>00305
+<a name="l00322"></a>00322 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00323"></a><a class="code" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a">00323</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a" title="Simplify a geometry.">simplify_inserter</a>(Geometry <span class="keyword">const</span>&amp; geometry, OutputIterator out,
+<a name="l00324"></a>00324 <span class="keywordtype">double</span> max_distance, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00325"></a>00325 {
+<a name="l00326"></a>00326 BOOST_CONCEPT_ASSERT( (<a class="code" href="structggl_1_1concept_1_1_simplify_strategy.html" title="Checks strategy for simplify.">ggl::concept::SimplifyStrategy&lt;Strategy&gt;</a>) );
+<a name="l00327"></a>00327
+<a name="l00328"></a>00328 <a class="code" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a" title="Simplify a geometry.">dispatch::simplify_inserter</a>
+<a name="l00329"></a>00329 &lt;
+<a name="l00330"></a>00330 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00331"></a>00331 Geometry,
+<a name="l00332"></a>00332 Strategy
+<a name="l00333"></a>00333 &gt;::apply(geometry, out, max_distance, strategy);
+<a name="l00334"></a>00334 }
+<a name="l00335"></a>00335
+<a name="l00351"></a>00351 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00352"></a><a class="code" href="group__simplify.html#g4285888f1598725bca124878ac16c656">00352</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a" title="Simplify a geometry.">simplify_inserter</a>(Geometry <span class="keyword">const</span>&amp; geometry, OutputIterator out,
+<a name="l00353"></a>00353 <span class="keywordtype">double</span> max_distance)
+<a name="l00354"></a>00354 {
+<a name="l00355"></a>00355 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;Geometry&gt;::type</a> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+<a name="l00356"></a>00356 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;point_type&gt;::type</a> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag</a>;
+<a name="l00357"></a>00357 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__distance__segment.html" title="Traits class binding a distance-to-segment strategy to a (possibly two) coordinate...">strategy_distance_segment</a>
+<a name="l00358"></a>00358 &lt;
+<a name="l00359"></a>00359 cs_tag,
+<a name="l00360"></a>00360 cs_tag,
+<a name="l00361"></a>00361 point_type,
+<a name="l00362"></a>00362 <a class="code" href="structggl_1_1segment.html" title="Class segment: small containing two (templatized) point references.">ggl::segment&lt;const point_type&gt;</a>
+<a name="l00363"></a>00363 &gt;::type ds_strategy_type;
+<a name="l00364"></a>00364
+<a name="l00365"></a>00365 <span class="comment">//typedef typename ggl::as_range_type&lt;Geometry&gt;::type range_type;</span>
+<a name="l00366"></a>00366
+<a name="l00367"></a>00367 <span class="keyword">typedef</span> <a class="code" href="classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html" title="Implements the simplify algorithm.">strategy::simplify::douglas_peucker</a>
+<a name="l00368"></a>00368 &lt;
+<a name="l00369"></a>00369 point_type, ds_strategy_type
+<a name="l00370"></a>00370 &gt; strategy_type;
+<a name="l00371"></a>00371
+<a name="l00372"></a>00372 <a class="code" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a" title="Simplify a geometry.">dispatch::simplify_inserter</a>
+<a name="l00373"></a>00373 &lt;
+<a name="l00374"></a>00374 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00375"></a>00375 Geometry,
+<a name="l00376"></a>00376 strategy_type
+<a name="l00377"></a>00377 &gt;::apply(geometry, out, max_distance, strategy_type());
+<a name="l00378"></a>00378 }
+<a name="l00379"></a>00379
+<a name="l00380"></a>00380
+<a name="l00381"></a>00381 } <span class="comment">// namespace ggl</span>
+<a name="l00382"></a>00382
+<a name="l00383"></a>00383 <span class="preprocessor">#endif // GGL_ALGORITHMS_SIMPLIFY_HPP</span>
 </pre></div></div>
 <hr size="1">
 <table width="100%">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp_source.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -92,8 +92,8 @@
 <a name="l00084"></a>00084 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;B2&gt;::type point_type2;
 <a name="l00085"></a>00085
 <a name="l00086"></a>00086 point_type1 lower_left, upper_right;
-<a name="l00087"></a>00087 assign_box_corner&lt;min_corner, min_corner&gt;(b1, lower_left);
-<a name="l00088"></a>00088 assign_box_corner&lt;max_corner, max_corner&gt;(b1, upper_right);
+<a name="l00087"></a>00087 detail::assign::assign_box_2d_corner&lt;min_corner, min_corner&gt;(b1, lower_left);
+<a name="l00088"></a>00088 detail::assign::assign_box_2d_corner&lt;max_corner, max_corner&gt;(b1, upper_right);
 <a name="l00089"></a>00089
 <a name="l00090"></a>00090 point_type2 p1, p2;
 <a name="l00091"></a>00091 <span class="keywordflow">if</span> (strategy(lower_left, p1) &amp;&amp; strategy(upper_right, p2))

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/annotated.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/annotated.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/annotated.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -64,9 +64,12 @@
   <tr><td class="indexkey"><a class="el" href="structggl_1_1concept_1_1_linestring.html">ggl::concept::Linestring&lt; L &gt;</a></td><td class="indexvalue">Checks <a class="el" href="classggl_1_1linestring.html" title="A linestring (named so by OGC) is a collection (default a vector) of points.">linestring</a> <a class="el" href="namespaceggl_1_1concept.html">concept</a>, using Boost Concept Check Library and metafunctions </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1concept_1_1_nsphere.html">ggl::concept::Nsphere&lt; S &gt;</a></td><td class="indexvalue">Checks <a class="el" href="classggl_1_1nsphere.html" title="Class nsphere: defines a circle or a sphere: a point with radius.">nsphere</a> <a class="el" href="namespaceggl_1_1concept.html">concept</a>, using Boost Concept Check Library and metafunctions </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1concept_1_1_point.html">ggl::concept::Point&lt; X &gt;</a></td><td class="indexvalue">Checks <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> <a class="el" href="namespaceggl_1_1concept.html">concept</a>, using Boost Concept Check Library and metafunctions </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structggl_1_1concept_1_1_point_distance_strategy.html">ggl::concept::PointDistanceStrategy&lt; Strategy &gt;</a></td><td class="indexvalue">Checks <a class="el" href="namespaceggl_1_1strategy.html">strategy</a> for point-segment-distance </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structggl_1_1concept_1_1_point_segment_distance_strategy.html">ggl::concept::PointSegmentDistanceStrategy&lt; Strategy &gt;</a></td><td class="indexvalue">Checks <a class="el" href="namespaceggl_1_1strategy.html">strategy</a> for point-segment-distance </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1concept_1_1_polygon.html">ggl::concept::Polygon&lt; P &gt;</a></td><td class="indexvalue">Checks <a class="el" href="classggl_1_1polygon.html" title="The polygon contains an outer ring and zero or more inner rings.">polygon</a> <a class="el" href="namespaceggl_1_1concept.html">concept</a>, using Boost Concept Check Library and metafunctions </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1concept_1_1_ring.html">ggl::concept::Ring&lt; R &gt;</a></td><td class="indexvalue">Checks (linear) <a class="el" href="structggl_1_1concept_1_1_ring.html" title="Checks (linear) Ring concept, using Boost Concept Check Library and metafunctions...">Ring</a> <a class="el" href="namespaceggl_1_1concept.html">concept</a>, using Boost Concept Check Library and metafunctions </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1concept_1_1_segment.html">ggl::concept::Segment&lt; S &gt;</a></td><td class="indexvalue">Checks <a class="el" href="structggl_1_1segment.html" title="Class segment: small containing two (templatized) point references.">segment</a> <a class="el" href="namespaceggl_1_1concept.html">concept</a>, using Boost Concept Check Library and metafunctions </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structggl_1_1concept_1_1_simplify_strategy.html">ggl::concept::SimplifyStrategy&lt; Strategy &gt;</a></td><td class="indexvalue">Checks <a class="el" href="namespaceggl_1_1strategy.html">strategy</a> for simplify </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1coordinate__system.html">ggl::coordinate_system&lt; G &gt;</a></td><td class="indexvalue">Meta-function which defines coordinate system for any geometry </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1coordinate__type.html">ggl::coordinate_type&lt; G &gt;</a></td><td class="indexvalue">Meta-function which defines coordinate type (int, float, double, etc) of any geometry </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1cs_1_1cartesian.html">ggl::cs::cartesian</a></td><td class="indexvalue">Cartesian coordinate system </td></tr>
@@ -91,7 +94,7 @@
   <tr><td class="indexkey"><a class="el" href="structggl_1_1is__multi.html">ggl::is_multi&lt; Geometry &gt;</a></td><td class="indexvalue">Meta-function defining "true" for multi geometries (<a class="el" href="structggl_1_1multi__point.html">multi_point</a>, etc) </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1is__radian.html">ggl::is_radian&lt; CoordinateSystem &gt;</a></td><td class="indexvalue">Meta-function to verify if a coordinate system is <a class="el" href="classggl_1_1radian.html" title="Unit of plan angles: radians.">radian</a> </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1less.html">ggl::less&lt; P &gt;</a></td><td class="indexvalue">Less predicate for usage in e.g. std::map </td></tr>
- <tr><td class="indexkey"><a class="el" href="classggl_1_1linear__ring.html">ggl::linear_ring&lt; P, V, A &gt;</a></td><td class="indexvalue">A <a class="el" href="classggl_1_1linear__ring.html" title="A linear_ring (linear linear_ring) is a closed line which should not be selfintersecting...">linear_ring</a> (linear <a class="el" href="classggl_1_1linear__ring.html" title="A linear_ring (linear linear_ring) is a closed line which should not be selfintersecting...">linear_ring</a>) is a closed line which should not be selfintersecting </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classggl_1_1linear__ring.html">ggl::linear_ring&lt; P, V, ClockWise, A &gt;</a></td><td class="indexvalue">A <a class="el" href="classggl_1_1linear__ring.html" title="A linear_ring (linear linear_ring) is a closed line which should not be selfintersecting...">linear_ring</a> (linear <a class="el" href="classggl_1_1linear__ring.html" title="A linear_ring (linear linear_ring) is a closed line which should not be selfintersecting...">linear_ring</a>) is a closed line which should not be selfintersecting </td></tr>
   <tr><td class="indexkey"><a class="el" href="classggl_1_1linestring.html">ggl::linestring&lt; P, V, A &gt;</a></td><td class="indexvalue">A <a class="el" href="classggl_1_1linestring.html" title="A linestring (named so by OGC) is a collection (default a vector) of points.">linestring</a> (named so by OGC) is a collection (default a vector) of points </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1linestring__tag.html">ggl::linestring_tag</a></td><td class="indexvalue">OGC Linestring identifying <a class="el" href="structggl_1_1tag.html" title="Meta-function to get the tag of any geometry type.">tag</a> </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1multi__linestring.html">ggl::multi_linestring&lt; L, V, A &gt;</a></td><td class="indexvalue"></td></tr>
@@ -103,7 +106,7 @@
   <tr><td class="indexkey"><a class="el" href="classggl_1_1nsphere.html">ggl::nsphere&lt; P, T &gt;</a></td><td class="indexvalue">Class <a class="el" href="classggl_1_1nsphere.html" title="Class nsphere: defines a circle or a sphere: a point with radius.">nsphere</a>: defines a circle or a sphere: a <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> with radius </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1nsphere__tag.html">ggl::nsphere_tag</a></td><td class="indexvalue">Convenience 2D (circle) or 3D (sphere) n-sphere identifying <a class="el" href="structggl_1_1tag.html" title="Meta-function to get the tag of any geometry type.">tag</a> </td></tr>
   <tr><td class="indexkey"><a class="el" href="classggl_1_1point.html">ggl::point&lt; T, D, C &gt;</a></td><td class="indexvalue">Basic <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> class, having coordinates defined in a neutral way </td></tr>
- <tr><td class="indexkey"><a class="el" href="structggl_1_1point__const__iterator.html">ggl::point_const_iterator&lt; Geometry &gt;</a></td><td class="indexvalue">Meta-function which defines point-const-iterator type </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structggl_1_1point__order.html">ggl::point_order&lt; Geometry &gt;</a></td><td class="indexvalue">Meta-function which defines <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> type of any geometry </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1point__tag.html">ggl::point_tag</a></td><td class="indexvalue">OGC Point identifying <a class="el" href="structggl_1_1tag.html" title="Meta-function to get the tag of any geometry type.">tag</a> </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1point__type.html">ggl::point_type&lt; Geometry &gt;</a></td><td class="indexvalue">Meta-function which defines <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> type of any geometry </td></tr>
   <tr><td class="indexkey"><a class="el" href="classggl_1_1point__xy.html">ggl::point_xy&lt; T, C &gt;</a></td><td class="indexvalue">2D <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> in Cartesian coordinate system </td></tr>
@@ -112,7 +115,7 @@
   <tr><td class="indexkey"><a class="el" href="structggl_1_1policies_1_1relate_1_1segments__direction.html">ggl::policies::relate::segments_direction&lt; S1, S2 &gt;</a></td><td class="indexvalue"></td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1policies_1_1relate_1_1segments__intersection__points.html">ggl::policies::relate::segments_intersection_points&lt; S1, S2, ReturnType &gt;</a></td><td class="indexvalue"></td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1policies_1_1relate_1_1segments__tupled.html">ggl::policies::relate::segments_tupled&lt; Policy1, Policy2 &gt;</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classggl_1_1polygon.html">ggl::polygon&lt; Point, PointList, RingList, PointAlloc, RingAlloc &gt;</a></td><td class="indexvalue">The <b><a class="el" href="classggl_1_1polygon.html" title="The polygon contains an outer ring and zero or more inner rings.">polygon</a></b> contains an outer ring and zero or more inner rings </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classggl_1_1polygon.html">ggl::polygon&lt; Point, PointList, RingList, ClockWise, PointAlloc, RingAlloc &gt;</a></td><td class="indexvalue">The <b><a class="el" href="classggl_1_1polygon.html" title="The polygon contains an outer ring and zero or more inner rings.">polygon</a></b> contains an outer ring and zero or more inner rings </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1polygon__tag.html">ggl::polygon_tag</a></td><td class="indexvalue">OGC Polygon identifying <a class="el" href="structggl_1_1tag.html" title="Meta-function to get the tag of any geometry type.">tag</a> </td></tr>
   <tr><td class="indexkey"><a class="el" href="classggl_1_1radian.html">ggl::radian</a></td><td class="indexvalue">Unit of plan angles: radians </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1radius__type.html">ggl::radius_type&lt; G &gt;</a></td><td class="indexvalue"></td></tr>
@@ -136,6 +139,7 @@
   <tr><td class="indexkey"><a class="el" href="classggl_1_1strategy_1_1centroid_1_1geolib1995.html">ggl::strategy::centroid::geolib1995&lt; PC, PS &gt;</a></td><td class="indexvalue">Centroid calculation </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1strategy_1_1compare_1_1euclidian.html">ggl::strategy::compare::euclidian&lt; P, D &gt;</a></td><td class="indexvalue">Compare (in one direction) <a class="el" href="namespaceggl_1_1strategy.html">strategy</a> for cartesian coordinates </td></tr>
   <tr><td class="indexkey"><a class="el" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html">ggl::strategy::convex_hull::graham&lt; P &gt;</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classggl_1_1strategy_1_1distance_1_1cross__track.html">ggl::strategy::distance::cross_track&lt; P, S &gt;</a></td><td class="indexvalue">Strategy functor for <a class="el" href="namespaceggl_1_1strategy_1_1distance.html">distance</a> <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> to <a class="el" href="structggl_1_1segment.html" title="Class segment: small containing two (templatized) point references.">segment</a> calculation </td></tr>
   <tr><td class="indexkey"><a class="el" href="classggl_1_1strategy_1_1distance_1_1haversine.html">ggl::strategy::distance::haversine&lt; P1, P2 &gt;</a></td><td class="indexvalue">Distance calculation for spherical coordinates on a perfect sphere using <a class="el" href="classggl_1_1strategy_1_1distance_1_1haversine.html" title="Distance calculation for spherical coordinates on a perfect sphere using haversine...">haversine</a> </td></tr>
   <tr><td class="indexkey"><a class="el" href="classggl_1_1strategy_1_1distance_1_1ll__point__segment.html">ggl::strategy::distance::ll_point_segment&lt; P, S &gt;</a></td><td class="indexvalue">Strategy functor for <a class="el" href="namespaceggl_1_1strategy_1_1distance.html">distance</a> <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> to <a class="el" href="structggl_1_1segment.html" title="Class segment: small containing two (templatized) point references.">segment</a> calculation </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1strategy_1_1distance_1_1pythagoras.html">ggl::strategy::distance::pythagoras&lt; P1, P2, CalculationType &gt;</a></td><td class="indexvalue">Strategy for <a class="el" href="namespaceggl_1_1strategy_1_1distance.html">distance</a> <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> to <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a>: <a class="el" href="structggl_1_1strategy_1_1distance_1_1pythagoras.html" title="Strategy for distance point to point: pythagoras.">pythagoras</a> </td></tr>
@@ -209,6 +213,7 @@
   <tr><td class="indexkey"><a class="el" href="structggl_1_1traits_1_1indexed__access.html">ggl::traits::indexed_access&lt; G, I, D &gt;</a></td><td class="indexvalue">Traits class defining "get" and "set" to get and set <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> coordinate values </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1traits_1_1interior__rings.html">ggl::traits::interior_rings&lt; G &gt;</a></td><td class="indexvalue">Traits class defining <a class="el" href="structggl_1_1traits_1_1access.html" title="Traits class which gives access (get,set) to points.">access</a> to <a class="el" href="structggl_1_1traits_1_1interior__rings.html" title="Traits class defining access to interior_rings of a polygon.">interior_rings</a> of a <a class="el" href="classggl_1_1polygon.html" title="The polygon contains an outer ring and zero or more inner rings.">polygon</a> </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1traits_1_1interior__type.html">ggl::traits::interior_type&lt; G &gt;</a></td><td class="indexvalue">Traits class indicating interior container type of a <a class="el" href="classggl_1_1polygon.html" title="The polygon contains an outer ring and zero or more inner rings.">polygon</a> </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structggl_1_1traits_1_1point__order.html">ggl::traits::point_order&lt; G &gt;</a></td><td class="indexvalue">Traits class indicating the order of contained points within a ring or (multi)<a class="el" href="classggl_1_1polygon.html" title="The polygon contains an outer ring and zero or more inner rings.">polygon</a>, clockwise, counter clockwise or not known </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1traits_1_1point__type.html">ggl::traits::point_type&lt; G &gt;</a></td><td class="indexvalue">Traits class indicating the type of contained points </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1traits_1_1radius__access.html">ggl::traits::radius_access&lt; G, T, D &gt;</a></td><td class="indexvalue">Traits class to get/set radius of a circle/sphere/(ellipse) </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1traits_1_1radius__type.html">ggl::traits::radius_type&lt; G &gt;</a></td><td class="indexvalue">Traits class indicating the type (double,float,...) of the radius of a circle or a sphere </td></tr>
@@ -216,6 +221,7 @@
   <tr><td class="indexkey"><a class="el" href="structggl_1_1traits_1_1tag.html">ggl::traits::tag&lt; Geometry &gt;</a></td><td class="indexvalue">Traits class to attach a <a class="el" href="structggl_1_1traits_1_1tag.html" title="Traits class to attach a tag to a geometry.">tag</a> to a geometry </td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1traits_1_1tag_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4.html">ggl::traits::tag&lt; ggl::detail::intersection::intersection_point&lt; P &gt; &gt;</a></td><td class="indexvalue"></td></tr>
   <tr><td class="indexkey"><a class="el" href="structggl_1_1traits_1_1use__std.html">ggl::traits::use_std&lt; G &gt;</a></td><td class="indexvalue">Traits class, optional, indicating that the std-library should be used </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structggl_1_1vertex__iterator.html">ggl::vertex_iterator&lt; Geometry, IsConst &gt;</a></td><td class="indexvalue">Meta-function which defines <a class="el" href="structggl_1_1vertex__iterator.html" title="Meta-function which defines vertex_iterator type.">vertex_iterator</a> type </td></tr>
   <tr><td class="indexkey"><a class="el" href="class_point_list.html">PointList</a></td><td class="indexvalue"></td></tr>
 </table>
 </div>

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/append_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/append_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/append_8hpp_source.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -88,7 +88,7 @@
 <a name="l00057"></a>00057 {
 <a name="l00058"></a>00058 <span class="keyword">typename</span> point_type&lt;G&gt;::type point_type;
 <a name="l00059"></a>00059
-<a name="l00060"></a>00060 <a class="code" href="namespaceggl.html#173003fecd63871d3a6aee07f4ba7011" title="Copies coordinates from source to destination point.">copy_coordinates</a>(point, point_type);
+<a name="l00060"></a>00060 <a class="code" href="namespaceggl.html#f8cee6dd577bebfd1dbbe4cc503304d4" title="Copies coordinates from source to destination point.">copy_coordinates</a>(point, point_type);
 <a name="l00061"></a>00061 geometry.push_back(point_type);
 <a name="l00062"></a>00062 }
 <a name="l00063"></a>00063 };

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/as__range_8hpp.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/as__range_8hpp.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/as__range_8hpp.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -55,6 +55,9 @@
 
 <tr><td colspan="2"><br><h2>Functions</h2></td></tr>
 <tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Range , typename Geometry &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Range &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceggl.html#99e0a8eac282cd44fbdb1a47666ea084">ggl::as_range</a> (Geometry &amp;input)</td></tr>
+
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Range , typename Geometry &gt; </td></tr>
 <tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Range const &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__utility.html#g1868bde329b825c540572ac0a73e4f2b">ggl::as_range</a> (Geometry const &amp;input)</td></tr>
 
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Function getting either the range (ring, <a class="el" href="classggl_1_1linestring.html" title="A linestring (named so by OGC) is a collection (default a vector) of points.">linestring</a>) itself or the outer ring. <br></td></tr>

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/as__range_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/as__range_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/as__range_8hpp_source.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -52,78 +52,112 @@
 <a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_UTIL_AS_RANGE_HPP</span>
 <a name="l00011"></a>00011 <span class="preprocessor"></span>
 <a name="l00012"></a>00012 <span class="preprocessor">#include &lt;boost/type_traits.hpp&gt;</span>
-<a name="l00013"></a>00013
-<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
-<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>&gt;</span>
-<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;<a class="code" href="tag_8hpp.html">ggl/core/tag.hpp</a>&gt;</span>
-<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="core_2tags_8hpp.html">ggl/core/tags.hpp</a>&gt;</span>
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019 <span class="keyword">namespace </span>ggl {
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;boost/type_traits/remove_const.hpp&gt;</span>
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;<a class="code" href="core_2is__multi_8hpp.html">ggl/core/is_multi.hpp</a>&gt;</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>&gt;</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="tag_8hpp.html">ggl/core/tag.hpp</a>&gt;</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="core_2tags_8hpp.html">ggl/core/tags.hpp</a>&gt;</span>
 <a name="l00020"></a>00020
-<a name="l00021"></a>00021 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
-<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
-<a name="l00023"></a>00023 {
-<a name="l00024"></a>00024
-<a name="l00025"></a>00025 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> GeometryTag, <span class="keyword">typename</span> Geometry&gt;
-<a name="l00026"></a>00026 <span class="keyword">struct </span>as_range_type
-<a name="l00027"></a>00027 {
-<a name="l00028"></a>00028 <span class="keyword">typedef</span> Geometry type;
-<a name="l00029"></a>00029 };
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
-<a name="l00032"></a>00032 <span class="keyword">struct </span>as_range_type&lt;polygon_tag, Geometry&gt;
-<a name="l00033"></a>00033 {
-<a name="l00034"></a>00034 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type&lt;Geometry&gt;::type type;
-<a name="l00035"></a>00035 };
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038
-<a name="l00039"></a>00039 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> GeometryTag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Range&gt;
-<a name="l00040"></a>00040 <span class="keyword">struct </span><a class="code" href="group__utility.html#g1868bde329b825c540572ac0a73e4f2b" title="Function getting either the range (ring, linestring) itself or the outer ring.">as_range</a>
-<a name="l00041"></a>00041 {
-<a name="l00042"></a>00042 <span class="keyword">static</span> <span class="keyword">inline</span> Range <span class="keyword">const</span>&amp; <span class="keyword">get</span>(Geometry <span class="keyword">const</span>&amp; input)
-<a name="l00043"></a>00043 {
-<a name="l00044"></a>00044 <span class="keywordflow">return</span> input;
-<a name="l00045"></a>00045 }
-<a name="l00046"></a>00046 };
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Range&gt;
-<a name="l00049"></a>00049 <span class="keyword">struct </span><a class="code" href="group__utility.html#g1868bde329b825c540572ac0a73e4f2b" title="Function getting either the range (ring, linestring) itself or the outer ring.">as_range</a>&lt;polygon_tag, Geometry, Range&gt;
-<a name="l00050"></a>00050 {
-<a name="l00051"></a>00051 <span class="keyword">static</span> <span class="keyword">inline</span> Range <span class="keyword">const</span>&amp; <span class="keyword">get</span>(Geometry <span class="keyword">const</span>&amp; input)
-<a name="l00052"></a>00052 {
-<a name="l00053"></a>00053 <span class="keywordflow">return</span> <a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(input);
-<a name="l00054"></a>00054 }
-<a name="l00055"></a>00055 };
-<a name="l00056"></a>00056
-<a name="l00057"></a>00057 } <span class="comment">// namespace dispatch</span>
-<a name="l00058"></a>00058 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
-<a name="l00059"></a>00059 <span class="preprocessor"></span>
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>ggl {
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00025"></a>00025 {
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> GeometryTag, <span class="keywordtype">bool</span> IsMulti, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00028"></a>00028 <span class="keyword">struct </span>as_range_type
+<a name="l00029"></a>00029 {
+<a name="l00030"></a>00030 <span class="keyword">typedef</span> Geometry type;
+<a name="l00031"></a>00031 };
+<a name="l00032"></a>00032
+<a name="l00033"></a>00033
+<a name="l00034"></a>00034 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00035"></a>00035 <span class="keyword">struct </span>as_range_type&lt;polygon_tag, false, Geometry&gt;
+<a name="l00036"></a>00036 {
+<a name="l00037"></a>00037 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type&lt;Geometry&gt;::type type;
+<a name="l00038"></a>00038 };
+<a name="l00039"></a>00039
+<a name="l00040"></a>00040
+<a name="l00041"></a>00041
+<a name="l00042"></a>00042 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> GeometryTag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Range&gt;
+<a name="l00043"></a>00043 <span class="keyword">struct </span><a class="code" href="group__utility.html#g1868bde329b825c540572ac0a73e4f2b" title="Function getting either the range (ring, linestring) itself or the outer ring.">as_range</a>
+<a name="l00044"></a>00044 {
+<a name="l00045"></a>00045 <span class="keyword">static</span> <span class="keyword">inline</span> Range &amp; <span class="keyword">get</span>(Geometry &amp; input)
+<a name="l00046"></a>00046 {
+<a name="l00047"></a>00047 <span class="keywordflow">return</span> input;
+<a name="l00048"></a>00048 }
+<a name="l00049"></a>00049 };
+<a name="l00050"></a>00050
+<a name="l00051"></a>00051 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Range&gt;
+<a name="l00052"></a>00052 <span class="keyword">struct </span><a class="code" href="group__utility.html#g1868bde329b825c540572ac0a73e4f2b" title="Function getting either the range (ring, linestring) itself or the outer ring.">as_range</a>&lt;polygon_tag, Geometry, Range&gt;
+<a name="l00053"></a>00053 {
+<a name="l00054"></a>00054 <span class="keyword">static</span> <span class="keyword">inline</span> Range &amp; <span class="keyword">get</span>(Geometry &amp; input)
+<a name="l00055"></a>00055 {
+<a name="l00056"></a>00056 <span class="keywordflow">return</span> <a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(input);
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058 };
+<a name="l00059"></a>00059
 <a name="l00060"></a>00060
-<a name="l00066"></a>00066 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
-<a name="l00067"></a><a class="code" href="structggl_1_1as__range__type.html">00067</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1as__range__type.html" title="Meta-function utility returning either type itself, or outer ring.">as_range_type</a>
-<a name="l00068"></a>00068 {
-<a name="l00069"></a>00069 <span class="keyword">typedef</span> <span class="keyword">typename</span> dispatch::as_range_type
-<a name="l00070"></a>00070 &lt;
-<a name="l00071"></a>00071 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
-<a name="l00072"></a>00072 Geometry
-<a name="l00073"></a><a class="code" href="structggl_1_1as__range__type.html#0ca47e830e61d4f6c0b33c5e8eaa5c4e">00073</a> &gt;<a class="code" href="structggl_1_1as__range__type.html#0ca47e830e61d4f6c0b33c5e8eaa5c4e">::type</a> <a class="code" href="structggl_1_1as__range__type.html#0ca47e830e61d4f6c0b33c5e8eaa5c4e">type</a>;
-<a name="l00074"></a>00074 };
-<a name="l00075"></a>00075
-<a name="l00082"></a>00082 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Geometry&gt;
-<a name="l00083"></a><a class="code" href="group__utility.html#g1868bde329b825c540572ac0a73e4f2b">00083</a> <span class="keyword">inline</span> Range <span class="keyword">const</span>&amp; <a class="code" href="group__utility.html#g1868bde329b825c540572ac0a73e4f2b" title="Function getting either the range (ring, linestring) itself or the outer ring.">as_range</a>(Geometry <span class="keyword">const</span>&amp; input)
-<a name="l00084"></a>00084 {
-<a name="l00085"></a>00085 <span class="keywordflow">return</span> <a class="code" href="group__utility.html#g1868bde329b825c540572ac0a73e4f2b" title="Function getting either the range (ring, linestring) itself or the outer ring.">dispatch::as_range</a>
-<a name="l00086"></a>00086 &lt;
-<a name="l00087"></a>00087 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
-<a name="l00088"></a>00088 Geometry,
-<a name="l00089"></a>00089 Range
-<a name="l00090"></a>00090 &gt;<a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">::get</a>(input);
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 } <span class="comment">// namespace ggl</span>
-<a name="l00094"></a>00094
-<a name="l00095"></a>00095 <span class="preprocessor">#endif // GGL_UTIL_AS_RANGE_HPP</span>
+<a name="l00061"></a>00061 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> GeometryTag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Range&gt;
+<a name="l00062"></a>00062 <span class="keyword">struct </span>as_range_const
+<a name="l00063"></a>00063 {
+<a name="l00064"></a>00064 <span class="keyword">static</span> <span class="keyword">inline</span> Range <span class="keyword">const</span>&amp; <span class="keyword">get</span>(Geometry <span class="keyword">const</span>&amp; input)
+<a name="l00065"></a>00065 {
+<a name="l00066"></a>00066 <span class="keywordflow">return</span> input;
+<a name="l00067"></a>00067 }
+<a name="l00068"></a>00068 };
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Range&gt;
+<a name="l00071"></a>00071 <span class="keyword">struct </span>as_range_const&lt;polygon_tag, Geometry, Range&gt;
+<a name="l00072"></a>00072 {
+<a name="l00073"></a>00073 <span class="keyword">static</span> <span class="keyword">inline</span> Range <span class="keyword">const</span>&amp; <span class="keyword">get</span>(Geometry <span class="keyword">const</span>&amp; input)
+<a name="l00074"></a>00074 {
+<a name="l00075"></a>00075 <span class="keywordflow">return</span> <a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(input);
+<a name="l00076"></a>00076 }
+<a name="l00077"></a>00077 };
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 } <span class="comment">// namespace dispatch</span>
+<a name="l00080"></a>00080 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00081"></a>00081 <span class="preprocessor"></span>
+<a name="l00082"></a>00082
+<a name="l00088"></a>00088 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00089"></a><a class="code" href="structggl_1_1as__range__type.html">00089</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1as__range__type.html" title="Meta-function utility returning either type itself, or outer ring.">as_range_type</a>
+<a name="l00090"></a>00090 {
+<a name="l00091"></a>00091 <span class="keyword">typedef</span> <span class="keyword">typename</span> dispatch::as_range_type
+<a name="l00092"></a>00092 &lt;
+<a name="l00093"></a>00093 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00094"></a>00094 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &amp;quot;true&amp;quot; for multi geometries (multi_point, etc).">is_multi&lt;Geometry&gt;::type::value</a>,
+<a name="l00095"></a>00095 Geometry
+<a name="l00096"></a><a class="code" href="structggl_1_1as__range__type.html#2d2dc7b2cf9bc92752f111975eb47ac8">00096</a> &gt;<a class="code" href="structggl_1_1as__range__type.html#2d2dc7b2cf9bc92752f111975eb47ac8">::type</a> <a class="code" href="structggl_1_1as__range__type.html#2d2dc7b2cf9bc92752f111975eb47ac8">type</a>;
+<a name="l00097"></a>00097 };
+<a name="l00098"></a>00098
+<a name="l00105"></a>00105 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00106"></a><a class="code" href="group__utility.html#g1868bde329b825c540572ac0a73e4f2b">00106</a> <span class="keyword">inline</span> Range <span class="keyword">const</span>&amp; <a class="code" href="group__utility.html#g1868bde329b825c540572ac0a73e4f2b" title="Function getting either the range (ring, linestring) itself or the outer ring.">as_range</a>(Geometry <span class="keyword">const</span>&amp; input)
+<a name="l00107"></a>00107 {
+<a name="l00108"></a>00108 <span class="keywordflow">return</span> dispatch::as_range_const
+<a name="l00109"></a>00109 &lt;
+<a name="l00110"></a>00110 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00111"></a>00111 Geometry,
+<a name="l00112"></a>00112 Range
+<a name="l00113"></a>00113 &gt;<a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">::get</a>(input);
+<a name="l00114"></a>00114 }
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00117"></a><a class="code" href="namespaceggl.html#99e0a8eac282cd44fbdb1a47666ea084">00117</a> <span class="keyword">inline</span> Range&amp; <a class="code" href="group__utility.html#g1868bde329b825c540572ac0a73e4f2b" title="Function getting either the range (ring, linestring) itself or the outer ring.">as_range</a>(Geometry&amp; input)
+<a name="l00118"></a>00118 {
+<a name="l00119"></a>00119 <span class="keywordflow">return</span> <a class="code" href="group__utility.html#g1868bde329b825c540572ac0a73e4f2b" title="Function getting either the range (ring, linestring) itself or the outer ring.">dispatch::as_range</a>
+<a name="l00120"></a>00120 &lt;
+<a name="l00121"></a>00121 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00122"></a>00122 Geometry,
+<a name="l00123"></a>00123 Range
+<a name="l00124"></a>00124 &gt;<a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">::get</a>(input);
+<a name="l00125"></a>00125 }
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127 } <span class="comment">// namespace ggl</span>
+<a name="l00128"></a>00128
+<a name="l00129"></a>00129 <span class="preprocessor">#endif // GGL_UTIL_AS_RANGE_HPP</span>
 </pre></div></div>
 <hr size="1">
 <table width="100%">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign_8hpp.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign_8hpp.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign_8hpp.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -66,10 +66,18 @@
 <tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__access.html#ge58b5c7b493d0112202dc139af200c73">ggl::assign</a> (G &amp;geometry, T const &amp;c1, T const &amp;c2)</td></tr>
 
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">assign two values to a 2D <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename B , typename P &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceggl.html#a658e33964ece2cc6e48c622595ad271">ggl::assign_box_corners</a> (B const &amp;box, P &amp;lower_left, P &amp;lower_right, P &amp;upper_left, P &amp;upper_right)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assign the 4 points of a 2D <a class="el" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a>. <br></td></tr>
 <tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G &gt; </td></tr>
 <tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__access.html#gaa27514a7d1c16133d28dd5601cd32fd">ggl::assign_inverse</a> (G &amp;geometry)</td></tr>
 
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">assign to a <a class="el" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a> inverse infinite <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;std::size_t Corner, typename Box , typename Point &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceggl.html#a79ece7bbc75c938c5a01eadd2522156">ggl::assign_point_to_box</a> (Point const &amp;point, Box &amp;box)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assign a <a class="el" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a> with the value of a <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a>. <br></td></tr>
 <tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G &gt; </td></tr>
 <tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__access.html#g2fba6ded1fb6ecc7dba897b55c70f2d0">ggl::assign_zero</a> (G &amp;geometry)</td></tr>
 

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign_8hpp_source.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -180,213 +180,294 @@
 <a name="l00168"></a>00168
 <a name="l00169"></a>00169
 <a name="l00170"></a>00170
-<a name="l00171"></a>00171 }} <span class="comment">// namespace detail::assign</span>
-<a name="l00172"></a>00172 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
-<a name="l00173"></a>00173 <span class="preprocessor"></span>
-<a name="l00174"></a>00174 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
-<a name="l00175"></a>00175 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
-<a name="l00176"></a>00176 {
+<a name="l00171"></a>00171 <span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> C1, std::<span class="keywordtype">size_t</span> C2, <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>&gt;
+<a name="l00172"></a>00172 <span class="keyword">inline</span> <span class="keywordtype">void</span> assign_box_2d_corner(Box <span class="keyword">const</span>&amp; box, Point&amp; point)
+<a name="l00173"></a>00173 {
+<a name="l00174"></a>00174 <span class="comment">// Be sure both are 2-Dimensional</span>
+<a name="l00175"></a>00175 assert_dimension&lt;Box, 2&gt;();
+<a name="l00176"></a>00176 assert_dimension&lt;Point, 2&gt;();
 <a name="l00177"></a>00177
-<a name="l00178"></a>00178 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> GeometryTag, <span class="keyword">typename</span> Geometry, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
-<a name="l00179"></a>00179 <span class="keyword">struct </span><a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a> {};
+<a name="l00178"></a>00178 <span class="comment">// Copy coordinates</span>
+<a name="l00179"></a>00179 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;Point&gt;::type coordinate_type;
 <a name="l00180"></a>00180
-<a name="l00181"></a>00181 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P&gt;
-<a name="l00182"></a>00182 <span class="keyword">struct </span><a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>&lt;point_tag, P, 2&gt;
-<a name="l00183"></a>00183 {
-<a name="l00184"></a>00184 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;P&gt;::type coordinate_type;
+<a name="l00181"></a>00181 set&lt;0&gt;(point, boost::numeric_cast&lt;coordinate_type&gt;(get&lt;C1, 0&gt;(box)));
+<a name="l00182"></a>00182 set&lt;1&gt;(point, boost::numeric_cast&lt;coordinate_type&gt;(get&lt;C2, 1&gt;(box)));
+<a name="l00183"></a>00183 }
+<a name="l00184"></a>00184
 <a name="l00185"></a>00185
-<a name="l00186"></a>00186 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00187"></a>00187 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(P&amp; point, T <span class="keyword">const</span>&amp; c1, T <span class="keyword">const</span>&amp; c2)
-<a name="l00188"></a>00188 {
-<a name="l00189"></a>00189 set&lt;0&gt;(point, boost::numeric_cast&lt;coordinate_type&gt;(c1));
-<a name="l00190"></a>00190 set&lt;1&gt;(point, boost::numeric_cast&lt;coordinate_type&gt;(c2));
-<a name="l00191"></a>00191 }
-<a name="l00192"></a>00192 };
-<a name="l00193"></a>00193
-<a name="l00194"></a>00194 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P&gt;
-<a name="l00195"></a>00195 <span class="keyword">struct </span><a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>&lt;point_tag, P, 3&gt;
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187
+<a name="l00188"></a>00188
+<a name="l00189"></a>00189 <span class="keyword">template</span>
+<a name="l00190"></a>00190 &lt;
+<a name="l00191"></a>00191 <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Point,
+<a name="l00192"></a>00192 std::size_t Corner,
+<a name="l00193"></a>00193 std::size_t Dimension, std::size_t Count
+<a name="l00194"></a>00194 &gt;
+<a name="l00195"></a>00195 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#a79ece7bbc75c938c5a01eadd2522156" title="Assign a box with the value of a point.">assign_point_to_box</a>
 <a name="l00196"></a>00196 {
-<a name="l00197"></a>00197 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;P&gt;::type coordinate_type;
+<a name="l00197"></a>00197 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;Box&gt;::type coordinate_type;
 <a name="l00198"></a>00198
-<a name="l00199"></a>00199 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00200"></a>00200 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(P&amp; point, T <span class="keyword">const</span>&amp; c1, T <span class="keyword">const</span>&amp; c2, T <span class="keyword">const</span>&amp; c3)
-<a name="l00201"></a>00201 {
-<a name="l00202"></a>00202 set&lt;0&gt;(point, boost::numeric_cast&lt;coordinate_type&gt;(c1));
-<a name="l00203"></a>00203 set&lt;1&gt;(point, boost::numeric_cast&lt;coordinate_type&gt;(c2));
-<a name="l00204"></a>00204 set&lt;2&gt;(point, boost::numeric_cast&lt;coordinate_type&gt;(c3));
-<a name="l00205"></a>00205 }
-<a name="l00206"></a>00206 };
-<a name="l00207"></a>00207
-<a name="l00208"></a>00208 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B&gt;
-<a name="l00209"></a>00209 <span class="keyword">struct </span><a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>&lt;box_tag, B, 2&gt;
-<a name="l00210"></a>00210 {
-<a name="l00211"></a>00211 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html#b723a443a97f7c4ed7c47ac96d7e29ee">coordinate_type&lt;B&gt;::type</a> coordinate_type;
-<a name="l00212"></a>00212
-<a name="l00213"></a>00213 <span class="comment">// Here we assign 4 coordinates to a box.</span>
-<a name="l00214"></a>00214 <span class="comment">// -&gt; Most logical is: x1,y1,x2,y2</span>
-<a name="l00215"></a>00215 <span class="comment">// In case the user reverses x1/x2 or y1/y2, we could reverse them (THAT IS NOT IMPLEMENTED)</span>
-<a name="l00216"></a>00216
-<a name="l00217"></a>00217 <span class="comment">// Note also comment in util/assign_box_corner -&gt;</span>
-<a name="l00218"></a>00218 <span class="comment">// ("Most logical is LOWER, UPPER and sub-order LEFT, RIGHT")</span>
-<a name="l00219"></a>00219 <span class="comment">// (That is assigning 4 points from a box. So lower-left, lower-right, upper-left, upper-right)</span>
-<a name="l00220"></a>00220 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00221"></a>00221 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(B&amp; box, T <span class="keyword">const</span>&amp; x1, T <span class="keyword">const</span>&amp; y1, T <span class="keyword">const</span>&amp; x2, T <span class="keyword">const</span>&amp; y2)
-<a name="l00222"></a>00222 {
-<a name="l00223"></a>00223 set&lt;min_corner, 0&gt;(box, boost::numeric_cast&lt;coordinate_type&gt;(x1));
-<a name="l00224"></a>00224 set&lt;min_corner, 1&gt;(box, boost::numeric_cast&lt;coordinate_type&gt;(y1));
-<a name="l00225"></a>00225 set&lt;max_corner, 0&gt;(box, boost::numeric_cast&lt;coordinate_type&gt;(x2));
-<a name="l00226"></a>00226 set&lt;max_corner, 1&gt;(box, boost::numeric_cast&lt;coordinate_type&gt;(y2));
-<a name="l00227"></a>00227 }
-<a name="l00228"></a>00228 };
-<a name="l00229"></a>00229
-<a name="l00230"></a>00230
-<a name="l00231"></a>00231
-<a name="l00232"></a>00232
-<a name="l00233"></a>00233
-<a name="l00234"></a>00234 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> S&gt;
-<a name="l00235"></a>00235 <span class="keyword">struct </span><a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>&lt;nsphere_tag, S, 2&gt;
-<a name="l00236"></a>00236 {
-<a name="l00237"></a>00237 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;S&gt;::type coordinate_type;
-<a name="l00238"></a>00238 <span class="keyword">typedef</span> <span class="keyword">typename</span> radius_type&lt;S&gt;::type radius_type;
-<a name="l00239"></a>00239
-<a name="l00241"></a>00241 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00242"></a>00242 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(S&amp; sphercle, T <span class="keyword">const</span>&amp; c1, T <span class="keyword">const</span>&amp; c2)
-<a name="l00243"></a>00243 {
-<a name="l00244"></a>00244 set&lt;0&gt;(sphercle, boost::numeric_cast&lt;coordinate_type&gt;(c1));
-<a name="l00245"></a>00245 set&lt;1&gt;(sphercle, boost::numeric_cast&lt;coordinate_type&gt;(c2));
-<a name="l00246"></a>00246 }
-<a name="l00247"></a>00247
-<a name="l00248"></a>00248 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> R&gt;
-<a name="l00249"></a>00249 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(S&amp; sphercle, T <span class="keyword">const</span>&amp; c1,
-<a name="l00250"></a>00250 T <span class="keyword">const</span>&amp; c2, R <span class="keyword">const</span>&amp; radius)
-<a name="l00251"></a>00251 {
-<a name="l00252"></a>00252 set&lt;0&gt;(sphercle, boost::numeric_cast&lt;coordinate_type&gt;(c1));
-<a name="l00253"></a>00253 set&lt;1&gt;(sphercle, boost::numeric_cast&lt;coordinate_type&gt;(c2));
-<a name="l00254"></a>00254 set_radius&lt;0&gt;(sphercle, boost::numeric_cast&lt;radius_type&gt;(radius));
-<a name="l00255"></a>00255 }
-<a name="l00256"></a>00256 };
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> S&gt;
-<a name="l00259"></a>00259 <span class="keyword">struct </span><a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>&lt;nsphere_tag, S, 3&gt;
-<a name="l00260"></a>00260 {
-<a name="l00261"></a>00261 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;S&gt;::type coordinate_type;
-<a name="l00262"></a>00262 <span class="keyword">typedef</span> <span class="keyword">typename</span> radius_type&lt;S&gt;::type radius_type;
-<a name="l00263"></a>00263
-<a name="l00265"></a>00265 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00266"></a>00266 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(S&amp; sphercle, T <span class="keyword">const</span>&amp; c1, T <span class="keyword">const</span>&amp; c2, T <span class="keyword">const</span>&amp; c3)
-<a name="l00267"></a>00267 {
-<a name="l00268"></a>00268 set&lt;0&gt;(sphercle, boost::numeric_cast&lt;coordinate_type&gt;(c1));
-<a name="l00269"></a>00269 set&lt;1&gt;(sphercle, boost::numeric_cast&lt;coordinate_type&gt;(c2));
-<a name="l00270"></a>00270 set&lt;2&gt;(sphercle, boost::numeric_cast&lt;coordinate_type&gt;(c3));
-<a name="l00271"></a>00271 }
-<a name="l00272"></a>00272
-<a name="l00274"></a>00274 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> R&gt;
-<a name="l00275"></a>00275 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(S&amp; sphercle, T <span class="keyword">const</span>&amp; c1,
-<a name="l00276"></a>00276 T <span class="keyword">const</span>&amp; c2, T <span class="keyword">const</span>&amp; c3, R <span class="keyword">const</span>&amp; radius)
-<a name="l00277"></a>00277 {
-<a name="l00278"></a>00278
-<a name="l00279"></a>00279 set&lt;0&gt;(sphercle, boost::numeric_cast&lt;coordinate_type&gt;(c1));
-<a name="l00280"></a>00280 set&lt;1&gt;(sphercle, boost::numeric_cast&lt;coordinate_type&gt;(c2));
-<a name="l00281"></a>00281 set&lt;2&gt;(sphercle, boost::numeric_cast&lt;coordinate_type&gt;(c3));
-<a name="l00282"></a>00282 set_radius&lt;0&gt;(sphercle, boost::numeric_cast&lt;radius_type&gt;(radius));
-<a name="l00283"></a>00283 }
-<a name="l00284"></a>00284
-<a name="l00285"></a>00285 };
-<a name="l00286"></a>00286
+<a name="l00199"></a>00199 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Point <span class="keyword">const</span>&amp; point, Box&amp; box)
+<a name="l00200"></a>00200 {
+<a name="l00201"></a>00201 ggl::set&lt;Corner, Dimension&gt;
+<a name="l00202"></a>00202 (
+<a name="l00203"></a>00203 box,
+<a name="l00204"></a>00204 boost::numeric_cast&lt;coordinate_type&gt;(ggl::get&lt;Dimension&gt;(point))
+<a name="l00205"></a>00205 );
+<a name="l00206"></a>00206
+<a name="l00207"></a>00207 <a class="code" href="namespaceggl.html#a79ece7bbc75c938c5a01eadd2522156" title="Assign a box with the value of a point.">assign_point_to_box</a>
+<a name="l00208"></a>00208 &lt;
+<a name="l00209"></a>00209 Box, Point, Corner, Dimension + 1, Count
+<a name="l00210"></a>00210 &gt;::apply(point, box);
+<a name="l00211"></a>00211 }
+<a name="l00212"></a>00212 };
+<a name="l00213"></a>00213
+<a name="l00214"></a>00214 <span class="keyword">template</span>
+<a name="l00215"></a>00215 &lt;
+<a name="l00216"></a>00216 <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Point,
+<a name="l00217"></a>00217 std::size_t Corner,
+<a name="l00218"></a>00218 std::size_t Count
+<a name="l00219"></a>00219 &gt;
+<a name="l00220"></a>00220 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#a79ece7bbc75c938c5a01eadd2522156" title="Assign a box with the value of a point.">assign_point_to_box</a>&lt;Box, Point, Corner, Count, Count&gt;
+<a name="l00221"></a>00221 {
+<a name="l00222"></a>00222 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Point <span class="keyword">const</span>&amp; point, Box&amp; box)
+<a name="l00223"></a>00223 {
+<a name="l00224"></a>00224 }
+<a name="l00225"></a>00225 };
+<a name="l00226"></a>00226
+<a name="l00227"></a>00227
+<a name="l00228"></a>00228
+<a name="l00229"></a>00229 }} <span class="comment">// namespace detail::assign</span>
+<a name="l00230"></a>00230 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00231"></a>00231 <span class="preprocessor"></span>
+<a name="l00232"></a>00232 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00233"></a>00233 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00234"></a>00234 {
+<a name="l00235"></a>00235
+<a name="l00236"></a>00236 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> GeometryTag, <span class="keyword">typename</span> Geometry, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00237"></a>00237 <span class="keyword">struct </span><a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a> {};
+<a name="l00238"></a>00238
+<a name="l00239"></a>00239 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P&gt;
+<a name="l00240"></a>00240 <span class="keyword">struct </span><a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>&lt;point_tag, P, 2&gt;
+<a name="l00241"></a>00241 {
+<a name="l00242"></a>00242 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;P&gt;::type coordinate_type;
+<a name="l00243"></a>00243
+<a name="l00244"></a>00244 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00245"></a>00245 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(P&amp; point, T <span class="keyword">const</span>&amp; c1, T <span class="keyword">const</span>&amp; c2)
+<a name="l00246"></a>00246 {
+<a name="l00247"></a>00247 set&lt;0&gt;(point, boost::numeric_cast&lt;coordinate_type&gt;(c1));
+<a name="l00248"></a>00248 set&lt;1&gt;(point, boost::numeric_cast&lt;coordinate_type&gt;(c2));
+<a name="l00249"></a>00249 }
+<a name="l00250"></a>00250 };
+<a name="l00251"></a>00251
+<a name="l00252"></a>00252 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P&gt;
+<a name="l00253"></a>00253 <span class="keyword">struct </span><a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>&lt;point_tag, P, 3&gt;
+<a name="l00254"></a>00254 {
+<a name="l00255"></a>00255 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;P&gt;::type coordinate_type;
+<a name="l00256"></a>00256
+<a name="l00257"></a>00257 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00258"></a>00258 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(P&amp; point, T <span class="keyword">const</span>&amp; c1, T <span class="keyword">const</span>&amp; c2, T <span class="keyword">const</span>&amp; c3)
+<a name="l00259"></a>00259 {
+<a name="l00260"></a>00260 set&lt;0&gt;(point, boost::numeric_cast&lt;coordinate_type&gt;(c1));
+<a name="l00261"></a>00261 set&lt;1&gt;(point, boost::numeric_cast&lt;coordinate_type&gt;(c2));
+<a name="l00262"></a>00262 set&lt;2&gt;(point, boost::numeric_cast&lt;coordinate_type&gt;(c3));
+<a name="l00263"></a>00263 }
+<a name="l00264"></a>00264 };
+<a name="l00265"></a>00265
+<a name="l00266"></a>00266 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B&gt;
+<a name="l00267"></a>00267 <span class="keyword">struct </span><a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>&lt;box_tag, B, 2&gt;
+<a name="l00268"></a>00268 {
+<a name="l00269"></a>00269 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html#b723a443a97f7c4ed7c47ac96d7e29ee">coordinate_type&lt;B&gt;::type</a> coordinate_type;
+<a name="l00270"></a>00270
+<a name="l00271"></a>00271 <span class="comment">// Here we assign 4 coordinates to a box.</span>
+<a name="l00272"></a>00272 <span class="comment">// -&gt; Most logical is: x1,y1,x2,y2</span>
+<a name="l00273"></a>00273 <span class="comment">// In case the user reverses x1/x2 or y1/y2, we could reverse them (THAT IS NOT IMPLEMENTED)</span>
+<a name="l00274"></a>00274
+<a name="l00275"></a>00275 <span class="comment">// Note also comment in util/assign_box_corner -&gt;</span>
+<a name="l00276"></a>00276 <span class="comment">// ("Most logical is LOWER, UPPER and sub-order LEFT, RIGHT")</span>
+<a name="l00277"></a>00277 <span class="comment">// (That is assigning 4 points from a box. So lower-left, lower-right, upper-left, upper-right)</span>
+<a name="l00278"></a>00278 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00279"></a>00279 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(B&amp; box, T <span class="keyword">const</span>&amp; x1, T <span class="keyword">const</span>&amp; y1, T <span class="keyword">const</span>&amp; x2, T <span class="keyword">const</span>&amp; y2)
+<a name="l00280"></a>00280 {
+<a name="l00281"></a>00281 set&lt;min_corner, 0&gt;(box, boost::numeric_cast&lt;coordinate_type&gt;(x1));
+<a name="l00282"></a>00282 set&lt;min_corner, 1&gt;(box, boost::numeric_cast&lt;coordinate_type&gt;(y1));
+<a name="l00283"></a>00283 set&lt;max_corner, 0&gt;(box, boost::numeric_cast&lt;coordinate_type&gt;(x2));
+<a name="l00284"></a>00284 set&lt;max_corner, 1&gt;(box, boost::numeric_cast&lt;coordinate_type&gt;(y2));
+<a name="l00285"></a>00285 }
+<a name="l00286"></a>00286 };
 <a name="l00287"></a>00287
-<a name="l00288"></a>00288 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> GeometryTag, <span class="keyword">typename</span> Geometry&gt;
-<a name="l00289"></a>00289 <span class="keyword">struct </span><a class="code" href="group__access.html#g2fba6ded1fb6ecc7dba897b55c70f2d0" title="assign zero values to a box, point">assign_zero</a> {};
+<a name="l00288"></a>00288
+<a name="l00289"></a>00289
 <a name="l00290"></a>00290
 <a name="l00291"></a>00291
-<a name="l00292"></a>00292 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>&gt;
-<a name="l00293"></a>00293 <span class="keyword">struct </span><a class="code" href="group__access.html#g2fba6ded1fb6ecc7dba897b55c70f2d0" title="assign zero values to a box, point">assign_zero</a>&lt;point_tag, Point&gt;
-<a name="l00294"></a>00294 : detail::<a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>::assign_zero_point&lt;Point&gt;
-<a name="l00295"></a>00295 {};
-<a name="l00296"></a>00296
-<a name="l00297"></a>00297 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box&gt;
-<a name="l00298"></a>00298 <span class="keyword">struct </span><a class="code" href="group__access.html#g2fba6ded1fb6ecc7dba897b55c70f2d0" title="assign zero values to a box, point">assign_zero</a>&lt;box_tag, Box&gt;
-<a name="l00299"></a>00299 : detail::<a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>::assign_zero_box&lt;Box&gt;
-<a name="l00300"></a>00300 {};
-<a name="l00301"></a>00301
-<a name="l00302"></a>00302
-<a name="l00303"></a>00303 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> GeometryTag, <span class="keyword">typename</span> Geometry&gt;
-<a name="l00304"></a>00304 <span class="keyword">struct </span><a class="code" href="group__access.html#gaa27514a7d1c16133d28dd5601cd32fd" title="assign to a box inverse infinite">assign_inverse</a> {};
+<a name="l00292"></a>00292 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> S&gt;
+<a name="l00293"></a>00293 <span class="keyword">struct </span><a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>&lt;nsphere_tag, S, 2&gt;
+<a name="l00294"></a>00294 {
+<a name="l00295"></a>00295 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;S&gt;::type coordinate_type;
+<a name="l00296"></a>00296 <span class="keyword">typedef</span> <span class="keyword">typename</span> radius_type&lt;S&gt;::type radius_type;
+<a name="l00297"></a>00297
+<a name="l00299"></a>00299 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00300"></a>00300 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(S&amp; sphercle, T <span class="keyword">const</span>&amp; c1, T <span class="keyword">const</span>&amp; c2)
+<a name="l00301"></a>00301 {
+<a name="l00302"></a>00302 set&lt;0&gt;(sphercle, boost::numeric_cast&lt;coordinate_type&gt;(c1));
+<a name="l00303"></a>00303 set&lt;1&gt;(sphercle, boost::numeric_cast&lt;coordinate_type&gt;(c2));
+<a name="l00304"></a>00304 }
 <a name="l00305"></a>00305
-<a name="l00306"></a>00306 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box&gt;
-<a name="l00307"></a>00307 <span class="keyword">struct </span><a class="code" href="group__access.html#gaa27514a7d1c16133d28dd5601cd32fd" title="assign to a box inverse infinite">assign_inverse</a>&lt;box_tag, Box&gt;
-<a name="l00308"></a>00308 : detail::<a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>::assign_inverse_box&lt;Box&gt;
-<a name="l00309"></a>00309 {};
-<a name="l00310"></a>00310
-<a name="l00311"></a>00311
-<a name="l00312"></a>00312 } <span class="comment">// namespace dispatch</span>
-<a name="l00313"></a>00313 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
-<a name="l00314"></a>00314 <span class="preprocessor"></span>
+<a name="l00306"></a>00306 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> R&gt;
+<a name="l00307"></a>00307 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(S&amp; sphercle, T <span class="keyword">const</span>&amp; c1,
+<a name="l00308"></a>00308 T <span class="keyword">const</span>&amp; c2, R <span class="keyword">const</span>&amp; radius)
+<a name="l00309"></a>00309 {
+<a name="l00310"></a>00310 set&lt;0&gt;(sphercle, boost::numeric_cast&lt;coordinate_type&gt;(c1));
+<a name="l00311"></a>00311 set&lt;1&gt;(sphercle, boost::numeric_cast&lt;coordinate_type&gt;(c2));
+<a name="l00312"></a>00312 set_radius&lt;0&gt;(sphercle, boost::numeric_cast&lt;radius_type&gt;(radius));
+<a name="l00313"></a>00313 }
+<a name="l00314"></a>00314 };
 <a name="l00315"></a>00315
-<a name="l00320"></a>00320 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> T&gt;
-<a name="l00321"></a><a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73">00321</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>(G&amp; geometry, T <span class="keyword">const</span>&amp; c1, T <span class="keyword">const</span>&amp; c2)
-<a name="l00322"></a>00322 {
-<a name="l00323"></a>00323 <a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">dispatch::assign</a>
-<a name="l00324"></a>00324 &lt;
-<a name="l00325"></a>00325 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>,
-<a name="l00326"></a>00326 G,
-<a name="l00327"></a>00327 <a class="code" href="structggl_1_1dimension.html" title="Meta-function which defines coordinate dimensions, i.e. the number of axes of any...">ggl::dimension&lt;G&gt;::type::value</a>
-<a name="l00328"></a>00328 &gt;::apply(geometry, c1, c2);
-<a name="l00329"></a>00329 }
+<a name="l00316"></a>00316 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> S&gt;
+<a name="l00317"></a>00317 <span class="keyword">struct </span><a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>&lt;nsphere_tag, S, 3&gt;
+<a name="l00318"></a>00318 {
+<a name="l00319"></a>00319 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;S&gt;::type coordinate_type;
+<a name="l00320"></a>00320 <span class="keyword">typedef</span> <span class="keyword">typename</span> radius_type&lt;S&gt;::type radius_type;
+<a name="l00321"></a>00321
+<a name="l00323"></a>00323 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00324"></a>00324 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(S&amp; sphercle, T <span class="keyword">const</span>&amp; c1, T <span class="keyword">const</span>&amp; c2, T <span class="keyword">const</span>&amp; c3)
+<a name="l00325"></a>00325 {
+<a name="l00326"></a>00326 set&lt;0&gt;(sphercle, boost::numeric_cast&lt;coordinate_type&gt;(c1));
+<a name="l00327"></a>00327 set&lt;1&gt;(sphercle, boost::numeric_cast&lt;coordinate_type&gt;(c2));
+<a name="l00328"></a>00328 set&lt;2&gt;(sphercle, boost::numeric_cast&lt;coordinate_type&gt;(c3));
+<a name="l00329"></a>00329 }
 <a name="l00330"></a>00330
-<a name="l00335"></a>00335 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> T&gt;
-<a name="l00336"></a><a class="code" href="group__access.html#g4e53af2d63f19a7550b5fe0156efc433">00336</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>(G&amp; geometry, T <span class="keyword">const</span>&amp; c1, T <span class="keyword">const</span>&amp; c2, T <span class="keyword">const</span>&amp; c3)
-<a name="l00337"></a>00337 {
-<a name="l00338"></a>00338 <a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">dispatch::assign</a>
-<a name="l00339"></a>00339 &lt;
-<a name="l00340"></a>00340 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>,
-<a name="l00341"></a>00341 G,
-<a name="l00342"></a>00342 <a class="code" href="structggl_1_1dimension.html" title="Meta-function which defines coordinate dimensions, i.e. the number of axes of any...">ggl::dimension&lt;G&gt;::type::value</a>
-<a name="l00343"></a>00343 &gt;::apply(geometry, c1, c2, c3);
-<a name="l00344"></a>00344 }
+<a name="l00332"></a>00332 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> R&gt;
+<a name="l00333"></a>00333 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(S&amp; sphercle, T <span class="keyword">const</span>&amp; c1,
+<a name="l00334"></a>00334 T <span class="keyword">const</span>&amp; c2, T <span class="keyword">const</span>&amp; c3, R <span class="keyword">const</span>&amp; radius)
+<a name="l00335"></a>00335 {
+<a name="l00336"></a>00336
+<a name="l00337"></a>00337 set&lt;0&gt;(sphercle, boost::numeric_cast&lt;coordinate_type&gt;(c1));
+<a name="l00338"></a>00338 set&lt;1&gt;(sphercle, boost::numeric_cast&lt;coordinate_type&gt;(c2));
+<a name="l00339"></a>00339 set&lt;2&gt;(sphercle, boost::numeric_cast&lt;coordinate_type&gt;(c3));
+<a name="l00340"></a>00340 set_radius&lt;0&gt;(sphercle, boost::numeric_cast&lt;radius_type&gt;(radius));
+<a name="l00341"></a>00341 }
+<a name="l00342"></a>00342
+<a name="l00343"></a>00343 };
+<a name="l00344"></a>00344
 <a name="l00345"></a>00345
-<a name="l00350"></a>00350 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> T&gt;
-<a name="l00351"></a><a class="code" href="group__access.html#gc534d6dd298802a12265e7e9c1c25a01">00351</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>(G&amp; geometry, T <span class="keyword">const</span>&amp; c1, T <span class="keyword">const</span>&amp; c2, T <span class="keyword">const</span>&amp; c3, T <span class="keyword">const</span>&amp; c4)
-<a name="l00352"></a>00352 {
-<a name="l00353"></a>00353 <a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">dispatch::assign</a>
-<a name="l00354"></a>00354 &lt;
-<a name="l00355"></a>00355 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>,
-<a name="l00356"></a>00356 G,
-<a name="l00357"></a>00357 <a class="code" href="structggl_1_1dimension.html" title="Meta-function which defines coordinate dimensions, i.e. the number of axes of any...">ggl::dimension&lt;G&gt;::type::value</a>
-<a name="l00358"></a>00358 &gt;::apply(geometry, c1, c2, c3, c4);
-<a name="l00359"></a>00359 }
+<a name="l00346"></a>00346 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> GeometryTag, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00347"></a>00347 <span class="keyword">struct </span><a class="code" href="group__access.html#g2fba6ded1fb6ecc7dba897b55c70f2d0" title="assign zero values to a box, point">assign_zero</a> {};
+<a name="l00348"></a>00348
+<a name="l00349"></a>00349
+<a name="l00350"></a>00350 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>&gt;
+<a name="l00351"></a>00351 <span class="keyword">struct </span><a class="code" href="group__access.html#g2fba6ded1fb6ecc7dba897b55c70f2d0" title="assign zero values to a box, point">assign_zero</a>&lt;point_tag, Point&gt;
+<a name="l00352"></a>00352 : detail::<a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>::assign_zero_point&lt;Point&gt;
+<a name="l00353"></a>00353 {};
+<a name="l00354"></a>00354
+<a name="l00355"></a>00355 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box&gt;
+<a name="l00356"></a>00356 <span class="keyword">struct </span><a class="code" href="group__access.html#g2fba6ded1fb6ecc7dba897b55c70f2d0" title="assign zero values to a box, point">assign_zero</a>&lt;box_tag, Box&gt;
+<a name="l00357"></a>00357 : detail::<a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>::assign_zero_box&lt;Box&gt;
+<a name="l00358"></a>00358 {};
+<a name="l00359"></a>00359
 <a name="l00360"></a>00360
-<a name="l00361"></a>00361
-<a name="l00367"></a>00367 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> R&gt;
-<a name="l00368"></a><a class="code" href="group__access.html#ge87a43e061a27e450e01f00c228ed472">00368</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>(G&amp; geometry, R <span class="keyword">const</span>&amp; range)
-<a name="l00369"></a>00369 {
-<a name="l00370"></a>00370 <a class="code" href="group__access.html#g280e2b0e4bada6eac7b7370a4ded705f" title="Clears a linestring, linear ring or polygon (exterior+interiors) or multi*.">clear</a>(geometry);
-<a name="l00371"></a>00371 <a class="code" href="group__access.html#g8cfdebdb885a95bacb1305744f0d0d7c" title="Appends one or more points to a linestring, linear-ring, polygon, multi.">ggl::append</a>(geometry, range, -1, 0);
-<a name="l00372"></a>00372 }
+<a name="l00361"></a>00361 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> GeometryTag, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00362"></a>00362 <span class="keyword">struct </span><a class="code" href="group__access.html#gaa27514a7d1c16133d28dd5601cd32fd" title="assign to a box inverse infinite">assign_inverse</a> {};
+<a name="l00363"></a>00363
+<a name="l00364"></a>00364 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box&gt;
+<a name="l00365"></a>00365 <span class="keyword">struct </span><a class="code" href="group__access.html#gaa27514a7d1c16133d28dd5601cd32fd" title="assign to a box inverse infinite">assign_inverse</a>&lt;box_tag, Box&gt;
+<a name="l00366"></a>00366 : detail::<a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>::assign_inverse_box&lt;Box&gt;
+<a name="l00367"></a>00367 {};
+<a name="l00368"></a>00368
+<a name="l00369"></a>00369
+<a name="l00370"></a>00370 } <span class="comment">// namespace dispatch</span>
+<a name="l00371"></a>00371 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00372"></a>00372 <span class="preprocessor"></span>
 <a name="l00373"></a>00373
-<a name="l00374"></a>00374
-<a name="l00382"></a>00382 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G&gt;
-<a name="l00383"></a><a class="code" href="group__access.html#gaa27514a7d1c16133d28dd5601cd32fd">00383</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__access.html#gaa27514a7d1c16133d28dd5601cd32fd" title="assign to a box inverse infinite">assign_inverse</a>(G&amp; geometry)
-<a name="l00384"></a>00384 {
-<a name="l00385"></a>00385 <a class="code" href="group__access.html#gaa27514a7d1c16133d28dd5601cd32fd" title="assign to a box inverse infinite">dispatch::assign_inverse</a>
-<a name="l00386"></a>00386 &lt;
-<a name="l00387"></a>00387 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>,
-<a name="l00388"></a>00388 G
-<a name="l00389"></a>00389 &gt;::apply(geometry);
-<a name="l00390"></a>00390 }
-<a name="l00391"></a>00391
-<a name="l00398"></a>00398 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G&gt;
-<a name="l00399"></a><a class="code" href="group__access.html#g2fba6ded1fb6ecc7dba897b55c70f2d0">00399</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__access.html#g2fba6ded1fb6ecc7dba897b55c70f2d0" title="assign zero values to a box, point">assign_zero</a>(G&amp; geometry)
-<a name="l00400"></a>00400 {
-<a name="l00401"></a>00401 <a class="code" href="group__access.html#g2fba6ded1fb6ecc7dba897b55c70f2d0" title="assign zero values to a box, point">dispatch::assign_zero</a>
-<a name="l00402"></a>00402 &lt;
-<a name="l00403"></a>00403 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>,
-<a name="l00404"></a>00404 G
-<a name="l00405"></a>00405 &gt;::apply(geometry);
-<a name="l00406"></a>00406 }
-<a name="l00407"></a>00407
-<a name="l00408"></a>00408 } <span class="comment">// namespace ggl</span>
-<a name="l00409"></a>00409
-<a name="l00410"></a>00410 <span class="preprocessor">#endif // GGL_ALGORITHMS_ASSIGN_HPP</span>
+<a name="l00378"></a>00378 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> T&gt;
+<a name="l00379"></a><a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73">00379</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>(G&amp; geometry, T <span class="keyword">const</span>&amp; c1, T <span class="keyword">const</span>&amp; c2)
+<a name="l00380"></a>00380 {
+<a name="l00381"></a>00381 <a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">dispatch::assign</a>
+<a name="l00382"></a>00382 &lt;
+<a name="l00383"></a>00383 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>,
+<a name="l00384"></a>00384 G,
+<a name="l00385"></a>00385 <a class="code" href="structggl_1_1dimension.html" title="Meta-function which defines coordinate dimensions, i.e. the number of axes of any...">ggl::dimension&lt;G&gt;::type::value</a>
+<a name="l00386"></a>00386 &gt;::apply(geometry, c1, c2);
+<a name="l00387"></a>00387 }
+<a name="l00388"></a>00388
+<a name="l00393"></a>00393 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> T&gt;
+<a name="l00394"></a><a class="code" href="group__access.html#g4e53af2d63f19a7550b5fe0156efc433">00394</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>(G&amp; geometry, T <span class="keyword">const</span>&amp; c1, T <span class="keyword">const</span>&amp; c2, T <span class="keyword">const</span>&amp; c3)
+<a name="l00395"></a>00395 {
+<a name="l00396"></a>00396 <a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">dispatch::assign</a>
+<a name="l00397"></a>00397 &lt;
+<a name="l00398"></a>00398 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>,
+<a name="l00399"></a>00399 G,
+<a name="l00400"></a>00400 <a class="code" href="structggl_1_1dimension.html" title="Meta-function which defines coordinate dimensions, i.e. the number of axes of any...">ggl::dimension&lt;G&gt;::type::value</a>
+<a name="l00401"></a>00401 &gt;::apply(geometry, c1, c2, c3);
+<a name="l00402"></a>00402 }
+<a name="l00403"></a>00403
+<a name="l00408"></a>00408 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> T&gt;
+<a name="l00409"></a><a class="code" href="group__access.html#gc534d6dd298802a12265e7e9c1c25a01">00409</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>(G&amp; geometry, T <span class="keyword">const</span>&amp; c1, T <span class="keyword">const</span>&amp; c2, T <span class="keyword">const</span>&amp; c3, T <span class="keyword">const</span>&amp; c4)
+<a name="l00410"></a>00410 {
+<a name="l00411"></a>00411 <a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">dispatch::assign</a>
+<a name="l00412"></a>00412 &lt;
+<a name="l00413"></a>00413 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>,
+<a name="l00414"></a>00414 G,
+<a name="l00415"></a>00415 <a class="code" href="structggl_1_1dimension.html" title="Meta-function which defines coordinate dimensions, i.e. the number of axes of any...">ggl::dimension&lt;G&gt;::type::value</a>
+<a name="l00416"></a>00416 &gt;::apply(geometry, c1, c2, c3, c4);
+<a name="l00417"></a>00417 }
+<a name="l00418"></a>00418
+<a name="l00419"></a>00419
+<a name="l00425"></a>00425 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> R&gt;
+<a name="l00426"></a><a class="code" href="group__access.html#ge87a43e061a27e450e01f00c228ed472">00426</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>(G&amp; geometry, R <span class="keyword">const</span>&amp; range)
+<a name="l00427"></a>00427 {
+<a name="l00428"></a>00428 <a class="code" href="group__access.html#g280e2b0e4bada6eac7b7370a4ded705f" title="Clears a linestring, linear ring or polygon (exterior+interiors) or multi*.">clear</a>(geometry);
+<a name="l00429"></a>00429 <a class="code" href="group__access.html#g8cfdebdb885a95bacb1305744f0d0d7c" title="Appends one or more points to a linestring, linear-ring, polygon, multi.">ggl::append</a>(geometry, range, -1, 0);
+<a name="l00430"></a>00430 }
+<a name="l00431"></a>00431
+<a name="l00432"></a>00432
+<a name="l00440"></a>00440 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G&gt;
+<a name="l00441"></a><a class="code" href="group__access.html#gaa27514a7d1c16133d28dd5601cd32fd">00441</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__access.html#gaa27514a7d1c16133d28dd5601cd32fd" title="assign to a box inverse infinite">assign_inverse</a>(G&amp; geometry)
+<a name="l00442"></a>00442 {
+<a name="l00443"></a>00443 <a class="code" href="group__access.html#gaa27514a7d1c16133d28dd5601cd32fd" title="assign to a box inverse infinite">dispatch::assign_inverse</a>
+<a name="l00444"></a>00444 &lt;
+<a name="l00445"></a>00445 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>,
+<a name="l00446"></a>00446 G
+<a name="l00447"></a>00447 &gt;::apply(geometry);
+<a name="l00448"></a>00448 }
+<a name="l00449"></a>00449
+<a name="l00456"></a>00456 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G&gt;
+<a name="l00457"></a><a class="code" href="group__access.html#g2fba6ded1fb6ecc7dba897b55c70f2d0">00457</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__access.html#g2fba6ded1fb6ecc7dba897b55c70f2d0" title="assign zero values to a box, point">assign_zero</a>(G&amp; geometry)
+<a name="l00458"></a>00458 {
+<a name="l00459"></a>00459 <a class="code" href="group__access.html#g2fba6ded1fb6ecc7dba897b55c70f2d0" title="assign zero values to a box, point">dispatch::assign_zero</a>
+<a name="l00460"></a>00460 &lt;
+<a name="l00461"></a>00461 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>,
+<a name="l00462"></a>00462 G
+<a name="l00463"></a>00463 &gt;::apply(geometry);
+<a name="l00464"></a>00464 }
+<a name="l00465"></a>00465
+<a name="l00466"></a>00466
+<a name="l00472"></a>00472 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> P&gt;
+<a name="l00473"></a><a class="code" href="namespaceggl.html#a658e33964ece2cc6e48c622595ad271">00473</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceggl.html#a658e33964ece2cc6e48c622595ad271" title="Assign the 4 points of a 2D box.">assign_box_corners</a>(B <span class="keyword">const</span>&amp; <a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a>, P&amp; lower_left, P&amp; lower_right, P&amp; upper_left, P&amp; upper_right)
+<a name="l00474"></a>00474 {
+<a name="l00475"></a>00475 detail::assign::assign_box_2d_corner&lt;min_corner, min_corner&gt;(box, lower_left);
+<a name="l00476"></a>00476 detail::assign::assign_box_2d_corner&lt;max_corner, min_corner&gt;(box, lower_right);
+<a name="l00477"></a>00477 detail::assign::assign_box_2d_corner&lt;min_corner, max_corner&gt;(box, upper_left);
+<a name="l00478"></a>00478 detail::assign::assign_box_2d_corner&lt;max_corner, max_corner&gt;(box, upper_right);
+<a name="l00479"></a>00479 }
+<a name="l00480"></a>00480
+<a name="l00481"></a>00481
+<a name="l00482"></a>00482
+<a name="l00488"></a>00488 <span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> Corner, <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>&gt;
+<a name="l00489"></a><a class="code" href="namespaceggl.html#a79ece7bbc75c938c5a01eadd2522156">00489</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceggl.html#a79ece7bbc75c938c5a01eadd2522156" title="Assign a box with the value of a point.">assign_point_to_box</a>(Point <span class="keyword">const</span>&amp; <a class="code" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a>, Box&amp; <a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a>)
+<a name="l00490"></a>00490 {
+<a name="l00491"></a>00491 <a class="code" href="namespaceggl.html#a79ece7bbc75c938c5a01eadd2522156" title="Assign a box with the value of a point.">detail::assign::assign_point_to_box</a>
+<a name="l00492"></a>00492 &lt;
+<a name="l00493"></a>00493 Box, Point, Corner, 0, <a class="code" href="structggl_1_1dimension.html" title="Meta-function which defines coordinate dimensions, i.e. the number of axes of any...">dimension&lt;Box&gt;::type::value</a>
+<a name="l00494"></a>00494 &gt;::apply(point, box);
+<a name="l00495"></a>00495 }
+<a name="l00496"></a>00496
+<a name="l00497"></a>00497
+<a name="l00498"></a>00498
+<a name="l00499"></a>00499 } <span class="comment">// namespace ggl</span>
+<a name="l00500"></a>00500
+<a name="l00501"></a>00501 <span class="preprocessor">#endif // GGL_ALGORITHMS_ASSIGN_HPP</span>
 </pre></div></div>
 <hr size="1">
 <table width="100%">

Deleted: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign__box__corner_8hpp.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign__box__corner_8hpp.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
+++ (empty file)
@@ -1,84 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Generic Geometry Library</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head>
-<body style="background-image: url(images/draft.png);">
-
-<table cellpadding="2" width="100%">
-<tbody>
-<tr>
-<td valign="top">
-<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
-&nbsp;&nbsp;
-</td>
-<td valign="top" align="right">
-<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
-</td>
-</tr>
-</tbody>
-</table>
-<!-- Generated by Doxygen 1.5.9 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li>Main Page</li>
- <li>Related Pages</li>
- <li>Modules</li>
- <li>Namespaces</li>
- <li>Classes</li>
- <li class="current">Files</li>
- <li>Examples</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li>File List</li>
- <li>File Members</li>
- </ul>
- </div>
-</div>
-<div class="contents">
-<h1>ggl/util/assign_box_corner.hpp File Reference</h1>
-<p>
-Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;std::size_t C1, std::size_t C2, typename B , typename P &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceggl.html#e5791c5c360cbb58d16b18cb46323175">ggl::assign_box_corner</a> (B const &amp;box, P &amp;point)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assign one <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> of a 2D <a class="el" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a>. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename B , typename P &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceggl.html#a658e33964ece2cc6e48c622595ad271">ggl::assign_box_corners</a> (B const &amp;box, P &amp;lower_left, P &amp;lower_right, P &amp;upper_left, P &amp;upper_right)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assign the 4 points of a 2D <a class="el" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a>. <br></td></tr>
-</table>
-</div>
-<hr size="1">
-<table width="100%">
-<tbody>
-<tr>
-<td align="left"><small>
-<p>October 13, 2009</p>
-</small></td>
-<td align="right">
-<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
-Copyright © 2008-2009 Bruno Lalande, Paris<br>
-Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
-</small>
-</td>
-</tr>
-</tbody>
-</table>
-
-<address style="text-align: right;"><small>
-Documentation is generated by&nbsp;Doxygen
-</small></address>
-</body>
-</html>

Deleted: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign__box__corner_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign__box__corner_8hpp_source.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
+++ (empty file)
@@ -1,113 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Generic Geometry Library</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head>
-<body style="background-image: url(images/draft.png);">
-
-<table cellpadding="2" width="100%">
-<tbody>
-<tr>
-<td valign="top">
-<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
-&nbsp;&nbsp;
-</td>
-<td valign="top" align="right">
-<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
-</td>
-</tr>
-</tbody>
-</table>
-<!-- Generated by Doxygen 1.5.9 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul>
- <li>Main Page</li>
- <li>Related Pages</li>
- <li>Modules</li>
- <li>Namespaces</li>
- <li>Classes</li>
- <li class="current">Files</li>
- <li>Examples</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li>File List</li>
- <li>File Members</li>
- </ul>
- </div>
-<h1>ggl/util/assign_box_corner.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
-<a name="l00002"></a>00002 <span class="comment">//</span>
-<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
-<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
-<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
-<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
-<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
-<a name="l00008"></a>00008
-<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_UTIL_ASSIGN_BOX_CORNER_HPP</span>
-<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_UTIL_ASSIGN_BOX_CORNER_HPP</span>
-<a name="l00011"></a>00011 <span class="preprocessor"></span>
-<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;cstddef&gt;</span>
-<a name="l00013"></a>00013
-<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/numeric/conversion/cast.hpp&gt;</span>
-<a name="l00015"></a>00015
-<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;<a class="code" href="coordinate__dimension_8hpp.html">ggl/core/coordinate_dimension.hpp</a>&gt;</span>
-<a name="l00017"></a>00017
-<a name="l00018"></a>00018 <span class="comment">// TODO: merge with "assign"</span>
-<a name="l00019"></a>00019
-<a name="l00020"></a>00020 <span class="keyword">namespace </span>ggl
-<a name="l00021"></a>00021 {
-<a name="l00022"></a>00022
-<a name="l00028"></a>00028 <span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> C1, std::<span class="keywordtype">size_t</span> C2, <span class="keyword">typename</span> B, <span class="keyword">typename</span> P&gt;
-<a name="l00029"></a><a class="code" href="namespaceggl.html#e5791c5c360cbb58d16b18cb46323175">00029</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceggl.html#e5791c5c360cbb58d16b18cb46323175" title="Assign one point of a 2D box.">assign_box_corner</a>(B <span class="keyword">const</span>&amp; <a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a>, P&amp; <a class="code" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a>)
-<a name="l00030"></a>00030 {
-<a name="l00031"></a>00031 <span class="comment">// Be sure both are 2-Dimensional</span>
-<a name="l00032"></a>00032 assert_dimension&lt;B, 2&gt;();
-<a name="l00033"></a>00033 assert_dimension&lt;P, 2&gt;();
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="comment">// Copy coordinates</span>
-<a name="l00036"></a>00036 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type&lt;P&gt;::type</a> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a>;
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 set&lt;0&gt;(point, boost::numeric_cast&lt;coordinate_type&gt;(get&lt;C1, 0&gt;(box)));
-<a name="l00039"></a>00039 set&lt;1&gt;(point, boost::numeric_cast&lt;coordinate_type&gt;(get&lt;C2, 1&gt;(box)));
-<a name="l00040"></a>00040 }
-<a name="l00041"></a>00041
-<a name="l00048"></a>00048 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> P&gt;
-<a name="l00049"></a><a class="code" href="namespaceggl.html#a658e33964ece2cc6e48c622595ad271">00049</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceggl.html#a658e33964ece2cc6e48c622595ad271" title="Assign the 4 points of a 2D box.">assign_box_corners</a>(B <span class="keyword">const</span>&amp; <a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a>, P&amp; lower_left, P&amp; lower_right, P&amp; upper_left, P&amp; upper_right)
-<a name="l00050"></a>00050 {
-<a name="l00051"></a>00051 assign_box_corner&lt;min_corner, min_corner&gt;(box, lower_left);
-<a name="l00052"></a>00052 assign_box_corner&lt;max_corner, min_corner&gt;(box, lower_right);
-<a name="l00053"></a>00053 assign_box_corner&lt;min_corner, max_corner&gt;(box, upper_left);
-<a name="l00054"></a>00054 assign_box_corner&lt;max_corner, max_corner&gt;(box, upper_right);
-<a name="l00055"></a>00055 }
-<a name="l00056"></a>00056
-<a name="l00057"></a>00057 } <span class="comment">// namespace</span>
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059 <span class="preprocessor">#endif // GGL_UTIL_ASSIGN_BOX_CORNER_HPP</span>
-</pre></div></div>
-<hr size="1">
-<table width="100%">
-<tbody>
-<tr>
-<td align="left"><small>
-<p>October 13, 2009</p>
-</small></td>
-<td align="right">
-<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
-Copyright © 2008-2009 Bruno Lalande, Paris<br>
-Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
-</small>
-</td>
-</tr>
-</tbody>
-</table>
-
-<address style="text-align: right;"><small>
-Documentation is generated by&nbsp;Doxygen
-</small></address>
-</body>
-</html>

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/box_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/box_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/box_8hpp_source.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -71,8 +71,8 @@
 <a name="l00042"></a>00042
 <a name="l00046"></a><a class="code" href="classggl_1_1box.html#c7888e7869f90177bbc524467fa9e6c4">00046</a> <span class="keyword">inline</span> <a class="code" href="classggl_1_1box.html#40a32b03ef937f268b28716cd3a19ff4">box</a>(P <span class="keyword">const</span>&amp; <a class="code" href="classggl_1_1box.html#47f607c06a2a5432eac75d8bd5cf4a61">min_corner</a>, P <span class="keyword">const</span>&amp; <a class="code" href="classggl_1_1box.html#ad3ec53ea62b0bfa3cb897cea62ea0f0">max_corner</a>)
 <a name="l00047"></a>00047 {
-<a name="l00048"></a>00048 <a class="code" href="namespaceggl.html#173003fecd63871d3a6aee07f4ba7011" title="Copies coordinates from source to destination point.">copy_coordinates</a>(min_corner, m_min_corner);
-<a name="l00049"></a>00049 <a class="code" href="namespaceggl.html#173003fecd63871d3a6aee07f4ba7011" title="Copies coordinates from source to destination point.">copy_coordinates</a>(max_corner, m_max_corner);
+<a name="l00048"></a>00048 <a class="code" href="namespaceggl.html#f8cee6dd577bebfd1dbbe4cc503304d4" title="Copies coordinates from source to destination point.">copy_coordinates</a>(min_corner, m_min_corner);
+<a name="l00049"></a>00049 <a class="code" href="namespaceggl.html#f8cee6dd577bebfd1dbbe4cc503304d4" title="Copies coordinates from source to destination point.">copy_coordinates</a>(max_corner, m_max_corner);
 <a name="l00050"></a>00050 }
 <a name="l00051"></a>00051
 <a name="l00052"></a><a class="code" href="classggl_1_1box.html#47f607c06a2a5432eac75d8bd5cf4a61">00052</a> <span class="keyword">inline</span> P <span class="keyword">const</span>&amp; <a class="code" href="classggl_1_1box.html#47f607c06a2a5432eac75d8bd5cf4a61">min_corner</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_min_corner; }

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/buffer_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/buffer_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/buffer_8hpp_source.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -58,112 +58,111 @@
 <a name="l00016"></a>00016 <span class="preprocessor">#include &lt;<a class="code" href="arithmetic_8hpp.html">ggl/arithmetic/arithmetic.hpp</a>&gt;</span>
 <a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="box__concept_8hpp.html">ggl/core/concepts/box_concept.hpp</a>&gt;</span>
 <a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>&gt;</span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="assign__box__corner_8hpp.html">ggl/util/assign_box_corner.hpp</a>&gt;</span>
-<a name="l00020"></a>00020
-<a name="l00021"></a>00021 <span class="comment">// Buffer functions</span>
-<a name="l00022"></a>00022 <span class="comment">// Was before: "grow" but then only for box</span>
-<a name="l00023"></a>00023 <span class="comment">// Now "buffer", but still only implemented for a box...</span>
-<a name="l00024"></a>00024
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>ggl
-<a name="l00035"></a>00035 {
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
-<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__buffer.html#g8eba9385881e8f0d9e45e379df214b63" title="Calculate buffer (= new geometry) around specified distance of geometry.">buffer</a> {
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> BoxIn, <span class="keyword">typename</span> BoxOut, <span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> C, std::<span class="keywordtype">size_t</span> D, std::<span class="keywordtype">size_t</span> N&gt;
-<a name="l00041"></a>00041 <span class="keyword">struct </span>box_loop
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;BoxOut&gt;::type coordinate_type;
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(BoxIn <span class="keyword">const</span>&amp; box_in, T <span class="keyword">const</span>&amp; <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>, BoxOut&amp; box_out)
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 set&lt;C, D&gt;(box_out, boost::numeric_cast&lt;coordinate_type&gt;(get&lt;C, D&gt;(box_in) + distance));
-<a name="l00048"></a>00048 box_loop&lt;BoxIn, BoxOut, T, C, D + 1, N&gt;::apply(box_in, <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>, box_out);
-<a name="l00049"></a>00049 }
-<a name="l00050"></a>00050 };
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> BoxIn, <span class="keyword">typename</span> BoxOut, <span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> C, std::<span class="keywordtype">size_t</span> N&gt;
-<a name="l00053"></a>00053 <span class="keyword">struct </span>box_loop&lt;BoxIn, BoxOut, T, C, N, N&gt;
-<a name="l00054"></a>00054 {
-<a name="l00055"></a>00055 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(BoxIn <span class="keyword">const</span>&amp;, T <span class="keyword">const</span>&amp;, BoxOut&amp;) {}
-<a name="l00056"></a>00056 };
-<a name="l00057"></a>00057
-<a name="l00058"></a>00058 <span class="comment">// Extends a box with the same amount in all directions</span>
-<a name="l00059"></a>00059 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BoxIn, <span class="keyword">typename</span> BoxOut, <span class="keyword">typename</span> T&gt;
-<a name="l00060"></a>00060 <span class="keyword">inline</span> <span class="keywordtype">void</span> buffer_box(BoxIn <span class="keyword">const</span>&amp; box_in, T <span class="keyword">const</span>&amp; <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>, BoxOut&amp; box_out)
-<a name="l00061"></a>00061 {
-<a name="l00062"></a>00062 assert_dimension_equal&lt;BoxIn, BoxOut&gt;();
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 <span class="keyword">static</span> <span class="keyword">const</span> std::size_t N = <a class="code" href="classcore__dispatch_1_1dimension.html">dimension&lt;BoxIn&gt;::value</a>;
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066 box_loop&lt;BoxIn, BoxOut, T, min_corner, 0, N&gt;::apply(box_in, -distance, box_out);
-<a name="l00067"></a>00067 box_loop&lt;BoxIn, BoxOut, T, max_corner, 0, N&gt;::apply(box_in, +distance, box_out);
-<a name="l00068"></a>00068 }
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 }} <span class="comment">// namespace detail::buffer</span>
-<a name="l00071"></a>00071 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
-<a name="l00072"></a>00072 <span class="preprocessor"></span>
-<a name="l00073"></a>00073 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
-<a name="l00074"></a>00074 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
-<a name="l00075"></a>00075 {
-<a name="l00076"></a>00076
-<a name="l00077"></a>00077 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> TagIn, <span class="keyword">typename</span> TagOut, <span class="keyword">typename</span> Input, <span class="keyword">typename</span> T, <span class="keyword">typename</span> Output&gt;
-<a name="l00078"></a>00078 <span class="keyword">struct </span><a class="code" href="group__buffer.html#g8eba9385881e8f0d9e45e379df214b63" title="Calculate buffer (= new geometry) around specified distance of geometry.">buffer</a> {};
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020 <span class="comment">// Buffer functions</span>
+<a name="l00021"></a>00021 <span class="comment">// Was before: "grow" but then only for box</span>
+<a name="l00022"></a>00022 <span class="comment">// Now "buffer", but still only implemented for a box...</span>
+<a name="l00023"></a>00023
+<a name="l00033"></a>00033 <span class="keyword">namespace </span>ggl
+<a name="l00034"></a>00034 {
+<a name="l00035"></a>00035
+<a name="l00036"></a>00036 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__buffer.html#g8eba9385881e8f0d9e45e379df214b63" title="Calculate buffer (= new geometry) around specified distance of geometry.">buffer</a> {
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> BoxIn, <span class="keyword">typename</span> BoxOut, <span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> C, std::<span class="keywordtype">size_t</span> D, std::<span class="keywordtype">size_t</span> N&gt;
+<a name="l00040"></a>00040 <span class="keyword">struct </span>box_loop
+<a name="l00041"></a>00041 {
+<a name="l00042"></a>00042 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;BoxOut&gt;::type coordinate_type;
+<a name="l00043"></a>00043
+<a name="l00044"></a>00044 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(BoxIn <span class="keyword">const</span>&amp; box_in, T <span class="keyword">const</span>&amp; <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>, BoxOut&amp; box_out)
+<a name="l00045"></a>00045 {
+<a name="l00046"></a>00046 set&lt;C, D&gt;(box_out, boost::numeric_cast&lt;coordinate_type&gt;(get&lt;C, D&gt;(box_in) + distance));
+<a name="l00047"></a>00047 box_loop&lt;BoxIn, BoxOut, T, C, D + 1, N&gt;::apply(box_in, <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>, box_out);
+<a name="l00048"></a>00048 }
+<a name="l00049"></a>00049 };
+<a name="l00050"></a>00050
+<a name="l00051"></a>00051 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> BoxIn, <span class="keyword">typename</span> BoxOut, <span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> C, std::<span class="keywordtype">size_t</span> N&gt;
+<a name="l00052"></a>00052 <span class="keyword">struct </span>box_loop&lt;BoxIn, BoxOut, T, C, N, N&gt;
+<a name="l00053"></a>00053 {
+<a name="l00054"></a>00054 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(BoxIn <span class="keyword">const</span>&amp;, T <span class="keyword">const</span>&amp;, BoxOut&amp;) {}
+<a name="l00055"></a>00055 };
+<a name="l00056"></a>00056
+<a name="l00057"></a>00057 <span class="comment">// Extends a box with the same amount in all directions</span>
+<a name="l00058"></a>00058 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BoxIn, <span class="keyword">typename</span> BoxOut, <span class="keyword">typename</span> T&gt;
+<a name="l00059"></a>00059 <span class="keyword">inline</span> <span class="keywordtype">void</span> buffer_box(BoxIn <span class="keyword">const</span>&amp; box_in, T <span class="keyword">const</span>&amp; <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>, BoxOut&amp; box_out)
+<a name="l00060"></a>00060 {
+<a name="l00061"></a>00061 assert_dimension_equal&lt;BoxIn, BoxOut&gt;();
+<a name="l00062"></a>00062
+<a name="l00063"></a>00063 <span class="keyword">static</span> <span class="keyword">const</span> std::size_t N = <a class="code" href="classcore__dispatch_1_1dimension.html">dimension&lt;BoxIn&gt;::value</a>;
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065 box_loop&lt;BoxIn, BoxOut, T, min_corner, 0, N&gt;::apply(box_in, -distance, box_out);
+<a name="l00066"></a>00066 box_loop&lt;BoxIn, BoxOut, T, max_corner, 0, N&gt;::apply(box_in, +distance, box_out);
+<a name="l00067"></a>00067 }
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 }} <span class="comment">// namespace detail::buffer</span>
+<a name="l00070"></a>00070 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00071"></a>00071 <span class="preprocessor"></span>
+<a name="l00072"></a>00072 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00073"></a>00073 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00074"></a>00074 {
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> TagIn, <span class="keyword">typename</span> TagOut, <span class="keyword">typename</span> Input, <span class="keyword">typename</span> T, <span class="keyword">typename</span> Output&gt;
+<a name="l00077"></a>00077 <span class="keyword">struct </span><a class="code" href="group__buffer.html#g8eba9385881e8f0d9e45e379df214b63" title="Calculate buffer (= new geometry) around specified distance of geometry.">buffer</a> {};
+<a name="l00078"></a>00078
 <a name="l00079"></a>00079
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> BoxIn, <span class="keyword">typename</span> T, <span class="keyword">typename</span> BoxOut&gt;
-<a name="l00082"></a>00082 <span class="keyword">struct </span><a class="code" href="group__buffer.html#g8eba9385881e8f0d9e45e379df214b63" title="Calculate buffer (= new geometry) around specified distance of geometry.">buffer</a>&lt;box_tag, box_tag, BoxIn, T, BoxOut&gt;
-<a name="l00083"></a>00083 {
-<a name="l00084"></a>00084 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(BoxIn <span class="keyword">const</span>&amp; box_in, T <span class="keyword">const</span>&amp; <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>,
-<a name="l00085"></a>00085 T <span class="keyword">const</span>&amp; chord_length, BoxIn&amp; box_out)
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 detail::buffer::buffer_box(box_in, distance, box_out);
-<a name="l00088"></a>00088 }
-<a name="l00089"></a>00089 };
-<a name="l00090"></a>00090
-<a name="l00091"></a>00091 <span class="comment">// Many things to do. Point is easy, other geometries require self intersections</span>
-<a name="l00092"></a>00092 <span class="comment">// For point, note that it should output as a polygon (like the rest). Buffers</span>
-<a name="l00093"></a>00093 <span class="comment">// of a set of geometries are often lateron combined using a "dissolve" operation.</span>
-<a name="l00094"></a>00094 <span class="comment">// Two points close to each other get a combined kidney shaped buffer then.</span>
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096 } <span class="comment">// namespace dispatch</span>
-<a name="l00097"></a>00097 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
-<a name="l00098"></a>00098 <span class="preprocessor"></span>
-<a name="l00099"></a>00099
-<a name="l00111"></a>00111 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Input, <span class="keyword">typename</span> Output, <span class="keyword">typename</span> T&gt;
-<a name="l00112"></a><a class="code" href="group__buffer.html#g8eba9385881e8f0d9e45e379df214b63">00112</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__buffer.html#g8eba9385881e8f0d9e45e379df214b63" title="Calculate buffer (= new geometry) around specified distance of geometry.">buffer</a>(<span class="keyword">const</span> Input&amp; geometry_in, Output&amp; geometry_out,
-<a name="l00113"></a>00113 T <span class="keyword">const</span>&amp; <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>, T <span class="keyword">const</span>&amp; chord_length = -1)
-<a name="l00114"></a>00114 {
-<a name="l00115"></a>00115 <a class="code" href="group__buffer.html#g8eba9385881e8f0d9e45e379df214b63" title="Calculate buffer (= new geometry) around specified distance of geometry.">dispatch::buffer</a>
-<a name="l00116"></a>00116 &lt;
-<a name="l00117"></a>00117 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Input&gt;::type</a>,
-<a name="l00118"></a>00118 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Output&gt;::type</a>,
-<a name="l00119"></a>00119 Input,
-<a name="l00120"></a>00120 T,
-<a name="l00121"></a>00121 Output
-<a name="l00122"></a>00122 &gt;::apply(geometry_in, distance, chord_length, geometry_out);
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124
-<a name="l00134"></a>00134 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Output, <span class="keyword">typename</span> Input, <span class="keyword">typename</span> T&gt;
-<a name="l00135"></a><a class="code" href="group__buffer.html#g86e90005b6d11abc10459e02e4f4ed22">00135</a> Output <a class="code" href="group__buffer.html#g86e90005b6d11abc10459e02e4f4ed22" title="Calculate and return buffer (= new geometry) around specified distance of geometry...">make_buffer</a>(<span class="keyword">const</span> Input&amp; geometry, T <span class="keyword">const</span>&amp; <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>, T <span class="keyword">const</span>&amp; chord_length = -1)
-<a name="l00136"></a>00136 {
-<a name="l00137"></a>00137 Output geometry_out;
-<a name="l00138"></a>00138
-<a name="l00139"></a>00139 <a class="code" href="group__buffer.html#g8eba9385881e8f0d9e45e379df214b63" title="Calculate buffer (= new geometry) around specified distance of geometry.">dispatch::buffer</a>
-<a name="l00140"></a>00140 &lt;
-<a name="l00141"></a>00141 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Input&gt;::type</a>,
-<a name="l00142"></a>00142 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Output&gt;::type</a>,
-<a name="l00143"></a>00143 Input,
-<a name="l00144"></a>00144 T,
-<a name="l00145"></a>00145 Output
-<a name="l00146"></a>00146 &gt;::apply(geometry, distance, chord_length, geometry_out);
-<a name="l00147"></a>00147
-<a name="l00148"></a>00148 <span class="keywordflow">return</span> geometry_out;
-<a name="l00149"></a>00149 }
-<a name="l00150"></a>00150
-<a name="l00151"></a>00151 } <span class="comment">// namespace ggl</span>
-<a name="l00152"></a>00152
-<a name="l00153"></a>00153 <span class="preprocessor">#endif // GGL_ALGORITHMS_BUFFER_HPP</span>
+<a name="l00080"></a>00080 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> BoxIn, <span class="keyword">typename</span> T, <span class="keyword">typename</span> BoxOut&gt;
+<a name="l00081"></a>00081 <span class="keyword">struct </span><a class="code" href="group__buffer.html#g8eba9385881e8f0d9e45e379df214b63" title="Calculate buffer (= new geometry) around specified distance of geometry.">buffer</a>&lt;box_tag, box_tag, BoxIn, T, BoxOut&gt;
+<a name="l00082"></a>00082 {
+<a name="l00083"></a>00083 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(BoxIn <span class="keyword">const</span>&amp; box_in, T <span class="keyword">const</span>&amp; <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>,
+<a name="l00084"></a>00084 T <span class="keyword">const</span>&amp; chord_length, BoxIn&amp; box_out)
+<a name="l00085"></a>00085 {
+<a name="l00086"></a>00086 detail::buffer::buffer_box(box_in, distance, box_out);
+<a name="l00087"></a>00087 }
+<a name="l00088"></a>00088 };
+<a name="l00089"></a>00089
+<a name="l00090"></a>00090 <span class="comment">// Many things to do. Point is easy, other geometries require self intersections</span>
+<a name="l00091"></a>00091 <span class="comment">// For point, note that it should output as a polygon (like the rest). Buffers</span>
+<a name="l00092"></a>00092 <span class="comment">// of a set of geometries are often lateron combined using a "dissolve" operation.</span>
+<a name="l00093"></a>00093 <span class="comment">// Two points close to each other get a combined kidney shaped buffer then.</span>
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095 } <span class="comment">// namespace dispatch</span>
+<a name="l00096"></a>00096 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00097"></a>00097 <span class="preprocessor"></span>
+<a name="l00098"></a>00098
+<a name="l00110"></a>00110 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Input, <span class="keyword">typename</span> Output, <span class="keyword">typename</span> T&gt;
+<a name="l00111"></a><a class="code" href="group__buffer.html#g8eba9385881e8f0d9e45e379df214b63">00111</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__buffer.html#g8eba9385881e8f0d9e45e379df214b63" title="Calculate buffer (= new geometry) around specified distance of geometry.">buffer</a>(<span class="keyword">const</span> Input&amp; geometry_in, Output&amp; geometry_out,
+<a name="l00112"></a>00112 T <span class="keyword">const</span>&amp; <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>, T <span class="keyword">const</span>&amp; chord_length = -1)
+<a name="l00113"></a>00113 {
+<a name="l00114"></a>00114 <a class="code" href="group__buffer.html#g8eba9385881e8f0d9e45e379df214b63" title="Calculate buffer (= new geometry) around specified distance of geometry.">dispatch::buffer</a>
+<a name="l00115"></a>00115 &lt;
+<a name="l00116"></a>00116 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Input&gt;::type</a>,
+<a name="l00117"></a>00117 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Output&gt;::type</a>,
+<a name="l00118"></a>00118 Input,
+<a name="l00119"></a>00119 T,
+<a name="l00120"></a>00120 Output
+<a name="l00121"></a>00121 &gt;::apply(geometry_in, distance, chord_length, geometry_out);
+<a name="l00122"></a>00122 }
+<a name="l00123"></a>00123
+<a name="l00133"></a>00133 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Output, <span class="keyword">typename</span> Input, <span class="keyword">typename</span> T&gt;
+<a name="l00134"></a><a class="code" href="group__buffer.html#g86e90005b6d11abc10459e02e4f4ed22">00134</a> Output <a class="code" href="group__buffer.html#g86e90005b6d11abc10459e02e4f4ed22" title="Calculate and return buffer (= new geometry) around specified distance of geometry...">make_buffer</a>(<span class="keyword">const</span> Input&amp; geometry, T <span class="keyword">const</span>&amp; <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>, T <span class="keyword">const</span>&amp; chord_length = -1)
+<a name="l00135"></a>00135 {
+<a name="l00136"></a>00136 Output geometry_out;
+<a name="l00137"></a>00137
+<a name="l00138"></a>00138 <a class="code" href="group__buffer.html#g8eba9385881e8f0d9e45e379df214b63" title="Calculate buffer (= new geometry) around specified distance of geometry.">dispatch::buffer</a>
+<a name="l00139"></a>00139 &lt;
+<a name="l00140"></a>00140 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Input&gt;::type</a>,
+<a name="l00141"></a>00141 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Output&gt;::type</a>,
+<a name="l00142"></a>00142 Input,
+<a name="l00143"></a>00143 T,
+<a name="l00144"></a>00144 Output
+<a name="l00145"></a>00145 &gt;::apply(geometry, distance, chord_length, geometry_out);
+<a name="l00146"></a>00146
+<a name="l00147"></a>00147 <span class="keywordflow">return</span> geometry_out;
+<a name="l00148"></a>00148 }
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 } <span class="comment">// namespace ggl</span>
+<a name="l00151"></a>00151
+<a name="l00152"></a>00152 <span class="preprocessor">#endif // GGL_ALGORITHMS_BUFFER_HPP</span>
 </pre></div></div>
 <hr size="1">
 <table width="100%">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c04__b__custom__triangle__example_8cpp-example.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c04__b__custom__triangle__example_8cpp-example.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c04__b__custom__triangle__example_8cpp-example.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -75,7 +75,7 @@
 
 <span class="comment">// Specializations of area dispatch structure, implement algorithm</span>
 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> S&gt;
-<span class="keyword">struct </span><a name="a1"></a><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>&lt;ring_tag, triangle&lt;P&gt;, S&gt;
+<span class="keyword">struct </span><a name="a1"></a><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>&lt;ring_tag, triangle&lt;P&gt;, <a name="a2"></a><a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d55fe53c1821ca13eb0eacb9084cb1d1c">clockwise</a>, S&gt;
 {
     <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">double</span> apply(triangle&lt;P&gt; <span class="keyword">const</span>&amp; t, S <span class="keyword">const</span>&amp;)
     {
@@ -95,12 +95,12 @@
     t[1] = boost::make_tuple(5, 0);
     t[2] = boost::make_tuple(2.5, 2.5);
 
- std::cout &lt;&lt; <span class="stringliteral">"Triangle: "</span> &lt;&lt; <a name="a2"></a><a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(t) &lt;&lt; std::endl;
+ std::cout &lt;&lt; <span class="stringliteral">"Triangle: "</span> &lt;&lt; <a name="a3"></a><a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(t) &lt;&lt; std::endl;
     std::cout &lt;&lt; <span class="stringliteral">"Area: "</span> &lt;&lt; <a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">ggl::area</a>(t) &lt;&lt; std::endl;
 
     <span class="comment">//ggl::point_xy&lt;double&gt; c;</span>
     boost::tuple&lt;double, double&gt; c;
- <a name="a3"></a><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">ggl::centroid</a>(t, c);
+ <a name="a4"></a><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">ggl::centroid</a>(t, c);
     std::cout &lt;&lt; <span class="stringliteral">"Centroid: "</span> &lt;&lt; <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(c) &lt;&lt; std::endl;
 
     <span class="keywordflow">return</span> 0;

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__distance_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__distance_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__distance_8hpp_source.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -124,149 +124,151 @@
 <a name="l00090"></a>00090 CalculationType
 <a name="l00091"></a><a class="code" href="structggl_1_1strategy_1_1distance_1_1pythagoras.html#bc86abbd7440ed39ba7e78d40c304e6b">00091</a> &gt;::type <a class="code" href="structggl_1_1strategy_1_1distance_1_1pythagoras.html#bc86abbd7440ed39ba7e78d40c304e6b">calculation_type</a>;
 <a name="l00092"></a>00092
-<a name="l00093"></a><a class="code" href="structggl_1_1strategy_1_1distance_1_1pythagoras.html#0e3ccd19d8d1c63360ba93be700c39a4">00093</a> <span class="keyword">typedef</span> <a class="code" href="structggl_1_1cartesian__distance.html" title="Encapsulate the results of distance calculation.">cartesian_distance&lt;calculation_type&gt;</a> <a class="code" href="structggl_1_1cartesian__distance.html" title="Encapsulate the results of distance calculation.">return_type</a>;
-<a name="l00094"></a>00094
+<a name="l00093"></a><a class="code" href="structggl_1_1strategy_1_1distance_1_1pythagoras.html#4a6f6649a2e25a6c584c29a5c6a3bee0">00093</a> <span class="keyword">typedef</span> P1 <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+<a name="l00094"></a><a class="code" href="structggl_1_1strategy_1_1distance_1_1pythagoras.html#0e3ccd19d8d1c63360ba93be700c39a4">00094</a> <span class="keyword">typedef</span> <a class="code" href="structggl_1_1cartesian__distance.html" title="Encapsulate the results of distance calculation.">cartesian_distance&lt;calculation_type&gt;</a> <a class="code" href="structggl_1_1cartesian__distance.html" title="Encapsulate the results of distance calculation.">return_type</a>;
 <a name="l00095"></a>00095
-<a name="l00096"></a><a class="code" href="structggl_1_1strategy_1_1distance_1_1pythagoras.html#da96ada6f45642ee8e773e660cf6fb1a">00096</a> <span class="keyword">inline</span> <a class="code" href="structggl_1_1cartesian__distance.html" title="Encapsulate the results of distance calculation.">return_type</a> <a class="code" href="structggl_1_1strategy_1_1distance_1_1pythagoras.html#da96ada6f45642ee8e773e660cf6fb1a">operator()</a>(P1 <span class="keyword">const</span>&amp; p1, P2 <span class="keyword">const</span>&amp; p2)<span class="keyword"> const</span>
-<a name="l00097"></a>00097 <span class="keyword"> </span>{
-<a name="l00098"></a>00098
-<a name="l00099"></a>00099 BOOST_CONCEPT_ASSERT( (<a class="code" href="structggl_1_1concept_1_1_const_point.html" title="Checks point concept (const version).">concept::ConstPoint&lt;P1&gt;</a>) );
-<a name="l00100"></a>00100 BOOST_CONCEPT_ASSERT( (<a class="code" href="structggl_1_1concept_1_1_const_point.html" title="Checks point concept (const version).">concept::ConstPoint&lt;P2&gt;</a>) );
-<a name="l00101"></a>00101
-<a name="l00102"></a>00102 <span class="comment">// Calculate distance using Pythagoras</span>
-<a name="l00103"></a>00103 <span class="comment">// (Leave comment above for Doxygen)</span>
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 assert_dimension_equal&lt;P1, P2&gt;();
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 <span class="keywordflow">return</span> <a class="code" href="structggl_1_1strategy_1_1distance_1_1pythagoras.html#0e3ccd19d8d1c63360ba93be700c39a4">return_type</a>(detail::compute_pythagoras
-<a name="l00108"></a>00108 &lt;
-<a name="l00109"></a>00109 P1, P2,
-<a name="l00110"></a>00110 <a class="code" href="structggl_1_1dimension.html" title="Meta-function which defines coordinate dimensions, i.e. the number of axes of any...">dimension&lt;P1&gt;::value</a>,
-<a name="l00111"></a>00111 <a class="code" href="structggl_1_1strategy_1_1distance_1_1pythagoras.html#bc86abbd7440ed39ba7e78d40c304e6b">calculation_type</a>
-<a name="l00112"></a>00112 &gt;::apply(p1, p2));
-<a name="l00113"></a>00113 }
-<a name="l00114"></a>00114 };
-<a name="l00115"></a>00115
+<a name="l00096"></a>00096
+<a name="l00097"></a><a class="code" href="structggl_1_1strategy_1_1distance_1_1pythagoras.html#da96ada6f45642ee8e773e660cf6fb1a">00097</a> <span class="keyword">inline</span> <a class="code" href="structggl_1_1cartesian__distance.html" title="Encapsulate the results of distance calculation.">return_type</a> <a class="code" href="structggl_1_1strategy_1_1distance_1_1pythagoras.html#da96ada6f45642ee8e773e660cf6fb1a">operator()</a>(P1 <span class="keyword">const</span>&amp; p1, P2 <span class="keyword">const</span>&amp; p2)<span class="keyword"> const</span>
+<a name="l00098"></a>00098 <span class="keyword"> </span>{
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100 BOOST_CONCEPT_ASSERT( (<a class="code" href="structggl_1_1concept_1_1_const_point.html" title="Checks point concept (const version).">concept::ConstPoint&lt;P1&gt;</a>) );
+<a name="l00101"></a>00101 BOOST_CONCEPT_ASSERT( (<a class="code" href="structggl_1_1concept_1_1_const_point.html" title="Checks point concept (const version).">concept::ConstPoint&lt;P2&gt;</a>) );
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 <span class="comment">// Calculate distance using Pythagoras</span>
+<a name="l00104"></a>00104 <span class="comment">// (Leave comment above for Doxygen)</span>
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 assert_dimension_equal&lt;P1, P2&gt;();
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108 <span class="keywordflow">return</span> <a class="code" href="structggl_1_1strategy_1_1distance_1_1pythagoras.html#0e3ccd19d8d1c63360ba93be700c39a4">return_type</a>(detail::compute_pythagoras
+<a name="l00109"></a>00109 &lt;
+<a name="l00110"></a>00110 P1, P2,
+<a name="l00111"></a>00111 <a class="code" href="structggl_1_1dimension.html" title="Meta-function which defines coordinate dimensions, i.e. the number of axes of any...">dimension&lt;P1&gt;::value</a>,
+<a name="l00112"></a>00112 <a class="code" href="structggl_1_1strategy_1_1distance_1_1pythagoras.html#bc86abbd7440ed39ba7e78d40c304e6b">calculation_type</a>
+<a name="l00113"></a>00113 &gt;::apply(p1, p2));
+<a name="l00114"></a>00114 }
+<a name="l00115"></a>00115 };
 <a name="l00116"></a>00116
-<a name="l00128"></a>00128 <span class="keyword">template</span>
-<a name="l00129"></a>00129 &lt;
-<a name="l00130"></a>00130 <span class="keyword">typename</span> P,
-<a name="l00131"></a>00131 <span class="keyword">typename</span> Segment,
-<a name="l00132"></a>00132 <span class="keyword">typename</span> Strategy = pythagoras&lt;P, typename point_type&lt;Segment&gt;::type&gt;
-<a name="l00133"></a>00133 &gt;
-<a name="l00134"></a><a class="code" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html">00134</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html" title="Strategy for distance point to segment.">xy_point_segment</a>
-<a name="l00135"></a>00135 {
-<a name="l00136"></a><a class="code" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html#a1bf8289c8a5b0fc97ee2943476a69a7">00136</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1select__coordinate__type.html" title="Utility selecting the most precise coordinate type of two geometries.">select_coordinate_type&lt;P, Segment&gt;::type</a> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a>;
-<a name="l00137"></a><a class="code" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html#a54175d4c138cd7319c8552f43824621">00137</a> <span class="keyword">typedef</span> <a class="code" href="structggl_1_1cartesian__distance.html" title="Encapsulate the results of distance calculation.">cartesian_distance&lt;coordinate_type&gt;</a> <a class="code" href="structggl_1_1cartesian__distance.html" title="Encapsulate the results of distance calculation.">return_type</a>;
-<a name="l00138"></a><a class="code" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html#2e1bc521c8c39e2dfcbf4724df4f8b58">00138</a> <span class="keyword">typedef</span> Strategy <a class="code" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html#2e1bc521c8c39e2dfcbf4724df4f8b58">distance_strategy_type</a>; <span class="comment">// OBSOLETE!</span>
-<a name="l00139"></a><a class="code" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html#bb6549905e99ca61b13cfc644c91f672">00139</a> <span class="keyword">typedef</span> Strategy <a class="code" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html#bb6549905e99ca61b13cfc644c91f672">point_strategy_type</a>;
+<a name="l00117"></a>00117
+<a name="l00129"></a>00129 <span class="keyword">template</span>
+<a name="l00130"></a>00130 &lt;
+<a name="l00131"></a>00131 <span class="keyword">typename</span> P,
+<a name="l00132"></a>00132 <span class="keyword">typename</span> Segment,
+<a name="l00133"></a>00133 <span class="keyword">typename</span> Strategy = pythagoras&lt;P, typename point_type&lt;Segment&gt;::type&gt;
+<a name="l00134"></a>00134 &gt;
+<a name="l00135"></a><a class="code" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html">00135</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html" title="Strategy for distance point to segment.">xy_point_segment</a>
+<a name="l00136"></a>00136 {
+<a name="l00137"></a><a class="code" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html#cfb9d185bcc22815ec15d07389ad03b9">00137</a> <span class="keyword">typedef</span> P <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+<a name="l00138"></a><a class="code" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html#a1bf8289c8a5b0fc97ee2943476a69a7">00138</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1select__coordinate__type.html" title="Utility selecting the most precise coordinate type of two geometries.">select_coordinate_type&lt;P, Segment&gt;::type</a> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a>;
+<a name="l00139"></a><a class="code" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html#a54175d4c138cd7319c8552f43824621">00139</a> <span class="keyword">typedef</span> <a class="code" href="structggl_1_1cartesian__distance.html" title="Encapsulate the results of distance calculation.">cartesian_distance&lt;coordinate_type&gt;</a> <a class="code" href="structggl_1_1cartesian__distance.html" title="Encapsulate the results of distance calculation.">return_type</a>;
 <a name="l00140"></a>00140
-<a name="l00141"></a>00141
-<a name="l00142"></a><a class="code" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html#7bbdf22f4985080ce60b2efcbf67352b">00142</a> <span class="keyword">inline</span> <a class="code" href="structggl_1_1cartesian__distance.html" title="Encapsulate the results of distance calculation.">return_type</a> <a class="code" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html#7bbdf22f4985080ce60b2efcbf67352b">operator()</a>(P <span class="keyword">const</span>&amp; p, Segment <span class="keyword">const</span>&amp; s)<span class="keyword"> const</span>
-<a name="l00143"></a>00143 <span class="keyword"> </span>{
-<a name="l00144"></a>00144 assert_dimension_equal&lt;P, Segment&gt;();
-<a name="l00145"></a>00145
-<a name="l00146"></a>00146 <span class="comment">/* Algorithm</span>
-<a name="l00147"></a>00147 <span class="comment"> POINT v(x2 - x1, y2 - y1);</span>
-<a name="l00148"></a>00148 <span class="comment"> POINT w(px - x1, py - y1);</span>
-<a name="l00149"></a>00149 <span class="comment"> c1 = w . v</span>
-<a name="l00150"></a>00150 <span class="comment"> c2 = v . v</span>
-<a name="l00151"></a>00151 <span class="comment"> b = c1 / c2</span>
-<a name="l00152"></a>00152 <span class="comment"> RETURN POINT(x1 + b * vx, y1 + b * vy);</span>
-<a name="l00153"></a>00153 <span class="comment"> */</span>
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const
-<a name="l00156"></a>00156 &lt;
-<a name="l00157"></a>00157 <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;Segment&gt;::type</a>
-<a name="l00158"></a>00158 &gt;::type segment_point_type;
-<a name="l00159"></a>00159
-<a name="l00160"></a>00160 segment_point_type v, w;
+<a name="l00141"></a><a class="code" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html#bb6549905e99ca61b13cfc644c91f672">00141</a> <span class="keyword">typedef</span> Strategy <a class="code" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html#bb6549905e99ca61b13cfc644c91f672">point_strategy_type</a>;
+<a name="l00142"></a>00142
+<a name="l00143"></a>00143
+<a name="l00144"></a><a class="code" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html#7bbdf22f4985080ce60b2efcbf67352b">00144</a> <span class="keyword">inline</span> <a class="code" href="structggl_1_1cartesian__distance.html" title="Encapsulate the results of distance calculation.">return_type</a> <a class="code" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html#7bbdf22f4985080ce60b2efcbf67352b">operator()</a>(P <span class="keyword">const</span>&amp; p, Segment <span class="keyword">const</span>&amp; s)<span class="keyword"> const</span>
+<a name="l00145"></a>00145 <span class="keyword"> </span>{
+<a name="l00146"></a>00146 assert_dimension_equal&lt;P, Segment&gt;();
+<a name="l00147"></a>00147
+<a name="l00148"></a>00148 <span class="comment">/* Algorithm</span>
+<a name="l00149"></a>00149 <span class="comment"> POINT v(x2 - x1, y2 - y1);</span>
+<a name="l00150"></a>00150 <span class="comment"> POINT w(px - x1, py - y1);</span>
+<a name="l00151"></a>00151 <span class="comment"> c1 = w . v</span>
+<a name="l00152"></a>00152 <span class="comment"> c2 = v . v</span>
+<a name="l00153"></a>00153 <span class="comment"> b = c1 / c2</span>
+<a name="l00154"></a>00154 <span class="comment"> RETURN POINT(x1 + b * vx, y1 + b * vy);</span>
+<a name="l00155"></a>00155 <span class="comment"> */</span>
+<a name="l00156"></a>00156
+<a name="l00157"></a>00157 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const
+<a name="l00158"></a>00158 &lt;
+<a name="l00159"></a>00159 <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">ggl::point_type&lt;Segment&gt;::type</a>
+<a name="l00160"></a>00160 &gt;::type segment_point_type;
 <a name="l00161"></a>00161
-<a name="l00162"></a>00162 <span class="comment">// TODO</span>
-<a name="l00163"></a>00163 <span class="comment">// ASSUMPTION: segment</span>
-<a name="l00164"></a>00164 <span class="comment">// SOLVE THIS USING OTHER FUNCTIONS using get&lt;,&gt;</span>
-<a name="l00165"></a>00165 <a class="code" href="namespaceggl.html#173003fecd63871d3a6aee07f4ba7011" title="Copies coordinates from source to destination point.">copy_coordinates</a>(s.second, v);
-<a name="l00166"></a>00166 <a class="code" href="namespaceggl.html#173003fecd63871d3a6aee07f4ba7011" title="Copies coordinates from source to destination point.">copy_coordinates</a>(p, w);
-<a name="l00167"></a>00167 <a class="code" href="group__arithmetic.html#g7c04cab8a69747a37549b75aefc227f9" title="Subtracts a point to another.">subtract_point</a>(v, s.first);
-<a name="l00168"></a>00168 <a class="code" href="group__arithmetic.html#g7c04cab8a69747a37549b75aefc227f9" title="Subtracts a point to another.">subtract_point</a>(w, s.first);
-<a name="l00169"></a>00169
-<a name="l00170"></a>00170 Strategy strategy;
+<a name="l00162"></a>00162 segment_point_type v, w;
+<a name="l00163"></a>00163
+<a name="l00164"></a>00164 <span class="comment">// TODO</span>
+<a name="l00165"></a>00165 <span class="comment">// ASSUMPTION: segment</span>
+<a name="l00166"></a>00166 <span class="comment">// SOLVE THIS USING OTHER FUNCTIONS using get&lt;,&gt;</span>
+<a name="l00167"></a>00167 <a class="code" href="namespaceggl.html#f8cee6dd577bebfd1dbbe4cc503304d4" title="Copies coordinates from source to destination point.">copy_coordinates</a>(s.second, v);
+<a name="l00168"></a>00168 <a class="code" href="namespaceggl.html#f8cee6dd577bebfd1dbbe4cc503304d4" title="Copies coordinates from source to destination point.">copy_coordinates</a>(p, w);
+<a name="l00169"></a>00169 <a class="code" href="group__arithmetic.html#g7c04cab8a69747a37549b75aefc227f9" title="Subtracts a point to another.">subtract_point</a>(v, s.first);
+<a name="l00170"></a>00170 <a class="code" href="group__arithmetic.html#g7c04cab8a69747a37549b75aefc227f9" title="Subtracts a point to another.">subtract_point</a>(w, s.first);
 <a name="l00171"></a>00171
-<a name="l00172"></a>00172 <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a> c1 = <a class="code" href="group__arithmetic.html#gb4e975a3003134e51c2764f9b6701556" title="Computes the dot product of 2 points.">dot_product</a>(w, v);
-<a name="l00173"></a>00173 <span class="keywordflow">if</span> (c1 &lt;= 0)
-<a name="l00174"></a>00174 {
-<a name="l00175"></a>00175 <span class="keywordflow">return</span> strategy(p, s.first);
-<a name="l00176"></a>00176 }
-<a name="l00177"></a>00177 <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a> c2 = <a class="code" href="group__arithmetic.html#gb4e975a3003134e51c2764f9b6701556" title="Computes the dot product of 2 points.">dot_product</a>(v, v);
-<a name="l00178"></a>00178 <span class="keywordflow">if</span> (c2 &lt;= c1)
-<a name="l00179"></a>00179 {
-<a name="l00180"></a>00180 <span class="keywordflow">return</span> strategy(p, s.second);
-<a name="l00181"></a>00181 }
-<a name="l00182"></a>00182
-<a name="l00183"></a>00183 <span class="comment">// Even in case of char's, we have to turn to a point&lt;double/float&gt;</span>
-<a name="l00184"></a>00184 <span class="comment">// because of the division.</span>
-<a name="l00185"></a>00185 <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a> b = c1 / c2;
-<a name="l00186"></a>00186
-<a name="l00187"></a>00187 <span class="comment">// Note that distances with integer coordinates do NOT work because</span>
-<a name="l00188"></a>00188 <span class="comment">// - the project point is integer</span>
-<a name="l00189"></a>00189 <span class="comment">// - if we solve that, the used distance_strategy cannot handle double points</span>
-<a name="l00190"></a>00190 segment_point_type projected;
-<a name="l00191"></a>00191 <a class="code" href="namespaceggl.html#173003fecd63871d3a6aee07f4ba7011" title="Copies coordinates from source to destination point.">copy_coordinates</a>(s.first, projected);
-<a name="l00192"></a>00192 <a class="code" href="group__arithmetic.html#gfc95bf881239da6c1f64f5b8d63dbe9d" title="Multiplies each coordinate of a point by a value.">multiply_value</a>(v, b);
-<a name="l00193"></a>00193 <a class="code" href="group__arithmetic.html#g3be737bb0f230fe9349df97e4c7ff09f" title="Adds a point to another.">add_point</a>(projected, v);
-<a name="l00194"></a>00194
-<a name="l00195"></a>00195 <span class="keywordflow">return</span> strategy(p, projected);
+<a name="l00172"></a>00172 Strategy strategy;
+<a name="l00173"></a>00173
+<a name="l00174"></a>00174 <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a> c1 = <a class="code" href="group__arithmetic.html#gb4e975a3003134e51c2764f9b6701556" title="Computes the dot product of 2 points.">dot_product</a>(w, v);
+<a name="l00175"></a>00175 <span class="keywordflow">if</span> (c1 &lt;= 0)
+<a name="l00176"></a>00176 {
+<a name="l00177"></a>00177 <span class="keywordflow">return</span> strategy(p, s.first);
+<a name="l00178"></a>00178 }
+<a name="l00179"></a>00179 <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a> c2 = <a class="code" href="group__arithmetic.html#gb4e975a3003134e51c2764f9b6701556" title="Computes the dot product of 2 points.">dot_product</a>(v, v);
+<a name="l00180"></a>00180 <span class="keywordflow">if</span> (c2 &lt;= c1)
+<a name="l00181"></a>00181 {
+<a name="l00182"></a>00182 <span class="keywordflow">return</span> strategy(p, s.second);
+<a name="l00183"></a>00183 }
+<a name="l00184"></a>00184
+<a name="l00185"></a>00185 <span class="comment">// Even in case of char's, we have to turn to a point&lt;double/float&gt;</span>
+<a name="l00186"></a>00186 <span class="comment">// because of the division.</span>
+<a name="l00187"></a>00187 <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a> b = c1 / c2;
+<a name="l00188"></a>00188
+<a name="l00189"></a>00189 <span class="comment">// Note that distances with integer coordinates do NOT work because</span>
+<a name="l00190"></a>00190 <span class="comment">// - the project point is integer</span>
+<a name="l00191"></a>00191 <span class="comment">// - if we solve that, the used distance_strategy cannot handle double points</span>
+<a name="l00192"></a>00192 segment_point_type projected;
+<a name="l00193"></a>00193 <a class="code" href="namespaceggl.html#f8cee6dd577bebfd1dbbe4cc503304d4" title="Copies coordinates from source to destination point.">copy_coordinates</a>(s.first, projected);
+<a name="l00194"></a>00194 <a class="code" href="group__arithmetic.html#gfc95bf881239da6c1f64f5b8d63dbe9d" title="Multiplies each coordinate of a point by a value.">multiply_value</a>(v, b);
+<a name="l00195"></a>00195 <a class="code" href="group__arithmetic.html#g3be737bb0f230fe9349df97e4c7ff09f" title="Adds a point to another.">add_point</a>(projected, v);
 <a name="l00196"></a>00196
-<a name="l00197"></a>00197 }
-<a name="l00198"></a>00198 };
-<a name="l00199"></a>00199
-<a name="l00200"></a>00200 }} <span class="comment">// namespace strategy::distance</span>
+<a name="l00197"></a>00197 <span class="keywordflow">return</span> strategy(p, projected);
+<a name="l00198"></a>00198
+<a name="l00199"></a>00199 }
+<a name="l00200"></a>00200 };
 <a name="l00201"></a>00201
-<a name="l00202"></a>00202
+<a name="l00202"></a>00202 }} <span class="comment">// namespace strategy::distance</span>
 <a name="l00203"></a>00203
-<a name="l00204"></a>00204 <span class="preprocessor">#ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS</span>
-<a name="l00205"></a>00205 <span class="preprocessor"></span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2&gt;
-<a name="l00206"></a>00206 <span class="keyword">struct </span>strategy_distance&lt;cartesian_tag, cartesian_tag, P1, P2&gt;
-<a name="l00207"></a>00207 {
-<a name="l00208"></a>00208 <span class="keyword">typedef</span> strategy::distance::pythagoras&lt;P1, P2&gt; <a class="code" href="structggl_1_1strategy__distance.html#e95dff63729289b7ff265e4311fb54de">type</a>;
-<a name="l00209"></a>00209 };
-<a name="l00210"></a>00210
-<a name="l00211"></a>00211 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Segment&gt;
-<a name="l00212"></a>00212 <span class="keyword">struct </span>strategy_distance_segment&lt;cartesian_tag, cartesian_tag, Point, Segment&gt;
-<a name="l00213"></a>00213 {
-<a name="l00214"></a>00214 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;Segment&gt;::type segment_point_type;
-<a name="l00215"></a>00215
-<a name="l00216"></a>00216 <span class="keyword">typedef</span> strategy::distance::xy_point_segment
-<a name="l00217"></a>00217 &lt;
-<a name="l00218"></a>00218 Point,
-<a name="l00219"></a>00219 Segment,
-<a name="l00220"></a>00220 <span class="keyword">typename</span> strategy_distance
-<a name="l00221"></a>00221 &lt;
-<a name="l00222"></a>00222 cartesian_tag, cartesian_tag, Point, segment_point_type
-<a name="l00223"></a>00223 &gt;<a class="code" href="structggl_1_1strategy__distance__segment.html#7f194ba200da0e6da72ac4e14a623a2f">::type</a>
-<a name="l00224"></a>00224 &gt; <a class="code" href="structggl_1_1strategy__distance__segment.html#7f194ba200da0e6da72ac4e14a623a2f">type</a>;
-<a name="l00225"></a>00225 };
-<a name="l00226"></a>00226 <span class="preprocessor">#endif</span>
-<a name="l00227"></a>00227 <span class="preprocessor"></span>
-<a name="l00228"></a>00228
-<a name="l00229"></a>00229 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2&gt;
-<a name="l00230"></a><a class="code" href="structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1pythagoras_3_01_p1_00_01_p2_01_4_01_4.html">00230</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1strategy__tag.html">strategy_tag</a>&lt;strategy::<a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>::pythagoras&lt;P1, P2&gt; &gt;
-<a name="l00231"></a>00231 {
-<a name="l00232"></a><a class="code" href="structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1pythagoras_3_01_p1_00_01_p2_01_4_01_4.html#c2105145e587929fce337ec44821b5a8">00232</a> <span class="keyword">typedef</span> <a class="code" href="structggl_1_1strategy__tag__distance__point__point.html">strategy_tag_distance_point_point</a> <a class="code" href="structggl_1_1strategy__tag__distance__point__point.html">type</a>;
-<a name="l00233"></a>00233 };
-<a name="l00234"></a>00234
-<a name="l00235"></a>00235 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Segment, <span class="keyword">typename</span> PPStrategy&gt;
-<a name="l00236"></a><a class="code" href="structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1xy__point__segment_3_01_point_00_01_segment_00_01_p_p_strategy_01_4_01_4.html">00236</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1strategy__tag.html">strategy_tag</a>&lt;strategy::<a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>::xy_point_segment&lt;Point, Segment, PPStrategy&gt; &gt;
-<a name="l00237"></a>00237 {
-<a name="l00238"></a><a class="code" href="structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1xy__point__segment_3_01_point_00_01_segment_00_01_p_p_strategy_01_4_01_4.html#c06ed387f720d8a642e343b6d9b7f78c">00238</a> <span class="keyword">typedef</span> <a class="code" href="structggl_1_1strategy__tag__distance__point__segment.html">strategy_tag_distance_point_segment</a> <a class="code" href="structggl_1_1strategy__tag__distance__point__segment.html">type</a>;
-<a name="l00239"></a>00239 };
-<a name="l00240"></a>00240
-<a name="l00241"></a>00241
+<a name="l00204"></a>00204
+<a name="l00205"></a>00205
+<a name="l00206"></a>00206 <span class="preprocessor">#ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS</span>
+<a name="l00207"></a>00207 <span class="preprocessor"></span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2&gt;
+<a name="l00208"></a>00208 <span class="keyword">struct </span>strategy_distance&lt;cartesian_tag, cartesian_tag, P1, P2&gt;
+<a name="l00209"></a>00209 {
+<a name="l00210"></a>00210 <span class="keyword">typedef</span> strategy::distance::pythagoras&lt;P1, P2&gt; <a class="code" href="structggl_1_1strategy__distance.html#e95dff63729289b7ff265e4311fb54de">type</a>;
+<a name="l00211"></a>00211 };
+<a name="l00212"></a>00212
+<a name="l00213"></a>00213 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Segment&gt;
+<a name="l00214"></a>00214 <span class="keyword">struct </span>strategy_distance_segment&lt;cartesian_tag, cartesian_tag, Point, Segment&gt;
+<a name="l00215"></a>00215 {
+<a name="l00216"></a>00216 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;Segment&gt;::type segment_point_type;
+<a name="l00217"></a>00217
+<a name="l00218"></a>00218 <span class="keyword">typedef</span> strategy::distance::xy_point_segment
+<a name="l00219"></a>00219 &lt;
+<a name="l00220"></a>00220 Point,
+<a name="l00221"></a>00221 Segment,
+<a name="l00222"></a>00222 <span class="keyword">typename</span> strategy_distance
+<a name="l00223"></a>00223 &lt;
+<a name="l00224"></a>00224 cartesian_tag, cartesian_tag, Point, segment_point_type
+<a name="l00225"></a>00225 &gt;<a class="code" href="structggl_1_1strategy__distance__segment.html#7f194ba200da0e6da72ac4e14a623a2f">::type</a>
+<a name="l00226"></a>00226 &gt; <a class="code" href="structggl_1_1strategy__distance__segment.html#7f194ba200da0e6da72ac4e14a623a2f">type</a>;
+<a name="l00227"></a>00227 };
+<a name="l00228"></a>00228 <span class="preprocessor">#endif</span>
+<a name="l00229"></a>00229 <span class="preprocessor"></span>
+<a name="l00230"></a>00230
+<a name="l00231"></a>00231 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2&gt;
+<a name="l00232"></a><a class="code" href="structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1pythagoras_3_01_p1_00_01_p2_01_4_01_4.html">00232</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1strategy__tag.html">strategy_tag</a>&lt;strategy::<a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>::pythagoras&lt;P1, P2&gt; &gt;
+<a name="l00233"></a>00233 {
+<a name="l00234"></a><a class="code" href="structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1pythagoras_3_01_p1_00_01_p2_01_4_01_4.html#c2105145e587929fce337ec44821b5a8">00234</a> <span class="keyword">typedef</span> <a class="code" href="structggl_1_1strategy__tag__distance__point__point.html">strategy_tag_distance_point_point</a> <a class="code" href="structggl_1_1strategy__tag__distance__point__point.html">type</a>;
+<a name="l00235"></a>00235 };
+<a name="l00236"></a>00236
+<a name="l00237"></a>00237 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Segment, <span class="keyword">typename</span> PPStrategy&gt;
+<a name="l00238"></a><a class="code" href="structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1xy__point__segment_3_01_point_00_01_segment_00_01_p_p_strategy_01_4_01_4.html">00238</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1strategy__tag.html">strategy_tag</a>&lt;strategy::<a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>::xy_point_segment&lt;Point, Segment, PPStrategy&gt; &gt;
+<a name="l00239"></a>00239 {
+<a name="l00240"></a><a class="code" href="structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1xy__point__segment_3_01_point_00_01_segment_00_01_p_p_strategy_01_4_01_4.html#c06ed387f720d8a642e343b6d9b7f78c">00240</a> <span class="keyword">typedef</span> <a class="code" href="structggl_1_1strategy__tag__distance__point__segment.html">strategy_tag_distance_point_segment</a> <a class="code" href="structggl_1_1strategy__tag__distance__point__segment.html">type</a>;
+<a name="l00241"></a>00241 };
 <a name="l00242"></a>00242
-<a name="l00243"></a>00243 } <span class="comment">// namespace ggl</span>
+<a name="l00243"></a>00243
 <a name="l00244"></a>00244
-<a name="l00245"></a>00245
-<a name="l00246"></a>00246 <span class="preprocessor">#endif // GGL_STRATEGY_CARTESIAN_DISTANCE_HPP</span>
+<a name="l00245"></a>00245 } <span class="comment">// namespace ggl</span>
+<a name="l00246"></a>00246
+<a name="l00247"></a>00247
+<a name="l00248"></a>00248 <span class="preprocessor">#endif // GGL_STRATEGY_CARTESIAN_DISTANCE_HPP</span>
 </pre></div></div>
 <hr size="1">
 <table width="100%">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/class_point_list.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/class_point_list.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/class_point_list.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -43,7 +43,7 @@
   </div>
 </div>
 <div class="contents">
-<h1>PointList Class Reference</h1><!-- doxytag: class="PointList" -->Inherited by <a class="el" href="classggl_1_1linear__ring.html">ggl::linear_ring&lt; Point, PointList, PointAlloc &gt;</a>.
+<h1>PointList Class Reference</h1><!-- doxytag: class="PointList" -->Inherited by <a class="el" href="classggl_1_1linear__ring.html">ggl::linear_ring&lt; Point, PointList, ClockWise, PointAlloc &gt;</a>.
 <p>
 <table border="0" cellpadding="0" cellspacing="0">
 <tr><td></td></tr>

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classes.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classes.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classes.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -43,28 +43,29 @@
   </div>
 </div>
 <div class="contents">
-<h1>Class Index</h1><p><div class="qindex"><a class="qindex" href="#letter_A">A</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_B">B</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_C">C</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_E">E</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_F">F</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_G">G</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_H">H</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_I">I</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_L">L</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_M">M</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_N">N</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_P">P</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_R">R</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_S">S</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_T">T</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_U">U</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_W">W</a>&nbsp;|&nbsp;<a class="qindex" href="#
letter_X">X</a></div><p>
+<h1>Class Index</h1><p><div class="qindex"><a class="qindex" href="#letter_A">A</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_B">B</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_C">C</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_E">E</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_F">F</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_G">G</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_H">H</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_I">I</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_L">L</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_M">M</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_N">N</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_P">P</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_R">R</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_S">S</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_T">T</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_U">U</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_V">V</a>&nbsp;|&nbsp;<a class="qindex" href="#
letter_W">W</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_X">X</a></div><p>
 <table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
 <tr><td><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;A&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structggl_1_1cs_1_1geographic.html">geographic</a> (<a class="el" href="namespaceggl_1_1cs.html">ggl::cs</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1ring__type.html">ring_type</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1access.html">access</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1geographic__tag.html">geographic_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1rotate__transformer.html">rotate_transformer</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1access_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4.html">access&lt; ggl::detail::intersect
ion::intersection_point&lt; P &gt; &gt;</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1strategy_1_1centroid_1_1geolib1995.html">geolib1995</a> (<a class="el" href="namespaceggl_1_1strategy_1_1centroid.html">ggl::strategy::centroid</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;S&nbsp;&nbsp;</div></td></tr></table>
-</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1append__point.html">append_point</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1geometry__collection__tag.html">geometry_collection_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1scale__transformer.html">scale_transformer</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1area__result.html">area_result</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1geometry__id.html">geometry_id</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1scale__transformer_3_01_p1_00_01_p2_00_012_00_012_01_4.html">scale_transformer&lt; P
1, P2, 2, 2 &gt;</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1as__range__type.html">as_range_type</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1geometry__not__recognized__tag.html">geometry_not_recognized_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1scale__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4.html">scale_transformer&lt; P1, P2, 3, 3 &gt;</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;B&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html">graham</a> (<a class="el" href="namespaceggl_1_1strategy_1_1convex__hull.html">ggl::strategy::convex_hull</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1section.html">section</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classggl_1_1strategy_1_1centroid_1_1bashein__detmer.html">bashein_detmer</a> (<a class="el" href="namespaceggl_1_1strategy_1_1centroid.html">ggl::strategy::centroid</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1envelope_1_1grow__ll.html">grow_ll</a> (<a class="el" href="namespaceggl_1_1strategy_1_1envelope.html">ggl::strategy::envelope</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1sections.html">sections</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1concept_1_1_box.html">Box</a> (<a class="el" href="namespaceggl
_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_H"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;H&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structggl_1_1segment.html">segment</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classggl_1_1box.html">box</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1strategy_1_1distance_1_1haversine.html">haversine</a> (<a class="el" href="namespaceggl_1_1strategy_1_1distance.html">ggl::strategy::distance</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1concept_1_1_segment.html">Segment</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1box__tag.html">box_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;I&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structggl_1_1segment__identifier.html">segment_identifier</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classggl_1_1strategy_1_1area_1_1by__spherical__excess.html">by_spherical_excess</a> (<a class="el" href="namespaceggl_1_1strategy_1_1area.html">ggl::strategy::area</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1traits_1_1indexed__access.html">indexed_access</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1segment__intersection__points.html">segment_intersection_points</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classggl_1_1strategy_1_1area_1_1by__triangles.html">by_triangles</a> (<a class="el" href="namespaceggl_1_1strategy_1_1area.html">ggl::strategy::area</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1traits_1_1interior__rings.html">inter
ior_rings</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1segment__iterator.html">segment_iterator</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;C&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structggl_1_1traits_1_1interior__type.html">interior_type</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1segment__tag.html">segment_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1cs_1_1cartesian.html">cartesian</a> (<a class="el" href="namespaceggl_1_1cs.html">ggl::cs</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1interior__type.html">interior_type</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1policies_1_1relate_1_1segments__de9im.html">segments_de9im</a> (<a class="el" href="namespaceggl_1_1policies_1_1relate.html">ggl::policies::relate</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1cartesian__distance.html">cartesian_distance</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class
="el" href="structggl_1_1strategy_1_1transform_1_1inverse__transformer.html">inverse_transformer</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1policies_1_1relate_1_1segments__direction.html">segments_direction</a> (<a class="el" href="namespaceggl_1_1policies_1_1relate.html">ggl::policies::relate</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1cartesian__tag.html">cartesian_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1is__linear.html">is_linear</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1policies_1_1relate_1_1segments__intersection__points.html">segments_intersection_points</a> (<a class="el" href="namespaceggl_1_1policies_1_1relate.html">ggl::policies::relate</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classggl_1_1centro
id__exception.html">centroid_exception</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1is__multi.html">is_multi</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1policies_1_1relate_1_1segments__tupled.html">segments_tupled</a> (<a class="el" href="namespaceggl_1_1policies_1_1relate.html">ggl::policies::relate</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1circular__iterator.html">circular_iterator</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1is__radian.html">is_radian</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1select__coordinate__type.html">select_coordinate_type</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1clear.html">clear</a> (<a class="e
l" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;L&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structggl_1_1select__most__precise.html">select_most_precise</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1envelope_1_1combine__xy.html">combine_xy</a> (<a class="el" href="namespaceggl_1_1strategy_1_1envelope.html">ggl::strategy::envelope</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1less.html">less</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1envelope_1_1shift_1_1shifted.html">shifted</a> (<a class="el" href="namespaceggl_1_1strategy_1_1envelope_1_1shift.html">ggl::strategy::envelope::shift</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1concept_1_1_const_box.html">ConstBox</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1strategy_1_1intersection_1_1liang__barsky.html">liang_barsky</a> (<a c
lass="el" href="namespaceggl_1_1strategy_1_1intersection.html">ggl::strategy::intersection</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1envelope_1_1shift_1_1shifted_3_01degree_01_4.html">shifted&lt; degree &gt;</a> (<a class="el" href="namespaceggl_1_1strategy_1_1envelope_1_1shift.html">ggl::strategy::envelope::shift</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1concept_1_1_const_linestring.html">ConstLinestring</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1linear__ring.html">linear_ring</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1envelope_1_1shift_1_1shifted_3_01radian_01_4.html">shifted&lt; radian &gt;</a> (<a class="el" href="namespaceggl_1_1strategy_1_1envelope_1_1shift.html">ggl::strategy::envelope::shift</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1concept
_1_1_const_nsphere.html">ConstNsphere</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1linestring.html">linestring</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1cs_1_1spherical.html">spherical</a> (<a class="el" href="namespaceggl_1_1cs.html">ggl::cs</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1concept_1_1_const_point.html">ConstPoint</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1concept_1_1_linestring.html">Linestring</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1spherical__tag.html">spherical_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1concept_1_1_const_polygon.html">ConstPolygon</a> (
<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1linestring__tag.html">linestring_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1envelope_1_1grow__ll_1_1state.html">grow_ll::state</a> (<a class="el" href="namespaceggl_1_1strategy_1_1envelope.html">ggl::strategy::envelope</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1concept_1_1_const_ring.html">ConstRing</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1strategy_1_1distance_1_1ll__point__segment.html">ll_point_segment</a> (<a class="el" href="namespaceggl_1_1strategy_1_1distance.html">ggl::strategy::distance</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1envelope_1_1combine__xy_1_1state.html">combine_xy::state</a> (<a class="el" href="namespaceggl_1_1strategy_1_1envel
ope.html">ggl::strategy::envelope</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1concept_1_1_const_segment.html">ConstSegment</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;M&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structggl_1_1strategy__area.html">strategy_area</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1coordinate__system.html">coordinate_system</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1map__transformer.html">map_transformer</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__centroid.html">strategy_centroid</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1coordinate__system.html">coordinate_system</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1multi__linestring.html">multi_linestring</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&
nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__compare.html">strategy_compare</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1coordinate__system_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4.html">coordinate_system&lt; ggl::detail::intersection::intersection_point&lt; P &gt; &gt;</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1multi__linestring__tag.html">multi_linestring_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__convex__hull.html">strategy_convex_hull</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1coordinate__type.html">coordinate_type</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a cla
ss="el" href="structggl_1_1multi__point.html">multi_point</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__distance.html">strategy_distance</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1coordinate__type.html">coordinate_type</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1multi__point__tag.html">multi_point_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__distance__segment.html">strategy_distance_segment</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1coordinate__type_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4.html">coordinate_type&lt; ggl::detail::intersection::intersection_point&lt; P &gt; &gt;</a> (<a class="e
l" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1multi__polygon.html">multi_polygon</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__envelope.html">strategy_envelope</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1copy__direct.html">copy_direct</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1multi__polygon__tag.html">multi_polygon_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__parse.html">strategy_parse</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1copy__per__coordinate.html">copy_per_coordina
te</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_N"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;N&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structggl_1_1strategy__side.html">strategy_side</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1cs__tag.html">cs_tag</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1not__implemented.html">not_implemented</a> (<a class="el" href="namespaceggl_1_1strategy.html">ggl::strategy</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__tag.html">strategy_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1cs__tag.html">cs_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1nsphere.html">nsphere</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1pythagoras_3_01_
p1_00_01_p2_01_4_01_4.html">strategy_tag&lt; strategy::distance::pythagoras&lt; P1, P2 &gt; &gt;</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;D&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structggl_1_1concept_1_1_nsphere.html">Nsphere</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1xy__point__segment_3_01_point_00_01_segment_00_01_p_p_strategy_01_4_01_4.html">strategy_tag&lt; strategy::distance::xy_point_segment&lt; Point, Segment, PPStrategy &gt; &gt;</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1de9im.html">de9im</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1nsphere__tag.html">nsphere_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__tag__distance__point__point.html">strategy_tag_distance_point_point</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1de9im
__segment.html">de9im_segment</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;P&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structggl_1_1strategy__tag__distance__point__segment.html">strategy_tag_distance_point_segment</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classggl_1_1degree.html">degree</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1point.html">point</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__tag__unknown.html">strategy_tag_unknown</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1degree__radian__vv.html">degree_radian_vv</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1concept_1_1_point.html">Point</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;<
/td><td><a class="el" href="structggl_1_1strategy__transform.html">strategy_transform</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1degree__radian__vv__3.html">degree_radian_vv_3</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1point__const__iterator.html">point_const_iterator</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__within.html">strategy_within</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1dimension.html">dimension</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1point__tag.html">point_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;<
/td><td><a class="el" href="classggl_1_1svg__manipulator.html">svg_manipulator</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1dimension.html">dimension</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1traits_1_1point__type.html">point_type</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;T&nbsp;&nbsp;</div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classcore__dispatch_1_1dimension.html">core_dispatch::dimension</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1point__type.html">point_type</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1traits_1_1tag.html">tag</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1dimension_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4.html">dimension&lt; ggl::detail::intersection::intersection_point&lt; P &gt; &gt;</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1point__xy.html">point_xy</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1tag.html">tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class=
"el" href="structggl_1_1policies_1_1relate_1_1direction__type.html">direction_type</a> (<a class="el" href="namespaceggl_1_1policies_1_1relate.html">ggl::policies::relate</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_point_list.html">PointList</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1traits_1_1tag_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4.html">tag&lt; ggl::detail::intersection::intersection_point&lt; P &gt; &gt;</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1distance__result.html">distance_result</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1cs_1_1polar.html">polar</a> (<a class="el" href="namespaceggl_1_1cs.html">ggl::cs</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1topological__dimension.html">topological_dimension</a> (<a class="el" href="namespaceggl.html">ggl</a>)&n
bsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html">douglas_peucker</a> (<a class="el" href="namespaceggl_1_1strategy_1_1simplify.html">ggl::strategy::simplify</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1polygon.html">polygon</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1translate__transformer.html">translate_transformer</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classggl_1_1dsv__manipulator.html">dsv_manipulator</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1concept_1_1_polygon.html">Polygon</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1translate__transforme
r_3_01_p1_00_01_p2_00_012_00_012_01_4.html">translate_transformer&lt; P1, P2, 2, 2 &gt;</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;E&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structggl_1_1polygon__tag.html">polygon_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1translate__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4.html">translate_transformer&lt; P1, P2, 3, 3 &gt;</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1compare_1_1euclidian.html">euclidian</a> (<a class="el" href="namespaceggl_1_1strategy_1_1compare.html">ggl::strategy::compare</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1distance_1_1pythagoras.html">pythagoras</a> (<a class="el" href="namespaceggl_1_1strategy_1_1distance.html">ggl::strategy::distance</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_U"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;U&nbsp;&nbsp;</div></td></tr></table>
-</td></tr><tr><td><a class="el" href="structggl_1_1ever__circling__iterator.html">ever_circling_iterator</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;R&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classggl_1_1strategy_1_1transform_1_1ublas__transformer.html">ublas_transformer</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1exception.html">exception</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1radian.html">radian</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_012_00_012_01_4.html">ublas_transformer&lt; P1, P2, 2, 2 &gt;</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1exterior__ring.html">exterior_ring</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1traits_1_1
radius__access.html">radius_access</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_013_00_012_01_4.html">ublas_transformer&lt; P1, P2, 3, 2 &gt;</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;F&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structggl_1_1traits_1_1radius__type.html">radius_type</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4.html">ublas_transformer&lt; P1, P2, 3, 3 &gt;</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1within_1_1franklin.html">franklin</a> (<a class="el" href="namespaceggl_1_1strategy_1_1within.html">ggl::strategy::within</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1radius__type.html">radius_type</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1traits_1_1use__std.html">use_std</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1stra
tegy_1_1transform_1_1from__cartesian__3__to__spherical__2.html">from_cartesian_3_to_spherical_2</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1replace__point__type.html">replace_point_type</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_W"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;W&nbsp;&nbsp;</div></td></tr></table>
-</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1from__cartesian__3__to__spherical__3.html">from_cartesian_3_to_spherical_3</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1reverse__dispatch.html">reverse_dispatch</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1strategy_1_1within_1_1winding.html">winding</a> (<a class="el" href="namespaceggl_1_1strategy_1_1within.html">ggl::strategy::within</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1from__spherical__2__to__cartesian__3.html">from_spherical_2_to_cartesian_3</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1concept_1_1_ring.html">Ring</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a
>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_X"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;X&nbsp;&nbsp;</div></td></tr></table>
-</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1from__spherical__3__to__cartesian__3.html">from_spherical_3_to_cartesian_3</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1ring__tag.html">ring_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html">xy_point_segment</a> (<a class="el" href="namespaceggl_1_1strategy_1_1distance.html">ggl::strategy::distance</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;G&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structggl_1_1traits_1_1ring__type.html">ring_type</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1side_1_1xy__side.html">xy_side</a> (<a class="el" href="namespaceggl_1_1strategy_1_1side.html">ggl::strategy::side</a>)&nbsp;&nbsp;&nbsp;</td></tr></table><p><div class="qindex"><a class="qindex" href="#letter_A">A</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_B">B</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_C">C</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_E">E</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_F">F</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_G">G</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_H">H</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_I">I</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_L">L</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_M">M</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_N">N</a>
&nbsp;|&nbsp;<a class="qindex" href="#letter_P">P</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_R">R</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_S">S</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_T">T</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_U">U</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_W">W</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_X">X</a></div><p>
+</td><td><a class="el" href="classggl_1_1strategy_1_1centroid_1_1geolib1995.html">geolib1995</a> (<a class="el" href="namespaceggl_1_1strategy_1_1centroid.html">ggl::strategy::centroid</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1rotate__transformer.html">rotate_transformer</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1access.html">access</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1geometry__collection__tag.html">geometry_collection_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;S&nbsp;&nbsp;</div></td></tr></table>
+</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1access_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4.html">access&lt; ggl::detail::intersection::intersection_point&lt; P &gt; &gt;</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1geometry__id.html">geometry_id</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1scale__transformer.html">scale_transformer</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1append__point.html">append_point</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1geometry__not__recognized__tag.html">geometry_not_recognized_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nb
sp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1scale__transformer_3_01_p1_00_01_p2_00_012_00_012_01_4.html">scale_transformer&lt; P1, P2, 2, 2 &gt;</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1area__result.html">area_result</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html">graham</a> (<a class="el" href="namespaceggl_1_1strategy_1_1convex__hull.html">ggl::strategy::convex_hull</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1scale__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4.html">scale_transformer&lt; P1, P2, 3, 3 &gt;</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1as__range__type.html">as_ra
nge_type</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1envelope_1_1grow__ll.html">grow_ll</a> (<a class="el" href="namespaceggl_1_1strategy_1_1envelope.html">ggl::strategy::envelope</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1section.html">section</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;B&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a name="letter_H"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;H&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structggl_1_1sections.html">sections</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classggl_1_1strategy_1_1centroid_1_1bashein__detmer.html">bashein_detmer</a> (<a class="el" href="namespaceggl_1_1strategy_1_1centroid.html">ggl::strategy::centroid</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1strategy_1_1distance_1_1haversine.html">haversine</a> (<a class="el" href="namespaceggl_1_1strategy_1_1distance.html">ggl::strategy::distance</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1segment.html">segment</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1concept_1_1_box.html">Box</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;I&nbsp;&nbsp;</div></td></tr></table>

+</td><td><a class="el" href="structggl_1_1concept_1_1_segment.html">Segment</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classggl_1_1box.html">box</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1traits_1_1indexed__access.html">indexed_access</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1segment__identifier.html">segment_identifier</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1box__tag.html">box_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1traits_1_1interior__rings.html">interior_rings</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1segment__intersection__po
ints.html">segment_intersection_points</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classggl_1_1strategy_1_1area_1_1by__spherical__excess.html">by_spherical_excess</a> (<a class="el" href="namespaceggl_1_1strategy_1_1area.html">ggl::strategy::area</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1traits_1_1interior__type.html">interior_type</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1segment__iterator.html">segment_iterator</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classggl_1_1strategy_1_1area_1_1by__triangles.html">by_triangles</a> (<a class="el" href="namespaceggl_1_1strategy_1_1area.html">ggl::strategy::area</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1interior__type.html">interior_type</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><
td><a class="el" href="structggl_1_1segment__tag.html">segment_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;C&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1inverse__transformer.html">inverse_transformer</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1policies_1_1relate_1_1segments__de9im.html">segments_de9im</a> (<a class="el" href="namespaceggl_1_1policies_1_1relate.html">ggl::policies::relate</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1cs_1_1cartesian.html">cartesian</a> (<a class="el" href="namespaceggl_1_1cs.html">ggl::cs</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1is__linear.html">is_linear</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1policies_1_1relate_1_1segments__direction.html">segments_direction</a> (<a class="el" href="namespaceggl_1_1policies_1_1relate.html">ggl::policies::relate</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1cartesian
__distance.html">cartesian_distance</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1is__multi.html">is_multi</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1policies_1_1relate_1_1segments__intersection__points.html">segments_intersection_points</a> (<a class="el" href="namespaceggl_1_1policies_1_1relate.html">ggl::policies::relate</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1cartesian__tag.html">cartesian_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1is__radian.html">is_radian</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1policies_1_1relate_1_1segments__tupled.html">segments_tupled</a> (<a class="el" href="namespaceggl_1_1policies_1_1relate.html">ggl::policies::relate</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el"
href="classggl_1_1centroid__exception.html">centroid_exception</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;L&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structggl_1_1select__coordinate__type.html">select_coordinate_type</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1circular__iterator.html">circular_iterator</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1less.html">less</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1select__most__precise.html">select_most_precise</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1clear.html">clear</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1strategy_1_1intersection_1_1liang__barsky.html">liang_barsky</a> (<a class="el" href="namespaceggl_1_1strategy_1_1intersection.html">ggl::strategy::intersection</a>)&nbsp;&nbsp;&nbsp;</td><td><a c
lass="el" href="structggl_1_1strategy_1_1envelope_1_1shift_1_1shifted.html">shifted</a> (<a class="el" href="namespaceggl_1_1strategy_1_1envelope_1_1shift.html">ggl::strategy::envelope::shift</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1envelope_1_1combine__xy.html">combine_xy</a> (<a class="el" href="namespaceggl_1_1strategy_1_1envelope.html">ggl::strategy::envelope</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1linear__ring.html">linear_ring</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1envelope_1_1shift_1_1shifted_3_01degree_01_4.html">shifted&lt; degree &gt;</a> (<a class="el" href="namespaceggl_1_1strategy_1_1envelope_1_1shift.html">ggl::strategy::envelope::shift</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1concept_1_1_const_box.html">ConstBox</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a
class="el" href="classggl_1_1linestring.html">linestring</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1envelope_1_1shift_1_1shifted_3_01radian_01_4.html">shifted&lt; radian &gt;</a> (<a class="el" href="namespaceggl_1_1strategy_1_1envelope_1_1shift.html">ggl::strategy::envelope::shift</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1concept_1_1_const_linestring.html">ConstLinestring</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1concept_1_1_linestring.html">Linestring</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1concept_1_1_simplify_strategy.html">SimplifyStrategy</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1concept_1_1_const_nsphere.html">Const
Nsphere</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1linestring__tag.html">linestring_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1cs_1_1spherical.html">spherical</a> (<a class="el" href="namespaceggl_1_1cs.html">ggl::cs</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1concept_1_1_const_point.html">ConstPoint</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1strategy_1_1distance_1_1ll__point__segment.html">ll_point_segment</a> (<a class="el" href="namespaceggl_1_1strategy_1_1distance.html">ggl::strategy::distance</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1spherical__tag.html">spherical_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1concept_1_1_const_pol
ygon.html">ConstPolygon</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;M&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structggl_1_1strategy_1_1envelope_1_1grow__ll_1_1state.html">grow_ll::state</a> (<a class="el" href="namespaceggl_1_1strategy_1_1envelope.html">ggl::strategy::envelope</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1concept_1_1_const_ring.html">ConstRing</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1map__transformer.html">map_transformer</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1envelope_1_1combine__xy_1_1state.html">combine_xy::state</a> (<a class="el" href="namespaceggl_1_1strategy_1_1envelope.html">ggl::strategy::envelope</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1concept_1_1_const_segment.html">ConstSegment</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&n
bsp;&nbsp;</td><td><a class="el" href="structggl_1_1multi__linestring.html">multi_linestring</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__area.html">strategy_area</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1coordinate__system.html">coordinate_system</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1multi__linestring__tag.html">multi_linestring_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__centroid.html">strategy_centroid</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1coordinate__system.html">coordinate_system</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1
_1multi__point.html">multi_point</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__compare.html">strategy_compare</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1coordinate__system_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4.html">coordinate_system&lt; ggl::detail::intersection::intersection_point&lt; P &gt; &gt;</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1multi__point__tag.html">multi_point_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__convex__hull.html">strategy_convex_hull</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1coordinate__type.html">coordinate_type</a> (<a class="el" hr
ef="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1multi__polygon.html">multi_polygon</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__distance.html">strategy_distance</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1coordinate__type.html">coordinate_type</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1multi__polygon__tag.html">multi_polygon_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__distance__segment.html">strategy_distance_segment</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1coordinate__type_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4.html">coordina
te_type&lt; ggl::detail::intersection::intersection_point&lt; P &gt; &gt;</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_N"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;N&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structggl_1_1strategy__envelope.html">strategy_envelope</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1copy__direct.html">copy_direct</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1not__implemented.html">not_implemented</a> (<a class="el" href="namespaceggl_1_1strategy.html">ggl::strategy</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__parse.html">strategy_parse</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1copy__per__coordinate.html">copy_per_coordinate</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1nsphere.html">nsphere</a> (<a
 class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__side.html">strategy_side</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classggl_1_1strategy_1_1distance_1_1cross__track.html">cross_track</a> (<a class="el" href="namespaceggl_1_1strategy_1_1distance.html">ggl::strategy::distance</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1concept_1_1_nsphere.html">Nsphere</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__tag.html">strategy_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1cs__tag.html">cs_tag</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1nsphere__tag.html">nsphere_tag</a> (<a class="el" href="namespaceggl.ht
ml">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1pythagoras_3_01_p1_00_01_p2_01_4_01_4.html">strategy_tag&lt; strategy::distance::pythagoras&lt; P1, P2 &gt; &gt;</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1cs__tag.html">cs_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;P&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1xy__point__segment_3_01_point_00_01_segment_00_01_p_p_strategy_01_4_01_4.html">strategy_tag&lt; strategy::distance::xy_point_segment&lt; Point, Segment, PPStrategy &gt; &gt;</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;D&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="classggl_1_1point.html">point</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__tag__distance__point__point.html">strategy_tag_distance_point_point</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1de9im.html">de9im</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1concept_1_1_point.html">Point</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__tag__distance__point__segment.html">strategy_tag_distance_point_segment</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1de9im__segment.html">de9im_segment</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1traits_1_1
point__order.html">point_order</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__tag__unknown.html">strategy_tag_unknown</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classggl_1_1degree.html">degree</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1point__order.html">point_order</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__transform.html">strategy_transform</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1degree__radian__vv.html">degree_radian_vv</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1point__tag.html">point_tag
</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy__within.html">strategy_within</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1degree__radian__vv__3.html">degree_radian_vv_3</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1traits_1_1point__type.html">point_type</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1svg__manipulator.html">svg_manipulator</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1dimension.html">dimension</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1point__type.html">point_ty
pe</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;T&nbsp;&nbsp;</div></td></tr></table>
+</td></tr><tr><td><a class="el" href="structggl_1_1dimension.html">dimension</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1point__xy.html">point_xy</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1traits_1_1tag.html">tag</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classcore__dispatch_1_1dimension.html">core_dispatch::dimension</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1concept_1_1_point_distance_strategy.html">PointDistanceStrategy</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1tag.html">tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1dimension_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_
01_4.html">dimension&lt; ggl::detail::intersection::intersection_point&lt; P &gt; &gt;</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="class_point_list.html">PointList</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1traits_1_1tag_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4.html">tag&lt; ggl::detail::intersection::intersection_point&lt; P &gt; &gt;</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1policies_1_1relate_1_1direction__type.html">direction_type</a> (<a class="el" href="namespaceggl_1_1policies_1_1relate.html">ggl::policies::relate</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1concept_1_1_point_segment_distance_strategy.html">PointSegmentDistanceStrategy</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1
_1topological__dimension.html">topological_dimension</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1distance__result.html">distance_result</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1cs_1_1polar.html">polar</a> (<a class="el" href="namespaceggl_1_1cs.html">ggl::cs</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1translate__transformer.html">translate_transformer</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html">douglas_peucker</a> (<a class="el" href="namespaceggl_1_1strategy_1_1simplify.html">ggl::strategy::simplify</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1polygon.html">polygon</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;
</td><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1translate__transformer_3_01_p1_00_01_p2_00_012_00_012_01_4.html">translate_transformer&lt; P1, P2, 2, 2 &gt;</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classggl_1_1dsv__manipulator.html">dsv_manipulator</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1concept_1_1_polygon.html">Polygon</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1translate__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4.html">translate_transformer&lt; P1, P2, 3, 3 &gt;</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"
>&nbsp;&nbsp;E&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structggl_1_1polygon__tag.html">polygon_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_U"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;U&nbsp;&nbsp;</div></td></tr></table>
+</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1compare_1_1euclidian.html">euclidian</a> (<a class="el" href="namespaceggl_1_1strategy_1_1compare.html">ggl::strategy::compare</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1distance_1_1pythagoras.html">pythagoras</a> (<a class="el" href="namespaceggl_1_1strategy_1_1distance.html">ggl::strategy::distance</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1strategy_1_1transform_1_1ublas__transformer.html">ublas_transformer</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1ever__circling__iterator.html">ever_circling_iterator</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;R&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="classggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_012_00_012_01_4.html">ublas_transformer&lt; P1, P2, 2, 2 &gt;</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1exception.html">exception</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1radian.html">radian</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_013_00_012_01_4.html">ublas_transformer&lt; P1, P2, 3, 2 &gt;</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1traits_1_1exterior__ring.html">exterior_ring</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp
;&nbsp;</td><td><a class="el" href="structggl_1_1traits_1_1radius__access.html">radius_access</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4.html">ublas_transformer&lt; P1, P2, 3, 3 &gt;</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;F&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structggl_1_1traits_1_1radius__type.html">radius_type</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1traits_1_1use__std.html">use_std</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1within_1_1franklin.html">franklin</a> (<a class="el" href="namespaceggl_1_1strategy_1_1within.html">ggl::strategy::within</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1radius__type.html">radius_type</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_V"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;V&nbsp;&nbsp;</div></td></tr></table>
+</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1from__cartesian__3__to__spherical__2.html">from_cartesian_3_to_spherical_2</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1replace__point__type.html">replace_point_type</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1vertex__iterator.html">vertex_iterator</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1from__cartesian__3__to__spherical__3.html">from_cartesian_3_to_spherical_3</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1reverse__dispatch.html">reverse_dispatch</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_W
"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;W&nbsp;&nbsp;</div></td></tr></table>
+</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1from__spherical__2__to__cartesian__3.html">from_spherical_2_to_cartesian_3</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1concept_1_1_ring.html">Ring</a> (<a class="el" href="namespaceggl_1_1concept.html">ggl::concept</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classggl_1_1strategy_1_1within_1_1winding.html">winding</a> (<a class="el" href="namespaceggl_1_1strategy_1_1within.html">ggl::strategy::within</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1strategy_1_1transform_1_1from__spherical__3__to__cartesian__3.html">from_spherical_3_to_cartesian_3</a> (<a class="el" href="namespaceggl_1_1strategy_1_1transform.html">ggl::strategy::transform</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1ring__tag.html">ring_tag</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&n
bsp;</td><td><a name="letter_X"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;X&nbsp;&nbsp;</div></td></tr></table>
+</td></tr><tr><td><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;G&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structggl_1_1traits_1_1ring__type.html">ring_type</a> (<a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1distance_1_1xy__point__segment.html">xy_point_segment</a> (<a class="el" href="namespaceggl_1_1strategy_1_1distance.html">ggl::strategy::distance</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1cs_1_1geographic.html">geographic</a> (<a class="el" href="namespaceggl_1_1cs.html">ggl::cs</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1ring__type.html">ring_type</a> (<a class="el" href="namespaceggl.html">ggl</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structggl_1_1strategy_1_1side_1_1xy__side.html">xy_side</a> (<a class="el" href="namespaceggl_1_1strategy_1_1side.html">ggl::strategy::side</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structggl_1_1geographic__tag.html">geographic_tag</a> (<a class="el" href="namespaceggl.html">ggl</a
>)&nbsp;&nbsp;&nbsp;</td></tr></table><p><div class="qindex"><a class="qindex" href="#letter_A">A</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_B">B</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_C">C</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_E">E</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_F">F</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_G">G</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_H">H</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_I">I</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_L">L</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_M">M</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_N">N</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_P">P</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_R">R</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_S">S</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_T">T</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_U">U</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_V">V</a>&nbsp;|&nbsp;<a class
="qindex" href="#letter_W">W</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_X">X</a></div><p>
 </div>
 <hr size="1">
 <table width="100%">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1linear__ring-members.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1linear__ring-members.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1linear__ring-members.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -43,7 +43,7 @@
   </div>
 </div>
 <div class="contents">
-<h1>ggl::linear_ring&lt; P, V, A &gt; Member List</h1>This is the complete list of members for <a class="el" href="classggl_1_1linear__ring.html">ggl::linear_ring&lt; P, V, A &gt;</a>, including all inherited members.<p><table>
+<h1>ggl::linear_ring&lt; P, V, ClockWise, A &gt; Member List</h1>This is the complete list of members for <a class="el" href="classggl_1_1linear__ring.html">ggl::linear_ring&lt; P, V, ClockWise, A &gt;</a>, including all inherited members.<p><table>
 </table></div>
 <hr size="1">
 <table width="100%">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1linear__ring.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1linear__ring.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1linear__ring.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -45,7 +45,7 @@
   </div>
 </div>
 <div class="contents">
-<h1>ggl::linear_ring&lt; P, V, A &gt; Class Template Reference</h1><!-- doxytag: class="ggl::linear_ring" -->A <a class="el" href="classggl_1_1linear__ring.html" title="A linear_ring (linear linear_ring) is a closed line which should not be selfintersecting...">linear_ring</a> (linear <a class="el" href="classggl_1_1linear__ring.html" title="A linear_ring (linear linear_ring) is a closed line which should not be selfintersecting...">linear_ring</a>) is a closed line which should not be selfintersecting.
+<h1>ggl::linear_ring&lt; P, V, ClockWise, A &gt; Class Template Reference</h1><!-- doxytag: class="ggl::linear_ring" -->A <a class="el" href="classggl_1_1linear__ring.html" title="A linear_ring (linear linear_ring) is a closed line which should not be selfintersecting...">linear_ring</a> (linear <a class="el" href="classggl_1_1linear__ring.html" title="A linear_ring (linear linear_ring) is a closed line which should not be selfintersecting...">linear_ring</a>) is a closed line which should not be selfintersecting.
 <a href="#_details">More...</a>
 <p>
 
@@ -54,8 +54,8 @@
 <tr><td></td></tr>
 </table>
 <hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template&lt;typename P, template&lt; typename, typename &gt; class V = std::vector, template&lt; typename &gt; class A = std::allocator&gt;<br>
- class ggl::linear_ring&lt; P, V, A &gt;</h3>
+<h3>template&lt;typename P, template&lt; typename, typename &gt; class V = std::vector, bool ClockWise = true, template&lt; typename &gt; class A = std::allocator&gt;<br>
+ class ggl::linear_ring&lt; P, V, ClockWise, A &gt;</h3>
 
 A <a class="el" href="classggl_1_1linear__ring.html" title="A linear_ring (linear linear_ring) is a closed line which should not be selfintersecting...">linear_ring</a> (linear <a class="el" href="classggl_1_1linear__ring.html" title="A linear_ring (linear linear_ring) is a closed line which should not be selfintersecting...">linear_ring</a>) is a closed line which should not be selfintersecting.
 <p>
@@ -70,7 +70,7 @@
 
 <p>
 <a class="el" href="03__polygon__example_8cpp-example.html#_a11">03_polygon_example.cpp</a>.</dl>
-<p>Definition at line <a class="el" href="linear__ring_8hpp_source.html#l00039">39</a> of file <a class="el" href="linear__ring_8hpp_source.html">linear_ring.hpp</a>.</p>
+<p>Definition at line <a class="el" href="linear__ring_8hpp_source.html#l00041">41</a> of file <a class="el" href="linear__ring_8hpp_source.html">linear_ring.hpp</a>.</p>
 </div>
 <hr size="1">
 <table width="100%">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1point.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1point.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1point.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -91,7 +91,7 @@
 <dl compact><dt><b>Examples: </b></dt><dd>
 
 <p>
-<a class="el" href="02__linestring__example_8cpp-example.html#_a18">02_linestring_example.cpp</a>, <a class="el" href="07__graph__route__example_8cpp-example.html#_a8">07_graph_route_example.cpp</a>, and <a class="el" href="x03__b__soci__example_8cpp-example.html#_a0">x03_b_soci_example.cpp</a>.</dl>
+<a class="el" href="02__linestring__example_8cpp-example.html#_a17">02_linestring_example.cpp</a>, <a class="el" href="07__graph__route__example_8cpp-example.html#_a8">07_graph_route_example.cpp</a>, and <a class="el" href="x03__b__soci__example_8cpp-example.html#_a0">x03_b_soci_example.cpp</a>.</dl>
 <p>Definition at line <a class="el" href="point_8hpp_source.html#l00034">34</a> of file <a class="el" href="point_8hpp_source.html">point.hpp</a>.</p>
 <hr><h2>Member Typedef Documentation</h2>
 <a class="anchor" name="114e475fd2f5f30fac7f60ef732dd402"></a><!-- doxytag: member="ggl::point::coordinate_type" ref="114e475fd2f5f30fac7f60ef732dd402" args="" -->

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1point__xy-members.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1point__xy-members.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1point__xy-members.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -48,7 +48,6 @@
   <tr class="memlist"><td><a class="el" href="classggl_1_1point.html#e3cedeca07933bd026e910ee8bb4547b">coordinate_system</a> typedef</td><td><a class="el" href="classggl_1_1point.html">ggl::point&lt; T, 2, C &gt;</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classggl_1_1point.html#114e475fd2f5f30fac7f60ef732dd402">coordinate_type</a> typedef</td><td><a class="el" href="classggl_1_1point.html">ggl::point&lt; T, 2, C &gt;</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classggl_1_1point.html#1feea795639ff3f2d985cc9ca32d2f9e">get</a>() const</td><td><a class="el" href="classggl_1_1point.html">ggl::point&lt; T, 2, C &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classggl_1_1point__xy.html#3c5f9d94906145cc473019b8eaf66e7d">operator&lt;</a>(point_xy const &amp;other) const </td><td><a class="el" href="classggl_1_1point__xy.html">ggl::point_xy&lt; T, C &gt;</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classggl_1_1point.html#526fb447a893414486fa85caa170cdbf">point</a>()</td><td><a class="el" href="classggl_1_1point.html">ggl::point&lt; T, 2, C &gt;</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classggl_1_1point.html#18fecbb13a7e7fe65b42ee624a7b6834">point</a>(Tconst &amp;v0, Tconst &amp;v1=0, Tconst &amp;v2=0)</td><td><a class="el" href="classggl_1_1point.html">ggl::point&lt; T, 2, C &gt;</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classggl_1_1point__xy.html#1accd1e9e84fdf9cf8d9da084d239167">point_xy</a>()</td><td><a class="el" href="classggl_1_1point__xy.html">ggl::point_xy&lt; T, C &gt;</a></td><td></td></tr>

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1point__xy.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1point__xy.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1point__xy.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -55,9 +55,6 @@
 <a href="classggl_1_1point__xy-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
 <tr><td></td></tr>
 <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1point__xy.html#3c5f9d94906145cc473019b8eaf66e7d">operator&lt;</a> (<a class="el" href="classggl_1_1point__xy.html">point_xy</a> const &amp;other) const </td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compare two points. <br></td></tr>
 <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1point__xy.html#844ec61e1186e2bb423a26c01e9a72d6">point_xy</a> (T const &amp;x, T const &amp;y)</td></tr>
 
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor with x/y values. <br></td></tr>
@@ -259,32 +256,6 @@
 
 </div>
 </div><p>
-<a class="anchor" name="3c5f9d94906145cc473019b8eaf66e7d"></a><!-- doxytag: member="ggl::point_xy::operator&lt;" ref="3c5f9d94906145cc473019b8eaf66e7d" args="(point_xy const &amp;other) const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename T, typename C = cs::cartesian&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool <a class="el" href="classggl_1_1point__xy.html">ggl::point_xy</a>&lt; T, C &gt;::operator&lt; </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classggl_1_1point__xy.html">point_xy</a>&lt; T, C &gt; const &amp;&nbsp;</td>
- <td class="paramname"> <em>other</em> </td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>
-Compare two points.
-<p>
-
-<p>Definition at line <a class="el" href="point__xy_8hpp_source.html#l00055">55</a> of file <a class="el" href="point__xy_8hpp_source.html">point_xy.hpp</a>.</p>
-
-</div>
-</div><p>
 </div>
 <hr size="1">
 <table width="100%">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1polygon-members.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1polygon-members.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1polygon-members.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -43,15 +43,15 @@
   </div>
 </div>
 <div class="contents">
-<h1>ggl::polygon&lt; Point, PointList, RingList, PointAlloc, RingAlloc &gt; Member List</h1>This is the complete list of members for <a class="el" href="classggl_1_1polygon.html">ggl::polygon&lt; Point, PointList, RingList, PointAlloc, RingAlloc &gt;</a>, including all inherited members.<p><table>
- <tr class="memlist"><td><a class="el" href="classggl_1_1polygon.html#114bcb53b0264af8edaa53d8e42bf45f">clear</a>()</td><td><a class="el" href="classggl_1_1polygon.html">ggl::polygon&lt; Point, PointList, RingList, PointAlloc, RingAlloc &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classggl_1_1polygon.html#5c966fd82091bfdbe8d6693059b37864">inner_container_type</a> typedef</td><td><a class="el" href="classggl_1_1polygon.html">ggl::polygon&lt; Point, PointList, RingList, PointAlloc, RingAlloc &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classggl_1_1polygon.html#0d41c7b42a1444fdc759550644c7924e">inners</a>() const </td><td><a class="el" href="classggl_1_1polygon.html">ggl::polygon&lt; Point, PointList, RingList, PointAlloc, RingAlloc &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classggl_1_1polygon.html#75a7c6b2f0fbc0c3e3127188f576c38f">inners</a>()</td><td><a class="el" href="classggl_1_1polygon.html">ggl::polygon&lt; Point, PointList, RingList, PointAlloc, RingAlloc &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classggl_1_1polygon.html#be04d3ead04813a25be1a219076358a8">outer</a>() const </td><td><a class="el" href="classggl_1_1polygon.html">ggl::polygon&lt; Point, PointList, RingList, PointAlloc, RingAlloc &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classggl_1_1polygon.html#6cdf9123dd3442b13cfd032555baea2f">outer</a>()</td><td><a class="el" href="classggl_1_1polygon.html">ggl::polygon&lt; Point, PointList, RingList, PointAlloc, RingAlloc &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classggl_1_1polygon.html#8dda8bcf15991e114554c6dcfb9c7231">point_type</a> typedef</td><td><a class="el" href="classggl_1_1polygon.html">ggl::polygon&lt; Point, PointList, RingList, PointAlloc, RingAlloc &gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classggl_1_1polygon.html#1c6fe805fcbf99e4b70afe9202c820aa">ring_type</a> typedef</td><td><a class="el" href="classggl_1_1polygon.html">ggl::polygon&lt; Point, PointList, RingList, PointAlloc, RingAlloc &gt;</a></td><td></td></tr>
+<h1>ggl::polygon&lt; Point, PointList, RingList, ClockWise, PointAlloc, RingAlloc &gt; Member List</h1>This is the complete list of members for <a class="el" href="classggl_1_1polygon.html">ggl::polygon&lt; Point, PointList, RingList, ClockWise, PointAlloc, RingAlloc &gt;</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classggl_1_1polygon.html#45859e712d67f58e5813e87759892bdf">clear</a>()</td><td><a class="el" href="classggl_1_1polygon.html">ggl::polygon&lt; Point, PointList, RingList, ClockWise, PointAlloc, RingAlloc &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classggl_1_1polygon.html#745719d755446c294264911892d97182">inner_container_type</a> typedef</td><td><a class="el" href="classggl_1_1polygon.html">ggl::polygon&lt; Point, PointList, RingList, ClockWise, PointAlloc, RingAlloc &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classggl_1_1polygon.html#5a8564eeeaa4f244e6f70ab10395a63f">inners</a>() const </td><td><a class="el" href="classggl_1_1polygon.html">ggl::polygon&lt; Point, PointList, RingList, ClockWise, PointAlloc, RingAlloc &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classggl_1_1polygon.html#c750a19a332ddfe4958ad62c78de8109">inners</a>()</td><td><a class="el" href="classggl_1_1polygon.html">ggl::polygon&lt; Point, PointList, RingList, ClockWise, PointAlloc, RingAlloc &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classggl_1_1polygon.html#5faae375ec2c4b4547da615fa8864e74">outer</a>() const </td><td><a class="el" href="classggl_1_1polygon.html">ggl::polygon&lt; Point, PointList, RingList, ClockWise, PointAlloc, RingAlloc &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classggl_1_1polygon.html#41e0bbcd9d466a41d8eecd6041f3c22c">outer</a>()</td><td><a class="el" href="classggl_1_1polygon.html">ggl::polygon&lt; Point, PointList, RingList, ClockWise, PointAlloc, RingAlloc &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classggl_1_1polygon.html#662c4458e3099e30097a3fc909d54941">point_type</a> typedef</td><td><a class="el" href="classggl_1_1polygon.html">ggl::polygon&lt; Point, PointList, RingList, ClockWise, PointAlloc, RingAlloc &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classggl_1_1polygon.html#6d7c8304fda2d2f1850cf2eb994c441a">ring_type</a> typedef</td><td><a class="el" href="classggl_1_1polygon.html">ggl::polygon&lt; Point, PointList, RingList, ClockWise, PointAlloc, RingAlloc &gt;</a></td><td></td></tr>
 </table></div>
 <hr size="1">
 <table width="100%">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1polygon.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1polygon.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1polygon.html 2009-10-21 05:23:22 EDT (Wed, 21 Oct 2009)
@@ -45,7 +45,7 @@
   </div>
 </div>
 <div class="contents">
-<h1>ggl::polygon&lt; Point, PointList, RingList, PointAlloc, RingAlloc &gt; Class Template Reference</h1><!-- doxytag: class="ggl::polygon" -->The <b><a class="el" href="classggl_1_1polygon.html" title="The polygon contains an outer ring and zero or more inner rings.">polygon</a></b> contains an outer ring and zero or more inner rings.
+<h1>ggl::polygon&lt; Point, PointList, RingList, ClockWise, PointAlloc, RingAlloc &gt; Class Template Reference</h1><!-- doxytag: class="ggl::polygon" -->The <b><a class="el" href="classggl_1_1polygon.html" title="The polygon contains an outer ring and zero or more inner rings.">polygon</a></b> contains an outer ring and zero or more inner rings.
 <a href="#_details">More...</a>
 <p>
 
@@ -54,29 +54,30 @@
 <tr><td></td></tr>
 <tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
 <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef RingList&lt; <a class="el" href="classggl_1_1linear__ring.html">ring_type</a>, <br class="typebreak">
-RingAlloc&lt; <a class="el" href="classggl_1_1linear__ring.html">ring_type</a> &gt; &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1polygon.html#5c966fd82091bfdbe8d6693059b37864">inner_container_type</a></td></tr>
+RingAlloc&lt; <a class="el" href="classggl_1_1linear__ring.html">ring_type</a> &gt; &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1polygon.html#745719d755446c294264911892d97182">inner_container_type</a></td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef Point&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1polygon.html#8dda8bcf15991e114554c6dcfb9c7231">point_type</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef Point&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1polygon.html#662c4458e3099e30097a3fc909d54941">point_type</a></td></tr>
 
 <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="classggl_1_1linear__ring.html">linear_ring</a>&lt; Point, <br class="typebreak">
-<a class="el" href="class_point_list.html">PointList</a>, PointAlloc &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1polygon.html#1c6fe805fcbf99e4b70afe9202c820aa">ring_type</a></td></tr>
+<a class="el" href="class_point_list.html">PointList</a>, ClockWise, <br class="typebreak">
+PointAlloc &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1polygon.html#6d7c8304fda2d2f1850cf2eb994c441a">ring_type</a></td></tr>
 
 <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1polygon.html#114bcb53b0264af8edaa53d8e42bf45f">clear</a> ()</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1polygon.html#45859e712d67f58e5813e87759892bdf">clear</a> ()</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Utility method, clears outer and inner rings. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classggl_1_1polygon.html#5c966fd82091bfdbe8d6693059b37864">inner_container_type</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1polygon.html#75a7c6b2f0fbc0c3e3127188f576c38f">inners</a> ()</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Utility method, clears outer and inner rings. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classggl_1_1polygon.html#745719d755446c294264911892d97182">inner_container_type</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1polygon.html#c750a19a332ddfe4958ad62c78de8109">inners</a> ()</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classggl_1_1polygon.html#5c966fd82091bfdbe8d6693059b37864">inner_container_type</a> const &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1polygon.html#0d41c7b42a1444fdc759550644c7924e">inners</a> () const </td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classggl_1_1polygon.html#745719d755446c294264911892d97182">inner_container_type</a> const &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1polygon.html#5a8564eeeaa4f244e6f70ab10395a63f">inners</a> () const </td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classggl_1_1linear__ring.html">ring_type</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1polygon.html#6cdf9123dd3442b13cfd032555baea2f">outer</a> ()</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classggl_1_1linear__ring.html">ring_type</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1polygon.html#41e0bbcd9d466a41d8eecd6041f3c22c">outer</a> ()</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classggl_1_1linear__ring.html">ring_type</a> const &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1polygon.html#be04d3ead04813a25be1a219076358a8">outer</a> () const </td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classggl_1_1linear__ring.html">ring_type</a> const &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1polygon.html#5faae375ec2c4b4547da615fa8864e74">outer</a> () const </td></tr>
 
 </table>
 <hr><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template&lt;typename Point, template&lt; typename, typename &gt; class PointList = std::vector, template&lt; typename, typename &gt; class RingList = std::vector, template&lt; typename &gt; class PointAlloc = std::allocator, template&lt; typename &gt; class RingAlloc = std::allocator&gt;<br>
- class ggl::polygon&lt; Point, PointList, RingList, PointAlloc, RingAlloc &gt;</h3>
+<h3>template&lt;typename Point, template&lt; typename, typename &gt; class PointList = std::vector, template&lt; typename, typename &gt; class RingList = std::vector, bool ClockWise = true, template&lt; typename &gt; class PointAlloc = std::allocator, template&lt; typename &gt; class RingAlloc = std::allocator&gt;<br>
+ class ggl::polygon&lt; Point, PointList, RingList, ClockWise, PointAlloc, RingAlloc &gt;</h3>
 
 The <b><a class="el" href="classggl_1_1polygon.html" title="The polygon contains an outer ring and zero or more inner rings.">polygon</a></b> contains an outer ring and zero or more inner rings.
 <p>
@@ -85,6 +86,7 @@
     <tr><td valign="top"></td><td valign="top"><em>P</em>&nbsp;</td><td><a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> type </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>PointList</em>&nbsp;</td><td>optional container type for points, for example std::vector, std::list, std::deque </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>RingList</em>&nbsp;</td><td>optional container type for inner rings, for example std::vector, std::list, std::deque </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ClockWise</em>&nbsp;</td><td>optional parameter, true for clockwise direction, false for CounterClockWise direction </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>PointAlloc</em>&nbsp;</td><td>container-allocator-type </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>RingAlloc</em>&nbsp;</td><td>container-allocator-type </td></tr>
   </table>
@@ -94,16 +96,16 @@
 
 <p>
 <a class="el" href="02__linestring__example_8cpp-example.html#_a15">02_linestring_example.cpp</a>, <a class="el" href="03__polygon__example_8cpp-example.html#_a0">03_polygon_example.cpp</a>, and <a class="el" href="06__transformation__example_8cpp-example.html#_a4">06_transformation_example.cpp</a>.</dl>
-<p>Definition at line <a class="el" href="polygon_8hpp_source.html#l00046">46</a> of file <a class="el" href="polygon_8hpp_source.html">polygon.hpp</a>.</p>
+<p>Definition at line <a class="el" href="polygon_8hpp_source.html#l00051">51</a> of file <a class="el" href="polygon_8hpp_source.html">polygon.hpp</a>.</p>
 <hr><h2>Member Typedef Documentation</h2>
-<a class="anchor" name="8dda8bcf15991e114554c6dcfb9c7231"></a><!-- doxytag: member="ggl::polygon::point_type" ref="8dda8bcf15991e114554c6dcfb9c7231" args="" -->
+<a class="anchor" name="662c4458e3099e30097a3fc909d54941"></a><!-- doxytag: member="ggl::polygon::point_type" ref="662c4458e3099e30097a3fc909d54941" args="" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
-template&lt;typename Point, template&lt; typename, typename &gt; class PointList = std::vector, template&lt; typename, typename &gt; class RingList = std::vector, template&lt; typename &gt; class PointAlloc = std::allocator, template&lt; typename &gt; class RingAlloc = std::allocator&gt; </div>
+template&lt;typename Point, template&lt; typename, typename &gt; class PointList = std::vector, template&lt; typename, typename &gt; class RingList = std::vector, bool ClockWise = true, template&lt; typename &gt; class PointAlloc = std::allocator, template&lt; typename &gt; class RingAlloc = std::allocator&gt; </div>
       <table class="memname">
         <tr>
- <td class="memname">typedef Point <a class="el" href="classggl_1_1polygon.html">ggl::polygon</a>&lt; Point, <a class="el" href="class_point_list.html">PointList</a>, RingList, PointAlloc, RingAlloc &gt;::<a class="el" href="structggl_1_1point__type.html">point_type</a> </td>
+ <td class="memname">typedef Point <a class="el" href="classggl_1_1polygon.html">ggl::polygon</a>&lt; Point, <a class="el" href="class_point_list.html">PointList</a>, RingList, ClockWise, PointAlloc, RingAlloc &gt;::<a class="el" href="structggl_1_1point__type.html">point_type</a> </td>
         </tr>
       </table>
 </div>
@@ -111,18 +113,18 @@
 
 <p>
 
-<p>Definition at line <a class="el" href="polygon_8hpp_source.html#l00053">53</a> of file <a class="el" href="polygon_8hpp_source.html">polygon.hpp</a>.</p>
+<p>Definition at line <a class="el" href="polygon_8hpp_source.html#l00058">58</a> of file <a class="el" href="polygon_8hpp_source.html">polygon.hpp</a>.</p>
 
 </div>
 </div><p>
-<a class="anchor" name="1c6fe805fcbf99e4b70afe9202c820aa"></a><!-- doxytag: member="ggl::polygon::ring_type" ref="1c6fe805fcbf99e4b70afe9202c820aa" args="" -->
+<a class="anchor" name="6d7c8304fda2d2f1850cf2eb994c441a"></a><!-- doxytag: member="ggl::polygon::ring_type" ref="6d7c8304fda2d2f1850cf2eb994c441a" args="" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
-template&lt;typename Point, template&lt; typename, typename &gt; class PointList = std::vector, template&lt; typename, typename &gt; class RingList = std::vector, template&lt; typename &gt; class PointAlloc = std::allocator, template&lt; typename &gt; class RingAlloc = std::allocator&gt; </div>
+template&lt;typename Point, template&lt; typename, typename &gt; class PointList = std::vector, template&lt; typename, typename &gt; class RingList = std::vector, bool ClockWise = true, template&lt; typename &gt; class PointAlloc = std::allocator, template&lt; typename &gt; class RingAlloc = std::allocator&gt; </div>
       <table class="memname">
         <tr>
- <td class="memname">typedef <a class="el" href="classggl_1_1linear__ring.html">linear_ring</a>&lt;Point, <a class="el" href="class_point_list.html">PointList</a>, PointAlloc&gt; <a class="el" href="classggl_1_1polygon.html">ggl::polygon</a>&lt; Point, <a class="el" href="class_point_list.html">PointList</a>, RingList, PointAlloc, RingAlloc &gt;::<a class="el" href="classggl_1_1linear__ring.html">ring_type</a> </td>
+ <td class="memname">typedef <a class="el" href="classggl_1_1linear__ring.html">linear_ring</a>&lt;Point, <a class="el" href="class_point_list.html">PointList</a>, ClockWise, PointAlloc&gt; <a class="el" href="classggl_1_1polygon.html">ggl::polygon</a>&lt; Point, <a class="el" href="class_point_list.html">PointList</a>, RingList, ClockWise, PointAlloc, RingAlloc &gt;::<a class="el" href="classggl_1_1linear__ring.html">ring_type</a> </td>
         </tr>
       </table>
 </div>
@@ -130,18 +132,18 @@
 
 <p>
 
-<p>Definition at line <a class="el" href="polygon_8hpp_source.html#l00054">54</a> of file <a class="el" href="polygon_8hpp_source.html">polygon.hpp</a>.</p>
+<p>Definition at line <a class="el" href="polygon_8hpp_source.html#l00059">59</a> of file <a class="el" href="polygon_8hpp_source.html">polygon.hpp</a>.</p>
 
 </div>
 </div><p>
-<a class="anchor" name="5c966fd82091bfdbe8d6693059b37864"></a><!-- doxytag: member="ggl::polygon::inner_container_type" ref="5c966fd82091bfdbe8d6693059b37864" args="" -->
+<a class="anchor" name="745719d755446c294264911892d97182"></a><!-- doxytag: member="ggl::polygon::inner_container_type" ref="745719d755446c294264911892d97182" args="" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
-template&lt;typename Point, template&lt; typename, typename &gt; class PointList = std::vector, template&lt; typename, typename &gt; class RingList = std::vector, template&lt; typename &gt; class PointAlloc = std::allocator, template&lt; typename &gt; class RingAlloc = std::allocator&gt; </div>
+template&lt;typename Point, template&lt; typename, typename &gt; class PointList = std::vector, template&lt; typename, typename &gt; class RingList = std::vector, bool ClockWise = true, template&lt; typename &gt; class PointAlloc = std::allocator, template&lt; typename &gt; class RingAlloc = std::allocator&gt; </div>
       <table class="memname">
         <tr>
- <td class="memname">typedef RingList&lt;<a class="el" href="classggl_1_1linear__ring.html">ring_type</a> , RingAlloc&lt;<a class="el" href="classggl_1_1linear__ring.html">ring_type</a> &gt; &gt; <a class="el" href="classggl_1_1polygon.html">ggl::polygon</a>&lt; Point, <a class="el" href="class_point_list.html">PointList</a>, RingList, PointAlloc, RingAlloc &gt;::<a class="el" href="classggl_1_1polygon.html#5c966fd82091bfdbe8d6693059b37864">inner_container_type</a> </td>
+ <td class="memname">typedef RingList&lt;<a class="el" href="classggl_1_1linear__ring.html">ring_type</a> , RingAlloc&lt;<a class="el" href="classggl_1_1linear__ring.html">ring_type</a> &gt; &gt; <a class="el" href="classggl_1_1polygon.html">ggl::polygon</a>&lt; Point, <a class="el" href="class_point_list.html">PointList</a>, RingList, ClockWise, PointAlloc, RingAlloc &gt;::<a class="el" href="classggl_1_1polygon.html#745719d755446c294264911892d97182">inner_container_type</a> </td>
         </tr>
       </table>
 </div>
@@ -149,19 +151,19 @@
 
 <p>
 
-<p>Definition at line <a class="el" href="polygon_8hpp_source.html#l00055">55</a> of file <a class="el" href="polygon_8hpp_source.html">polygon.hpp</a>.</p>
+<p>Definition at line <a class="el" href="polygon_8hpp_source.html#l00060">60</a> of file <a class="el" href="polygon_8hpp_source.html">polygon.hpp</a>.</p>
 
 </div>
 </div><p>
 <hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="be04d3ead04813a25be1a219076358a8"></a><!-- doxytag: member="ggl::polygon::outer" ref="be04d3ead04813a25be1a219076358a8" args="() const " -->
+<a class="anchor" name="5faae375ec2c4b4547da615fa8864e74"></a><!-- doxytag: member="ggl::polygon::outer" ref="5faae375ec2c4b4547da615fa8864e74" args="() const " -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
-template&lt;typename Point, template&lt; typename, typename &gt; class PointList = std::vector, template&lt; typename, typename &gt; class RingList = std::vector, template&lt; typename &gt; class PointAlloc = std::allocator, template&lt; typename &gt; class RingAlloc = std::allocator&gt; </div>
+template&lt;typename Point, template&lt; typename, typename &gt; class PointList = std::vector, template&lt; typename, typename &gt; class RingList = std::vector, bool ClockWise = true, template&lt; typename &gt; class PointAlloc = std::allocator, template&lt; typename &gt; class RingAlloc = std::allocator&gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="classggl_1_1linear__ring.html">ring_type</a> const&amp; <a class="el" href="classggl_1_1polygon.html">ggl::polygon</a>&lt; Point, <a class="el" href="class_point_list.html">PointList</a>, RingList, PointAlloc, RingAlloc &gt;::outer </td>
+ <td class="memname"><a class="el" href="classggl_1_1linear__ring.html">ring_type</a> const&amp; <a class="el" href="classggl_1_1polygon.html">ggl::polygon</a>&lt; Point, <a class="el" href="class_point_list.html">PointList</a>, RingList, ClockWise, PointAlloc, RingAlloc &gt;::outer </td>
           <td>(</td>
           <td class="paramname"> </td>
           <td>&nbsp;)&nbsp;</td>
@@ -173,19 +175,19 @@
 
 <p>
 <dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="02__linestring__example_8cpp-example.html#a17">02_linestring_example.cpp</a>, and <a class="el" href="03__polygon__example_8cpp-example.html#a9">03_polygon_example.cpp</a>.</dl>
-<p>Definition at line <a class="el" href="polygon_8hpp_source.html#l00057">57</a> of file <a class="el" href="polygon_8hpp_source.html">polygon.hpp</a>.</p>
+<a class="el" href="03__polygon__example_8cpp-example.html#a9">03_polygon_example.cpp</a>.</dl>
+<p>Definition at line <a class="el" href="polygon_8hpp_source.html#l00062">62</a> of file <a class="el" href="polygon_8hpp_source.html">polygon.hpp</a>.</p>
 
 </div>
 </div><p>
-<a class="anchor" name="0d41c7b42a1444fdc759550644c7924e"></a><!-- doxytag: member="ggl::polygon::inners" ref="0d41c7b42a1444fdc759550644c7924e" args="() const " -->
+<a class="anchor" name="5a8564eeeaa4f244e6f70ab10395a63f"></a><!-- doxytag: member="ggl::polygon::inners" ref="5a8564eeeaa4f244e6f70ab10395a63f" args="() const " -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
-template&lt;typename Point, template&lt; typename, typename &gt; class PointList = std::vector, template&lt; typename, typename &gt; class RingList = std::vector, template&lt; typename &gt; class PointAlloc = std::allocator, template&lt; typename &gt; class RingAlloc = std::allocator&gt; </div>
+template&lt;typename Point, template&lt; typename, typename &gt; class PointList = std::vector, template&lt; typename, typename &gt; class RingList = std::vector, bool ClockWise = true, template&lt; typename &gt; class PointAlloc = std::allocator, template&lt; typename &gt; class RingAlloc = std::allocator&gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="classggl_1_1polygon.html#5c966fd82091bfdbe8d6693059b37864">inner_container_type</a> const&amp; <a class="el" href="classggl_1_1polygon.html">ggl::polygon</a>&lt; Point, <a class="el" href="class_point_list.html">PointList</a>, RingList, PointAlloc, RingAlloc &gt;::inners </td>
+ <td class="memname"><a class="el" href="classggl_1_1polygon.html#745719d755446c294264911892d97182">inner_container_type</a> const&amp; <a class="el" href="classggl_1_1polygon.html">ggl::polygon</a>&lt; Point, <a class="el" href="class_point_list.html">PointList</a>, RingList, ClockWise, PointAlloc, RingAlloc &gt;::inners </td>
           <td>(</td>
           <td class="paramname"> </td>
           <td>&nbsp;)&nbsp;</td>
@@ -198,18 +200,18 @@
 <p>
 <dl compact><dt><b>Examples: </b></dt><dd>
 <a class="el" href="03__polygon__example_8cpp-example.html#a10">03_polygon_example.cpp</a>.</dl>
-<p>Definition at line <a class="el" href="polygon_8hpp_source.html#l00058">58</a> of file <a class="el" href="polygon_8hpp_source.html">polygon.hpp</a>.</p>
+<p>Definition at line <a class="el" href="polygon_8hpp_source.html#l00063">63</a> of file <a class="el" href="polygon_8hpp_source.html">polygon.hpp</a>.</p>
 
 </div>
 </div><p>
-<a class="anchor" name="6cdf9123dd3442b13cfd032555baea2f"></a><!-- doxytag: member="ggl::polygon::outer" ref="6cdf9123dd3442b13cfd032555baea2f" args="()" -->
+<a class="anchor" name="41e0bbcd9d466a41d8eecd6041f3c22c"></a><!-- doxytag: member="ggl::polygon::outer" ref="41e0bbcd9d466a41d8eecd6041f3c22c" args="()" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
-template&lt;typename Point, template&lt; typename, typename &gt; class PointList = std::vector, template&lt; typename, typename &gt; class RingList = std::vector, template&lt; typename &gt; class PointAlloc = std::allocator, template&lt; typename &gt; class RingAlloc = std::allocator&gt; </div>
+template&lt;typename Point, template&lt; typename, typename &gt; class PointList = std::vector, template&lt; typename, typename &gt; class RingList = std::vector, bool ClockWise = true, template&lt; typename &gt; class PointAlloc = std::allocator, template&lt; typename &gt; class RingAlloc = std::allocator&gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="classggl_1_1linear__ring.html">ring_type</a>&amp; <a class="el" href="classggl_1_1polygon.html">ggl::polygon</a>&lt; Point, <a class="el" href="class_point_list.html">PointList</a>, RingList, PointAlloc, RingAlloc &gt;::outer </td>
+ <td class="memname"><a class="el" href="classggl_1_1linear__ring.html">ring_type</a>&amp; <a class="el" href="classggl_1_1polygon.html">ggl::polygon</a>&lt; Point, <a class="el" href="class_point_list.html">PointList</a>, RingList, ClockWise, PointAlloc, RingAlloc &gt;::outer </td>
           <td>(</td>
           <td class="paramname"> </td>
           <td>&nbsp;)&nbsp;</td>
@@ -221,18 +223,18 @@
 
 <p>
 
-<p>Definition at line <a class="el" href="polygon_8hpp_source.html#l00060">60</a> of file <a class="el" href="polygon_8hpp_source.html">polygon.hpp</a>.</p>
+<p>Definition at line <a class="el" href="polygon_8hpp_source.html#l00065">65</a> of file <a class="el" href="polygon_8hpp_source.html">polygon.hpp</a>.</p>
 
 </div>
 </div><p>
-<a class="anchor" name="75a7c6b2f0fbc0c3e3127188f576c38f"></a><!-- doxytag: member="ggl::polygon::inners" ref="75a7c6b2f0fbc0c3e3127188f576c38f" args="()" -->
+<a class="anchor" name="c750a19a332ddfe4958ad62c78de8109"></a><!-- doxytag: member="ggl::polygon::inners" ref="c750a19a332ddfe4958ad62c78de8109" args="()" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
-template&lt;typename Point, template&lt; typename, typename &gt; class PointList = std::vector, template&lt; typename, typename &gt; class RingList = std::vector, template&lt; typename &gt; class PointAlloc = std::allocator, template&lt; typename &gt; class RingAlloc = std::allocator&gt; </div>
+template&lt;typename Point, template&lt; typename, typename &gt; class PointList = std::vector, template&lt; typename, typename &gt; class RingList = std::vector, bool ClockWise = true, template&lt; typename &gt; class PointAlloc = std::allocator, template&lt; typename &gt; class RingAlloc = std::allocator&gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="classggl_1_1polygon.html#5c966fd82091bfdbe8d6693059b37864">inner_container_type</a>&amp; <a class="el" href="classggl_1_1polygon.html">ggl::polygon</a>&lt; Point, <a class="el" href="class_point_list.html">PointList</a>, RingList, PointAlloc, RingAlloc &gt;::inners </td>
+ <td class="memname"><a class="el" href="classggl_1_1polygon.html#745719d755446c294264911892d97182">inner_container_type</a>&amp; <a class="el" href="class