Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r57149 - in sandbox/ggl/formal_review_request/libs/ggl/doc: . doxygen_input/images doxygen_input/pages doxygen_output/html
From: barend.gehrels_at_[hidden]
Date: 2009-10-25 06:40:40


Author: barendgehrels
Date: 2009-10-25 06:40:07 EDT (Sun, 25 Oct 2009)
New Revision: 57149
URL: http://svn.boost.org/trac/boost/changeset/57149

Log:
Doc updates to reflect o.a. movements core/concepts -> geometries/concepts

Added:
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_input/images/x01_qt_example_output.png (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/area__by__triangles_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/area__by__triangles_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/area__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/area__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/area__huiller_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/area__huiller_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/centroid__bashein__detmer_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/centroid__bashein__detmer_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/centroid__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/centroid__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/check_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/check_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/check__append_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/check__append_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/check__clear_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/check__clear_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_area_strategy-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_area_strategy.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_box-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_box.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_centroid_strategy-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_centroid_strategy.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_box-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_box.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_linestring-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_linestring.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_point-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_point.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_polygon-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_polygon.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_ring-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_ring.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_segment-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_segment.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_linestring-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_linestring.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_point-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_point.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_polygon-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_polygon.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_ring-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_ring.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_segment-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_segment.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_within_strategy-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_within_strategy.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1area_1_1huiller-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1area_1_1huiller.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1within_1_1crossings__multiply-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1within_1_1crossings__multiply.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1within_1_1franklin-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1within_1_1franklin.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_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/namespaceggl_1_1concept_1_1detail.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point__in__poly__crossings__multiply_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point__in__poly__crossings__multiply_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point__in__poly__franklin_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point__in__poly__franklin_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point__in__poly__winding_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point__in__poly__winding_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/select__calculation__type_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/select__calculation__type_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1detail_1_1check__append.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1detail_1_1check__append_3_01_geometry_00_01_point_00_01false_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1detail_1_1check__append_3_01_geometry_00_01_point_00_01false_01_4.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1detail_1_1check__append_3_01_geometry_00_01_point_00_01true_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1detail_1_1check__append_3_01_geometry_00_01_point_00_01true_01_4.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1detail_1_1check__clear.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1detail_1_1check__clear_3_01_geometry_00_01false_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1detail_1_1check__clear_3_01_geometry_00_01false_01_4.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1detail_1_1check__clear_3_01_geometry_00_01true_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1detail_1_1check__clear_3_01_geometry_00_01true_01_4.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1detail_1_1checker.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1select__calculation__type-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1select__calculation__type.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1area_1_1huiller_1_1excess__sum-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1area_1_1huiller_1_1excess__sum.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/within__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/within__concept_8hpp_source.html (contents, props changed)
Removed:
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__within_8hpp.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__within_8hpp_source.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__area_8hpp.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__area_8hpp_source.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__centroid_8hpp.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__centroid_8hpp_source.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__within_8hpp.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__within_8hpp_source.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1nsphere-members.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1nsphere.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1area_1_1by__spherical__excess-members.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1area_1_1by__spherical__excess.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1centroid_1_1geolib1995-members.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1centroid_1_1geolib1995.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/nsphere_8hpp.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/nsphere_8hpp_source.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/radius_8hpp.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/radius_8hpp_source.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/sph__area_8hpp.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/sph__area_8hpp_source.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_box-members.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_box.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_box-members.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_box.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_linestring-members.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_linestring.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_point-members.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_point.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_polygon-members.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_polygon.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_ring-members.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_ring.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_segment-members.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_segment.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_linestring-members.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_linestring.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_point-members.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_point.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_polygon-members.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_polygon.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_ring-members.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_ring.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_segment-members.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_segment.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1nsphere__tag.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1radius__type-members.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1radius__type.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1within_1_1franklin-members.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1within_1_1franklin.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1radius__access.html
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1radius__type.html
Text files modified:
   sandbox/ggl/formal_review_request/libs/ggl/doc/Doxyfile | 3
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_input/pages/doxygen_pages.hpp | 10
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/01__point__example_8cpp-example.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/02__linestring__example_8cpp-example.html | 8
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/03__polygon__example_8cpp-example.html | 30
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/06__transformation__example_8cpp-example.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/07__graph__route__example_8cpp-example.html | 14
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/access_8hpp.html | 8
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/access_8hpp_source.html | 416 ++++++------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp_source.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp_source.html | 342 +++++-----
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp.html | 28
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp_source.html | 485 ++++++++-----
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp_source.html | 369 +++++-----
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp_source.html | 339 +++++-----
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp_source.html | 59
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp.html | 28
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp_source.html | 441 ++++++------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2for__each_8hpp_source.html | 610 +++++++++--------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp_source.html | 120 +-
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp_source.html | 715 ++++++++++----------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp_source.html | 259 ++++---
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp_source.html | 233 +++---
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp_source.html | 149 ++--
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp_source.html | 1019 +++++++++++++++---------------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp_source.html | 182 ++--
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp_source.html | 434 ++++++------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2within_8hpp.html | 12
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2within_8hpp_source.html | 645 ++++++++----------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/annotated.html | 59
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/append_8hpp.html | 12
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/append_8hpp_source.html | 300 ++++----
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/arithmetic_8hpp_source.html | 30
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/as__range_8hpp_source.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign_8hpp.html | 50
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign_8hpp_source.html | 749 ++++++++++-----------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/box_8hpp_source.html | 174 ++--
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/box__concept_8hpp.html | 20
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/box__concept_8hpp_source.html | 176 ++--
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/buffer_8hpp.html | 8
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/buffer_8hpp_source.html | 80 +-
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c01__custom__point__example_8cpp-example.html | 12
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c02__custom__box__example_8cpp-example.html | 8
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c04__a__custom__triangle__example_8cpp-example.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c04__b__custom__triangle__example_8cpp-example.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__distance_8hpp_source.html | 8
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__envelope_8hpp_source.html | 95 +-
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__side_8hpp_source.html | 108 +-
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cartesian2d_8hpp.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cartesian2d_8hpp_source.html | 9
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cartesian3d_8hpp.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cartesian3d_8hpp_source.html | 7
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classes.html | 38
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1box.html | 14
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1centroid__exception.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1dsv__manipulator.html | 10
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1area_1_1by__triangles-members.html | 11
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1area_1_1by__triangles.html | 135 +++
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1centroid_1_1bashein__detmer-members.html | 9
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1centroid_1_1bashein__detmer.html | 133 +++
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1distance_1_1cross__track.html | 12
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1distance_1_1haversine.html | 10
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1within_1_1winding-members.html | 9
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1within_1_1winding.html | 127 +++
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1svg__manipulator.html | 10
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/clear_8hpp.html | 12
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/clear_8hpp_source.html | 227 +++---
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/combine_8hpp_source.html | 304 ++++----
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/compiling.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/concepts.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/convert_8hpp_source.html | 277 ++++----
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/copy_8hpp_source.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/copy__segments_8hpp_source.html | 368 +++++-----
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2geometry__id_8hpp_source.html | 36
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2tags_8hpp.html | 3
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2tags_8hpp_source.html | 10
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2topological__dimension_8hpp_source.html | 33
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cs_8hpp_source.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/design.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/disjoint_8hpp_source.html | 384 +++++-----
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/distance__concept_8hpp_source.html | 14
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/distance__cross__track_8hpp_source.html | 239 +++---
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/distance__haversine_8hpp_source.html | 141 ++--
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/dot__product_8hpp.html | 5
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/dot__product_8hpp_source.html | 104 +-
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen__pages_8hpp_source.html | 26
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/enrich__intersection__points_8hpp_source.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/equals_8hpp_source.html | 44
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/exterior__ring_8hpp_source.html | 8
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/files.html | 34
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/for__each__coordinate_8hpp_source.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions.html | 14
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x62.html | 33
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x63.html | 34
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x64.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x65.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x68.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x69.html | 5
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x6e.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x6f.html | 34
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x70.html | 14
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x72.html | 33
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x73.html | 35
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x74.html | 12
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func.html | 351 +---------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_type.html | 67 +
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_vars.html | 14
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/geometries_8hpp_source.html | 7
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/get__intersection__points_8hpp_source.html | 1339 ++++++++++++++++++++-------------------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__access.html | 241 ++----
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__area.html | 10
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__arithmetic.html | 11
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__boolean__relations.html | 56
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__buffer.html | 18
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__centroid.html | 122 +-
   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 | 61 +
   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 | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__core.html | 34 +
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__envelope.html | 74 +-
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__intermediate.html | 14
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__length.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__loop.html | 8
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__overlay.html | 12
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__perimeter.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__sectionalize.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__selected.html | 22
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__simplify.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__svg.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__traits.html | 10
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__transform.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__utility.html | 3
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/hierarchy.html | 57
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/index.html | 8
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/interior__rings_8hpp_source.html | 8
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intermediate_8hpp.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intermediate_8hpp_source.html | 143 ++--
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersection__linestring_8hpp_source.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersects_8hpp_source.html | 80 +-
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/linear__ring_8hpp_source.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/linestring_8hpp_source.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/linestring__concept_8hpp.html | 10
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/linestring__concept_8hpp_source.html | 111 +-
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/make_8hpp_source.html | 172 ++--
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/matrix__transformers_8hpp_source.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2centroid_8hpp_source.html | 159 +++-
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2correct_8hpp_source.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2envelope_8hpp_source.html | 136 ++--
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2perimeter_8hpp_source.html | 8
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2within_8hpp_source.html | 164 ++--
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi__linestring_8hpp_source.html | 83 +-
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi__point_8hpp_source.html | 81 +-
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi__polygon_8hpp_source.html | 81 +-
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl.html | 246 ++----
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1concept.html | 67 +
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1area.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1centroid.html | 3
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1within.html | 7
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1traits.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespacemembers.html | 50
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespacemembers_func.html | 46
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespacemembers_type.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaces.html | 1
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/nsphere__concept_8hpp.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/nsphere__concept_8hpp_source.html | 28
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/ogc.html | 5
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/overlaps_8hpp.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/overlaps_8hpp_source.html | 40
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point__concept_8hpp.html | 22
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point__concept_8hpp_source.html | 144 ++--
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/polygon_8hpp_source.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/polygon__concept_8hpp.html | 14
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/polygon__concept_8hpp_source.html | 194 ++--
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/radian__access_8hpp_source.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/replace__point__type_8hpp_source.html | 129 +--
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/ring__concept_8hpp.html | 10
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/ring__concept_8hpp_source.html | 112 +-
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/segment_8hpp_source.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/segment__concept_8hpp.html | 20
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/segment__concept_8hpp_source.html | 152 ++--
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/selected_8hpp.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/selected_8hpp_source.html | 121 +-
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/self__intersection__points_8hpp_source.html | 274 ++++----
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/simplify__concept_8hpp_source.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/sph__envelope_8hpp_source.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/strategies_8hpp_source.html | 43
   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_1concept_1_1_nsphere.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1geometry__id.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__linestring.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__point.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__polygon.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1replace__point__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__tag.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1combine__xy.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1combine__xy_1_1state.html | 6
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1side_1_1xy__side-members.html | 5
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1side_1_1xy__side.html | 49 +
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__side.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1topological__dimension.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1access.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1append__point.html | 8
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1clear.html | 8
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1indexed__access.html | 2
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1use__std.html | 4
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/traverse_8hpp_source.html | 824 ++++++++++++------------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/write__dsv_8hpp_source.html | 622 +++++++++---------
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/write__svg_8hpp_source.html | 381 +++++-----
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/x01__qt__example_8cpp-example.html | 2
   214 files changed, 9811 insertions(+), 9729 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-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -86,7 +86,8 @@
                         ../../../boost/ggl/algorithms/detail \
                         ../../../boost/ggl/algorithms/overlay \
                         ../../../boost/ggl/arithmetic \
- ../../../boost/ggl/core/concepts \
+ ../../../boost/ggl/geometries/concepts \
+ ../../../boost/ggl/geometries/concepts/detail \
                         ../../../boost/ggl/geometries \
                         ../../../boost/ggl/geometries/adapted \
                         ../../../boost/ggl/geometries/register \

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_input/images/x01_qt_example_output.png
==============================================================================
Binary file. No diff available.

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_input/pages/doxygen_pages.hpp
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_input/pages/doxygen_pages.hpp (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_input/pages/doxygen_pages.hpp 2009-10-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -24,7 +24,6 @@
 There are concepts for
 - points
 - box
-- n-sphere (meaning circle or sphere)
 - linestring
 - ring (linear ring, a polygon without holes)
 - polygon
@@ -55,7 +54,7 @@
 - there should then be clear traits class to make a linestring empty
 - there should then be a append_point traits class to add a poitn to a linestring
 
-There are also concepts for boxes, n-spheres, segments, rings and polygons.
+There are also concepts for boxes, segments, rings and polygons.
 
 
 The Generic Geometry Library uses Boost Concept Check Library (BCCL) and Meta Programming Language (MPL) to define
@@ -102,7 +101,7 @@
 
 An often used headerfile is geometries.hpp:
 - \#include <ggl/geometries/geometries.hpp> This includes all default geometries: point, linestring,
- polygon, linear_ring, box, circle/sphere. It is not included in the "geometry.hpp" headerfile because
+ polygon, linear_ring, box. It is not included in the "geometry.hpp" headerfile because
   users are allowed to use their own geometries. However, for library users who want to use the provided
   geometries it is most useful.
 
@@ -239,9 +238,12 @@
 
 Besides this the Generic Geometry Library provides the following additional classes:
 - \ref ggl::box "box": Box, used for selections and for envelopes (bounding boxes)
-- \ref ggl::nsphere "n-sphere", meaning circle" and "sphere". Circle is convenient for selections
 - \ref ggl::segment "segment": Segment, helper class, used for e.g. intersections
 
+Finally geometry types can be added as extensions. This is e.g. done with an
+"n-sphere" meaning circle" and "sphere". Circle is convenient for selections.
+
+
 
 \section Algorithms
 The Generic Geometry Library implements the following OGC algorithms, which are applicable to most or all geometries

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/01__point__example_8cpp-example.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/01__point__example_8cpp-example.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/01__point__example_8cpp-example.html 2009-10-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -101,7 +101,7 @@
 
     <span class="comment">// 4: there is also an assign algorithm, in the same way as make, but not returning</span>
     <a class="code" href="classggl_1_1point__xy.html" title="2D point in Cartesian coordinate system">point_2d</a> c4;
- <a name="a5"></a><a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>(c4, 1, 1);
+ <a name="a5"></a><a class="code" href="group__access.html#g97f76fc38f2c63c5da2136247a31cdb8" title="assign two values to a 2D point">assign</a>(c4, 1, 1);
 
     <span class="comment">// 5: there is also a parse algorithm which takes strings (not so useful here, but</span>
     <span class="comment">// convenient for geographic points using "32N", "18E" etc).</span>

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-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -112,15 +112,15 @@
 
     <span class="comment">// points can also be assigned using "assign" and added to a linestring using "append"</span>
     <a name="_a2"></a><a class="code" href="classggl_1_1point__xy.html" title="2D point in Cartesian coordinate system">point_2d</a> lp;
- <a name="a3"></a><a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>(lp, 2.5, 2.1);
- <a name="a4"></a><a class="code" href="group__access.html#g8cfdebdb885a95bacb1305744f0d0d7c" title="Appends one or more points to a linestring, linear-ring, polygon, multi.">append</a>(ls, lp);
+ <a name="a3"></a><a class="code" href="group__access.html#g97f76fc38f2c63c5da2136247a31cdb8" title="assign two values to a 2D point">assign</a>(lp, 2.5, 2.1);
+ <a name="a4"></a><a class="code" href="group__access.html#ge6ff0cb391fb5a3c3a312defe15b4909" title="Appends one or more points to a linestring, linear-ring, polygon, multi.">append</a>(ls, lp);
 
     <span class="comment">// Lines can be streamed using DSV (delimiter separated values)</span>
     std::cout &lt;&lt; <a name="a5"></a><a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(ls) &lt;&lt; std::endl;
 
     <span class="comment">// The bounding box of linestrings can be calculated</span>
     <a name="_a6"></a><a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box_2d</a> b;
- <a name="a7"></a><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>(ls, b);
+ <a name="a7"></a><a class="code" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>(ls, b);
     std::cout &lt;&lt; <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(b) &lt;&lt; std::endl;
 
     <span class="comment">// The length of the line can be calulated</span>
@@ -148,7 +148,7 @@
     <span class="comment">// Add some three points more, let's do it using a classic array.</span>
     <span class="comment">// (See documentation for picture of this linestring)</span>
     <span class="keyword">const</span> <span class="keywordtype">double</span> c[][2] = { {3.1, 3.1}, {4.9, 1.1}, {3.1, 1.9} };
- <a class="code" href="group__access.html#g8cfdebdb885a95bacb1305744f0d0d7c" title="Appends one or more points to a linestring, linear-ring, polygon, multi.">append</a>(ls, c);
+ <a class="code" href="group__access.html#ge6ff0cb391fb5a3c3a312defe15b4909" title="Appends one or more points to a linestring, linear-ring, polygon, multi.">append</a>(ls, c);
     std::cout &lt;&lt; <span class="stringliteral">"appended: "</span> &lt;&lt; <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(ls) &lt;&lt; std::endl;
 
     <span class="comment">// Output as iterator-pair on a vector</span>

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-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -87,12 +87,12 @@
             {3.4, 2.0}, {4.1, 3.0}, {5.3, 2.6}, {5.4, 1.2}, {4.9, 0.8}, {2.9, 0.7},
             {2.0, 1.3} <span class="comment">// closing point is opening point</span>
             };
- <a name="a1"></a><a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>(poly, coor);
+ <a name="a1"></a><a class="code" href="group__access.html#g97f76fc38f2c63c5da2136247a31cdb8" title="assign two values to a 2D point">assign</a>(poly, coor);
     }
 
     <span class="comment">// Polygons should be closed, and directed clockwise. If you're not sure if that is the case,</span>
     <span class="comment">// call the correct algorithm</span>
- <a name="a2"></a><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>(poly);
+ <a name="a2"></a><a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>(poly);
 
     <span class="comment">// Polygons can be streamed as text</span>
     <span class="comment">// (or more precisely: as DSV (delimiter separated values))</span>
@@ -100,7 +100,7 @@
 
     <span class="comment">// As with lines, bounding box of polygons can be calculated</span>
     <a name="_a4"></a><a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box_2d</a> b;
- <a name="a5"></a><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>(poly, b);
+ <a name="a5"></a><a class="code" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>(poly, b);
     std::cout &lt;&lt; <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(b) &lt;&lt; std::endl;
 
     <span class="comment">// The area of the polygon can be calulated</span>
@@ -108,7 +108,7 @@
 
     <span class="comment">// And the centroid, which is the center of gravity</span>
     <a name="_a7"></a><a class="code" href="classggl_1_1point__xy.html" title="2D point in Cartesian coordinate system">point_2d</a> cent;
- <a name="a8"></a><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>(poly, cent);
+ <a name="a8"></a><a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>(poly, cent);
     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>(cent) &lt;&lt; std::endl;
 
     <span class="comment">// Actually in most cases you don't want the centroid, which is only defined for polygons.</span>
@@ -130,22 +130,22 @@
         <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);
+ <a class="code" href="group__access.html#g97f76fc38f2c63c5da2136247a31cdb8" title="assign two values to a 2D point">assign</a>(inner, coor);
     }
 
- <a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>(poly);
+ <a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>(poly);
 
     std::cout &lt;&lt; <span class="stringliteral">"with inner ring:"</span> &lt;&lt; <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(poly) &lt;&lt; std::endl;
     <span class="comment">// The area of the polygon is changed of course</span>
     std::cout &lt;&lt; <span class="stringliteral">"new area of polygon: "</span> &lt;&lt; <a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>(poly) &lt;&lt; std::endl;
- <a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>(poly, cent);
+ <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>(poly, cent);
     std::cout &lt;&lt; <span class="stringliteral">"new centroid: "</span> &lt;&lt; <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(cent) &lt;&lt; std::endl;
 
     <span class="comment">// You can test whether points are within a polygon</span>
     std::cout &lt;&lt; <span class="stringliteral">"point in polygon:"</span>
- &lt;&lt; <span class="stringliteral">" p1: "</span> &lt;&lt; boolstr(<a name="a12"></a><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>(make&lt;point_2d&gt;(3.0, 2.0), poly))
- &lt;&lt; <span class="stringliteral">" p2: "</span> &lt;&lt; boolstr(<a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>(make&lt;point_2d&gt;(3.7, 2.0), poly))
- &lt;&lt; <span class="stringliteral">" p3: "</span> &lt;&lt; boolstr(<a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>(make&lt;point_2d&gt;(4.4, 2.0), poly))
+ &lt;&lt; <span class="stringliteral">" p1: "</span> &lt;&lt; boolstr(<a name="a12"></a><a class="code" href="group__boolean__relations.html#g599c2aa76cf2037eb40514e449ace28d" title="Within check.">within</a>(make&lt;point_2d&gt;(3.0, 2.0), poly))
+ &lt;&lt; <span class="stringliteral">" p2: "</span> &lt;&lt; boolstr(<a class="code" href="group__boolean__relations.html#g599c2aa76cf2037eb40514e449ace28d" title="Within check.">within</a>(make&lt;point_2d&gt;(3.7, 2.0), poly))
+ &lt;&lt; <span class="stringliteral">" p3: "</span> &lt;&lt; boolstr(<a class="code" href="group__boolean__relations.html#g599c2aa76cf2037eb40514e449ace28d" title="Within check.">within</a>(make&lt;point_2d&gt;(4.4, 2.0), poly))
         &lt;&lt; std::endl;
 
     <span class="comment">// You can call for_each or for_each_segment on polygons to, this will visit all points / segments</span>
@@ -179,11 +179,11 @@
     <span class="keyword">typedef</span> <a class="code" href="classggl_1_1polygon.html" title="The polygon contains an outer ring and zero or more inner rings.">polygon&lt;point_2d, std::vector, std::deque&gt;</a> polygon_type;
     polygon_type poly2;
     <a name="_a14"></a><a class="code" href="structggl_1_1ring__type.html" title="Meta-function which defines ring type of (multi)polygon geometry.">ring_type&lt;polygon_type&gt;::type</a>&amp; ring = <a name="a15"></a><a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly2);
- <a name="a16"></a><a class="code" href="group__access.html#g8cfdebdb885a95bacb1305744f0d0d7c" title="Appends one or more points to a linestring, linear-ring, polygon, multi.">append</a>(ring, make&lt;point_2d&gt;(2.8, 1.9));
- <a class="code" href="group__access.html#g8cfdebdb885a95bacb1305744f0d0d7c" title="Appends one or more points to a linestring, linear-ring, polygon, multi.">append</a>(ring, make&lt;point_2d&gt;(2.9, 2.4));
- <a class="code" href="group__access.html#g8cfdebdb885a95bacb1305744f0d0d7c" title="Appends one or more points to a linestring, linear-ring, polygon, multi.">append</a>(ring, make&lt;point_2d&gt;(3.3, 2.2));
- <a class="code" href="group__access.html#g8cfdebdb885a95bacb1305744f0d0d7c" title="Appends one or more points to a linestring, linear-ring, polygon, multi.">append</a>(ring, make&lt;point_2d&gt;(3.2, 1.8));
- <a class="code" href="group__access.html#g8cfdebdb885a95bacb1305744f0d0d7c" title="Appends one or more points to a linestring, linear-ring, polygon, multi.">append</a>(ring, make&lt;point_2d&gt;(2.8, 1.9));
+ <a name="a16"></a><a class="code" href="group__access.html#ge6ff0cb391fb5a3c3a312defe15b4909" title="Appends one or more points to a linestring, linear-ring, polygon, multi.">append</a>(ring, make&lt;point_2d&gt;(2.8, 1.9));
+ <a class="code" href="group__access.html#ge6ff0cb391fb5a3c3a312defe15b4909" title="Appends one or more points to a linestring, linear-ring, polygon, multi.">append</a>(ring, make&lt;point_2d&gt;(2.9, 2.4));
+ <a class="code" href="group__access.html#ge6ff0cb391fb5a3c3a312defe15b4909" title="Appends one or more points to a linestring, linear-ring, polygon, multi.">append</a>(ring, make&lt;point_2d&gt;(3.3, 2.2));
+ <a class="code" href="group__access.html#ge6ff0cb391fb5a3c3a312defe15b4909" title="Appends one or more points to a linestring, linear-ring, polygon, multi.">append</a>(ring, make&lt;point_2d&gt;(3.2, 1.8));
+ <a class="code" href="group__access.html#ge6ff0cb391fb5a3c3a312defe15b4909" title="Appends one or more points to a linestring, linear-ring, polygon, multi.">append</a>(ring, make&lt;point_2d&gt;(2.8, 1.9));
     std::cout &lt;&lt; <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(poly2) &lt;&lt; std::endl;
 
     <span class="keywordflow">return</span> 0;

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/06__transformation__example_8cpp-example.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/06__transformation__example_8cpp-example.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/06__transformation__example_8cpp-example.html 2009-10-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -72,7 +72,7 @@
     <span class="keyword">const</span> <span class="keywordtype">double</span> coor[][2] = { {0, 0}, {0, 7}, {2, 2}, {2, 0}, {0, 0} };
     <span class="comment">// note that for this syntax you have to include the two</span>
     <span class="comment">// include files above (c_array_cartesian.hpp, std_as_linestring.hpp)</span>
- <a name="a5"></a><a class="code" href="group__access.html#ge58b5c7b493d0112202dc139af200c73" title="assign two values to a 2D point">assign</a>(poly, coor);
+ <a name="a5"></a><a class="code" href="group__access.html#g97f76fc38f2c63c5da2136247a31cdb8" title="assign two values to a 2D point">assign</a>(poly, coor);
     <span class="comment">//read_wkt("POLYGON((0 0,0 7,4 2,2 0,0 0))", poly);</span>
     <a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>(poly, poly2, translate);
 

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/07__graph__route__example_8cpp-example.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/07__graph__route__example_8cpp-example.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/07__graph__route__example_8cpp-example.html 2009-10-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -167,7 +167,7 @@
 {
     ggl_vertex_property()
     {
- <a name="a3"></a><a class="code" href="group__access.html#g2fba6ded1fb6ecc7dba897b55c70f2d0" title="assign zero values to a box, point">ggl::assign_zero</a>(location);
+ <a name="a3"></a><a class="code" href="group__access.html#g3b95c5faaa108785681e58099b48dc35" title="assign zero values to a box, point">ggl::assign_zero</a>(location);
     }
     ggl_vertex_property(Point <span class="keyword">const</span>&amp; loc)
     {
@@ -216,7 +216,7 @@
             = boost::add_vertex(graph);
 
         <span class="comment">// Set the property (= location)</span>
- boost::put(<a name="a5"></a><a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">boost::get</a>(vertex_ggl_property, graph), new_vertex,
+ boost::put(<a name="a5"></a><a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point">boost::get</a>(vertex_ggl_property, graph), new_vertex,
             ggl_vertex_property&lt;typename M::key_type&gt;(key));
 
         <span class="comment">// Add to the map, using POINT as key</span>
@@ -290,10 +290,10 @@
     {
         <span class="comment">// Get properties of edge and of vertex</span>
         ggl_edge_property&lt;Route&gt; <span class="keyword">const</span>&amp; edge_prop =
- <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">boost::get</a>(<a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">boost::get</a>(edge_ggl_property, graph), opt_edge.first);
+ <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point">boost::get</a>(<a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point">boost::get</a>(edge_ggl_property, graph), opt_edge.first);
 
         ggl_vertex_property&lt;typename ggl::point_type&lt;Route&gt;::type&gt; <span class="keyword">const</span>&amp; vertex_prop =
- <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">boost::get</a>(<a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">boost::get</a>(vertex_ggl_property, graph), vertex2);
+ <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point">boost::get</a>(<a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point">boost::get</a>(vertex_ggl_property, graph), vertex2);
 
         <span class="comment">// Depending on how edge connects to vertex, copy it forward or backward</span>
         <span class="keywordflow">if</span> (<a name="a7"></a><a class="code" href="group__boolean__relations.html#g122b1fd835cee0742da7c97dfdda94c5" title="Calculate if two geometries are equals.">ggl::equals</a>(edge_prop.line().front(), vertex_prop.location))
@@ -349,7 +349,7 @@
 
     <span class="comment">// Init a bounding box, lateron used to define SVG map</span>
     <a name="_a10"></a><a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">ggl::box_2d</a> box;
- <a name="a11"></a><a class="code" href="group__access.html#gaa27514a7d1c16133d28dd5601cd32fd" title="assign to a box inverse infinite">ggl::assign_inverse</a>(box);
+ <a name="a11"></a><a class="code" href="group__access.html#g490821bd25a63cc584be1319375794f0" title="assign to a box inverse infinite">ggl::assign_inverse</a>(box);
 
     <span class="comment">// Read the cities</span>
     <span class="keyword">typedef</span> boost::tuple&lt;point_type, std::string, vertex_type&gt; city_type;
@@ -386,8 +386,8 @@
         <span class="comment">// Call Dijkstra (without named-parameter to be compatible with all VC)</span>
         boost::dijkstra_shortest_paths(graph, city1.get&lt;2&gt;(),
                 &amp;predecessors[0], &amp;costs[0],
- <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">boost::get</a>(edge_ggl_property, graph),
- <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">boost::get</a>(boost::vertex_index, graph),
+ <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point">boost::get</a>(edge_ggl_property, graph),
+ <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point">boost::get</a>(boost::vertex_index, graph),
                 std::less&lt;double&gt;(), std::plus&lt;double&gt;(),
                 (std::numeric_limits&lt;double&gt;::max)(), <span class="keywordtype">double</span>(),
                 boost::dijkstra_visitor&lt;boost::null_visitor&gt;());

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/access_8hpp.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/access_8hpp.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/access_8hpp.html 2009-10-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -50,6 +50,12 @@
 <tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1traits_1_1access.html">ggl::traits::access&lt; Geometry, Dimension &gt;</a></td></tr>
 
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Traits class which gives <a class="el" href="structggl_1_1traits_1_1access.html" title="Traits class which gives access (get,set) to points.">access</a> (get,set) to points. More...<br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1traits_1_1append__point.html">ggl::traits::append_point&lt; Geometry, Point &gt;</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Traits class, optional, might be implemented to append a <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a>. More...<br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1traits_1_1clear.html">ggl::traits::clear&lt; Geometry &gt;</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Traits class, optional, might be implemented to <a class="el" href="structggl_1_1traits_1_1clear.html" title="Traits class, optional, might be implemented to clear a geometry.">clear</a> a geometry. More...<br></td></tr>
 <tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1traits_1_1indexed__access.html">ggl::traits::indexed_access&lt; Geometry, Index, Dimension &gt;</a></td></tr>
 
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">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. More...<br></td></tr>
@@ -69,7 +75,7 @@
 <tr><td class="memTemplParams" nowrap colspan="2">template&lt;std::size_t D, typename G &gt; </td></tr>
 <tr><td class="memTemplItemLeft" nowrap align="right" valign="top">coordinate_type&lt; G &gt;::type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f">ggl::get</a> (const G &amp;geometry, detail::signature_getset_dimension *dummy=0)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get a coordinate value of a <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="classggl_1_1nsphere.html" title="Class nsphere: defines a circle or a sphere: a point with radius.">nsphere</a> <br></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get a coordinate 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;std::size_t I, std::size_t D, 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#g6ced3f6383c5e664984c54a36a1d78a2">ggl::set</a> (G &amp;geometry, const typename coordinate_type&lt; G &gt;::type &amp;value, detail::signature_getset_index_dimension *dummy=0)</td></tr>
 

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/access_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/access_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/access_8hpp_source.html 2009-10-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -69,220 +69,224 @@
 <a name="l00027"></a><a class="code" href="namespaceggl_1_1traits.html">00027</a> <span class="keyword">namespace </span>traits
 <a name="l00028"></a>00028 {
 <a name="l00029"></a>00029
-<a name="l00042"></a>00042 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, std::<span class="keywordtype">size_t</span> Dimension&gt;
-<a name="l00043"></a><a class="code" href="structggl_1_1traits_1_1access.html">00043</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1traits_1_1access.html" title="Traits class which gives access (get,set) to points.">access</a> {};
+<a name="l00041"></a>00041 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, std::<span class="keywordtype">size_t</span> Dimension&gt;
+<a name="l00042"></a><a class="code" href="structggl_1_1traits_1_1access.html">00042</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1traits_1_1access.html" title="Traits class which gives access (get,set) to points.">access</a> {};
+<a name="l00043"></a>00043
 <a name="l00044"></a>00044
-<a name="l00045"></a>00045
-<a name="l00059"></a>00059 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, std::<span class="keywordtype">size_t</span> Index, std::<span class="keywordtype">size_t</span> Dimension&gt;
-<a name="l00060"></a><a class="code" href="structggl_1_1traits_1_1indexed__access.html">00060</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1traits_1_1indexed__access.html" title="Traits class defining &amp;quot;get&amp;quot; and &amp;quot;set&amp;quot; to get and set point coordinate...">indexed_access</a> {};
+<a name="l00058"></a>00058 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, std::<span class="keywordtype">size_t</span> Index, std::<span class="keywordtype">size_t</span> Dimension&gt;
+<a name="l00059"></a><a class="code" href="structggl_1_1traits_1_1indexed__access.html">00059</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1traits_1_1indexed__access.html" title="Traits class defining &amp;quot;get&amp;quot; and &amp;quot;set&amp;quot; to get and set point coordinate...">indexed_access</a> {};
+<a name="l00060"></a>00060
 <a name="l00061"></a>00061
-<a name="l00062"></a>00062
-<a name="l00076"></a>00076 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
-<a name="l00077"></a><a class="code" href="structggl_1_1traits_1_1use__std.html">00077</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1traits_1_1use__std.html" title="Traits class, optional, indicating that the std-library should be used.">use_std</a>
-<a name="l00078"></a>00078 {
-<a name="l00079"></a><a class="code" href="structggl_1_1traits_1_1use__std.html#53e09180303edd2ec2735f749db2305d">00079</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="structggl_1_1traits_1_1use__std.html#53e09180303edd2ec2735f749db2305d">value</a> = <span class="keyword">true</span>;
-<a name="l00080"></a>00080 };
+<a name="l00075"></a>00075 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00076"></a><a class="code" href="structggl_1_1traits_1_1use__std.html">00076</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1traits_1_1use__std.html" title="Traits class, optional, indicating that the std-library should be used.">use_std</a>
+<a name="l00077"></a>00077 {
+<a name="l00078"></a><a class="code" href="structggl_1_1traits_1_1use__std.html#53e09180303edd2ec2735f749db2305d">00078</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="structggl_1_1traits_1_1use__std.html#53e09180303edd2ec2735f749db2305d">value</a> = <span class="keyword">true</span>;
+<a name="l00079"></a>00079 };
+<a name="l00080"></a>00080
 <a name="l00081"></a>00081
-<a name="l00082"></a>00082 } <span class="comment">// namespace traits</span>
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
-<a name="l00086"></a>00086 <span class="preprocessor"></span><span class="keyword">namespace </span>core_dispatch
-<a name="l00087"></a>00087 {
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089 <span class="keyword">template</span>
-<a name="l00090"></a>00090 &lt;
-<a name="l00091"></a>00091 <span class="keyword">typename</span> Tag,
-<a name="l00092"></a>00092 <span class="keyword">typename</span> Geometry,
-<a name="l00093"></a>00093 <span class="keyword">typename</span>
-<a name="l00094"></a>00094 CoordinateType, std::size_t Dimension
-<a name="l00095"></a>00095 &gt;
-<a name="l00096"></a>00096 <span class="keyword">struct </span>access
-<a name="l00097"></a>00097 {
-<a name="l00098"></a>00098 <span class="comment">//static inline T get(const G&amp; ) {}</span>
-<a name="l00099"></a>00099 <span class="comment">//static inline void set(G&amp; g, T const&amp; value) {}</span>
-<a name="l00100"></a>00100 };
-<a name="l00101"></a>00101
-<a name="l00102"></a>00102 <span class="keyword">template</span>
-<a name="l00103"></a>00103 &lt;
-<a name="l00104"></a>00104 <span class="keyword">typename</span> Tag,
-<a name="l00105"></a>00105 <span class="keyword">typename</span> Geometry,
-<a name="l00106"></a>00106 <span class="keyword">typename</span> CoordinateType,
-<a name="l00107"></a>00107 std::size_t Index,
-<a name="l00108"></a>00108 std::size_t Dimension
-<a name="l00109"></a>00109 &gt;
-<a name="l00110"></a>00110 <span class="keyword">struct </span>indexed_access
-<a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <span class="comment">//static inline T get(const G&amp; ) {}</span>
-<a name="l00113"></a>00113 <span class="comment">//static inline void set(G&amp; g, T const&amp; value) {}</span>
+<a name="l00082"></a>00082
+<a name="l00094"></a>00094 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00095"></a><a class="code" href="structggl_1_1traits_1_1clear.html">00095</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1traits_1_1clear.html" title="Traits class, optional, might be implemented to clear a geometry.">clear</a>
+<a name="l00096"></a>00096 {};
+<a name="l00097"></a>00097
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099
+<a name="l00111"></a>00111 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>&gt;
+<a name="l00112"></a><a class="code" href="structggl_1_1traits_1_1append__point.html">00112</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1traits_1_1append__point.html" title="Traits class, optional, might be implemented to append a point.">append_point</a>
+<a name="l00113"></a>00113 {
 <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> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> CoordinateType, std::<span class="keywordtype">size_t</span> Dimension&gt;
-<a name="l00117"></a>00117 <span class="keyword">struct </span>access&lt;point_tag, Point, CoordinateType, Dimension&gt;
-<a name="l00118"></a>00118 {
-<a name="l00119"></a>00119 <span class="keyword">static</span> <span class="keyword">inline</span> CoordinateType <span class="keyword">get</span>(Point <span class="keyword">const</span>&amp; point)
-<a name="l00120"></a>00120 {
-<a name="l00121"></a>00121 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">traits::access&lt;Point, Dimension&gt;::get</a>(point);
-<a name="l00122"></a>00122 }
-<a name="l00123"></a>00123 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(Point&amp; p, CoordinateType <span class="keyword">const</span>&amp; value)
-<a name="l00124"></a>00124 {
-<a name="l00125"></a>00125 <a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a" title="assign coordinate value to a point / sphere">traits::access&lt;Point, Dimension&gt;::set</a>(p, value);
-<a name="l00126"></a>00126 }
-<a name="l00127"></a>00127 };
-<a name="l00128"></a>00128
-<a name="l00129"></a>00129 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Nsphere, <span class="keyword">typename</span> CoordinateType, std::<span class="keywordtype">size_t</span> Dimension&gt;
-<a name="l00130"></a>00130 <span class="keyword">struct </span>access&lt;nsphere_tag, Nsphere, CoordinateType, Dimension&gt;
-<a name="l00131"></a>00131 {
-<a name="l00132"></a>00132 <span class="keyword">static</span> <span class="keyword">inline</span> CoordinateType <span class="keyword">get</span>(Nsphere <span class="keyword">const</span>&amp; nsphere)
-<a name="l00133"></a>00133 {
-<a name="l00134"></a>00134 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">traits::access&lt;Nsphere, Dimension&gt;::get</a>(nsphere);
-<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> <span class="keyword">set</span>(Nsphere&amp; s, CoordinateType <span class="keyword">const</span>&amp; value)
-<a name="l00137"></a>00137 {
-<a name="l00138"></a>00138 <a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a" title="assign coordinate value to a point / sphere">traits::access&lt;Nsphere, Dimension&gt;::set</a>(s, value);
-<a name="l00139"></a>00139 }
-<a name="l00140"></a>00140 };
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 <span class="keyword">template</span>
-<a name="l00143"></a>00143 &lt;
-<a name="l00144"></a>00144 <span class="keyword">typename</span> Box,
-<a name="l00145"></a>00145 <span class="keyword">typename</span> CoordinateType,
-<a name="l00146"></a>00146 std::size_t Index,
-<a name="l00147"></a>00147 std::size_t Dimension
-<a name="l00148"></a>00148 &gt;
-<a name="l00149"></a>00149 <span class="keyword">struct </span>indexed_access&lt;box_tag, Box, CoordinateType, Index, Dimension&gt;
-<a name="l00150"></a>00150 {
-<a name="l00151"></a>00151 <span class="keyword">static</span> <span class="keyword">inline</span> CoordinateType <span class="keyword">get</span>(Box <span class="keyword">const</span>&amp; box)
-<a name="l00152"></a>00152 {
-<a name="l00153"></a>00153 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">traits::indexed_access&lt;Box, Index, Dimension&gt;::get</a>(box);
-<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> <span class="keyword">set</span>(Box&amp; b, CoordinateType <span class="keyword">const</span>&amp; value)
-<a name="l00156"></a>00156 {
-<a name="l00157"></a>00157 <a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a" title="assign coordinate value to a point / sphere">traits::indexed_access&lt;Box, Index, Dimension&gt;::set</a>(b, value);
-<a name="l00158"></a>00158 }
-<a name="l00159"></a>00159 };
-<a name="l00160"></a>00160
-<a name="l00161"></a>00161 <span class="keyword">template</span>
-<a name="l00162"></a>00162 &lt;
-<a name="l00163"></a>00163 <span class="keyword">typename</span> Segment,
-<a name="l00164"></a>00164 <span class="keyword">typename</span> CoordinateType,
-<a name="l00165"></a>00165 std::size_t Index,
-<a name="l00166"></a>00166 std::size_t Dimension
-<a name="l00167"></a>00167 &gt;
-<a name="l00168"></a>00168 <span class="keyword">struct </span>indexed_access&lt;segment_tag, Segment, CoordinateType, Index, Dimension&gt;
-<a name="l00169"></a>00169 {
-<a name="l00170"></a>00170 <span class="keyword">static</span> <span class="keyword">inline</span> CoordinateType <span class="keyword">get</span>(Segment <span class="keyword">const</span>&amp; segment)
-<a name="l00171"></a>00171 {
-<a name="l00172"></a>00172 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">traits::indexed_access&lt;Segment, Index, Dimension&gt;::get</a>(segment);
-<a name="l00173"></a>00173 }
-<a name="l00174"></a>00174 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(Segment&amp; segment, CoordinateType <span class="keyword">const</span>&amp; value)
-<a name="l00175"></a>00175 {
-<a name="l00176"></a>00176 <a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a" title="assign coordinate value to a point / sphere">traits::indexed_access&lt;Segment, Index, Dimension&gt;::set</a>(segment, value);
-<a name="l00177"></a>00177 }
-<a name="l00178"></a>00178 };
-<a name="l00179"></a>00179
-<a name="l00180"></a>00180 } <span class="comment">// namespace core_dispatch</span>
-<a name="l00181"></a>00181 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
-<a name="l00182"></a>00182 <span class="preprocessor"></span>
-<a name="l00183"></a>00183
-<a name="l00184"></a>00184 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
-<a name="l00185"></a>00185 <span class="preprocessor"></span><span class="keyword">namespace </span>detail
-<a name="l00186"></a>00186 {
-<a name="l00187"></a>00187
-<a name="l00188"></a>00188 <span class="comment">// Two dummy tags to distinguish get/set variants below.</span>
-<a name="l00189"></a>00189 <span class="comment">// They don't have to be specified by the user. The functions are distinguished</span>
-<a name="l00190"></a>00190 <span class="comment">// by template signature also, but for e.g. GCC this is not enough. So give them</span>
-<a name="l00191"></a>00191 <span class="comment">// a different signature.</span>
-<a name="l00192"></a>00192 <span class="keyword">struct </span>signature_getset_dimension {};
-<a name="l00193"></a>00193 <span class="keyword">struct </span>signature_getset_index_dimension {};
-<a name="l00194"></a>00194
-<a name="l00195"></a>00195 } <span class="comment">// namespace detail</span>
-<a name="l00196"></a>00196 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
-<a name="l00197"></a>00197 <span class="preprocessor"></span>
-<a name="l00198"></a>00198
-<a name="l00208"></a>00208 <span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G&gt;
-<a name="l00209"></a><a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f">00209</a> <span class="keyword">inline</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;G&gt;::type</a> <span class="keyword">get</span>(<span class="keyword">const</span> G&amp; geometry,
-<a name="l00210"></a>00210 detail::signature_getset_dimension* dummy = 0)
+<a name="l00116"></a>00116
+<a name="l00117"></a>00117
+<a name="l00118"></a>00118
+<a name="l00119"></a>00119
+<a name="l00120"></a>00120 } <span class="comment">// namespace traits</span>
+<a name="l00121"></a>00121
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00124"></a>00124 <span class="preprocessor"></span><span class="keyword">namespace </span>core_dispatch
+<a name="l00125"></a>00125 {
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127 <span class="keyword">template</span>
+<a name="l00128"></a>00128 &lt;
+<a name="l00129"></a>00129 <span class="keyword">typename</span> Tag,
+<a name="l00130"></a>00130 <span class="keyword">typename</span> Geometry,
+<a name="l00131"></a>00131 <span class="keyword">typename</span>
+<a name="l00132"></a>00132 CoordinateType, std::size_t Dimension
+<a name="l00133"></a>00133 &gt;
+<a name="l00134"></a>00134 <span class="keyword">struct </span>access
+<a name="l00135"></a>00135 {
+<a name="l00136"></a>00136 <span class="comment">//static inline T get(const G&amp; ) {}</span>
+<a name="l00137"></a>00137 <span class="comment">//static inline void set(G&amp; g, T const&amp; value) {}</span>
+<a name="l00138"></a>00138 };
+<a name="l00139"></a>00139
+<a name="l00140"></a>00140 <span class="keyword">template</span>
+<a name="l00141"></a>00141 &lt;
+<a name="l00142"></a>00142 <span class="keyword">typename</span> Tag,
+<a name="l00143"></a>00143 <span class="keyword">typename</span> Geometry,
+<a name="l00144"></a>00144 <span class="keyword">typename</span> CoordinateType,
+<a name="l00145"></a>00145 std::size_t Index,
+<a name="l00146"></a>00146 std::size_t Dimension
+<a name="l00147"></a>00147 &gt;
+<a name="l00148"></a>00148 <span class="keyword">struct </span>indexed_access
+<a name="l00149"></a>00149 {
+<a name="l00150"></a>00150 <span class="comment">//static inline T get(const G&amp; ) {}</span>
+<a name="l00151"></a>00151 <span class="comment">//static inline void set(G&amp; g, T const&amp; value) {}</span>
+<a name="l00152"></a>00152 };
+<a name="l00153"></a>00153
+<a name="l00154"></a>00154 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> CoordinateType, std::<span class="keywordtype">size_t</span> Dimension&gt;
+<a name="l00155"></a>00155 <span class="keyword">struct </span>access&lt;point_tag, Point, CoordinateType, Dimension&gt;
+<a name="l00156"></a>00156 {
+<a name="l00157"></a>00157 <span class="keyword">static</span> <span class="keyword">inline</span> CoordinateType <span class="keyword">get</span>(Point <span class="keyword">const</span>&amp; point)
+<a name="l00158"></a>00158 {
+<a name="l00159"></a>00159 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point">traits::access&lt;Point, Dimension&gt;::get</a>(point);
+<a name="l00160"></a>00160 }
+<a name="l00161"></a>00161 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(Point&amp; p, CoordinateType <span class="keyword">const</span>&amp; value)
+<a name="l00162"></a>00162 {
+<a name="l00163"></a>00163 <a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a" title="assign coordinate value to a point / sphere">traits::access&lt;Point, Dimension&gt;::set</a>(p, value);
+<a name="l00164"></a>00164 }
+<a name="l00165"></a>00165 };
+<a name="l00166"></a>00166
+<a name="l00167"></a>00167 <span class="keyword">template</span>
+<a name="l00168"></a>00168 &lt;
+<a name="l00169"></a>00169 <span class="keyword">typename</span> Box,
+<a name="l00170"></a>00170 <span class="keyword">typename</span> CoordinateType,
+<a name="l00171"></a>00171 std::size_t Index,
+<a name="l00172"></a>00172 std::size_t Dimension
+<a name="l00173"></a>00173 &gt;
+<a name="l00174"></a>00174 <span class="keyword">struct </span>indexed_access&lt;box_tag, Box, CoordinateType, Index, Dimension&gt;
+<a name="l00175"></a>00175 {
+<a name="l00176"></a>00176 <span class="keyword">static</span> <span class="keyword">inline</span> CoordinateType <span class="keyword">get</span>(Box <span class="keyword">const</span>&amp; box)
+<a name="l00177"></a>00177 {
+<a name="l00178"></a>00178 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point">traits::indexed_access&lt;Box, Index, Dimension&gt;::get</a>(box);
+<a name="l00179"></a>00179 }
+<a name="l00180"></a>00180 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(Box&amp; b, CoordinateType <span class="keyword">const</span>&amp; value)
+<a name="l00181"></a>00181 {
+<a name="l00182"></a>00182 <a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a" title="assign coordinate value to a point / sphere">traits::indexed_access&lt;Box, Index, Dimension&gt;::set</a>(b, value);
+<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>
+<a name="l00187"></a>00187 &lt;
+<a name="l00188"></a>00188 <span class="keyword">typename</span> Segment,
+<a name="l00189"></a>00189 <span class="keyword">typename</span> CoordinateType,
+<a name="l00190"></a>00190 std::size_t Index,
+<a name="l00191"></a>00191 std::size_t Dimension
+<a name="l00192"></a>00192 &gt;
+<a name="l00193"></a>00193 <span class="keyword">struct </span>indexed_access&lt;segment_tag, Segment, CoordinateType, Index, Dimension&gt;
+<a name="l00194"></a>00194 {
+<a name="l00195"></a>00195 <span class="keyword">static</span> <span class="keyword">inline</span> CoordinateType <span class="keyword">get</span>(Segment <span class="keyword">const</span>&amp; segment)
+<a name="l00196"></a>00196 {
+<a name="l00197"></a>00197 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point">traits::indexed_access&lt;Segment, Index, Dimension&gt;::get</a>(segment);
+<a name="l00198"></a>00198 }
+<a name="l00199"></a>00199 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(Segment&amp; segment, CoordinateType <span class="keyword">const</span>&amp; value)
+<a name="l00200"></a>00200 {
+<a name="l00201"></a>00201 <a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a" title="assign coordinate value to a point / sphere">traits::indexed_access&lt;Segment, Index, Dimension&gt;::set</a>(segment, value);
+<a name="l00202"></a>00202 }
+<a name="l00203"></a>00203 };
+<a name="l00204"></a>00204
+<a name="l00205"></a>00205 } <span class="comment">// namespace core_dispatch</span>
+<a name="l00206"></a>00206 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00207"></a>00207 <span class="preprocessor"></span>
+<a name="l00208"></a>00208
+<a name="l00209"></a>00209 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00210"></a>00210 <span class="preprocessor"></span><span class="keyword">namespace </span>detail
 <a name="l00211"></a>00211 {
-<a name="l00212"></a>00212 boost::ignore_unused_variable_warning(dummy);
-<a name="l00213"></a>00213
-<a name="l00214"></a>00214 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;G&gt;::type ncg_type;
-<a name="l00215"></a>00215
-<a name="l00216"></a>00216 <span class="keyword">typedef</span> core_dispatch::access
-<a name="l00217"></a>00217 &lt;
-<a name="l00218"></a>00218 <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="l00219"></a>00219 ncg_type,
-<a name="l00220"></a>00220 <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;ncg_type&gt;::type</a>,
-<a name="l00221"></a>00221 D
-<a name="l00222"></a>00222 &gt; coord_access_type;
+<a name="l00212"></a>00212
+<a name="l00213"></a>00213 <span class="comment">// Two dummy tags to distinguish get/set variants below.</span>
+<a name="l00214"></a>00214 <span class="comment">// They don't have to be specified by the user. The functions are distinguished</span>
+<a name="l00215"></a>00215 <span class="comment">// by template signature also, but for e.g. GCC this is not enough. So give them</span>
+<a name="l00216"></a>00216 <span class="comment">// a different signature.</span>
+<a name="l00217"></a>00217 <span class="keyword">struct </span>signature_getset_dimension {};
+<a name="l00218"></a>00218 <span class="keyword">struct </span>signature_getset_index_dimension {};
+<a name="l00219"></a>00219
+<a name="l00220"></a>00220 } <span class="comment">// namespace detail</span>
+<a name="l00221"></a>00221 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00222"></a>00222 <span class="preprocessor"></span>
 <a name="l00223"></a>00223
-<a name="l00224"></a>00224 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">coord_access_type::get</a>(geometry);
-<a name="l00225"></a>00225 }
-<a name="l00226"></a>00226
-<a name="l00227"></a>00227
-<a name="l00237"></a>00237 <span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G&gt;
-<a name="l00238"></a><a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a">00238</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(G&amp; geometry, <span class="keyword">const</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;G&gt;::type</a>&amp; value,
-<a name="l00239"></a>00239 detail::signature_getset_dimension* dummy = 0)
-<a name="l00240"></a>00240 {
-<a name="l00241"></a>00241 boost::ignore_unused_variable_warning(dummy);
-<a name="l00242"></a>00242
-<a name="l00243"></a>00243 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;G&gt;::type ncg_type;
-<a name="l00244"></a>00244
-<a name="l00245"></a>00245 <span class="keyword">typedef</span> core_dispatch::access
-<a name="l00246"></a>00246 &lt;
-<a name="l00247"></a>00247 <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="l00248"></a>00248 ncg_type,
-<a name="l00249"></a>00249 <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;ncg_type&gt;::type</a>,
-<a name="l00250"></a>00250 D
-<a name="l00251"></a>00251 &gt; coord_access_type;
+<a name="l00233"></a>00233 <span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G&gt;
+<a name="l00234"></a><a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f">00234</a> <span class="keyword">inline</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;G&gt;::type</a> <span class="keyword">get</span>(<span class="keyword">const</span> G&amp; geometry,
+<a name="l00235"></a>00235 detail::signature_getset_dimension* dummy = 0)
+<a name="l00236"></a>00236 {
+<a name="l00237"></a>00237 boost::ignore_unused_variable_warning(dummy);
+<a name="l00238"></a>00238
+<a name="l00239"></a>00239 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;G&gt;::type ncg_type;
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241 <span class="keyword">typedef</span> core_dispatch::access
+<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;G&gt;::type</a>,
+<a name="l00244"></a>00244 ncg_type,
+<a name="l00245"></a>00245 <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;ncg_type&gt;::type</a>,
+<a name="l00246"></a>00246 D
+<a name="l00247"></a>00247 &gt; coord_access_type;
+<a name="l00248"></a>00248
+<a name="l00249"></a>00249 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point">coord_access_type::get</a>(geometry);
+<a name="l00250"></a>00250 }
+<a name="l00251"></a>00251
 <a name="l00252"></a>00252
-<a name="l00253"></a>00253 <a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a" title="assign coordinate value to a point / sphere">coord_access_type::set</a>(geometry, value);
-<a name="l00254"></a>00254 }
-<a name="l00255"></a>00255
-<a name="l00256"></a>00256 <span class="comment">// Note: doxygen needs a construct to distinguish get/set (like the gcc compiler)</span>
-<a name="l00257"></a>00257
-<a name="l00268"></a>00268 <span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> I, std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G&gt;
-<a name="l00269"></a><a class="code" href="group__access.html#gd3c007fcbae837d56d13aa77ed03f920">00269</a> <span class="keyword">inline</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;G&gt;::type</a> <span class="keyword">get</span>(<span class="keyword">const</span> G&amp; geometry,
-<a name="l00270"></a>00270 detail::signature_getset_index_dimension* dummy = 0)
-<a name="l00271"></a>00271 {
-<a name="l00272"></a>00272 boost::ignore_unused_variable_warning(dummy);
-<a name="l00273"></a>00273
-<a name="l00274"></a>00274 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;G&gt;::type ncg_type;
-<a name="l00275"></a>00275
-<a name="l00276"></a>00276 <span class="keyword">typedef</span> core_dispatch::indexed_access
-<a name="l00277"></a>00277 &lt;
-<a name="l00278"></a>00278 <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="l00279"></a>00279 ncg_type,
-<a name="l00280"></a>00280 <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;ncg_type&gt;::type</a>,
-<a name="l00281"></a>00281 I,
-<a name="l00282"></a>00282 D
-<a name="l00283"></a>00283 &gt; coord_access_type;
-<a name="l00284"></a>00284
-<a name="l00285"></a>00285 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">coord_access_type::get</a>(geometry);
-<a name="l00286"></a>00286 }
-<a name="l00287"></a>00287
-<a name="l00298"></a>00298 <span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> I, std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G&gt;
-<a name="l00299"></a><a class="code" href="group__access.html#g6ced3f6383c5e664984c54a36a1d78a2">00299</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(G&amp; geometry, <span class="keyword">const</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;G&gt;::type</a>&amp; value,
-<a name="l00300"></a>00300 detail::signature_getset_index_dimension* dummy = 0)
-<a name="l00301"></a>00301 {
-<a name="l00302"></a>00302 boost::ignore_unused_variable_warning(dummy);
-<a name="l00303"></a>00303
-<a name="l00304"></a>00304 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;G&gt;::type ncg_type;
-<a name="l00305"></a>00305
-<a name="l00306"></a>00306 <span class="keyword">typedef</span> core_dispatch::indexed_access
-<a name="l00307"></a>00307 &lt;
-<a name="l00308"></a>00308 <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>, ncg_type,
-<a name="l00309"></a>00309 <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;ncg_type&gt;::type</a>,
-<a name="l00310"></a>00310 I,
-<a name="l00311"></a>00311 D
-<a name="l00312"></a>00312 &gt; coord_access_type;
-<a name="l00313"></a>00313
-<a name="l00314"></a>00314 <a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a" title="assign coordinate value to a point / sphere">coord_access_type::set</a>(geometry, value);
-<a name="l00315"></a>00315 }
-<a name="l00316"></a>00316
-<a name="l00317"></a>00317 } <span class="comment">// namespace ggl</span>
-<a name="l00318"></a>00318
-<a name="l00319"></a>00319 <span class="preprocessor">#endif // GGL_CORE_ACCESS_HPP</span>
+<a name="l00262"></a>00262 <span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G&gt;
+<a name="l00263"></a><a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a">00263</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(G&amp; geometry, <span class="keyword">const</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;G&gt;::type</a>&amp; value,
+<a name="l00264"></a>00264 detail::signature_getset_dimension* dummy = 0)
+<a name="l00265"></a>00265 {
+<a name="l00266"></a>00266 boost::ignore_unused_variable_warning(dummy);
+<a name="l00267"></a>00267
+<a name="l00268"></a>00268 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;G&gt;::type ncg_type;
+<a name="l00269"></a>00269
+<a name="l00270"></a>00270 <span class="keyword">typedef</span> core_dispatch::access
+<a name="l00271"></a>00271 &lt;
+<a name="l00272"></a>00272 <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="l00273"></a>00273 ncg_type,
+<a name="l00274"></a>00274 <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;ncg_type&gt;::type</a>,
+<a name="l00275"></a>00275 D
+<a name="l00276"></a>00276 &gt; coord_access_type;
+<a name="l00277"></a>00277
+<a name="l00278"></a>00278 <a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a" title="assign coordinate value to a point / sphere">coord_access_type::set</a>(geometry, value);
+<a name="l00279"></a>00279 }
+<a name="l00280"></a>00280
+<a name="l00281"></a>00281 <span class="comment">// Note: doxygen needs a construct to distinguish get/set (like the gcc compiler)</span>
+<a name="l00282"></a>00282
+<a name="l00293"></a>00293 <span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> I, std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G&gt;
+<a name="l00294"></a><a class="code" href="group__access.html#gd3c007fcbae837d56d13aa77ed03f920">00294</a> <span class="keyword">inline</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;G&gt;::type</a> <span class="keyword">get</span>(<span class="keyword">const</span> G&amp; geometry,
+<a name="l00295"></a>00295 detail::signature_getset_index_dimension* dummy = 0)
+<a name="l00296"></a>00296 {
+<a name="l00297"></a>00297 boost::ignore_unused_variable_warning(dummy);
+<a name="l00298"></a>00298
+<a name="l00299"></a>00299 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;G&gt;::type ncg_type;
+<a name="l00300"></a>00300
+<a name="l00301"></a>00301 <span class="keyword">typedef</span> core_dispatch::indexed_access
+<a name="l00302"></a>00302 &lt;
+<a name="l00303"></a>00303 <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="l00304"></a>00304 ncg_type,
+<a name="l00305"></a>00305 <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;ncg_type&gt;::type</a>,
+<a name="l00306"></a>00306 I,
+<a name="l00307"></a>00307 D
+<a name="l00308"></a>00308 &gt; coord_access_type;
+<a name="l00309"></a>00309
+<a name="l00310"></a>00310 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point">coord_access_type::get</a>(geometry);
+<a name="l00311"></a>00311 }
+<a name="l00312"></a>00312
+<a name="l00323"></a>00323 <span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> I, std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G&gt;
+<a name="l00324"></a><a class="code" href="group__access.html#g6ced3f6383c5e664984c54a36a1d78a2">00324</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(G&amp; geometry, <span class="keyword">const</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;G&gt;::type</a>&amp; value,
+<a name="l00325"></a>00325 detail::signature_getset_index_dimension* dummy = 0)
+<a name="l00326"></a>00326 {
+<a name="l00327"></a>00327 boost::ignore_unused_variable_warning(dummy);
+<a name="l00328"></a>00328
+<a name="l00329"></a>00329 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;G&gt;::type ncg_type;
+<a name="l00330"></a>00330
+<a name="l00331"></a>00331 <span class="keyword">typedef</span> core_dispatch::indexed_access
+<a name="l00332"></a>00332 &lt;
+<a name="l00333"></a>00333 <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>, ncg_type,
+<a name="l00334"></a>00334 <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;ncg_type&gt;::type</a>,
+<a name="l00335"></a>00335 I,
+<a name="l00336"></a>00336 D
+<a name="l00337"></a>00337 &gt; coord_access_type;
+<a name="l00338"></a>00338
+<a name="l00339"></a>00339 <a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a" title="assign coordinate value to a point / sphere">coord_access_type::set</a>(geometry, value);
+<a name="l00340"></a>00340 }
+<a name="l00341"></a>00341
+<a name="l00342"></a>00342 } <span class="comment">// namespace ggl</span>
+<a name="l00343"></a>00343
+<a name="l00344"></a>00344 <span class="preprocessor">#endif // GGL_CORE_ACCESS_HPP</span>
 </pre></div></div>
 <hr size="1">
 <table width="100%">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp_source.html 2009-10-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -48,8 +48,8 @@
 <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_ADAPT_TURNS_HPP</span>
-<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ADAPT_TURNS_HPP</span>
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ALGORITHMS_OVERLAY_ADAPT_TURNS_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_OVERLAY_ADAPT_TURNS_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
@@ -595,7 +595,7 @@
 <a name="l00553"></a>00553
 <a name="l00554"></a>00554 } <span class="comment">// namespace ggl</span>
 <a name="l00555"></a>00555
-<a name="l00556"></a>00556 <span class="preprocessor">#endif // GGL_ADAPT_TURNS_HPP</span>
+<a name="l00556"></a>00556 <span class="preprocessor">#endif // GGL_ALGORITHMS_OVERLAY_ADAPT_TURNS_HPP</span>
 </pre></div></div>
 <hr size="1">
 <table width="100%">

Deleted: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__within_8hpp.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__within_8hpp.html 2009-10-25 06:40:07 EDT (Sun, 25 Oct 2009)
+++ (empty file)
@@ -1,85 +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/strategies/agnostic/agn_within.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>Classes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1strategy_1_1within_1_1winding.html">ggl::strategy::within::winding&lt; P, PS &gt;</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Within detection using <a class="el" href="classggl_1_1strategy_1_1within_1_1winding.html" title="Within detection using winding rule.">winding</a> rule. More...<br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><b>ggl::strategy::within::winding&lt; P, PS &gt;::windings</b></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 class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl_1_1strategy.html">ggl::strategy</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl_1_1strategy_1_1within.html">ggl::strategy::within</a></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/agn__within_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__within_8hpp_source.html 2009-10-25 06:40:07 EDT (Sun, 25 Oct 2009)
+++ (empty file)
@@ -1,216 +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/strategies/agnostic/agn_within.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_STRATEGY_AGNOSTIC_WITHIN_HPP</span>
-<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_STRATEGY_AGNOSTIC_WITHIN_HPP</span>
-<a name="l00011"></a>00011 <span class="preprocessor"></span>
-<a name="l00012"></a>00012
-<a name="l00013"></a>00013
-<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>&gt;</span>
-<a name="l00015"></a>00015
-<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;<a class="code" href="strategy__traits_8hpp.html">ggl/strategies/strategy_traits.hpp</a>&gt;</span>
-<a name="l00017"></a>00017
-<a name="l00018"></a>00018
-<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 <span class="keyword">namespace </span>strategy
-<a name="l00023"></a>00023 {
-<a name="l00024"></a><a class="code" href="namespaceggl_1_1strategy_1_1within.html">00024</a> <span class="keyword">namespace </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>
-<a name="l00025"></a>00025 {
-<a name="l00026"></a>00026
-<a name="l00037"></a>00037 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> PS = P&gt;
-<a name="l00038"></a><a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html">00038</a> <span class="keyword">class </span><a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html" title="Within detection using winding rule.">winding</a>
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="keyword">private</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" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type&lt;P&gt;::type</a> PT;
-<a name="l00042"></a>00042 <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;PS&gt;::type</a> ST;
-<a name="l00043"></a>00043
-<a name="l00045"></a>00045 <span class="keyword">struct </span>windings
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 <span class="keywordtype">int</span> count;
-<a name="l00048"></a>00048 <span class="keywordtype">bool</span> touches;
-<a name="l00049"></a>00049 <span class="keyword">const</span> P&amp; p;
-<a name="l00050"></a>00050 <span class="keyword">inline</span> <span class="keyword">explicit</span> windings(<span class="keyword">const</span> P&amp; ap)
-<a name="l00051"></a>00051 : count(0)
-<a name="l00052"></a>00052 , touches(<span class="keyword">false</span>)
-<a name="l00053"></a>00053 , p(ap)
-<a name="l00054"></a>00054 {}
-<a name="l00055"></a>00055 <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>()<span class="keyword"> const</span>
-<a name="l00056"></a>00056 <span class="keyword"> </span>{
-<a name="l00057"></a>00057 <span class="keywordflow">return</span> ! touches &amp;&amp; count != 0;
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059 };
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061 <span class="keyword">template</span> &lt;<span class="keywordtype">size_t</span> D&gt;
-<a name="l00062"></a>00062 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> check_touch(<span class="keyword">const</span> <a class="code" href="classggl_1_1segment.html" title="Class segment: small class containing two (templatized) point references.">segment&lt;const PS&gt;</a>&amp; s, windings&amp; state)
-<a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 <span class="keyword">const</span> PT&amp; p = get&lt;D&gt;(state.p);
-<a name="l00065"></a>00065 <span class="keyword">const</span> ST&amp; s1 = get&lt;0, D&gt;(s);
-<a name="l00066"></a>00066 <span class="keyword">const</span> ST&amp; s2 = get&lt;1, D&gt;(s);
-<a name="l00067"></a>00067 <span class="keywordflow">if</span> ((s1 &lt;= p &amp;&amp; s2 &gt;= p) || (s2 &lt;= p &amp;&amp; s1 &gt;= p))
-<a name="l00068"></a>00068 {
-<a name="l00069"></a>00069 state.touches = <span class="keyword">true</span>;
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071 <span class="keywordflow">return</span> 0;
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074
-<a name="l00075"></a>00075 <span class="keyword">template</span> &lt;<span class="keywordtype">size_t</span> D&gt;
-<a name="l00076"></a>00076 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> check_segment(<span class="keyword">const</span> <a class="code" href="classggl_1_1segment.html" title="Class segment: small class containing two (templatized) point references.">segment&lt;const PS&gt;</a>&amp; s, windings&amp; state)
-<a name="l00077"></a>00077 {
-<a name="l00078"></a>00078 <span class="keyword">const</span> PT&amp; p = get&lt;D&gt;(state.p);
-<a name="l00079"></a>00079 <span class="keyword">const</span> ST&amp; s1 = get&lt;0, D&gt;(s);
-<a name="l00080"></a>00080 <span class="keyword">const</span> ST&amp; s2 = get&lt;1, D&gt;(s);
-<a name="l00081"></a>00081
-<a name="l00082"></a>00082 <span class="comment">// Check if one of segment endpoints is at same level of point</span>
-<a name="l00083"></a>00083 <span class="keywordtype">bool</span> eq1 = <a class="code" href="group__boolean__relations.html#g122b1fd835cee0742da7c97dfdda94c5" title="Calculate if two geometries are equals.">math::equals</a>(s1, p);
-<a name="l00084"></a>00084 <span class="keywordtype">bool</span> eq2 = <a class="code" href="group__boolean__relations.html#g122b1fd835cee0742da7c97dfdda94c5" title="Calculate if two geometries are equals.">math::equals</a>(s2, p);
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086 <span class="keywordflow">if</span> (eq1 &amp;&amp; eq2)
-<a name="l00087"></a>00087 {
-<a name="l00088"></a>00088 <span class="comment">// Both equal p -&gt; segment is horizontal (or vertical for D=0)</span>
-<a name="l00089"></a>00089 <span class="comment">// The only thing which has to be done is check if point is ON segment</span>
-<a name="l00090"></a>00090 <span class="keywordflow">return</span> check_touch&lt;1 - D&gt;(s, state);
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 <span class="keywordflow">return</span>
-<a name="l00094"></a>00094 eq1 ? (s2 &gt; p ? 1 : -1) <span class="comment">// P on level s1, UP/DOWN depending on s2</span>
-<a name="l00095"></a>00095 : eq2 ? (s1 &gt; p ? -1 : 1) <span class="comment">// idem</span>
-<a name="l00096"></a>00096 : s1 &lt; p &amp;&amp; s2 &gt; p ? 2 <span class="comment">// P between s1 -&gt; s2 --&gt; UP</span>
-<a name="l00097"></a>00097 : s2 &lt; p &amp;&amp; s1 &gt; p ? -2 <span class="comment">// P between s2 -&gt; s1 --&gt; DOWN</span>
-<a name="l00098"></a>00098 : 0;
-<a name="l00099"></a>00099 }
-<a name="l00100"></a>00100
-<a name="l00101"></a>00101
-<a name="l00102"></a>00102 <span class="keyword">public</span> :
-<a name="l00103"></a>00103
-<a name="l00104"></a><a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html#aa5dc8bd530eed3ac8420ccccd2c8e65">00104</a> <span class="keyword">typedef</span> windings <a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html#aa5dc8bd530eed3ac8420ccccd2c8e65">state_type</a>;
-<a name="l00105"></a>00105
-<a name="l00106"></a><a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html#8ce0e3219bdded9943af7bc594a7f1be">00106</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html#8ce0e3219bdded9943af7bc594a7f1be">operator()</a>(<span class="keyword">const</span> <a class="code" href="classggl_1_1segment.html" title="Class segment: small class containing two (templatized) point references.">segment&lt;const PS&gt;</a>&amp; s, <a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html#aa5dc8bd530eed3ac8420ccccd2c8e65">state_type</a>&amp; state)<span class="keyword"> const</span>
-<a name="l00107"></a>00107 <span class="keyword"> </span>{
-<a name="l00108"></a>00108 <span class="keywordtype">int</span> cnt = check_segment&lt;1&gt;(s, state);
-<a name="l00109"></a>00109 <span class="keywordflow">if</span> (cnt != 0)
-<a name="l00110"></a>00110 {
-<a name="l00111"></a>00111 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__side.html" title="Traits class binding a side determination strategy to a coordinate system.">strategy_side&lt;typename cs_tag&lt;P&gt;::type</a>, P, PS&gt;::type SS;
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113 <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, PS&gt;::type</a> side = SS::side(s, state.p);
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115 <span class="keywordflow">if</span> (<a class="code" href="namespaceggl_1_1math.html#d90ba94c2d65876e9485b2bbd10def34" title="returns true if both arguments are equal.">math::equals</a>(side, 0))
-<a name="l00116"></a>00116 {
-<a name="l00117"></a>00117 <span class="comment">// Point is lying on segment</span>
-<a name="l00118"></a>00118 state.touches = <span class="keyword">true</span>;
-<a name="l00119"></a>00119 state.count = 0;
-<a name="l00120"></a>00120 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00121"></a>00121 }
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123 <span class="comment">// Side is NEG for right, POS for left.</span>
-<a name="l00124"></a>00124 <span class="comment">// CNT is -2 for down, 2 for up (or -1/1)</span>
-<a name="l00125"></a>00125 <span class="comment">// Side positive thus means UP and LEFTSIDE or DOWN and RIGHTSIDE</span>
-<a name="l00126"></a>00126 <span class="comment">// See accompagnying figure (TODO)</span>
-<a name="l00127"></a>00127 <span class="keywordtype">int</span> sd = (side &gt; 0 ? 1 : -1) * cnt;
-<a name="l00128"></a>00128 <span class="keywordflow">if</span> (sd &gt; 0)
-<a name="l00129"></a>00129 {
-<a name="l00130"></a>00130 state.count += cnt;
-<a name="l00131"></a>00131 }
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133 }
-<a name="l00134"></a>00134 <span class="keywordflow">return</span> ! state.touches;
-<a name="l00135"></a>00135 }
-<a name="l00136"></a>00136
-<a name="l00137"></a>00137 };
-<a name="l00138"></a>00138
-<a name="l00139"></a>00139 } <span class="comment">// namespace within</span>
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141 } <span class="comment">// namespace strategy</span>
-<a name="l00142"></a>00142
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 <span class="preprocessor">#ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS</span>
-<a name="l00145"></a>00145 <span class="preprocessor"></span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> PS&gt;
-<a name="l00146"></a>00146 <span class="keyword">struct </span>strategy_within&lt;cartesian_tag, cartesian_tag, P, PS&gt;
-<a name="l00147"></a>00147 {
-<a name="l00148"></a>00148 <span class="keyword">typedef</span> strategy::within::winding&lt;P, PS&gt; <a class="code" href="structggl_1_1strategy__within.html#91c77dd02ec4c0826d7b4debc7aa6599">type</a>;
-<a name="l00149"></a>00149 };
-<a name="l00150"></a>00150
-<a name="l00151"></a>00151 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> PS&gt;
-<a name="l00152"></a>00152 <span class="keyword">struct </span>strategy_within&lt;geographic_tag, geographic_tag, P, PS&gt;
-<a name="l00153"></a>00153 {
-<a name="l00154"></a>00154 <span class="keyword">typedef</span> strategy::within::winding&lt;P, PS&gt; <a class="code" href="structggl_1_1strategy__within.html#91c77dd02ec4c0826d7b4debc7aa6599">type</a>;
-<a name="l00155"></a>00155 };
-<a name="l00156"></a>00156 <span class="preprocessor">#endif</span>
-<a name="l00157"></a>00157 <span class="preprocessor"></span>
-<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
-<a name="l00162"></a>00162 <span class="preprocessor">#endif // GGL_STRATEGY_AGNOSTIC_WITHIN_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/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-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -51,136 +51,130 @@
 <a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ALGORITHMS_AREA_HPP</span>
 <a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_AREA_HPP</span>
 <a name="l00011"></a>00011 <span class="preprocessor"></span>
-<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;boost/concept/requires.hpp&gt;</span>
-<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;boost/mpl/if.hpp&gt;</span>
-<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="l00012"></a>00012 <span class="preprocessor">#include &lt;boost/mpl/if.hpp&gt;</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<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
-<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="calculate__null_8hpp.html">ggl/algorithms/detail/calculate_null.hpp</a>&gt;</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;<a class="code" href="calculate__sum_8hpp.html">ggl/algorithms/detail/calculate_sum.hpp</a>&gt;</span>
-<a name="l00027"></a>00027
-<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;<a class="code" href="area__result_8hpp.html">ggl/strategies/area_result.hpp</a>&gt;</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;<a class="code" href="loop_8hpp.html">ggl/util/loop.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 <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="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>&gt;</span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="calculate__null_8hpp.html">ggl/algorithms/detail/calculate_null.hpp</a>&gt;</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="calculate__sum_8hpp.html">ggl/algorithms/detail/calculate_sum.hpp</a>&gt;</span>
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;<a class="code" href="area__result_8hpp.html">ggl/strategies/area_result.hpp</a>&gt;</span>
+<a name="l00029"></a>00029
+<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;<a class="code" href="area__concept_8hpp.html">ggl/strategies/concepts/area_concept.hpp</a>&gt;</span>
+<a name="l00031"></a>00031
 <a name="l00032"></a>00032 <span class="preprocessor">#include &lt;<a class="code" href="math_8hpp.html">ggl/util/math.hpp</a>&gt;</span>
 <a name="l00033"></a>00033
-<a name="l00056"></a>00056 <span class="keyword">namespace </span>ggl
-<a name="l00057"></a>00057 {
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
-<a name="l00060"></a>00060 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a> {
+<a name="l00059"></a>00059 <span class="keyword">namespace </span>ggl
+<a name="l00060"></a>00060 {
 <a name="l00061"></a>00061
-<a name="l00062"></a>00062 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> S&gt;
-<a name="l00063"></a>00063 <span class="keyword">struct </span>box_area
-<a name="l00064"></a>00064 {
-<a name="l00065"></a>00065 <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="l00066"></a>00066
-<a name="l00067"></a>00067 <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="l00068"></a>00068 {
-<a name="l00069"></a>00069 <span class="comment">// Currently only works for Cartesian boxes</span>
-<a name="l00070"></a>00070 <span class="comment">// Todo: use strategy</span>
-<a name="l00071"></a>00071 <span class="comment">// Todo: use concept</span>
-<a name="l00072"></a>00072 assert_dimension&lt;B, 2&gt;();
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074 return_type <span class="keyword">const</span> dx = get&lt;max_corner, 0&gt;(b) - get&lt;min_corner, 0&gt;(b);
-<a name="l00075"></a>00075 return_type <span class="keyword">const</span> dy = get&lt;max_corner, 1&gt;(b) - get&lt;min_corner, 1&gt;(b);
-<a name="l00076"></a>00076
-<a name="l00077"></a>00077 <span class="keywordflow">return</span> dx * dy;
-<a name="l00078"></a>00078 }
-<a name="l00079"></a>00079 };
+<a name="l00062"></a>00062 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00063"></a>00063 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a> {
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00066"></a>00066 <span class="keyword">struct </span>box_area
+<a name="l00067"></a>00067 {
+<a name="l00068"></a>00068 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;Box&gt;::type return_type;
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070 <span class="keyword">static</span> <span class="keyword">inline</span> return_type apply(Box <span class="keyword">const</span>&amp; box, Strategy <span class="keyword">const</span>&amp;)
+<a name="l00071"></a>00071 {
+<a name="l00072"></a>00072 <span class="comment">// Currently only works for 2D Cartesian boxes</span>
+<a name="l00073"></a>00073 <span class="comment">// Todo: use extreme-strategy</span>
+<a name="l00074"></a>00074 assert_dimension&lt;Box, 2&gt;();
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 return_type <span class="keyword">const</span> dx = get&lt;max_corner, 0&gt;(box)
+<a name="l00077"></a>00077 - get&lt;min_corner, 0&gt;(box);
+<a name="l00078"></a>00078 return_type <span class="keyword">const</span> dy = get&lt;max_corner, 1&gt;(box)
+<a name="l00079"></a>00079 - get&lt;min_corner, 1&gt;(box);
 <a name="l00080"></a>00080
-<a name="l00081"></a>00081
-<a name="l00082"></a>00082 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> C, <span class="keyword">typename</span> S&gt;
-<a name="l00083"></a>00083 <span class="keyword">struct </span>circle_area
-<a name="l00084"></a>00084 {
-<a name="l00085"></a>00085 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;C&gt;::type coordinate_type;
+<a name="l00081"></a>00081 <span class="keywordflow">return</span> dx * dy;
+<a name="l00082"></a>00082 }
+<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">// Returning the coordinate precision, but if integer, returning a double</span>
-<a name="l00088"></a>00088 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_c
-<a name="l00089"></a>00089 &lt;
-<a name="l00090"></a>00090 boost::is_integral&lt;coordinate_type&gt;::type::value,
-<a name="l00091"></a>00091 double,
-<a name="l00092"></a>00092 coordinate_type
-<a name="l00093"></a>00093 &gt;::type return_type;
-<a name="l00094"></a>00094
-<a name="l00095"></a>00095 <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="l00096"></a>00096 {
-<a name="l00097"></a>00097 <span class="comment">// Currently only works for Cartesian circles</span>
-<a name="l00098"></a>00098 <span class="comment">// Todo: use strategy</span>
-<a name="l00099"></a>00099 <span class="comment">// Todo: use concept</span>
-<a name="l00100"></a>00100 assert_dimension&lt;C, 2&gt;();
+<a name="l00087"></a>00087
+<a name="l00091"></a>00091 <span class="keyword">template</span>
+<a name="l00092"></a>00092 &lt;
+<a name="l00093"></a>00093 <span class="keyword">typename</span> Ring,
+<a name="l00094"></a>00094 <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d">order_selector</a> Order,
+<a name="l00095"></a>00095 <span class="comment">// closing_selector Closed -- for now assuming CLOSED, p(0) == p(n-1)</span>
+<a name="l00096"></a>00096 <span class="keyword">typename</span> Strategy
+<a name="l00097"></a>00097 &gt;
+<a name="l00098"></a>00098 <span class="keyword">struct </span>ring_area
+<a name="l00099"></a>00099 {};
+<a name="l00100"></a>00100
 <a name="l00101"></a>00101
-<a name="l00102"></a>00102 return_type r = get_radius&lt;0&gt;(c);
-<a name="l00103"></a>00103 r *= r * <a class="code" href="namespaceggl_1_1math.html#54fc384779fa97a61e07149d880a599c">ggl::math::pi</a>;
-<a name="l00104"></a>00104 <span class="keywordflow">return</span> r;
-<a name="l00105"></a>00105 }
-<a name="l00106"></a>00106 };
-<a name="l00107"></a>00107
+<a name="l00102"></a>00102 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00103"></a>00103 <span class="keyword">struct </span>ring_area&lt;Ring, <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d55fe53c1821ca13eb0eacb9084cb1d1c">clockwise</a>, Strategy&gt;
+<a name="l00104"></a>00104 {
+<a name="l00105"></a>00105 BOOST_CONCEPT_ASSERT( (<a class="code" href="classggl_1_1concept_1_1_area_strategy.html" title="Checks strategy for area.">ggl::concept::AreaStrategy&lt;Strategy&gt;</a>) );
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107 <span class="keyword">typedef</span> <span class="keyword">typename</span> Strategy::return_type type;
 <a name="l00108"></a>00108
-<a name="l00109"></a>00109 <span class="comment">// Area of a linear linear_ring</span>
-<a name="l00110"></a>00110 <span class="keyword">template</span>
-<a name="l00111"></a>00111 &lt;
-<a name="l00112"></a>00112 <span class="keyword">typename</span> R,
-<a name="l00113"></a>00113 <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d">order_selector</a> Order,
-<a name="l00114"></a>00114 <span class="comment">// closing_selector Closed -- for now assuming CLOSED, p(0) == p(n-1)</span>
-<a name="l00115"></a>00115 <span class="keyword">typename</span> S
-<a name="l00116"></a>00116 &gt;
-<a name="l00117"></a>00117 <span class="keyword">struct </span>ring_area
-<a name="l00118"></a>00118 {};
+<a name="l00109"></a>00109 <span class="keyword">static</span> <span class="keyword">inline</span> type apply(Ring <span class="keyword">const</span>&amp; ring, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00110"></a>00110 {
+<a name="l00111"></a>00111 assert_dimension&lt;Ring, 2&gt;();
+<a name="l00112"></a>00112
+<a name="l00113"></a>00113 <span class="comment">// A closed linear_ring has at least four points,</span>
+<a name="l00114"></a>00114 <span class="comment">// if not, there is no (zero) area</span>
+<a name="l00115"></a>00115 <span class="keywordflow">if</span> (boost::size(ring) &lt; 4)
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 <span class="keywordflow">return</span> type();
+<a name="l00118"></a>00118 }
 <a name="l00119"></a>00119
-<a name="l00120"></a>00120
-<a name="l00121"></a>00121 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> S&gt;
-<a name="l00122"></a>00122 <span class="keyword">struct </span>ring_area&lt;R, <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d55fe53c1821ca13eb0eacb9084cb1d1c">clockwise</a>, S&gt;
-<a name="l00123"></a>00123 {
-<a name="l00124"></a>00124 <span class="keyword">typedef</span> <span class="keyword">typename</span> S::return_type type;
-<a name="l00125"></a>00125 <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="l00126"></a>00126 {
-<a name="l00127"></a>00127 assert_dimension&lt;R, 2&gt;();
-<a name="l00128"></a>00128
-<a name="l00129"></a>00129 <span class="comment">// A closed linear_ring has at least four points,</span>
-<a name="l00130"></a>00130 <span class="comment">// if not, there is no (zero) area</span>
-<a name="l00131"></a>00131 <span class="keywordflow">if</span> (boost::size(ring) &gt;= 4)
-<a name="l00132"></a>00132 {
-<a name="l00133"></a>00133 <span class="keyword">typename</span> S::state_type state_type;
-<a name="l00134"></a>00134 <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="l00135"></a>00135 {
-<a name="l00136"></a>00136 <span class="keywordflow">return</span> state_type.area();
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 <span class="keywordflow">return</span> type();
-<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> R, <span class="keyword">typename</span> S&gt;
-<a name="l00145"></a>00145 <span class="keyword">struct </span>ring_area&lt;R, <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d7242f3377ee5283786ecb2bc2d90015a">counterclockwise</a>, S&gt;
-<a name="l00146"></a>00146 {
-<a name="l00147"></a>00147 <span class="keyword">typedef</span> <span class="keyword">typename</span> S::return_type type;
-<a name="l00148"></a>00148 <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="l00149"></a>00149 {
-<a name="l00150"></a>00150 <span class="comment">// Counter clockwise rings negate the area result</span>
-<a name="l00151"></a>00151 <span class="keywordflow">return</span> -ring_area&lt;R, clockwise, S&gt;::apply(ring, strategy);
-<a name="l00152"></a>00152 }
-<a name="l00153"></a>00153 };
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155
-<a name="l00156"></a>00156 }} <span class="comment">// namespace detail::area</span>
-<a name="l00157"></a>00157
-<a name="l00158"></a>00158 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
-<a name="l00159"></a>00159 <span class="preprocessor"></span>
-<a name="l00160"></a>00160 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
-<a name="l00161"></a>00161 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch {
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163 <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="l00120"></a>00120 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator&lt;Ring&gt;::type iterator_type;
+<a name="l00121"></a>00121
+<a name="l00122"></a>00122 <span class="keyword">typename</span> Strategy::state_type state = strategy.init();
+<a name="l00123"></a>00123
+<a name="l00124"></a>00124 iterator_type it = boost::begin(ring);
+<a name="l00125"></a>00125 <span class="keywordflow">for</span> (iterator_type previous = it++;
+<a name="l00126"></a>00126 it != boost::end(ring);
+<a name="l00127"></a>00127 previous = it++)
+<a name="l00128"></a>00128 {
+<a name="l00129"></a>00129 Strategy::apply(*previous, *it, state);
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131 <span class="keywordflow">return</span> Strategy::result(state);
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133 }
+<a name="l00134"></a>00134 };
+<a name="l00135"></a>00135
+<a name="l00136"></a>00136 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00137"></a>00137 <span class="keyword">struct </span>ring_area&lt;Ring, <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d7242f3377ee5283786ecb2bc2d90015a">counterclockwise</a>, Strategy&gt;
+<a name="l00138"></a>00138 {
+<a name="l00139"></a>00139 <span class="keyword">typedef</span> <span class="keyword">typename</span> Strategy::return_type type;
+<a name="l00140"></a>00140 <span class="keyword">static</span> <span class="keyword">inline</span> type apply(Ring <span class="keyword">const</span>&amp; ring, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00141"></a>00141 {
+<a name="l00142"></a>00142 <span class="comment">// Counter clockwise rings negate the area result</span>
+<a name="l00143"></a>00143 <span class="keywordflow">return</span> -ring_area&lt;Ring, clockwise, Strategy&gt;::apply(ring, strategy);
+<a name="l00144"></a>00144 }
+<a name="l00145"></a>00145 };
+<a name="l00146"></a>00146
+<a name="l00147"></a>00147
+<a name="l00148"></a>00148 }} <span class="comment">// namespace detail::area</span>
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00151"></a>00151 <span class="preprocessor"></span>
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153
+<a name="l00154"></a>00154 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00155"></a>00155 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch {
+<a name="l00156"></a>00156
+<a name="l00157"></a>00157 <span class="keyword">template</span>
+<a name="l00158"></a>00158 &lt;
+<a name="l00159"></a>00159 <span class="keyword">typename</span> Tag,
+<a name="l00160"></a>00160 <span class="keyword">typename</span> Geometry,
+<a name="l00161"></a>00161 <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d">order_selector</a> Order,
+<a name="l00162"></a>00162 <span class="keyword">typename</span> Strategy
+<a name="l00163"></a>00163 &gt;
 <a name="l00164"></a>00164 <span class="keyword">struct </span><a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>
 <a name="l00165"></a>00165 : detail::calculate_null
 <a name="l00166"></a>00166 &lt;
@@ -192,63 +186,63 @@
 <a name="l00172"></a>00172
 <a name="l00173"></a>00173 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, order_selector Order, <span class="keyword">typename</span> Strategy&gt;
 <a name="l00174"></a>00174 <span class="keyword">struct </span><a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>&lt;box_tag, Geometry, Order, Strategy&gt;
-<a name="l00175"></a>00175 : detail::<a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>::box_area&lt;Geometry, Strategy&gt;
+<a name="l00175"></a>00175 : detail::<a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>::box_area&lt;Geometry, Strategy&gt;
 <a name="l00176"></a>00176 {};
 <a name="l00177"></a>00177
 <a name="l00178"></a>00178
-<a name="l00179"></a>00179 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, order_selector Order, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00180"></a>00180 <span class="keyword">struct </span><a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>&lt;nsphere_tag, Geometry, Order, Strategy&gt;
-<a name="l00181"></a>00181 : detail::<a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>::circle_area&lt;Geometry, Strategy&gt;
-<a name="l00182"></a>00182 {};
-<a name="l00183"></a>00183
-<a name="l00184"></a>00184
-<a name="l00185"></a>00185 <span class="comment">// Area of ring currently returns area of closed rings but it might be argued</span>
-<a name="l00186"></a>00186 <span class="comment">// that it is 0.0, because a ring is just a line.</span>
-<a name="l00187"></a>00187 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, order_selector Order, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00188"></a>00188 <span class="keyword">struct </span><a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>&lt;ring_tag, Geometry, Order, Strategy&gt;
-<a name="l00189"></a>00189 : detail::<a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>::ring_area&lt;Geometry, Order, Strategy&gt;
-<a name="l00190"></a>00190 {};
-<a name="l00191"></a>00191
-<a name="l00192"></a>00192 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, order_selector Order, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00193"></a>00193 <span class="keyword">struct </span><a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>&lt;polygon_tag, Polygon, Order, Strategy&gt;
-<a name="l00194"></a>00194 : detail::calculate_polygon_sum
-<a name="l00195"></a>00195 &lt;
-<a name="l00196"></a>00196 typename Strategy::return_type,
-<a name="l00197"></a>00197 Polygon,
-<a name="l00198"></a>00198 Strategy,
-<a name="l00199"></a>00199 detail::area::ring_area
-<a name="l00200"></a>00200 &lt;
-<a name="l00201"></a>00201 typename ring_type&lt;Polygon&gt;::type,
-<a name="l00202"></a>00202 Order,
-<a name="l00203"></a>00203 Strategy
-<a name="l00204"></a>00204 &gt;
-<a name="l00205"></a>00205 &gt;
-<a name="l00206"></a>00206 <span class="comment">//: detail::area::polygon_area&lt;Geometry, Order, Strategy&gt; </span>
-<a name="l00207"></a>00207 {};
+<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> Geometry, order_selector Order, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00184"></a>00184 <span class="keyword">struct </span><a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>&lt;ring_tag, Geometry, Order, Strategy&gt;
+<a name="l00185"></a>00185 : detail::<a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>::ring_area&lt;Geometry, Order, Strategy&gt;
+<a name="l00186"></a>00186 {};
+<a name="l00187"></a>00187
+<a name="l00188"></a>00188 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, order_selector Order, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00189"></a>00189 <span class="keyword">struct </span><a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>&lt;polygon_tag, Polygon, Order, Strategy&gt;
+<a name="l00190"></a>00190 : detail::calculate_polygon_sum
+<a name="l00191"></a>00191 &lt;
+<a name="l00192"></a>00192 typename Strategy::return_type,
+<a name="l00193"></a>00193 Polygon,
+<a name="l00194"></a>00194 Strategy,
+<a name="l00195"></a>00195 detail::area::ring_area
+<a name="l00196"></a>00196 &lt;
+<a name="l00197"></a>00197 typename ring_type&lt;Polygon&gt;::type,
+<a name="l00198"></a>00198 Order,
+<a name="l00199"></a>00199 Strategy
+<a name="l00200"></a>00200 &gt;
+<a name="l00201"></a>00201 &gt;
+<a name="l00202"></a>00202 <span class="comment">//: detail::area::polygon_area&lt;Geometry, Order, Strategy&gt;</span>
+<a name="l00203"></a>00203 {};
+<a name="l00204"></a>00204
+<a name="l00205"></a>00205 } <span class="comment">// namespace dispatch</span>
+<a name="l00206"></a>00206 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00207"></a>00207 <span class="preprocessor"></span>
 <a name="l00208"></a>00208
-<a name="l00209"></a>00209 } <span class="comment">// namespace dispatch</span>
-<a name="l00210"></a>00210 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
-<a name="l00211"></a>00211 <span class="preprocessor"></span>
-<a name="l00212"></a>00212
-<a name="l00213"></a>00213
-<a name="l00225"></a>00225 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
-<a name="l00226"></a><a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d">00226</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1area__result.html" title="Meta-function defining return type of area function.">area_result&lt;Geometry&gt;::type</a> <a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>(Geometry <span class="keyword">const</span>&amp; geometry)
-<a name="l00227"></a>00227 {
-<a name="l00228"></a>00228 <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="l00229"></a>00229
-<a name="l00230"></a>00230 <span class="keywordflow">return</span> <a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">dispatch::area</a>
-<a name="l00231"></a>00231 &lt;
-<a name="l00232"></a>00232 <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="l00233"></a>00233 Geometry,
-<a name="l00234"></a>00234 <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="l00235"></a>00235 strategy_type
-<a name="l00236"></a>00236 &gt;::apply(geometry, strategy_type());
-<a name="l00237"></a>00237 }
-<a name="l00238"></a>00238
-<a name="l00248"></a>00248 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00249"></a><a class="code" href="group__area.html#g7e0783c73b5f561707c50b445a01b833">00249</a> <span class="keyword">inline</span> <span class="keyword">typename</span> Strategy::return_type <a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>(
-<a name="l00250"></a>00250 Geometry <span class="keyword">const</span>&amp; geometry, Strategy <span class="keyword">const</span>&amp; strategy)
-<a name="l00251"></a>00251 {
+<a name="l00209"></a>00209
+<a name="l00221"></a>00221 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00222"></a><a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d">00222</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1area__result.html" title="Meta-function defining return type of area function.">area_result&lt;Geometry&gt;::type</a> <a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>(Geometry <span class="keyword">const</span>&amp; geometry)
+<a name="l00223"></a>00223 {
+<a name="l00224"></a>00224 concept::check&lt;const Geometry&gt;();
+<a name="l00225"></a>00225
+<a name="l00226"></a>00226 <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="l00227"></a>00227
+<a name="l00228"></a>00228 <span class="keywordflow">return</span> <a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">dispatch::area</a>
+<a name="l00229"></a>00229 &lt;
+<a name="l00230"></a>00230 <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="l00231"></a>00231 Geometry,
+<a name="l00232"></a>00232 <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="l00233"></a>00233 strategy_type
+<a name="l00234"></a>00234 &gt;::apply(geometry, strategy_type());
+<a name="l00235"></a>00235 }
+<a name="l00236"></a>00236
+<a name="l00246"></a>00246 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00247"></a><a class="code" href="group__area.html#g7e0783c73b5f561707c50b445a01b833">00247</a> <span class="keyword">inline</span> <span class="keyword">typename</span> Strategy::return_type <a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>(
+<a name="l00248"></a>00248 Geometry <span class="keyword">const</span>&amp; geometry, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00249"></a>00249 {
+<a name="l00250"></a>00250 concept::check&lt;const Geometry&gt;();
+<a name="l00251"></a>00251
 <a name="l00252"></a>00252 <span class="keywordflow">return</span> <a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">dispatch::area</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;Geometry&gt;::type</a>,

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp.html 2009-10-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -53,22 +53,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 P , 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__centroid.html#gda8ccb0bcdd94cebe5b66374259c1fe2">ggl::centroid</a> (const G &amp;geometry, P &amp;c, S const &amp;strategy)</td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , 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="group__centroid.html#gc7e9651663cd19868cae40c20c72afdc">ggl::centroid</a> (Geometry const &amp;geometry, Point &amp;c)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate centroid using a specified <a class="el" href="namespaceggl_1_1strategy.html">strategy</a>. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G , 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="group__centroid.html#g2b743cdd7177313b561780ba87c633cd">ggl::centroid</a> (const G &amp;geometry, P &amp;c)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate centroid. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename P , typename G , typename S &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">P&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#g8c284d8ca53c0ace8827431178438852">ggl::make_centroid</a> (const G &amp;geometry, S const &amp;strategy)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate and return centroid. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename P , typename G &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">P&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#gcb8d61ecb3cb509353728f50d9ae03b4">ggl::make_centroid</a> (const G &amp;geometry)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate centroid. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , typename Point , 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__centroid.html#gba3c6357cc1112519a4909cdbb4733e2">ggl::centroid</a> (Geometry const &amp;geometry, Point &amp;c, Strategy const &amp;strategy)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate centroid using a specified <a class="el" href="namespaceggl_1_1strategy.html">strategy</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Point , typename Geometry , typename Strategy &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Point&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#gb077a07483ee2fdd17d66e63b237aaa6">ggl::make_centroid</a> (Geometry const &amp;geometry, Strategy const &amp;strategy)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate and return centroid. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Point , typename Geometry &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Point&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#ga7146045002e56e5471f8da7dd30609c">ggl::make_centroid</a> (Geometry const &amp;geometry)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate and return centroid. <br></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate and return centroid. <br></td></tr>
 </table>
 </div>
 <hr size="1">

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-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -53,198 +53,311 @@
 <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/concept/requires.hpp&gt;</span>
-<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="exception_8hpp.html">ggl/core/exception.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 <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="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="copy_8hpp.html">ggl/util/copy.hpp</a>&gt;</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="loop_8hpp.html">ggl/util/loop.hpp</a>&gt;</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
-<a name="l00048"></a><a class="code" href="classggl_1_1centroid__exception.html">00048</a> <span class="keyword">class </span><a class="code" href="classggl_1_1centroid__exception.html">centroid_exception</a> : <span class="keyword">public</span> ggl::<a class="code" href="structggl_1_1exception.html" title="Base exception class for GGL.">exception</a>
+<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="exception_8hpp.html">ggl/core/exception.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="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="centroid__concept_8hpp.html">ggl/strategies/concepts/centroid_concept.hpp</a>&gt;</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;<a class="code" href="copy_8hpp.html">ggl/util/copy.hpp</a>&gt;</span>
+<a name="l00027"></a>00027
+<a name="l00048"></a>00048 <span class="keyword">namespace </span>ggl
 <a name="l00049"></a>00049 {
-<a name="l00050"></a>00050 <span class="keyword">public</span>:
-<a name="l00051"></a>00051
-<a name="l00052"></a><a class="code" href="classggl_1_1centroid__exception.html#60598437eea82fd35bffdbcac8d4b839">00052</a> <a class="code" href="classggl_1_1centroid__exception.html#60598437eea82fd35bffdbcac8d4b839">centroid_exception</a>() {}
-<a name="l00053"></a>00053
-<a name="l00054"></a><a class="code" href="classggl_1_1centroid__exception.html#bff3b7df94389d48e50390a95dbbde7f">00054</a> <span class="keyword">virtual</span> <span class="keywordtype">char</span> <span class="keyword">const</span>* <a class="code" href="classggl_1_1centroid__exception.html#bff3b7df94389d48e50390a95dbbde7f">what</a>() <span class="keyword">const</span> throw()
-<a name="l00055"></a>00055 {
-<a name="l00056"></a>00056 <span class="keywordflow">return</span> <span class="stringliteral">"centroid calculation exception"</span>;
-<a name="l00057"></a>00057 }
-<a name="l00058"></a>00058 };
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061
-<a name="l00062"></a>00062 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
-<a name="l00063"></a>00063 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a> {
+<a name="l00050"></a>00050
+<a name="l00051"></a><a class="code" href="classggl_1_1centroid__exception.html">00051</a> <span class="keyword">class </span><a class="code" href="classggl_1_1centroid__exception.html">centroid_exception</a> : <span class="keyword">public</span> ggl::<a class="code" href="structggl_1_1exception.html" title="Base exception class for GGL.">exception</a>
+<a name="l00052"></a>00052 {
+<a name="l00053"></a>00053 <span class="keyword">public</span>:
+<a name="l00054"></a>00054
+<a name="l00055"></a><a class="code" href="classggl_1_1centroid__exception.html#60598437eea82fd35bffdbcac8d4b839">00055</a> <span class="keyword">inline</span> <a class="code" href="classggl_1_1centroid__exception.html#60598437eea82fd35bffdbcac8d4b839">centroid_exception</a>()
+<a name="l00056"></a>00056 {}
+<a name="l00057"></a>00057
+<a name="l00058"></a><a class="code" href="classggl_1_1centroid__exception.html#bff3b7df94389d48e50390a95dbbde7f">00058</a> <span class="keyword">virtual</span> <span class="keywordtype">char</span> <span class="keyword">const</span>* <a class="code" href="classggl_1_1centroid__exception.html#bff3b7df94389d48e50390a95dbbde7f">what</a>() <span class="keyword">const</span> throw()
+<a name="l00059"></a>00059 {
+<a name="l00060"></a>00060 <span class="keywordflow">return</span> <span class="stringliteral">"GGL Centroid calculation exception"</span>;
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062 };
+<a name="l00063"></a>00063
 <a name="l00064"></a>00064
-<a name="l00068"></a>00068 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> R&gt;
-<a name="l00069"></a>00069 <span class="keyword">inline</span> <span class="keywordtype">bool</span> ring_ok(R <span class="keyword">const</span>&amp; ring, P&amp; c)
-<a name="l00070"></a>00070 {
-<a name="l00071"></a>00071 std::size_t <span class="keyword">const</span> n = boost::size(ring);
-<a name="l00072"></a>00072 <span class="keywordflow">if</span> (n &gt; 1)
-<a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00075"></a>00075 }
-<a name="l00076"></a>00076 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n &lt;= 0)
-<a name="l00077"></a>00077 {
-<a name="l00078"></a>00078 <span class="keywordflow">throw</span> centroid_exception();
-<a name="l00079"></a>00079 }
-<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#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>;
-<a name="l00087"></a>00087 }
-<a name="l00088"></a>00088
-<a name="l00092"></a>00092 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00093"></a>00093 <span class="keyword">struct </span>centroid_ring
-<a name="l00094"></a>00094 {
-<a name="l00095"></a>00095 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Ring <span class="keyword">const</span>&amp; ring, Point&amp; c, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00067"></a>00067 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a> {
+<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> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>Centro<span class="keywordtype">id</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00071"></a>00071 <span class="keyword">struct </span>centroid_point
+<a name="l00072"></a>00072 {
+<a name="l00073"></a>00073 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(Point <span class="keyword">const</span>&amp; point, PointCentroid&amp; <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>,
+<a name="l00074"></a>00074 Strategy <span class="keyword">const</span>&amp;, <span class="keyword">typename</span> Strategy::state_type&amp;)
+<a name="l00075"></a>00075 {
+<a name="l00076"></a>00076 <a class="code" href="namespaceggl.html#f8cee6dd577bebfd1dbbe4cc503304d4" title="Copies coordinates from source to destination point.">copy_coordinates</a>(point, centroid);
+<a name="l00077"></a>00077 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00078"></a>00078 }
+<a name="l00079"></a>00079 };
+<a name="l00080"></a>00080
+<a name="l00081"></a>00081
+<a name="l00082"></a>00082 <span class="keyword">template</span>
+<a name="l00083"></a>00083 &lt;
+<a name="l00084"></a>00084 <span class="keyword">typename</span> Box,
+<a name="l00085"></a>00085 <span class="keyword">typename</span> Point,
+<a name="l00086"></a>00086 std::size_t Dimension,
+<a name="l00087"></a>00087 std::size_t DimensionCount
+<a name="l00088"></a>00088 &gt;
+<a name="l00089"></a>00089 <span class="keyword">struct </span>centroid_box_calculator
+<a name="l00090"></a>00090 {
+<a name="l00091"></a>00091 <span class="keyword">typedef</span> <span class="keyword">typename</span> select_coordinate_type
+<a name="l00092"></a>00092 &lt;
+<a name="l00093"></a>00093 Box, Point
+<a name="l00094"></a>00094 &gt;::type coordinate_type;
+<a name="l00095"></a>00095 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box <span class="keyword">const</span>&amp; box, Point&amp; <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>)
 <a name="l00096"></a>00096 {
-<a name="l00097"></a>00097 <span class="keywordflow">if</span> (ring_ok(ring, c))
-<a name="l00098"></a>00098 {
-<a name="l00099"></a>00099 <span class="keyword">typename</span> Strategy::state_type state;
-<a name="l00100"></a>00100 <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);
-<a name="l00101"></a>00101 state.centroid(c);
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104 };
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106
-<a name="l00112"></a>00112 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00113"></a>00113 <span class="keyword">struct </span>centroid_polygon
-<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(Polygon <span class="keyword">const</span>&amp; poly, Point&amp; c, Strategy <span class="keyword">const</span>&amp; strategy)
-<a name="l00116"></a>00116 {
-<a name="l00117"></a>00117 <span class="keywordflow">if</span> (ring_ok(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), c))
-<a name="l00118"></a>00118 {
-<a name="l00119"></a>00119 <span class="keyword">typename</span> Strategy::state_type state;
+<a name="l00097"></a>00097 coordinate_type <span class="keyword">const</span> c1 = get&lt;min_corner, Dimension&gt;(box);
+<a name="l00098"></a>00098 coordinate_type <span class="keyword">const</span> c2 = get&lt;max_corner, Dimension&gt;(box);
+<a name="l00099"></a>00099 coordinate_type m = c1 + c2;
+<a name="l00100"></a>00100 m /= 2.0;
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 set&lt;Dimension&gt;(centroid, m);
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104 centroid_box_calculator
+<a name="l00105"></a>00105 &lt;
+<a name="l00106"></a>00106 Box, Point,
+<a name="l00107"></a>00107 Dimension + 1, DimensionCount
+<a name="l00108"></a>00108 &gt;::apply(box, centroid);
+<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="keyword">template</span>&lt;<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00114"></a>00114 <span class="keyword">struct </span>centroid_box_calculator&lt;Box, Point, DimensionCount, DimensionCount&gt;
+<a name="l00115"></a>00115 {
+<a name="l00116"></a>00116 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box <span class="keyword">const</span>&amp; , Point&amp; )
+<a name="l00117"></a>00117 {
+<a name="l00118"></a>00118 }
+<a name="l00119"></a>00119 };
 <a name="l00120"></a>00120
-<a name="l00121"></a>00121 <a class="code" href="group__loop.html#g1ff95a74f261e15dfa714146bdcbf23f" title="Loops through segments of a container and call specified functor for all segments...">loop</a>(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), strategy, state);
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
-<a name="l00124"></a>00124 &lt;
-<a name="l00125"></a>00125 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type
-<a name="l00126"></a>00126 &gt;::type iterator_type;
-<a name="l00127"></a>00127
-<a name="l00128"></a>00128 <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="l00129"></a>00129 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="l00130"></a>00130 ++it)
-<a name="l00131"></a>00131 {
-<a name="l00132"></a>00132 <a class="code" href="group__loop.html#g1ff95a74f261e15dfa714146bdcbf23f" title="Loops through segments of a container and call specified functor for all segments...">loop</a>(*it, strategy, state);
-<a name="l00133"></a>00133 }
-<a name="l00134"></a>00134 state.centroid(c);
-<a name="l00135"></a>00135 }
-<a name="l00136"></a>00136 }
-<a name="l00137"></a>00137 };
-<a name="l00138"></a>00138
-<a name="l00143"></a>00143 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00144"></a>00144 <span class="keyword">struct </span>centroid_box
-<a name="l00145"></a>00145 {
-<a name="l00146"></a>00146 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box <span class="keyword">const</span>&amp; box, Point&amp; c, Strategy <span class="keyword">const</span>&amp;)
-<a name="l00147"></a>00147 {
-<a name="l00148"></a>00148 <span class="comment">// TODO: adapt using strategies</span>
-<a name="l00149"></a>00149 assert_dimension&lt;Box, 2&gt;();
-<a name="l00150"></a>00150 set&lt;0&gt;(c, (get&lt;min_corner, 0&gt;(box) + get&lt;max_corner, 0&gt;(box)) / 2);
-<a name="l00151"></a>00151 set&lt;1&gt;(c, (get&lt;min_corner, 1&gt;(box) + get&lt;max_corner, 1&gt;(box)) / 2);
-<a name="l00152"></a>00152 }
-<a name="l00153"></a>00153 };
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155 }} <span class="comment">// namespace detail::centroid</span>
-<a name="l00156"></a>00156 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
-<a name="l00157"></a>00157 <span class="preprocessor"></span>
-<a name="l00158"></a>00158
-<a name="l00159"></a>00159 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
-<a name="l00160"></a>00160 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
-<a name="l00161"></a>00161 {
+<a name="l00121"></a>00121
+<a name="l00122"></a>00122 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00123"></a>00123 <span class="keyword">struct </span>centroid_box
+<a name="l00124"></a>00124 {
+<a name="l00125"></a>00125 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(Box <span class="keyword">const</span>&amp; box, Point&amp; <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>,
+<a name="l00126"></a>00126 Strategy <span class="keyword">const</span>&amp;, <span class="keyword">typename</span> Strategy::state_type&amp;)
+<a name="l00127"></a>00127 {
+<a name="l00128"></a>00128 centroid_box_calculator
+<a name="l00129"></a>00129 &lt;
+<a name="l00130"></a>00130 Box, Point,
+<a name="l00131"></a>00131 0, <a class="code" href="classcore__dispatch_1_1dimension.html">dimension&lt;Box&gt;::type::value</a>
+<a name="l00132"></a>00132 &gt;::apply(box, centroid);
+<a name="l00133"></a>00133 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135 };
+<a name="l00136"></a>00136
+<a name="l00137"></a>00137
+<a name="l00141"></a>00141 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00142"></a>00142 <span class="keyword">struct </span>centroid_ring
+<a name="l00143"></a>00143 {
+<a name="l00144"></a>00144 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(Ring <span class="keyword">const</span>&amp; ring, Point&amp; <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>,
+<a name="l00145"></a>00145 Strategy <span class="keyword">const</span>&amp; strategy, <span class="keyword">typename</span> Strategy::state_type&amp; state)
+<a name="l00146"></a>00146 {
+<a name="l00147"></a>00147 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator&lt;Ring&gt;::type iterator_type;
+<a name="l00148"></a>00148
+<a name="l00149"></a>00149 <span class="comment">// There is one thing where centroid is different from e.g. within.</span>
+<a name="l00150"></a>00150 <span class="comment">// If the ring has only one point, it might make sense that</span>
+<a name="l00151"></a>00151 <span class="comment">// that point is the centroid. So then, pass it twice, as a trick</span>
+<a name="l00152"></a>00152 <span class="comment">// to avoid adding another method.</span>
+<a name="l00153"></a>00153
+<a name="l00154"></a>00154 <span class="keywordflow">switch</span>(boost::size(ring))
+<a name="l00155"></a>00155 {
+<a name="l00156"></a>00156 <span class="keywordflow">case</span> 0 : <span class="comment">// will cause exception in the end</span>
+<a name="l00157"></a>00157 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00158"></a>00158 <span class="keywordflow">case</span> 1 :
+<a name="l00159"></a>00159 Strategy::apply(ring.front(), ring.front(), state);
+<a name="l00160"></a>00160 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<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> Tag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00164"></a>00164 <span class="keyword">struct </span><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a> {};
-<a name="l00165"></a>00165
-<a name="l00166"></a>00166 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00167"></a>00167 <span class="keyword">struct </span><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>&lt;box_tag, Box, Point, Strategy&gt;
-<a name="l00168"></a>00168 : detail::<a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>::centroid_box&lt;Box, Point, Strategy&gt;
-<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, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00172"></a>00172 <span class="keyword">struct </span><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>&lt;ring_tag, Ring, Point, Strategy&gt;
-<a name="l00173"></a>00173 : detail::<a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>::centroid_ring&lt;Ring, Point, Strategy&gt;
-<a name="l00174"></a>00174 {};
+<a name="l00163"></a>00163 <span class="comment">// Normal behaviour:</span>
+<a name="l00164"></a>00164
+<a name="l00165"></a>00165 iterator_type it = boost::begin(ring);
+<a name="l00166"></a>00166 <span class="keywordflow">for</span> (iterator_type previous = it++;
+<a name="l00167"></a>00167 it != boost::end(ring);
+<a name="l00168"></a>00168 previous = it++)
+<a name="l00169"></a>00169 {
+<a name="l00170"></a>00170 Strategy::apply(*previous, *it, state);
+<a name="l00171"></a>00171 }
+<a name="l00172"></a>00172 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00173"></a>00173 }
+<a name="l00174"></a>00174 };
 <a name="l00175"></a>00175
-<a name="l00176"></a>00176 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00177"></a>00177 <span class="keyword">struct </span><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>&lt;polygon_tag, Polygon, Point, Strategy&gt;
-<a name="l00178"></a>00178 : detail::<a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>::centroid_polygon&lt;Polygon, Point, Strategy&gt;
-<a name="l00179"></a>00179
-<a name="l00180"></a>00180 {};
-<a name="l00181"></a>00181
-<a name="l00182"></a>00182 } <span class="comment">// namespace dispatch</span>
-<a name="l00183"></a>00183 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
-<a name="l00184"></a>00184 <span class="preprocessor"></span>
-<a name="l00185"></a>00185
-<a name="l00202"></a>00202 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> P&gt;
-<a name="l00203"></a><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd">00203</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>(<span class="keyword">const</span> G&amp; geometry, P&amp; c)
-<a name="l00204"></a>00204 {
-<a name="l00205"></a>00205 <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;G&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="l00206"></a>00206 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__centroid.html" title="Traits class binding a centroid calculation strategy to a coordinate system.">strategy_centroid</a>
-<a name="l00207"></a>00207 &lt;
-<a name="l00208"></a>00208 <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="l00209"></a>00209 P,
-<a name="l00210"></a>00210 point_type
-<a name="l00211"></a>00211 &gt;::type strategy_type;
-<a name="l00212"></a>00212
-<a name="l00213"></a>00213 <a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">dispatch::centroid</a>
-<a name="l00214"></a>00214 &lt;
-<a name="l00215"></a>00215 <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="l00216"></a>00216 G,
-<a name="l00217"></a>00217 P,
-<a name="l00218"></a>00218 strategy_type
-<a name="l00219"></a>00219 &gt;::apply(geometry, c, strategy_type());
-<a name="l00220"></a>00220 }
-<a name="l00221"></a>00221
-<a name="l00230"></a>00230 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> P, <span class="keyword">typename</span> S&gt;
-<a name="l00231"></a><a class="code" href="group__centroid.html#gda8ccb0bcdd94cebe5b66374259c1fe2">00231</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>(<span class="keyword">const</span> G&amp; geometry, P&amp; c, S <span class="keyword">const</span>&amp; strategy)
-<a name="l00232"></a>00232 {
-<a name="l00233"></a>00233 <a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">dispatch::centroid</a>
-<a name="l00234"></a>00234 &lt;
-<a name="l00235"></a>00235 <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="l00236"></a>00236 G,
-<a name="l00237"></a>00237 P,
-<a name="l00238"></a>00238 S
-<a name="l00239"></a>00239 &gt;::apply(geometry, c, strategy);
-<a name="l00240"></a>00240 }
-<a name="l00241"></a>00241
-<a name="l00242"></a>00242 <span class="comment">// Versions returning a centroid</span>
-<a name="l00243"></a>00243
-<a name="l00251"></a>00251 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> G&gt;
-<a name="l00252"></a><a class="code" href="group__centroid.html#gcb8d61ecb3cb509353728f50d9ae03b4">00252</a> <span class="keyword">inline</span> P <a class="code" href="group__centroid.html#gcb8d61ecb3cb509353728f50d9ae03b4" title="Calculate and return centroid.">make_centroid</a>(<span class="keyword">const</span> G&amp; geometry)
-<a name="l00253"></a>00253 {
-<a name="l00254"></a>00254 P c;
-<a name="l00255"></a>00255 <a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>(geometry, c);
-<a name="l00256"></a>00256 <span class="keywordflow">return</span> c;
-<a name="l00257"></a>00257 }
-<a name="l00258"></a>00258
-<a name="l00267"></a>00267 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
-<a name="l00268"></a><a class="code" href="group__centroid.html#g8c284d8ca53c0ace8827431178438852">00268</a> <span class="keyword">inline</span> P <a class="code" href="group__centroid.html#gcb8d61ecb3cb509353728f50d9ae03b4" title="Calculate and return centroid.">make_centroid</a>(<span class="keyword">const</span> G&amp; geometry, S <span class="keyword">const</span>&amp; strategy)
-<a name="l00269"></a>00269 {
-<a name="l00270"></a>00270 P c;
-<a name="l00271"></a>00271 <a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>(geometry, c, strategy);
-<a name="l00272"></a>00272 <span class="keywordflow">return</span> c;
-<a name="l00273"></a>00273 }
-<a name="l00274"></a>00274
-<a name="l00275"></a>00275 } <span class="comment">// namespace ggl</span>
-<a name="l00276"></a>00276
-<a name="l00277"></a>00277 <span class="preprocessor">#endif // GGL_ALGORITHMS_CENTROID_HPP</span>
+<a name="l00176"></a>00176
+<a name="l00182"></a>00182 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00183"></a>00183 <span class="keyword">struct </span>centroid_polygon
+<a name="l00184"></a>00184 {
+<a name="l00185"></a>00185 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(Polygon <span class="keyword">const</span>&amp; poly, Point&amp; centroid,
+<a name="l00186"></a>00186 Strategy <span class="keyword">const</span>&amp; strategy, <span class="keyword">typename</span> Strategy::state_type&amp; state)
+<a name="l00187"></a>00187 {
+<a name="l00188"></a>00188 <span class="keyword">typedef</span> centroid_ring
+<a name="l00189"></a>00189 &lt;
+<a name="l00190"></a>00190 <span class="keyword">typename</span> ring_type&lt;Polygon&gt;::type,
+<a name="l00191"></a>00191 Point,
+<a name="l00192"></a>00192 Strategy
+<a name="l00193"></a>00193 &gt; per_ring;
+<a name="l00194"></a>00194
+<a name="l00195"></a>00195 per_ring::apply(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), centroid, strategy, state);
+<a name="l00196"></a>00196
+<a name="l00197"></a>00197 <span class="keywordflow">for</span> (<span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00198"></a>00198 &lt;
+<a name="l00199"></a>00199 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type
+<a name="l00200"></a>00200 &gt;::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="l00201"></a>00201 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="l00202"></a>00202 ++it)
+<a name="l00203"></a>00203 {
+<a name="l00204"></a>00204 per_ring::apply(*it, centroid, strategy, state);
+<a name="l00205"></a>00205 }
+<a name="l00206"></a>00206 <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// always check exception</span>
+<a name="l00207"></a>00207 }
+<a name="l00208"></a>00208 };
+<a name="l00209"></a>00209
+<a name="l00210"></a>00210
+<a name="l00211"></a>00211 }} <span class="comment">// namespace detail::centroid</span>
+<a name="l00212"></a>00212 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00213"></a>00213 <span class="preprocessor"></span>
+<a name="l00214"></a>00214
+<a name="l00215"></a>00215 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00216"></a>00216 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00217"></a>00217 {
+<a name="l00218"></a>00218
+<a name="l00219"></a>00219 <span class="keyword">template</span>
+<a name="l00220"></a>00220 &lt;
+<a name="l00221"></a>00221 <span class="keyword">typename</span> Tag,
+<a name="l00222"></a>00222 std::size_t Dimension,
+<a name="l00223"></a>00223 <span class="keyword">typename</span> Geometry,
+<a name="l00224"></a>00224 <span class="keyword">typename</span> Point,
+<a name="l00225"></a>00225 <span class="keyword">typename</span> Strategy
+<a name="l00226"></a>00226 &gt;
+<a name="l00227"></a>00227 <span class="keyword">struct </span>centroid {};
+<a name="l00228"></a>00228
+<a name="l00229"></a>00229 <span class="keyword">template</span>
+<a name="l00230"></a>00230 &lt;
+<a name="l00231"></a>00231 std::size_t Dimension,
+<a name="l00232"></a>00232 <span class="keyword">typename</span> Geometry,
+<a name="l00233"></a>00233 <span class="keyword">typename</span> Point,
+<a name="l00234"></a>00234 <span class="keyword">typename</span> Strategy
+<a name="l00235"></a>00235 &gt;
+<a name="l00236"></a>00236 <span class="keyword">struct </span>centroid&lt;point_tag, Dimension, Geometry, Point, Strategy&gt;
+<a name="l00237"></a>00237 : detail::centroid::centroid_point&lt;Geometry, Point, Strategy&gt;
+<a name="l00238"></a>00238 {};
+<a name="l00239"></a>00239
+<a name="l00240"></a>00240 <span class="keyword">template</span>
+<a name="l00241"></a>00241 &lt;
+<a name="l00242"></a>00242 std::size_t Dimension,
+<a name="l00243"></a>00243 <span class="keyword">typename</span> Box,
+<a name="l00244"></a>00244 <span class="keyword">typename</span> Point,
+<a name="l00245"></a>00245 <span class="keyword">typename</span> Strategy
+<a name="l00246"></a>00246 &gt;
+<a name="l00247"></a>00247 <span class="keyword">struct </span>centroid&lt;box_tag, Dimension, Box, Point, Strategy&gt;
+<a name="l00248"></a>00248 : detail::centroid::centroid_box&lt;Box, Point, Strategy&gt;
+<a name="l00249"></a>00249 {};
+<a name="l00250"></a>00250
+<a name="l00251"></a>00251 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00252"></a>00252 <span class="keyword">struct </span>centroid&lt;ring_tag, 2, Ring, Point, Strategy&gt;
+<a name="l00253"></a>00253 : detail::centroid::centroid_ring&lt;Ring, Point, Strategy&gt;
+<a name="l00254"></a>00254 {};
+<a name="l00255"></a>00255
+<a name="l00256"></a>00256 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00257"></a>00257 <span class="keyword">struct </span>centroid&lt;polygon_tag, 2, Polygon, Point, Strategy&gt;
+<a name="l00258"></a>00258 : detail::centroid::centroid_polygon&lt;Polygon, Point, Strategy&gt;
+<a name="l00259"></a>00259
+<a name="l00260"></a>00260 {};
+<a name="l00261"></a>00261
+<a name="l00262"></a>00262 } <span class="comment">// namespace dispatch</span>
+<a name="l00263"></a>00263 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00264"></a>00264 <span class="preprocessor"></span>
+<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> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00277"></a><a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2">00277</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>(Geometry <span class="keyword">const</span>&amp; geometry, Point&amp; c,
+<a name="l00278"></a>00278 Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00279"></a>00279 {
+<a name="l00280"></a>00280 BOOST_CONCEPT_ASSERT( (<a class="code" href="classggl_1_1concept_1_1_centroid_strategy.html" title="Checks strategy for area.">ggl::concept::CentroidStrategy&lt;Strategy&gt;</a>) );
+<a name="l00281"></a>00281
+<a name="l00282"></a>00282 concept::check&lt;const Geometry&gt;();
+<a name="l00283"></a>00283 concept::check&lt;Point&gt;();
+<a name="l00284"></a>00284
+<a name="l00285"></a>00285 assert_dimension_equal&lt;Geometry, Point&gt;();
+<a name="l00286"></a>00286 <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="l00287"></a>00287
+<a name="l00288"></a>00288 <span class="keyword">typename</span> Strategy::state_type state;
+<a name="l00289"></a>00289
+<a name="l00290"></a>00290 <span class="comment">// Call dispatch apply method. That one returns true if centroid</span>
+<a name="l00291"></a>00291 <span class="comment">// should be taken from state.</span>
+<a name="l00292"></a>00292 <span class="keywordflow">if</span> (<a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">dispatch::centroid</a>
+<a name="l00293"></a>00293 &lt;
+<a name="l00294"></a>00294 <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="l00295"></a>00295 <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;point_type&gt;::type::value</a>,
+<a name="l00296"></a>00296 Geometry,
+<a name="l00297"></a>00297 Point,
+<a name="l00298"></a>00298 Strategy
+<a name="l00299"></a>00299 &gt;::apply(geometry, c, strategy, state))
+<a name="l00300"></a>00300 {
+<a name="l00301"></a>00301 <span class="keywordflow">if</span> (! Strategy::result(state, c))
+<a name="l00302"></a>00302 {
+<a name="l00303"></a>00303 <span class="keywordflow">throw</span> <a class="code" href="classggl_1_1centroid__exception.html">centroid_exception</a>();
+<a name="l00304"></a>00304 }
+<a name="l00305"></a>00305 }
+<a name="l00306"></a>00306 }
+<a name="l00307"></a>00307
+<a name="l00308"></a>00308
+<a name="l00309"></a>00309
+<a name="l00327"></a>00327 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>&gt;
+<a name="l00328"></a><a class="code" href="group__centroid.html#gc7e9651663cd19868cae40c20c72afdc">00328</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>(Geometry <span class="keyword">const</span>&amp; geometry, Point&amp; c)
+<a name="l00329"></a>00329 {
+<a name="l00330"></a>00330 concept::check&lt;const Geometry&gt;();
+<a name="l00331"></a>00331 concept::check&lt;Point&gt;();
+<a name="l00332"></a>00332
+<a name="l00333"></a>00333 <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="l00334"></a>00334 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__centroid.html" title="Traits class binding a centroid calculation strategy to a coordinate system.">strategy_centroid</a>
+<a name="l00335"></a>00335 &lt;
+<a name="l00336"></a>00336 <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="l00337"></a>00337 Point,
+<a name="l00338"></a>00338 point_type
+<a name="l00339"></a>00339 &gt;::type strategy_type;
+<a name="l00340"></a>00340
+<a name="l00341"></a>00341 <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>(geometry, c, strategy_type());
+<a name="l00342"></a>00342 }
+<a name="l00343"></a>00343
+<a name="l00344"></a>00344 <span class="comment">// Versions returning a centroid</span>
+<a name="l00345"></a>00345
+<a name="l00354"></a>00354 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00355"></a><a class="code" href="group__centroid.html#ga7146045002e56e5471f8da7dd30609c">00355</a> <span class="keyword">inline</span> Point <a class="code" href="group__centroid.html#ga7146045002e56e5471f8da7dd30609c" title="Calculate and return centroid.">make_centroid</a>(Geometry <span class="keyword">const</span>&amp; geometry)
+<a name="l00356"></a>00356 {
+<a name="l00357"></a>00357 concept::check&lt;const Geometry&gt;();
+<a name="l00358"></a>00358 concept::check&lt;Point&gt;();
+<a name="l00359"></a>00359
+<a name="l00360"></a>00360 Point c;
+<a name="l00361"></a>00361 <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>(geometry, c);
+<a name="l00362"></a>00362 <span class="keywordflow">return</span> c;
+<a name="l00363"></a>00363 }
+<a name="l00364"></a>00364
+<a name="l00374"></a>00374 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00375"></a><a class="code" href="group__centroid.html#gb077a07483ee2fdd17d66e63b237aaa6">00375</a> <span class="keyword">inline</span> Point <a class="code" href="group__centroid.html#ga7146045002e56e5471f8da7dd30609c" title="Calculate and return centroid.">make_centroid</a>(Geometry <span class="keyword">const</span>&amp; geometry, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00376"></a>00376 {
+<a name="l00377"></a>00377 BOOST_CONCEPT_ASSERT( (<a class="code" href="classggl_1_1concept_1_1_centroid_strategy.html" title="Checks strategy for area.">ggl::concept::CentroidStrategy&lt;Strategy&gt;</a>) );
+<a name="l00378"></a>00378
+<a name="l00379"></a>00379 concept::check&lt;const Geometry&gt;();
+<a name="l00380"></a>00380 concept::check&lt;Point&gt;();
+<a name="l00381"></a>00381
+<a name="l00382"></a>00382 Point c;
+<a name="l00383"></a>00383 <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>(geometry, c, strategy);
+<a name="l00384"></a>00384 <span class="keywordflow">return</span> c;
+<a name="l00385"></a>00385 }
+<a name="l00386"></a>00386
+<a name="l00387"></a>00387 } <span class="comment">// namespace ggl</span>
+<a name="l00388"></a>00388
+<a name="l00389"></a>00389 <span class="preprocessor">#endif // GGL_ALGORITHMS_CENTROID_HPP</span>
 </pre></div></div>
 <hr size="1">
 <table width="100%">

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-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -59,198 +59,205 @@
 <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="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
 <a name="l00021"></a>00021
 <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="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="l00047"></a>00047 <span class="keyword">namespace </span>ggl {
+<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__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7" title="Calculate the convex hull of a geometry.">convex_hull</a> {
+<a name="l00051"></a>00051
+<a name="l00052"></a>00052 <span class="keyword">template</span>
+<a name="l00053"></a>00053 &lt;
+<a name="l00054"></a>00054 <span class="keyword">typename</span> Geometry,
+<a name="l00055"></a>00055 <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d">order_selector</a> Order
+<a name="l00056"></a>00056 &gt;
+<a name="l00057"></a>00057 <span class="keyword">struct </span>hull_inserter
+<a name="l00058"></a>00058 {
+<a name="l00059"></a>00059 <span class="comment">// Member template function, to avoid inconvenient declaration</span>
+<a name="l00060"></a>00060 <span class="comment">// of output-iterator-type</span>
+<a name="l00061"></a>00061 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00062"></a>00062 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Geometry <span class="keyword">const</span>&amp; geometry,
+<a name="l00063"></a>00063 OutputIterator out)
+<a name="l00064"></a>00064 {
+<a name="l00065"></a>00065 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;Geometry&gt;::type point_type;
+<a name="l00066"></a>00066
+<a name="l00067"></a>00067 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_convex_hull
+<a name="l00068"></a>00068 &lt;
+<a name="l00069"></a>00069 <span class="keyword">typename</span> cs_tag&lt;point_type&gt;::type,
+<a name="l00070"></a>00070 point_type
+<a name="l00071"></a>00071 &gt;::type strategy_type;
+<a name="l00072"></a>00072
+<a name="l00073"></a>00073 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="l00074"></a>00074 &lt;
+<a name="l00075"></a>00075 <span class="keyword">typename</span> as_range_type&lt;Geometry&gt;::type
+<a name="l00076"></a>00076 &gt;(geometry));
+<a name="l00077"></a>00077 s.get(out, Order == <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d55fe53c1821ca13eb0eacb9084cb1d1c">clockwise</a>);
+<a name="l00078"></a>00078 <span class="keywordflow">return</span> out;
+<a name="l00079"></a>00079 }
+<a name="l00080"></a>00080 };
+<a name="l00081"></a>00081
+<a name="l00082"></a>00082 <span class="keyword">template</span>
+<a name="l00083"></a>00083 &lt;
+<a name="l00084"></a>00084 <span class="keyword">typename</span> Geometry,
+<a name="l00085"></a>00085 <span class="keyword">typename</span> OutputGeometry
+<a name="l00086"></a>00086 &gt;
+<a name="l00087"></a>00087 <span class="keyword">struct </span>hull_to_geometry
+<a name="l00088"></a>00088 {
+<a name="l00089"></a>00089 <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="l00090"></a>00090 {
+<a name="l00091"></a>00091 hull_inserter
+<a name="l00092"></a>00092 &lt;
+<a name="l00093"></a>00093 Geometry,
+<a name="l00094"></a>00094 <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="l00095"></a>00095 &gt;::apply(geometry,
+<a name="l00096"></a>00096 std::back_inserter(
+<a name="l00097"></a>00097 <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="l00098"></a>00098 &lt;
+<a name="l00099"></a>00099 <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="l00100"></a>00100 &gt;(out)));
+<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="l00105"></a>00105
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107 }} <span class="comment">// namespace detail::convex_hull</span>
+<a name="l00108"></a>00108 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00109"></a>00109 <span class="preprocessor"></span>
+<a name="l00110"></a>00110 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00111"></a>00111 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00112"></a>00112 {
+<a name="l00113"></a>00113
+<a name="l00114"></a>00114 <span class="keyword">template</span>
+<a name="l00115"></a>00115 &lt;
+<a name="l00116"></a>00116 <span class="keyword">typename</span> Tag1,
+<a name="l00117"></a>00117 <span class="keywordtype">bool</span> IsMulti,
+<a name="l00118"></a>00118 <span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Output
+<a name="l00119"></a>00119 &gt;
+<a name="l00120"></a>00120 <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="l00121"></a>00121 {};
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123
+<a name="l00124"></a>00124 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Output&gt;
+<a name="l00125"></a>00125 <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="l00126"></a>00126 &lt;
+<a name="l00127"></a>00127 polygon_tag, false,
+<a name="l00128"></a>00128 Polygon, Output
+<a name="l00129"></a>00129 &gt;
+<a name="l00130"></a>00130 : 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="l00131"></a>00131 {};
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Output&gt;
+<a name="l00134"></a>00134 <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="l00135"></a>00135 &lt;
+<a name="l00136"></a>00136 ring_tag, false,
+<a name="l00137"></a>00137 Polygon, Output
+<a name="l00138"></a>00138 &gt;
+<a name="l00139"></a>00139 : 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="l00140"></a>00140 {};
+<a name="l00141"></a>00141
+<a name="l00142"></a>00142 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Output&gt;
+<a name="l00143"></a>00143 <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="l00144"></a>00144 &lt;
+<a name="l00145"></a>00145 linestring_tag, false,
+<a name="l00146"></a>00146 Polygon, Output
+<a name="l00147"></a>00147 &gt;
+<a name="l00148"></a>00148 : 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="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="l00151"></a>00151
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 <span class="keyword">template</span>
+<a name="l00154"></a>00154 &lt;
+<a name="l00155"></a>00155 <span class="keyword">typename</span> GeometryTag,
+<a name="l00156"></a>00156 <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d">order_selector</a> Order,
+<a name="l00157"></a>00157 <span class="keywordtype">bool</span> IsMulti,
+<a name="l00158"></a>00158 <span class="keyword">typename</span> GeometryIn
+<a name="l00159"></a>00159 &gt;
+<a name="l00160"></a>00160 <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="l00161"></a>00161
+<a name="l00162"></a>00162 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, order_selector Order&gt;
+<a name="l00163"></a>00163 <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="l00164"></a>00164 &lt;
+<a name="l00165"></a>00165 linestring_tag,
+<a name="l00166"></a>00166 Order, false,
+<a name="l00167"></a>00167 Linestring
+<a name="l00168"></a>00168 &gt;
+<a name="l00169"></a>00169 : 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="l00170"></a>00170 {};
+<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> Ring, order_selector Order&gt;
+<a name="l00174"></a>00174 <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="l00175"></a>00175 &lt;
+<a name="l00176"></a>00176 ring_tag,
+<a name="l00177"></a>00177 Order, false,
+<a name="l00178"></a>00178 Ring
+<a name="l00179"></a>00179 &gt;
+<a name="l00180"></a>00180 : 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="l00181"></a>00181 {};
+<a name="l00182"></a>00182
+<a name="l00183"></a>00183
+<a name="l00184"></a>00184 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, order_selector Order&gt;
+<a name="l00185"></a>00185 <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="l00186"></a>00186 &lt;
+<a name="l00187"></a>00187 polygon_tag,
+<a name="l00188"></a>00188 Order, false,
+<a name="l00189"></a>00189 Polygon
+<a name="l00190"></a>00190 &gt;
+<a name="l00191"></a>00191 : 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="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="l00194"></a>00194
+<a name="l00195"></a>00195
+<a name="l00196"></a>00196 } <span class="comment">// namespace dispatch</span>
+<a name="l00197"></a>00197 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00198"></a>00198 <span class="preprocessor"></span>
+<a name="l00199"></a>00199
+<a name="l00200"></a>00200
+<a name="l00213"></a>00213 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry1, <span class="keyword">typename</span> Geometry2&gt;
+<a name="l00214"></a><a class="code" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7">00214</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="l00215"></a>00215 Geometry2&amp; out)
+<a name="l00216"></a>00216 {
+<a name="l00217"></a>00217 concept::check&lt;const Geometry1&gt;();
+<a name="l00218"></a>00218 concept::check&lt;Geometry2&gt;();
+<a name="l00219"></a>00219
+<a name="l00220"></a>00220 <a class="code" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7" title="Calculate the convex hull of a geometry.">dispatch::convex_hull</a>
+<a name="l00221"></a>00221 &lt;
+<a name="l00222"></a>00222 <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="l00223"></a>00223 <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="l00224"></a>00224 Geometry1,
+<a name="l00225"></a>00225 Geometry2
+<a name="l00226"></a>00226 &gt;::apply(geometry, out);
+<a name="l00227"></a>00227 }
+<a name="l00228"></a>00228
+<a name="l00229"></a>00229
+<a name="l00243"></a>00243 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00244"></a><a class="code" href="group__convex__hull.html#g33e400e40f14217ab0239d33fa6def72">00244</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="l00245"></a>00245 OutputIterator out)
+<a name="l00246"></a>00246 {
+<a name="l00247"></a>00247 <span class="comment">// Concept: output point type = point type of input geometry</span>
+<a name="l00248"></a>00248 concept::check&lt;const Geometry&gt;();
+<a name="l00249"></a>00249 concept::check&lt;typename point_type&lt;Geometry&gt;::type&gt;();
 <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>
+<a name="l00251"></a>00251 <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="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;Geometry&gt;::type</a>,
+<a name="l00254"></a>00254 <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="l00255"></a>00255 <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="l00256"></a>00256 Geometry
+<a name="l00257"></a>00257 &gt;::apply(geometry, out);
+<a name="l00258"></a>00258 }
+<a name="l00259"></a>00259
+<a name="l00260"></a>00260
+<a name="l00261"></a>00261 } <span class="comment">// namespace ggl</span>
+<a name="l00262"></a>00262
+<a name="l00263"></a>00263 <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.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp.html 2009-10-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -50,8 +50,8 @@
 <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 &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#de63f8bac74d1e2a56c2d2712eceb8af">ggl::correct</a> (G &amp;geometry)</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="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">ggl::correct</a> (Geometry &amp;geometry)</td></tr>
 
 </table>
 </div>

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-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -51,184 +51,187 @@
 <a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ALGORITHMS_CORRECT_HPP</span>
 <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 <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="l00012"></a>00012 <span class="preprocessor">#include &lt;cstddef&gt;</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;algorithm&gt;</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;functional&gt;</span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
+<a name="l00018"></a>00018
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>&gt;</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;<a class="code" href="algorithms_2area_8hpp.html">ggl/algorithms/area.hpp</a>&gt;</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;<a class="code" href="disjoint_8hpp.html">ggl/algorithms/disjoint.hpp</a>&gt;</span>
 <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="l00029"></a>00029
+<a name="l00030"></a>00030 <span class="keyword">namespace </span>ggl
+<a name="l00031"></a>00031 {
+<a name="l00032"></a>00032
+<a name="l00033"></a>00033 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a> {
 <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="l00036"></a>00036
+<a name="l00037"></a>00037 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00038"></a>00038 <span class="keyword">struct </span>correct_box_loop
+<a name="l00039"></a>00039 {
+<a name="l00040"></a>00040 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;Box&gt;::type coordinate_type;
+<a name="l00041"></a>00041
+<a name="l00042"></a>00042 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box&amp; box)
+<a name="l00043"></a>00043 {
+<a name="l00044"></a>00044 <span class="keywordflow">if</span> (get&lt;min_corner, Dimension&gt;(box) &gt; get&lt;max_corner, Dimension&gt;(box))
+<a name="l00045"></a>00045 {
+<a name="l00046"></a>00046 <span class="comment">// Swap the coordinates</span>
+<a name="l00047"></a>00047 coordinate_type max_value = get&lt;min_corner, Dimension&gt;(box);
+<a name="l00048"></a>00048 coordinate_type min_value = get&lt;max_corner, Dimension&gt;(box);
+<a name="l00049"></a>00049 set&lt;min_corner, Dimension&gt;(box, min_value);
+<a name="l00050"></a>00050 set&lt;max_corner, Dimension&gt;(box, max_value);
+<a name="l00051"></a>00051 }
+<a name="l00052"></a>00052
+<a name="l00053"></a>00053 correct_box_loop
+<a name="l00054"></a>00054 &lt;
+<a name="l00055"></a>00055 Box, Dimension + 1, DimensionCount
+<a name="l00056"></a>00056 &gt;::apply(box);
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058 };
 <a name="l00059"></a>00059
 <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="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="l00061"></a>00061
+<a name="l00062"></a>00062 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00063"></a>00063 <span class="keyword">struct </span>correct_box_loop&lt;Box, DimensionCount, DimensionCount&gt;
+<a name="l00064"></a>00064 {
+<a name="l00065"></a>00065 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box&amp; box)
+<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="l00070"></a>00070
+<a name="l00071"></a>00071 <span class="comment">// correct an box: make min/max are correct</span>
+<a name="l00072"></a>00072 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box&gt;
+<a name="l00073"></a>00073 <span class="keyword">struct </span>correct_box
+<a name="l00074"></a>00074 {
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box&amp; box)
+<a name="l00077"></a>00077 {
+<a name="l00078"></a>00078 <span class="comment">// Currently only for Cartesian coordinates</span>
+<a name="l00079"></a>00079 <span class="comment">// TODO: adapt using strategies</span>
+<a name="l00080"></a>00080 correct_box_loop
+<a name="l00081"></a>00081 &lt;
+<a name="l00082"></a>00082 Box, 0, <a class="code" href="classcore__dispatch_1_1dimension.html">dimension&lt;Box&gt;::type::value</a>
+<a name="l00083"></a>00083 &gt;::apply(box);
+<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="l00087"></a>00087
+<a name="l00088"></a>00088 <span class="comment">// close a linear_ring, if not closed</span>
+<a name="l00089"></a>00089 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Predicate&gt;
+<a name="l00090"></a>00090 <span class="keyword">struct </span>correct_ring
+<a name="l00091"></a>00091 {
+<a name="l00092"></a>00092 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;Ring&gt;::type point_type;
+<a name="l00093"></a>00093
+<a name="l00094"></a>00094 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_area
+<a name="l00095"></a>00095 &lt;
+<a name="l00096"></a>00096 <span class="keyword">typename</span> cs_tag&lt;point_type&gt;::type,
+<a name="l00097"></a>00097 point_type
+<a name="l00098"></a>00098 &gt;::type strategy_type;
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100 <span class="keyword">typedef</span> detail::area::ring_area
+<a name="l00101"></a>00101 &lt;
+<a name="l00102"></a>00102 Ring,
+<a name="l00103"></a>00103 <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="l00104"></a>00104 strategy_type
+<a name="l00105"></a>00105 &gt; ring_area_type;
 <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="l00107"></a>00107
+<a name="l00108"></a>00108 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Ring&amp; r)
+<a name="l00109"></a>00109 {
+<a name="l00110"></a>00110 <span class="comment">// Check close-ness</span>
+<a name="l00111"></a>00111 <span class="keywordflow">if</span> (boost::size(r) &gt; 2)
+<a name="l00112"></a>00112 {
+<a name="l00113"></a>00113 <span class="comment">// check if closed, if not, close it</span>
+<a name="l00114"></a>00114 <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="l00115"></a>00115 {
+<a name="l00116"></a>00116 r.push_back(r.front());
+<a name="l00117"></a>00117 }
+<a name="l00118"></a>00118 }
+<a name="l00119"></a>00119 <span class="comment">// Check area</span>
+<a name="l00120"></a>00120 Predicate predicate;
+<a name="l00121"></a>00121 <span class="keywordflow">if</span> (predicate(ring_area_type::apply(r, strategy_type()), 0))
+<a name="l00122"></a>00122 {
+<a name="l00123"></a>00123 std::reverse(boost::begin(r), boost::end(r));
+<a name="l00124"></a>00124 }
+<a name="l00125"></a>00125 }
+<a name="l00126"></a>00126 };
+<a name="l00127"></a>00127
+<a name="l00128"></a>00128 <span class="comment">// correct a polygon: normalizes all rings, sets outer linear_ring clockwise, sets all</span>
+<a name="l00129"></a>00129 <span class="comment">// inner rings counter clockwise</span>
+<a name="l00130"></a>00130 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon&gt;
+<a name="l00131"></a>00131 <span class="keyword">struct </span>correct_polygon
+<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">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Polygon&amp; poly)
+<a name="l00136"></a>00136 {
+<a name="l00137"></a>00137 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="l00138"></a>00138
+<a name="l00139"></a>00139 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator
+<a name="l00140"></a>00140 &lt;
+<a name="l00141"></a>00141 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type
+<a name="l00142"></a>00142 &gt;::type iterator_type;
+<a name="l00143"></a>00143
+<a name="l00144"></a>00144 <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="l00145"></a>00145 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="l00146"></a>00146 {
+<a name="l00147"></a>00147 correct_ring&lt;ring_type, std::greater&lt;double&gt; &gt;::apply(*it);
+<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="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="l00152"></a>00152
+<a name="l00153"></a>00153 }} <span class="comment">// namespace detail::correct</span>
+<a name="l00154"></a>00154 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00155"></a>00155 <span class="preprocessor"></span>
+<a name="l00156"></a>00156 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00157"></a>00157 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00158"></a>00158 {
+<a name="l00159"></a>00159
+<a name="l00160"></a>00160 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00161"></a>00161 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a> {};
+<a name="l00162"></a>00162
+<a name="l00163"></a>00163 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box&gt;
+<a name="l00164"></a>00164 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>&lt;box_tag, Box&gt;
+<a name="l00165"></a>00165 : detail::<a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>::correct_box&lt;Box&gt;
+<a name="l00166"></a>00166 {};
+<a name="l00167"></a>00167
+<a name="l00168"></a>00168 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ring&gt;
+<a name="l00169"></a>00169 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>&lt;ring_tag, Ring&gt;
+<a name="l00170"></a>00170 : detail::<a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>::correct_ring&lt;Ring, std::less&lt;double&gt; &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> Polygon&gt;
+<a name="l00174"></a>00174 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>&lt;polygon_tag, Polygon&gt;
+<a name="l00175"></a>00175 : detail::<a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>::correct_polygon&lt;Polygon&gt;
+<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="l00178"></a>00178
+<a name="l00179"></a>00179 } <span class="comment">// namespace dispatch</span>
+<a name="l00180"></a>00180 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00181"></a>00181 <span class="preprocessor"></span>
+<a name="l00182"></a>00182 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00183"></a><a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">00183</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>(Geometry&amp; geometry)
+<a name="l00184"></a>00184 {
+<a name="l00185"></a>00185 concept::check&lt;const Geometry&gt;();
 <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>
+<a name="l00187"></a>00187 dispatch::correct&lt;typename tag&lt;Geometry&gt;::type, Geometry&gt;::apply(geometry);
+<a name="l00188"></a>00188 }
+<a name="l00189"></a>00189
+<a name="l00190"></a>00190 } <span class="comment">// namespace ggl</span>
+<a name="l00191"></a>00191
+<a name="l00192"></a>00192 <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_2distance_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp_source.html 2009-10-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -308,36 +308,39 @@
 <a name="l00328"></a><a class="code" href="group__distance.html#gd122aa78e960f37b9d61bb02c6913f55">00328</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1distance__result.html" title="Shortcut to define return type of distance strategy.">distance_result&lt;Geometry1, Geometry2&gt;::type</a> <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>(
 <a name="l00329"></a>00329 Geometry1 <span class="keyword">const</span>&amp; geometry1, Geometry2 <span class="keyword">const</span>&amp; geometry2)
 <a name="l00330"></a>00330 {
-<a name="l00331"></a>00331 <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;Geometry1&gt;::type</a> point1_type;
-<a name="l00332"></a>00332 <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;Geometry2&gt;::type</a> point2_type;
+<a name="l00331"></a>00331 concept::check&lt;const Geometry1&gt;();
+<a name="l00332"></a>00332 concept::check&lt;const Geometry2&gt;();
 <a name="l00333"></a>00333
-<a name="l00334"></a>00334 <span class="comment">// Define a point-point-distance-strategy</span>
-<a name="l00335"></a>00335 <span class="comment">// for either the normal case, either the reversed case</span>
-<a name="l00336"></a>00336 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_c
-<a name="l00337"></a>00337 &lt;
-<a name="l00338"></a>00338 <a class="code" href="structggl_1_1reverse__dispatch.html">ggl::reverse_dispatch&lt;Geometry1, Geometry2&gt;::type::value</a>,
-<a name="l00339"></a>00339 <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__distance.html" title="Traits class binding a distance strategy to a (possibly two) coordinate system(s)...">strategy_distance</a>
-<a name="l00340"></a>00340 &lt;
-<a name="l00341"></a>00341 <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;point2_type&gt;::type</a>,
-<a name="l00342"></a>00342 <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;point1_type&gt;::type</a>,
-<a name="l00343"></a>00343 point2_type,
-<a name="l00344"></a>00344 point1_type
-<a name="l00345"></a>00345 &gt;::type,
-<a name="l00346"></a>00346 <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__distance.html" title="Traits class binding a distance strategy to a (possibly two) coordinate system(s)...">strategy_distance</a>
-<a name="l00347"></a>00347 &lt;
-<a name="l00348"></a>00348 <span class="keyword">typename</span> cs_tag&lt;point1_type&gt;::type,
-<a name="l00349"></a>00349 <span class="keyword">typename</span> cs_tag&lt;point2_type&gt;::type,
-<a name="l00350"></a>00350 point1_type,
-<a name="l00351"></a>00351 point2_type
-<a name="l00352"></a>00352 &gt;::type
-<a name="l00353"></a>00353 &gt;::type strategy;
-<a name="l00354"></a>00354
-<a name="l00355"></a>00355 <span class="keywordflow">return</span> <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>(geometry1, geometry2, strategy());
-<a name="l00356"></a>00356 }
+<a name="l00334"></a>00334 <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;Geometry1&gt;::type</a> point1_type;
+<a name="l00335"></a>00335 <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;Geometry2&gt;::type</a> point2_type;
+<a name="l00336"></a>00336
+<a name="l00337"></a>00337 <span class="comment">// Define a point-point-distance-strategy</span>
+<a name="l00338"></a>00338 <span class="comment">// for either the normal case, either the reversed case</span>
+<a name="l00339"></a>00339 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_c
+<a name="l00340"></a>00340 &lt;
+<a name="l00341"></a>00341 <a class="code" href="structggl_1_1reverse__dispatch.html">ggl::reverse_dispatch&lt;Geometry1, Geometry2&gt;::type::value</a>,
+<a name="l00342"></a>00342 <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__distance.html" title="Traits class binding a distance strategy to a (possibly two) coordinate system(s)...">strategy_distance</a>
+<a name="l00343"></a>00343 &lt;
+<a name="l00344"></a>00344 <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;point2_type&gt;::type</a>,
+<a name="l00345"></a>00345 <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;point1_type&gt;::type</a>,
+<a name="l00346"></a>00346 point2_type,
+<a name="l00347"></a>00347 point1_type
+<a name="l00348"></a>00348 &gt;::type,
+<a name="l00349"></a>00349 <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__distance.html" title="Traits class binding a distance strategy to a (possibly two) coordinate system(s)...">strategy_distance</a>
+<a name="l00350"></a>00350 &lt;
+<a name="l00351"></a>00351 <span class="keyword">typename</span> cs_tag&lt;point1_type&gt;::type,
+<a name="l00352"></a>00352 <span class="keyword">typename</span> cs_tag&lt;point2_type&gt;::type,
+<a name="l00353"></a>00353 point1_type,
+<a name="l00354"></a>00354 point2_type
+<a name="l00355"></a>00355 &gt;::type
+<a name="l00356"></a>00356 &gt;::type strategy;
 <a name="l00357"></a>00357
-<a name="l00358"></a>00358 } <span class="comment">// namespace ggl</span>
-<a name="l00359"></a>00359
-<a name="l00360"></a>00360 <span class="preprocessor">#endif // GGL_ALGORITHMS_DISTANCE_HPP</span>
+<a name="l00358"></a>00358 <span class="keywordflow">return</span> <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>(geometry1, geometry2, strategy());
+<a name="l00359"></a>00359 }
+<a name="l00360"></a>00360
+<a name="l00361"></a>00361 } <span class="comment">// namespace ggl</span>
+<a name="l00362"></a>00362
+<a name="l00363"></a>00363 <span class="preprocessor">#endif // GGL_ALGORITHMS_DISTANCE_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.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp.html 2009-10-25 06:40:07 EDT (Sun, 25 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 B &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__envelope.html#g89671917cfb1753f65d4bcc2fc334bf9">ggl::envelope</a> (G const &amp;geometry, B &amp;mbr)</td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , typename Box &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__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67">ggl::envelope</a> (Geometry const &amp;geometry, Box &amp;mbr)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate envelope of a geometry. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G , typename B , 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__envelope.html#g376bdcefa676ef2b705656b690767b36">ggl::envelope</a> (G const &amp;geometry, B &amp;mbr, S const &amp;strategy)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate envelope of a geometry, using a specified <a class="el" href="namespaceggl_1_1strategy.html">strategy</a>. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename B , typename G &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">B&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#g938cf2804a87e138cbf4b5b65314a3e4">ggl::make_envelope</a> (G const &amp;geometry)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate and return envelope of a geometry. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename B , typename G , typename S &gt; </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">B&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#g0b2b7b9ef2bc07f4b45695606f3d292d">ggl::make_envelope</a> (G const &amp;geometry, S const &amp;strategy)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate envelope of a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , typename Box , 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__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8">ggl::envelope</a> (Geometry const &amp;geometry, Box &amp;mbr, Strategy const &amp;strategy)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate envelope of a geometry, using a specified <a class="el" href="namespaceggl_1_1strategy.html">strategy</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Box , typename Geometry &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Box&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#gb8343582b49458d16bca165b493f678d">ggl::make_envelope</a> (Geometry const &amp;geometry)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate and return envelope of a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Box , typename Geometry , typename Strategy &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Box&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#g41b5f1545e745767f7afa6b1b889d279">ggl::make_envelope</a> (Geometry const &amp;geometry, Strategy const &amp;strategy)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate and return envelope of a geometry. <br></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate and return envelope of a geometry. <br></td></tr>
 </table>
 </div>
 <hr size="1">

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-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -51,252 +51,227 @@
 <a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ALGORITHMS_ENVELOPE_HPP</span>
 <a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_ENVELOPE_HPP</span>
 <a name="l00011"></a>00011 <span class="preprocessor"></span>
-<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;boost/concept/requires.hpp&gt;</span>
-<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
-<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
-<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;boost/numeric/conversion/cast.hpp&gt;</span>
-<a name="l00016"></a>00016
-<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="combine_8hpp.html">ggl/algorithms/combine.hpp</a>&gt;</span>
-<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="convert_8hpp.html">ggl/algorithms/convert.hpp</a>&gt;</span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.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="box__concept_8hpp.html">ggl/core/concepts/box_concept.hpp</a>&gt;</span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="linestring__concept_8hpp.html">ggl/core/concepts/linestring_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 <span class="preprocessor">#include &lt;<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>&gt;</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="polygon__concept_8hpp.html">ggl/core/concepts/polygon_concept.hpp</a>&gt;</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;<a class="code" href="ring__concept_8hpp.html">ggl/core/concepts/ring_concept.hpp</a>&gt;</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
-<a name="l00028"></a>00028
-<a name="l00061"></a>00061 <span class="keyword">namespace </span>ggl
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
-<a name="l00065"></a>00065 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a> {
-<a name="l00066"></a>00066
-<a name="l00068"></a>00068 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> S, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00069"></a>00069 <span class="keyword">struct </span>envelope_nsphere
-<a name="l00070"></a>00070 {
-<a name="l00071"></a>00071 <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="l00072"></a>00072 {
-<a name="l00073"></a>00073 assert_dimension&lt;S, 2&gt;();
-<a name="l00074"></a>00074 assert_dimension&lt;B, 2&gt;();
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 <span class="keyword">typename</span> radius_type&lt;S&gt;::type r = get_radius&lt;0&gt;(s);
-<a name="l00077"></a>00077 set&lt;min_corner, 0&gt;(mbr, get&lt;0&gt;(s) - r);
-<a name="l00078"></a>00078 set&lt;min_corner, 1&gt;(mbr, get&lt;1&gt;(s) - r);
-<a name="l00079"></a>00079 set&lt;max_corner, 0&gt;(mbr, get&lt;0&gt;(s) + r);
-<a name="l00080"></a>00080 set&lt;max_corner, 1&gt;(mbr, get&lt;1&gt;(s) + r);
+<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 <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="combine_8hpp.html">ggl/algorithms/combine.hpp</a>&gt;</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="convert_8hpp.html">ggl/algorithms/convert.hpp</a>&gt;</span>
+<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="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
+<a name="l00025"></a>00025
+<a name="l00063"></a>00063 <span class="keyword">namespace </span>ggl
+<a name="l00064"></a>00064 {
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00067"></a>00067 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a> {
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070
+<a name="l00072"></a>00072 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00073"></a>00073 <span class="keyword">struct </span>envelope_point
+<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(Point <span class="keyword">const</span>&amp; p, Box&amp; mbr, Strategy <span class="keyword">const</span>&amp;)
+<a name="l00076"></a>00076 {
+<a name="l00077"></a>00077 <span class="comment">// Envelope of a point is an empty box, a box with zero volume, located</span>
+<a name="l00078"></a>00078 <span class="comment">// at the point.</span>
+<a name="l00079"></a>00079 <span class="comment">// We just use the convert algorithm here</span>
+<a name="l00080"></a>00080 <a class="code" href="group__convert.html#ge07fa83176190049c856e35f77d0f569" title="Converts one geometry to another geometry.">ggl::convert</a>(p, mbr);
 <a name="l00081"></a>00081 }
 <a name="l00082"></a>00082 };
 <a name="l00083"></a>00083
 <a name="l00084"></a>00084
-<a name="l00086"></a>00086 <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="l00087"></a>00087 <span class="keyword">struct </span>envelope_point
+<a name="l00086"></a>00086 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Segment, <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00087"></a>00087 <span class="keyword">struct </span>envelope_segment
 <a name="l00088"></a>00088 {
-<a name="l00089"></a>00089 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(P <span class="keyword">const</span>&amp; p, B&amp; mbr, Strategy <span class="keyword">const</span>&amp;)
+<a name="l00089"></a>00089 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Segment <span class="keyword">const</span>&amp; s, Box&amp; mbr, Strategy <span class="keyword">const</span>&amp;)
 <a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <span class="comment">// Envelope of a point is an empty box, a box with zero volume, located at the point.</span>
-<a name="l00092"></a>00092 <span class="comment">// We just use the convert algorithm here</span>
-<a name="l00093"></a>00093 <a class="code" href="group__convert.html#ge07fa83176190049c856e35f77d0f569" title="Converts one geometry to another geometry.">ggl::convert</a>(p, mbr);
-<a name="l00094"></a>00094 }
-<a name="l00095"></a>00095 };
-<a name="l00096"></a>00096
+<a name="l00091"></a>00091 <span class="comment">// TODO: remove s.first/s.second, use strategies</span>
+<a name="l00092"></a>00092 <a class="code" href="group__access.html#g490821bd25a63cc584be1319375794f0" title="assign to a box inverse infinite">ggl::assign_inverse</a>(mbr);
+<a name="l00093"></a>00093 <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="l00094"></a>00094 <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="l00095"></a>00095 }
+<a name="l00096"></a>00096 };
 <a name="l00097"></a>00097
-<a name="l00099"></a>00099 <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="l00100"></a>00100 <span class="keyword">struct </span>envelope_segment
-<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 <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="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="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="l00098"></a>00098
+<a name="l00100"></a>00100 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00101"></a>00101 <span class="keyword">inline</span> <span class="keywordtype">void</span> envelope_range_state(Range <span class="keyword">const</span>&amp; range,
+<a name="l00102"></a>00102 Strategy <span class="keyword">const</span>&amp; strategy, <span class="keyword">typename</span> Strategy::state_type&amp; state)
+<a name="l00103"></a>00103 {
+<a name="l00104"></a>00104 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator&lt;Range&gt;::type iterator_type;
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 <span class="keywordflow">for</span> (iterator_type it = boost::begin(range);
+<a name="l00107"></a>00107 it != boost::end(range);
+<a name="l00108"></a>00108 ++it)
+<a name="l00109"></a>00109 {
+<a name="l00110"></a>00110 strategy(*it, state);
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112 }
+<a name="l00113"></a>00113
+<a name="l00114"></a>00114
+<a name="l00115"></a>00115
+<a name="l00117"></a>00117 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00118"></a>00118 <span class="keyword">struct </span>envelope_range
+<a name="l00119"></a>00119 {
+<a name="l00121"></a>00121 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Range <span class="keyword">const</span>&amp; range, Box&amp; mbr,
+<a name="l00122"></a>00122 Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00123"></a>00123 {
+<a name="l00124"></a>00124 <span class="keyword">typename</span> Strategy::state_type state(mbr);
+<a name="l00125"></a>00125 envelope_range_state(range, strategy, state);
+<a name="l00126"></a>00126 }
+<a name="l00127"></a>00127 };
+<a name="l00128"></a>00128
+<a name="l00129"></a>00129 }} <span class="comment">// namespace detail::envelope</span>
+<a name="l00130"></a>00130 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00131"></a>00131 <span class="preprocessor"></span>
+<a name="l00132"></a>00132 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00133"></a>00133 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00134"></a>00134 {
+<a name="l00135"></a>00135
+<a name="l00136"></a>00136 <span class="keyword">template</span>
+<a name="l00137"></a>00137 &lt;
+<a name="l00138"></a>00138 <span class="keyword">typename</span> Tag1, <span class="keyword">typename</span> Tag2,
+<a name="l00139"></a>00139 <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Box,
+<a name="l00140"></a>00140 <span class="keyword">typename</span> Strategy
+<a name="l00141"></a>00141 &gt;
+<a name="l00142"></a>00142 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a> {};
+<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
-<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
-<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
-<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
-<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
-<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
-<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="l00145"></a>00145 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00146"></a>00146 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;point_tag, box_tag, Point, Box, Strategy&gt;
+<a name="l00147"></a>00147 : detail::<a class="code" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_point&lt;Point, Box, Strategy&gt;
+<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> &lt;<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00152"></a>00152 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;box_tag, box_tag, Box, Box, Strategy&gt;
+<a name="l00153"></a>00153 {
+<a name="l00159"></a>00159 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box <span class="keyword">const</span>&amp; box, Box&amp; mbr, Strategy <span class="keyword">const</span>&amp;)
+<a name="l00160"></a>00160 {
+<a name="l00161"></a>00161 mbr = box;
+<a name="l00162"></a>00162 }
+<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> Segment, <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00167"></a>00167 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;segment_tag, box_tag, Segment, Box, Strategy&gt;
+<a name="l00168"></a>00168 : detail::<a class="code" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_segment&lt;Segment, Box, Strategy&gt;
+<a name="l00169"></a>00169 {};
+<a name="l00170"></a>00170
+<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> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00174"></a>00174 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;linestring_tag, box_tag, Linestring, Box, Strategy&gt;
+<a name="l00175"></a>00175 : detail::<a class="code" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_range&lt;Linestring, Box, Strategy&gt;
+<a name="l00176"></a>00176 {};
+<a name="l00177"></a>00177
+<a name="l00178"></a>00178
+<a name="l00179"></a>00179 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00180"></a>00180 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;ring_tag, box_tag, Ring, Box, Strategy&gt;
+<a name="l00181"></a>00181 : detail::<a class="code" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_range&lt;Ring, Box, Strategy&gt;
+<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> Polygon, <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00186"></a>00186 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;polygon_tag, box_tag, Polygon, Box, Strategy&gt;
+<a name="l00187"></a>00187 {
+<a name="l00188"></a>00188 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Polygon <span class="keyword">const</span>&amp; poly, Box&amp; mbr,
+<a name="l00189"></a>00189 Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00190"></a>00190 {
+<a name="l00191"></a>00191 <span class="comment">// For polygon, inspecting outer ring is sufficient</span>
+<a name="l00192"></a>00192
+<a name="l00193"></a>00193 detail::envelope::envelope_range
+<a name="l00194"></a>00194 &lt;
+<a name="l00195"></a>00195 <span class="keyword">typename</span> ring_type&lt;Polygon&gt;::type,
+<a name="l00196"></a>00196 Box,
+<a name="l00197"></a>00197 Strategy
+<a name="l00198"></a>00198 &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="l00199"></a>00199 }
+<a name="l00200"></a>00200
+<a name="l00201"></a>00201 };
+<a name="l00202"></a>00202
+<a name="l00203"></a>00203
+<a name="l00204"></a>00204 } <span class="comment">// namespace dispatch</span>
+<a name="l00205"></a>00205 <span class="preprocessor">#endif</span>
+<a name="l00206"></a>00206 <span class="preprocessor"></span>
+<a name="l00207"></a>00207
+<a name="l00215"></a>00215 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00216"></a><a class="code" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8">00216</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>(Geometry <span class="keyword">const</span>&amp; geometry,
+<a name="l00217"></a>00217 Box&amp; mbr, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00218"></a>00218 {
+<a name="l00219"></a>00219 concept::check&lt;const Geometry&gt;();
+<a name="l00220"></a>00220 concept::check&lt;Box&gt;();
+<a name="l00221"></a>00221
+<a name="l00222"></a>00222 <a class="code" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8" title="Calculate envelope of a geometry, using a specified strategy.">dispatch::envelope</a>
+<a name="l00223"></a>00223 &lt;
+<a name="l00224"></a>00224 <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>, <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;Box&gt;::type</a>,
+<a name="l00225"></a>00225 Geometry, Box, Strategy
+<a name="l00226"></a>00226 &gt;::apply(geometry, mbr, strategy);
+<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 <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
-<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="l00244"></a>00244 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Box&gt;
+<a name="l00245"></a><a class="code" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67">00245</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>(Geometry <span class="keyword">const</span>&amp; geometry, Box&amp; mbr)
+<a name="l00246"></a>00246 {
+<a name="l00247"></a>00247 concept::check&lt;const Geometry&gt;();
+<a name="l00248"></a>00248 concept::check&lt;Box&gt;();
+<a name="l00249"></a>00249
+<a name="l00250"></a>00250 <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="l00251"></a>00251 &lt;
+<a name="l00252"></a>00252 <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;Geometry&gt;::type</a>&gt;::type,
+<a name="l00253"></a>00253 <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;Box&gt;::type</a>&gt;::type,
+<a name="l00254"></a>00254 <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 name="l00255"></a>00255 Box
+<a name="l00256"></a>00256 &gt;::type strategy;
+<a name="l00257"></a>00257
+<a name="l00258"></a>00258 <a class="code" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>(geometry, mbr, strategy);
+<a name="l00259"></a>00259 }
 <a name="l00260"></a>00260
 <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="l00268"></a>00268 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00269"></a><a class="code" href="group__envelope.html#g41b5f1545e745767f7afa6b1b889d279">00269</a> <span class="keyword">inline</span> Box <a class="code" href="group__envelope.html#g41b5f1545e745767f7afa6b1b889d279" title="Calculate and return envelope of a geometry.">make_envelope</a>(Geometry <span class="keyword">const</span>&amp; geometry, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00270"></a>00270 {
+<a name="l00271"></a>00271 concept::check&lt;const Geometry&gt;();
+<a name="l00272"></a>00272 concept::check&lt;Box&gt;();
+<a name="l00273"></a>00273
+<a name="l00274"></a>00274 Box <a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a>;
+<a name="l00275"></a>00275 <a class="code" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8" title="Calculate envelope of a geometry, using a specified strategy.">dispatch::envelope</a>
+<a name="l00276"></a>00276 &lt;
+<a name="l00277"></a>00277 <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>, <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;Box&gt;::type</a>,
+<a name="l00278"></a>00278 Geometry, Box, Strategy
+<a name="l00279"></a>00279 &gt;::apply(geometry, box, strategy);
+<a name="l00280"></a>00280
+<a name="l00281"></a>00281 <span class="keywordflow">return</span> box;
+<a name="l00282"></a>00282 }
+<a name="l00283"></a>00283
 <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="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="l00290"></a>00290 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00291"></a><a class="code" href="group__envelope.html#gb8343582b49458d16bca165b493f678d">00291</a> <span class="keyword">inline</span> Box <a class="code" href="group__envelope.html#g41b5f1545e745767f7afa6b1b889d279" title="Calculate and return envelope of a geometry.">make_envelope</a>(Geometry <span class="keyword">const</span>&amp; geometry)
+<a name="l00292"></a>00292 {
+<a name="l00293"></a>00293 concept::check&lt;const Geometry&gt;();
+<a name="l00294"></a>00294 concept::check&lt;Box&gt;();
+<a name="l00295"></a>00295
+<a name="l00296"></a>00296 <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="l00297"></a>00297 &lt;
+<a name="l00298"></a>00298 <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;Geometry&gt;::type</a>&gt;::type,
+<a name="l00299"></a>00299 <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;Box&gt;::type</a>&gt;::type,
+<a name="l00300"></a>00300 <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 name="l00301"></a>00301 Box
+<a name="l00302"></a>00302 &gt;::type strategy;
+<a name="l00303"></a>00303 <span class="keywordflow">return</span> make_envelope&lt;Box&gt;(geometry, strategy);
+<a name="l00304"></a>00304 }
+<a name="l00305"></a>00305
+<a name="l00306"></a>00306
+<a name="l00307"></a>00307 } <span class="comment">// namespace ggl</span>
 <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
-<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>
+<a name="l00309"></a>00309 <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_2for__each_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2for__each_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2for__each_8hpp_source.html 2009-10-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -53,311 +53,323 @@
 <a name="l00011"></a>00011 <span class="preprocessor"></span>
 <a name="l00021"></a>00021 <span class="preprocessor">#include &lt;algorithm&gt;</span>
 <a name="l00022"></a>00022
-<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;boost/concept/requires.hpp&gt;</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;boost/mpl/if.hpp&gt;</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
-<a name="l00027"></a>00027
-<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;<a class="code" href="core_2is__multi_8hpp.html">ggl/core/is_multi.hpp</a>&gt;</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;<a class="code" href="iterators_2vertex__iterator_8hpp.html">ggl/iterators/vertex_iterator.hpp</a>&gt;</span>
-<a name="l00034"></a>00034
-<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 { <span class="keyword">namespace </span>for_each {
-<a name="l00040"></a>00040
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;boost/mpl/if.hpp&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;<a class="code" href="core_2is__multi_8hpp.html">ggl/core/is_multi.hpp</a>&gt;</span>
+<a name="l00030"></a>00030
+<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00032"></a>00032
+<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>&gt;</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;<a class="code" href="iterators_2vertex__iterator_8hpp.html">ggl/iterators/vertex_iterator.hpp</a>&gt;</span>
+<a name="l00035"></a>00035
+<a name="l00036"></a>00036 <span class="keyword">namespace </span>ggl
+<a name="l00037"></a>00037 {
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span>for_each {
 <a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="comment">// There is probably something in boost type_traits</span>
-<a name="l00043"></a>00043 <span class="comment">// or MPL with this functionality</span>
-<a name="l00044"></a>00044 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type, <span class="keywordtype">bool</span> IsConst&gt;
-<a name="l00045"></a>00045 <span class="keyword">struct </span>c_nc
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_c
-<a name="l00048"></a>00048 &lt;
-<a name="l00049"></a>00049 IsConst,
-<a name="l00050"></a>00050 <span class="keyword">const</span> Type,
-<a name="l00051"></a>00051 Type
-<a name="l00052"></a>00052 &gt;::type type;
-<a name="l00053"></a>00053 };
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055 <span class="comment">// Utility to adapt a boost-range for const/non const</span>
-<a name="l00056"></a>00056 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range, <span class="keywordtype">bool</span> IsConst&gt;
-<a name="l00057"></a>00057 <span class="keyword">struct </span>c_nc_range
-<a name="l00058"></a>00058 {
-<a name="l00059"></a>00059 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_c
-<a name="l00060"></a>00060 &lt;
-<a name="l00061"></a>00061 IsConst,
-<a name="l00062"></a>00062 <span class="keyword">typename</span> boost::range_const_iterator&lt;Range&gt;::type,
-<a name="l00063"></a>00063 <span class="keyword">typename</span> boost::range_iterator&lt;Range&gt;::type
-<a name="l00064"></a>00064 &gt;::type type;
-<a name="l00065"></a>00065 };
-<a name="l00066"></a>00066
+<a name="l00042"></a>00042
+<a name="l00043"></a>00043 <span class="comment">// There is probably something in boost type_traits</span>
+<a name="l00044"></a>00044 <span class="comment">// or MPL with this functionality</span>
+<a name="l00045"></a>00045 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00046"></a>00046 <span class="keyword">struct </span>c_nc
+<a name="l00047"></a>00047 {
+<a name="l00048"></a>00048 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_c
+<a name="l00049"></a>00049 &lt;
+<a name="l00050"></a>00050 IsConst,
+<a name="l00051"></a>00051 <span class="keyword">const</span> Type,
+<a name="l00052"></a>00052 Type
+<a name="l00053"></a>00053 &gt;::type type;
+<a name="l00054"></a>00054 };
+<a name="l00055"></a>00055
+<a name="l00056"></a>00056 <span class="comment">// Utility to adapt a boost-range for const/non const</span>
+<a name="l00057"></a>00057 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00058"></a>00058 <span class="keyword">struct </span>c_nc_range
+<a name="l00059"></a>00059 {
+<a name="l00060"></a>00060 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_c
+<a name="l00061"></a>00061 &lt;
+<a name="l00062"></a>00062 IsConst,
+<a name="l00063"></a>00063 <span class="keyword">typename</span> boost::range_const_iterator&lt;Range&gt;::type,
+<a name="l00064"></a>00064 <span class="keyword">typename</span> boost::range_iterator&lt;Range&gt;::type
+<a name="l00065"></a>00065 &gt;::type type;
+<a name="l00066"></a>00066 };
 <a name="l00067"></a>00067
-<a name="l00068"></a>00068 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
-<a name="l00069"></a>00069 <span class="keyword">struct </span>fe_point_per_point
-<a name="l00070"></a>00070 {
-<a name="l00071"></a>00071 <span class="keyword">static</span> <span class="keyword">inline</span> Functor apply(
-<a name="l00072"></a>00072 <span class="keyword">typename</span> c_nc&lt;Point, IsConst&gt;::type&amp; point, Functor f)
-<a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 f(point);
-<a name="l00075"></a>00075 <span class="keywordflow">return</span> f;
-<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> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
-<a name="l00080"></a>00080 <span class="keyword">struct </span>fe_point_per_segment
-<a name="l00081"></a>00081 {
-<a name="l00082"></a>00082 <span class="keyword">static</span> <span class="keyword">inline</span> Functor apply(
-<a name="l00083"></a>00083 <span class="keyword">typename</span> c_nc&lt;Point, IsConst&gt;::type&amp; point, Functor f)
-<a name="l00084"></a>00084 {
-<a name="l00085"></a>00085 <span class="keywordflow">return</span> f;
-<a name="l00086"></a>00086 }
-<a name="l00087"></a>00087 };
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
-<a name="l00090"></a>00090 <span class="keyword">struct </span>fe_range_per_point
-<a name="l00091"></a>00091 {
-<a name="l00092"></a>00092 <span class="keyword">static</span> <span class="keyword">inline</span> Functor apply(
-<a name="l00093"></a>00093 <span class="keyword">typename</span> c_nc&lt;Range, IsConst&gt;::type&amp; range,
-<a name="l00094"></a>00094 Functor f)
-<a name="l00095"></a>00095 {
-<a name="l00096"></a>00096 <span class="keywordflow">return</span> (std::for_each(boost::begin(range), boost::end(range), f));
-<a name="l00097"></a>00097 }
-<a name="l00098"></a>00098 };
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
-<a name="l00101"></a>00101 <span class="keyword">struct </span>fe_range_per_segment
-<a name="l00102"></a>00102 {
-<a name="l00103"></a>00103 <span class="keyword">static</span> <span class="keyword">inline</span> Functor apply(
-<a name="l00104"></a>00104 <span class="keyword">typename</span> c_nc&lt;Range, IsConst&gt;::type&amp; range,
-<a name="l00105"></a>00105 Functor f)
-<a name="l00106"></a>00106 {
-<a name="l00107"></a>00107 <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;Range, IsConst&gt;::type</a> iterator_type;
-<a name="l00108"></a>00108
-<a name="l00109"></a>00109 <span class="keyword">typedef</span> <span class="keyword">typename</span> c_nc
-<a name="l00110"></a>00110 &lt;
-<a name="l00111"></a>00111 <span class="keyword">typename</span> point_type&lt;Range&gt;::type, IsConst
-<a name="l00112"></a>00112 &gt;::type point_type;
-<a name="l00113"></a>00113
-<a name="l00114"></a>00114 iterator_type it = boost::begin(range);
-<a name="l00115"></a>00115 iterator_type previous = it++;
-<a name="l00116"></a>00116 <span class="keywordflow">while</span>(it != boost::end(range))
-<a name="l00117"></a>00117 {
-<a name="l00118"></a>00118 segment&lt;point_type&gt; s(*previous, *it);
-<a name="l00119"></a>00119 f(s);
-<a name="l00120"></a>00120 previous = it++;
-<a name="l00121"></a>00121 }
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123 <span class="keywordflow">return</span> f;
-<a name="l00124"></a>00124 }
-<a name="l00125"></a>00125 };
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00070"></a>00070 <span class="keyword">struct </span>fe_point_per_point
+<a name="l00071"></a>00071 {
+<a name="l00072"></a>00072 <span class="keyword">static</span> <span class="keyword">inline</span> Functor apply(
+<a name="l00073"></a>00073 <span class="keyword">typename</span> c_nc&lt;Point, IsConst&gt;::type&amp; point, Functor f)
+<a name="l00074"></a>00074 {
+<a name="l00075"></a>00075 f(point);
+<a name="l00076"></a>00076 <span class="keywordflow">return</span> f;
+<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> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00081"></a>00081 <span class="keyword">struct </span>fe_point_per_segment
+<a name="l00082"></a>00082 {
+<a name="l00083"></a>00083 <span class="keyword">static</span> <span class="keyword">inline</span> Functor apply(
+<a name="l00084"></a>00084 <span class="keyword">typename</span> c_nc&lt;Point, IsConst&gt;::type&amp; point, Functor f)
+<a name="l00085"></a>00085 {
+<a name="l00086"></a>00086 <span class="keywordflow">return</span> f;
+<a name="l00087"></a>00087 }
+<a name="l00088"></a>00088 };
+<a name="l00089"></a>00089
+<a name="l00090"></a>00090 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00091"></a>00091 <span class="keyword">struct </span>fe_range_per_point
+<a name="l00092"></a>00092 {
+<a name="l00093"></a>00093 <span class="keyword">static</span> <span class="keyword">inline</span> Functor apply(
+<a name="l00094"></a>00094 <span class="keyword">typename</span> c_nc&lt;Range, IsConst&gt;::type&amp; range,
+<a name="l00095"></a>00095 Functor f)
+<a name="l00096"></a>00096 {
+<a name="l00097"></a>00097 <span class="keywordflow">return</span> (std::for_each(boost::begin(range), boost::end(range), f));
+<a name="l00098"></a>00098 }
+<a name="l00099"></a>00099 };
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00102"></a>00102 <span class="keyword">struct </span>fe_range_per_segment
+<a name="l00103"></a>00103 {
+<a name="l00104"></a>00104 <span class="keyword">static</span> <span class="keyword">inline</span> Functor apply(
+<a name="l00105"></a>00105 <span class="keyword">typename</span> c_nc&lt;Range, IsConst&gt;::type&amp; range,
+<a name="l00106"></a>00106 Functor f)
+<a name="l00107"></a>00107 {
+<a name="l00108"></a>00108 <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</a>
+<a name="l00109"></a>00109 &lt;
+<a name="l00110"></a>00110 Range, IsConst
+<a name="l00111"></a>00111 &gt;::type iterator_type;
+<a name="l00112"></a>00112
+<a name="l00113"></a>00113 <span class="keyword">typedef</span> <span class="keyword">typename</span> c_nc
+<a name="l00114"></a>00114 &lt;
+<a name="l00115"></a>00115 <span class="keyword">typename</span> point_type&lt;Range&gt;::type, IsConst
+<a name="l00116"></a>00116 &gt;::type point_type;
+<a name="l00117"></a>00117
+<a name="l00118"></a>00118 iterator_type it = boost::begin(range);
+<a name="l00119"></a>00119 iterator_type previous = it++;
+<a name="l00120"></a>00120 <span class="keywordflow">while</span>(it != boost::end(range))
+<a name="l00121"></a>00121 {
+<a name="l00122"></a>00122 segment&lt;point_type&gt; s(*previous, *it);
+<a name="l00123"></a>00123 f(s);
+<a name="l00124"></a>00124 previous = it++;
+<a name="l00125"></a>00125 }
 <a name="l00126"></a>00126
-<a name="l00127"></a>00127
-<a name="l00128"></a>00128 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
-<a name="l00129"></a>00129 <span class="keyword">struct </span>fe_polygon_per_point
-<a name="l00130"></a>00130 {
-<a name="l00131"></a>00131 <span class="keyword">static</span> <span class="keyword">inline</span> Functor apply(
-<a name="l00132"></a>00132 <span class="keyword">typename</span> c_nc&lt;Polygon, IsConst&gt;::type&amp; poly,
-<a name="l00133"></a>00133 Functor f)
-<a name="l00134"></a>00134 {
-<a name="l00135"></a>00135 <span class="keyword">typedef</span> <span class="keyword">typename</span> c_nc_range
-<a name="l00136"></a>00136 &lt;
-<a name="l00137"></a>00137 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type,
-<a name="l00138"></a>00138 IsConst
-<a name="l00139"></a>00139 &gt;::type iterator_type;
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141 <span class="keyword">typedef</span> fe_range_per_point
-<a name="l00142"></a>00142 &lt;
-<a name="l00143"></a>00143 <span class="keyword">typename</span> ring_type&lt;Polygon&gt;::type,
-<a name="l00144"></a>00144 Functor,
-<a name="l00145"></a>00145 IsConst
-<a name="l00146"></a>00146 &gt; per_ring;
-<a name="l00147"></a>00147
-<a name="l00148"></a>00148 f = per_ring::apply(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), f);
-<a name="l00149"></a>00149
-<a name="l00150"></a>00150 <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="l00151"></a>00151 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="l00152"></a>00152 ++it)
-<a name="l00153"></a>00153 {
-<a name="l00154"></a>00154 f = per_ring::apply(*it, f);
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157 <span class="keywordflow">return</span> f;
-<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
-<a name="l00163"></a>00163 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
-<a name="l00164"></a>00164 <span class="keyword">struct </span>fe_polygon_per_segment
-<a name="l00165"></a>00165 {
-<a name="l00166"></a>00166 <span class="keyword">static</span> <span class="keyword">inline</span> Functor apply(
-<a name="l00167"></a>00167 <span class="keyword">typename</span> c_nc&lt;Polygon, IsConst&gt;::type&amp; poly,
-<a name="l00168"></a>00168 Functor f)
-<a name="l00169"></a>00169 {
-<a name="l00170"></a>00170 <span class="keyword">typedef</span> <span class="keyword">typename</span> c_nc_range
-<a name="l00171"></a>00171 &lt;
-<a name="l00172"></a>00172 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type,
-<a name="l00173"></a>00173 IsConst
-<a name="l00174"></a>00174 &gt;::type iterator_type;
-<a name="l00175"></a>00175
-<a name="l00176"></a>00176 <span class="keyword">typedef</span> fe_range_per_segment
-<a name="l00177"></a>00177 &lt;
-<a name="l00178"></a>00178 <span class="keyword">typename</span> ring_type&lt;Polygon&gt;::type,
-<a name="l00179"></a>00179 Functor,
-<a name="l00180"></a>00180 IsConst
-<a name="l00181"></a>00181 &gt; per_ring;
-<a name="l00182"></a>00182
-<a name="l00183"></a>00183 f = per_ring::apply(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), f);
-<a name="l00184"></a>00184
-<a name="l00185"></a>00185 <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="l00186"></a>00186 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="l00187"></a>00187 ++it)
-<a name="l00188"></a>00188 {
-<a name="l00189"></a>00189 f = per_ring::apply(*it, f);
-<a name="l00190"></a>00190 }
-<a name="l00191"></a>00191
-<a name="l00192"></a>00192 <span class="keywordflow">return</span> f;
-<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="comment">// namespace detail::for_each</span>
-<a name="l00198"></a>00198 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
-<a name="l00199"></a>00199 <span class="preprocessor"></span>
+<a name="l00127"></a>00127 <span class="keywordflow">return</span> f;
+<a name="l00128"></a>00128 }
+<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> Polygon, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00133"></a>00133 <span class="keyword">struct </span>fe_polygon_per_point
+<a name="l00134"></a>00134 {
+<a name="l00135"></a>00135 <span class="keyword">static</span> <span class="keyword">inline</span> Functor apply(
+<a name="l00136"></a>00136 <span class="keyword">typename</span> c_nc&lt;Polygon, IsConst&gt;::type&amp; poly,
+<a name="l00137"></a>00137 Functor f)
+<a name="l00138"></a>00138 {
+<a name="l00139"></a>00139 <span class="keyword">typedef</span> <span class="keyword">typename</span> c_nc_range
+<a name="l00140"></a>00140 &lt;
+<a name="l00141"></a>00141 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type,
+<a name="l00142"></a>00142 IsConst
+<a name="l00143"></a>00143 &gt;::type iterator_type;
+<a name="l00144"></a>00144
+<a name="l00145"></a>00145 <span class="keyword">typedef</span> fe_range_per_point
+<a name="l00146"></a>00146 &lt;
+<a name="l00147"></a>00147 <span class="keyword">typename</span> ring_type&lt;Polygon&gt;::type,
+<a name="l00148"></a>00148 Functor,
+<a name="l00149"></a>00149 IsConst
+<a name="l00150"></a>00150 &gt; per_ring;
+<a name="l00151"></a>00151
+<a name="l00152"></a>00152 f = per_ring::apply(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), f);
+<a name="l00153"></a>00153
+<a name="l00154"></a>00154 <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="l00155"></a>00155 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="l00156"></a>00156 ++it)
+<a name="l00157"></a>00157 {
+<a name="l00158"></a>00158 f = per_ring::apply(*it, f);
+<a name="l00159"></a>00159 }
+<a name="l00160"></a>00160
+<a name="l00161"></a>00161 <span class="keywordflow">return</span> f;
+<a name="l00162"></a>00162 }
+<a name="l00163"></a>00163
+<a name="l00164"></a>00164 };
+<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> Polygon, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00168"></a>00168 <span class="keyword">struct </span>fe_polygon_per_segment
+<a name="l00169"></a>00169 {
+<a name="l00170"></a>00170 <span class="keyword">static</span> <span class="keyword">inline</span> Functor apply(
+<a name="l00171"></a>00171 <span class="keyword">typename</span> c_nc&lt;Polygon, IsConst&gt;::type&amp; poly,
+<a name="l00172"></a>00172 Functor f)
+<a name="l00173"></a>00173 {
+<a name="l00174"></a>00174 <span class="keyword">typedef</span> <span class="keyword">typename</span> c_nc_range
+<a name="l00175"></a>00175 &lt;
+<a name="l00176"></a>00176 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type,
+<a name="l00177"></a>00177 IsConst
+<a name="l00178"></a>00178 &gt;::type iterator_type;
+<a name="l00179"></a>00179
+<a name="l00180"></a>00180 <span class="keyword">typedef</span> fe_range_per_segment
+<a name="l00181"></a>00181 &lt;
+<a name="l00182"></a>00182 <span class="keyword">typename</span> ring_type&lt;Polygon&gt;::type,
+<a name="l00183"></a>00183 Functor,
+<a name="l00184"></a>00184 IsConst
+<a name="l00185"></a>00185 &gt; per_ring;
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 f = per_ring::apply(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), f);
+<a name="l00188"></a>00188
+<a name="l00189"></a>00189 <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="l00190"></a>00190 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="l00191"></a>00191 ++it)
+<a name="l00192"></a>00192 {
+<a name="l00193"></a>00193 f = per_ring::apply(*it, f);
+<a name="l00194"></a>00194 }
+<a name="l00195"></a>00195
+<a name="l00196"></a>00196 <span class="keywordflow">return</span> f;
+<a name="l00197"></a>00197 }
+<a name="l00198"></a>00198
+<a name="l00199"></a>00199 };
 <a name="l00200"></a>00200
-<a name="l00201"></a>00201 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
-<a name="l00202"></a>00202 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
-<a name="l00203"></a>00203 {
+<a name="l00201"></a>00201 }} <span class="comment">// namespace detail::for_each</span>
+<a name="l00202"></a>00202 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00203"></a>00203 <span class="preprocessor"></span>
 <a name="l00204"></a>00204
-<a name="l00205"></a>00205 <span class="keyword">template</span>
-<a name="l00206"></a>00206 &lt;
-<a name="l00207"></a>00207 <span class="keyword">typename</span> Tag,
-<a name="l00208"></a>00208 <span class="keywordtype">bool</span> IsMulti,
-<a name="l00209"></a>00209 <span class="keyword">typename</span> Geometry,
-<a name="l00210"></a>00210 <span class="keyword">typename</span> Functor,
-<a name="l00211"></a>00211 <span class="keywordtype">bool</span> IsConst
-<a name="l00212"></a>00212 &gt;
-<a name="l00213"></a>00213 <span class="keyword">struct </span><a class="code" href="group__loop.html#g0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a> {};
-<a name="l00214"></a>00214
-<a name="l00215"></a>00215 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
-<a name="l00216"></a>00216 <span class="keyword">struct </span><a class="code" href="group__loop.html#g0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a>&lt;point_tag, false, Point, Functor, IsConst&gt;
-<a name="l00217"></a>00217 : detail::for_each::fe_point_per_point&lt;Point, Functor, IsConst&gt;
-<a name="l00218"></a>00218 {};
-<a name="l00219"></a>00219
-<a name="l00220"></a>00220 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
-<a name="l00221"></a>00221 <span class="keyword">struct </span><a class="code" href="group__loop.html#g0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a>&lt;linestring_tag, false, Linestring, Functor, IsConst&gt;
-<a name="l00222"></a>00222 : detail::for_each::fe_range_per_point&lt;Linestring, Functor, IsConst&gt;
-<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> Ring, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
-<a name="l00226"></a>00226 <span class="keyword">struct </span><a class="code" href="group__loop.html#g0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a>&lt;ring_tag, false, Ring, Functor, IsConst&gt;
-<a name="l00227"></a>00227 : detail::for_each::fe_range_per_point&lt;Ring, Functor, IsConst&gt;
-<a name="l00228"></a>00228 {};
-<a name="l00229"></a>00229
-<a name="l00230"></a>00230 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
-<a name="l00231"></a>00231 <span class="keyword">struct </span><a class="code" href="group__loop.html#g0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a>&lt;polygon_tag, false, Polygon, Functor, IsConst&gt;
-<a name="l00232"></a>00232 : detail::for_each::fe_polygon_per_point&lt;Polygon, Functor, IsConst&gt;
-<a name="l00233"></a>00233 {};
-<a name="l00234"></a>00234
-<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>
-<a name="l00239"></a>00239 &lt;
-<a name="l00240"></a>00240 <span class="keyword">typename</span> Tag,
-<a name="l00241"></a>00241 <span class="keywordtype">bool</span> IsMulti,
-<a name="l00242"></a>00242 <span class="keyword">typename</span> Geometry,
-<a name="l00243"></a>00243 <span class="keyword">typename</span> Functor,
-<a name="l00244"></a>00244 <span class="keywordtype">bool</span> IsConst
-<a name="l00245"></a>00245 &gt;
-<a name="l00246"></a>00246 <span class="keyword">struct </span><a class="code" href="group__loop.html#ge8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a> {};
-<a name="l00247"></a>00247
-<a name="l00248"></a>00248 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
-<a name="l00249"></a>00249 <span class="keyword">struct </span><a class="code" href="group__loop.html#ge8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a>&lt;point_tag, false, Point, Functor, IsConst&gt;
-<a name="l00250"></a>00250 : detail::for_each::fe_point_per_segment&lt;Point, Functor, IsConst&gt;
-<a name="l00251"></a>00251 {};
-<a name="l00252"></a>00252
-<a name="l00253"></a>00253 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
-<a name="l00254"></a>00254 <span class="keyword">struct </span><a class="code" href="group__loop.html#ge8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a>&lt;linestring_tag, false, Linestring, Functor, IsConst&gt;
-<a name="l00255"></a>00255 : detail::for_each::fe_range_per_segment&lt;Linestring, Functor, IsConst&gt;
-<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> Ring, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
-<a name="l00259"></a>00259 <span class="keyword">struct </span><a class="code" href="group__loop.html#ge8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a>&lt;ring_tag, false, Ring, Functor, IsConst&gt;
-<a name="l00260"></a>00260 : detail::for_each::fe_range_per_segment&lt;Ring, Functor, IsConst&gt;
-<a name="l00261"></a>00261 {};
-<a name="l00262"></a>00262
-<a name="l00263"></a>00263 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
-<a name="l00264"></a>00264 <span class="keyword">struct </span><a class="code" href="group__loop.html#ge8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a>&lt;polygon_tag, false, Polygon, Functor, IsConst&gt;
-<a name="l00265"></a>00265 : detail::for_each::fe_polygon_per_segment&lt;Polygon, Functor, IsConst&gt;
-<a name="l00266"></a>00266 {};
-<a name="l00267"></a>00267
-<a name="l00268"></a>00268
-<a name="l00269"></a>00269 } <span class="comment">// namespace dispatch</span>
-<a name="l00270"></a>00270 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
-<a name="l00271"></a>00271 <span class="preprocessor"></span>
-<a name="l00279"></a>00279 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Functor&gt;
-<a name="l00280"></a><a class="code" href="group__loop.html#g0cdb7f23bf7395ba3f385e9cf01a601f">00280</a> <span class="keyword">inline</span> Functor <a class="code" href="group__loop.html#g0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a>(Geometry <span class="keyword">const</span>&amp; geometry, Functor f)
-<a name="l00281"></a>00281 {
-<a name="l00282"></a>00282 <span class="keywordflow">return</span> <a class="code" href="group__loop.html#g0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">dispatch::for_each_point</a>
-<a name="l00283"></a>00283 &lt;
-<a name="l00284"></a>00284 <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="l00285"></a>00285 <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="l00286"></a>00286 Geometry,
-<a name="l00287"></a>00287 Functor,
-<a name="l00288"></a>00288 <span class="keyword">true</span>
-<a name="l00289"></a>00289 &gt;::apply(geometry, f);
-<a name="l00290"></a>00290 }
-<a name="l00291"></a>00291
-<a name="l00299"></a>00299 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Functor&gt;
-<a name="l00300"></a><a class="code" href="group__loop.html#g66bf40f0ee4dc883d9d3b621aeb2e81d">00300</a> <span class="keyword">inline</span> Functor <a class="code" href="group__loop.html#g0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a>(Geometry&amp; geometry, Functor f)
-<a name="l00301"></a>00301 {
-<a name="l00302"></a>00302 <span class="keywordflow">return</span> <a class="code" href="group__loop.html#g0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">dispatch::for_each_point</a>
-<a name="l00303"></a>00303 &lt;
-<a name="l00304"></a>00304 <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="l00305"></a>00305 <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="l00306"></a>00306 Geometry,
-<a name="l00307"></a>00307 Functor,
-<a name="l00308"></a>00308 <span class="keyword">false</span>
-<a name="l00309"></a>00309 &gt;::apply(geometry, f);
-<a name="l00310"></a>00310 }
-<a name="l00311"></a>00311
-<a name="l00319"></a>00319 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Functor&gt;
-<a name="l00320"></a><a class="code" href="group__loop.html#ge8453eab0e9db146184d7ccef687a33e">00320</a> <span class="keyword">inline</span> Functor <a class="code" href="group__loop.html#ge8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a>(Geometry <span class="keyword">const</span>&amp; geometry, Functor f)
-<a name="l00321"></a>00321 {
-<a name="l00322"></a>00322 <span class="keywordflow">return</span> <a class="code" href="group__loop.html#ge8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">dispatch::for_each_segment</a>
-<a name="l00323"></a>00323 &lt;
-<a name="l00324"></a>00324 <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="l00325"></a>00325 <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="l00326"></a>00326 Geometry,
-<a name="l00327"></a>00327 Functor,
-<a name="l00328"></a>00328 <span class="keyword">true</span>
-<a name="l00329"></a>00329 &gt;::apply(geometry, f);
-<a name="l00330"></a>00330 }
-<a name="l00331"></a>00331
+<a name="l00205"></a>00205 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00206"></a>00206 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00207"></a>00207 {
+<a name="l00208"></a>00208
+<a name="l00209"></a>00209 <span class="keyword">template</span>
+<a name="l00210"></a>00210 &lt;
+<a name="l00211"></a>00211 <span class="keyword">typename</span> Tag,
+<a name="l00212"></a>00212 <span class="keywordtype">bool</span> IsMulti,
+<a name="l00213"></a>00213 <span class="keyword">typename</span> Geometry,
+<a name="l00214"></a>00214 <span class="keyword">typename</span> Functor,
+<a name="l00215"></a>00215 <span class="keywordtype">bool</span> IsConst
+<a name="l00216"></a>00216 &gt;
+<a name="l00217"></a>00217 <span class="keyword">struct </span><a class="code" href="group__loop.html#g0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a> {};
+<a name="l00218"></a>00218
+<a name="l00219"></a>00219 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00220"></a>00220 <span class="keyword">struct </span><a class="code" href="group__loop.html#g0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a>&lt;point_tag, false, Point, Functor, IsConst&gt;
+<a name="l00221"></a>00221 : detail::for_each::fe_point_per_point&lt;Point, Functor, IsConst&gt;
+<a name="l00222"></a>00222 {};
+<a name="l00223"></a>00223
+<a name="l00224"></a>00224 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00225"></a>00225 <span class="keyword">struct </span><a class="code" href="group__loop.html#g0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a>&lt;linestring_tag, false, Linestring, Functor, IsConst&gt;
+<a name="l00226"></a>00226 : detail::for_each::fe_range_per_point&lt;Linestring, Functor, IsConst&gt;
+<a name="l00227"></a>00227 {};
+<a name="l00228"></a>00228
+<a name="l00229"></a>00229 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00230"></a>00230 <span class="keyword">struct </span><a class="code" href="group__loop.html#g0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a>&lt;ring_tag, false, Ring, Functor, IsConst&gt;
+<a name="l00231"></a>00231 : detail::for_each::fe_range_per_point&lt;Ring, Functor, IsConst&gt;
+<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> Polygon, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00235"></a>00235 <span class="keyword">struct </span><a class="code" href="group__loop.html#g0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a>&lt;polygon_tag, false, Polygon, Functor, IsConst&gt;
+<a name="l00236"></a>00236 : detail::for_each::fe_polygon_per_point&lt;Polygon, Functor, IsConst&gt;
+<a name="l00237"></a>00237 {};
+<a name="l00238"></a>00238
+<a name="l00239"></a>00239
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241
+<a name="l00242"></a>00242 <span class="keyword">template</span>
+<a name="l00243"></a>00243 &lt;
+<a name="l00244"></a>00244 <span class="keyword">typename</span> Tag,
+<a name="l00245"></a>00245 <span class="keywordtype">bool</span> IsMulti,
+<a name="l00246"></a>00246 <span class="keyword">typename</span> Geometry,
+<a name="l00247"></a>00247 <span class="keyword">typename</span> Functor,
+<a name="l00248"></a>00248 <span class="keywordtype">bool</span> IsConst
+<a name="l00249"></a>00249 &gt;
+<a name="l00250"></a>00250 <span class="keyword">struct </span><a class="code" href="group__loop.html#ge8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a> {};
+<a name="l00251"></a>00251
+<a name="l00252"></a>00252 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00253"></a>00253 <span class="keyword">struct </span><a class="code" href="group__loop.html#ge8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a>&lt;point_tag, false, Point, Functor, IsConst&gt;
+<a name="l00254"></a>00254 : detail::for_each::fe_point_per_segment&lt;Point, Functor, IsConst&gt;
+<a name="l00255"></a>00255 {};
+<a name="l00256"></a>00256
+<a name="l00257"></a>00257 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00258"></a>00258 <span class="keyword">struct </span><a class="code" href="group__loop.html#ge8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a>&lt;linestring_tag, false, Linestring, Functor, IsConst&gt;
+<a name="l00259"></a>00259 : detail::for_each::fe_range_per_segment&lt;Linestring, Functor, IsConst&gt;
+<a name="l00260"></a>00260 {};
+<a name="l00261"></a>00261
+<a name="l00262"></a>00262 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00263"></a>00263 <span class="keyword">struct </span><a class="code" href="group__loop.html#ge8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a>&lt;ring_tag, false, Ring, Functor, IsConst&gt;
+<a name="l00264"></a>00264 : detail::for_each::fe_range_per_segment&lt;Ring, Functor, IsConst&gt;
+<a name="l00265"></a>00265 {};
+<a name="l00266"></a>00266
+<a name="l00267"></a>00267 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00268"></a>00268 <span class="keyword">struct </span><a class="code" href="group__loop.html#ge8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a>&lt;polygon_tag, false, Polygon, Functor, IsConst&gt;
+<a name="l00269"></a>00269 : detail::for_each::fe_polygon_per_segment&lt;Polygon, Functor, IsConst&gt;
+<a name="l00270"></a>00270 {};
+<a name="l00271"></a>00271
+<a name="l00272"></a>00272
+<a name="l00273"></a>00273 } <span class="comment">// namespace dispatch</span>
+<a name="l00274"></a>00274 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00275"></a>00275 <span class="preprocessor"></span>
+<a name="l00283"></a>00283 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Functor&gt;
+<a name="l00284"></a><a class="code" href="group__loop.html#g0cdb7f23bf7395ba3f385e9cf01a601f">00284</a> <span class="keyword">inline</span> Functor <a class="code" href="group__loop.html#g0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a>(Geometry <span class="keyword">const</span>&amp; geometry, Functor f)
+<a name="l00285"></a>00285 {
+<a name="l00286"></a>00286 concept::check&lt;const Geometry&gt;();
+<a name="l00287"></a>00287
+<a name="l00288"></a>00288 <span class="keywordflow">return</span> <a class="code" href="group__loop.html#g0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">dispatch::for_each_point</a>
+<a name="l00289"></a>00289 &lt;
+<a name="l00290"></a>00290 <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="l00291"></a>00291 <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="l00292"></a>00292 Geometry,
+<a name="l00293"></a>00293 Functor,
+<a name="l00294"></a>00294 <span class="keyword">true</span>
+<a name="l00295"></a>00295 &gt;::apply(geometry, f);
+<a name="l00296"></a>00296 }
+<a name="l00297"></a>00297
+<a name="l00305"></a>00305 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Functor&gt;
+<a name="l00306"></a><a class="code" href="group__loop.html#g66bf40f0ee4dc883d9d3b621aeb2e81d">00306</a> <span class="keyword">inline</span> Functor <a class="code" href="group__loop.html#g0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a>(Geometry&amp; geometry, Functor f)
+<a name="l00307"></a>00307 {
+<a name="l00308"></a>00308 concept::check&lt;Geometry&gt;();
+<a name="l00309"></a>00309
+<a name="l00310"></a>00310 <span class="keywordflow">return</span> <a class="code" href="group__loop.html#g0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">dispatch::for_each_point</a>
+<a name="l00311"></a>00311 &lt;
+<a name="l00312"></a>00312 <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="l00313"></a>00313 <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="l00314"></a>00314 Geometry,
+<a name="l00315"></a>00315 Functor,
+<a name="l00316"></a>00316 <span class="keyword">false</span>
+<a name="l00317"></a>00317 &gt;::apply(geometry, f);
+<a name="l00318"></a>00318 }
+<a name="l00319"></a>00319
+<a name="l00328"></a>00328 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Functor&gt;
+<a name="l00329"></a><a class="code" href="group__loop.html#ge8453eab0e9db146184d7ccef687a33e">00329</a> <span class="keyword">inline</span> Functor <a class="code" href="group__loop.html#ge8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a>(Geometry <span class="keyword">const</span>&amp; geometry, Functor f)
+<a name="l00330"></a>00330 {
+<a name="l00331"></a>00331 concept::check&lt;const Geometry&gt;();
 <a name="l00332"></a>00332
-<a name="l00340"></a>00340 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Functor&gt;
-<a name="l00341"></a><a class="code" href="group__loop.html#g529f5655aa7702e9f143263b484ff91b">00341</a> <span class="keyword">inline</span> Functor <a class="code" href="group__loop.html#ge8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a>(Geometry&amp; geometry, Functor f)
-<a name="l00342"></a>00342 {
-<a name="l00343"></a>00343 <span class="keywordflow">return</span> <a class="code" href="group__loop.html#ge8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">dispatch::for_each_segment</a>
-<a name="l00344"></a>00344 &lt;
-<a name="l00345"></a>00345 <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="l00346"></a>00346 <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="l00347"></a>00347 Geometry,
-<a name="l00348"></a>00348 Functor,
-<a name="l00349"></a>00349 <span class="keyword">false</span>
-<a name="l00350"></a>00350 &gt;::apply(geometry, f);
-<a name="l00351"></a>00351 }
-<a name="l00352"></a>00352
-<a name="l00353"></a>00353 } <span class="comment">// namespace ggl</span>
-<a name="l00354"></a>00354
-<a name="l00355"></a>00355 <span class="preprocessor">#endif // GGL_ALGORITHMS_FOR_EACH_HPP</span>
+<a name="l00333"></a>00333 <span class="keywordflow">return</span> <a class="code" href="group__loop.html#ge8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">dispatch::for_each_segment</a>
+<a name="l00334"></a>00334 &lt;
+<a name="l00335"></a>00335 <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="l00336"></a>00336 <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="l00337"></a>00337 Geometry,
+<a name="l00338"></a>00338 Functor,
+<a name="l00339"></a>00339 <span class="keyword">true</span>
+<a name="l00340"></a>00340 &gt;::apply(geometry, f);
+<a name="l00341"></a>00341 }
+<a name="l00342"></a>00342
+<a name="l00343"></a>00343
+<a name="l00351"></a>00351 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Functor&gt;
+<a name="l00352"></a><a class="code" href="group__loop.html#g529f5655aa7702e9f143263b484ff91b">00352</a> <span class="keyword">inline</span> Functor <a class="code" href="group__loop.html#ge8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a>(Geometry&amp; geometry, Functor f)
+<a name="l00353"></a>00353 {
+<a name="l00354"></a>00354 concept::check&lt;Geometry&gt;();
+<a name="l00355"></a>00355
+<a name="l00356"></a>00356 <span class="keywordflow">return</span> <a class="code" href="group__loop.html#ge8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">dispatch::for_each_segment</a>
+<a name="l00357"></a>00357 &lt;
+<a name="l00358"></a>00358 <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="l00359"></a>00359 <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="l00360"></a>00360 Geometry,
+<a name="l00361"></a>00361 Functor,
+<a name="l00362"></a>00362 <span class="keyword">false</span>
+<a name="l00363"></a>00363 &gt;::apply(geometry, f);
+<a name="l00364"></a>00364 }
+<a name="l00365"></a>00365
+<a name="l00366"></a>00366 } <span class="comment">// namespace ggl</span>
+<a name="l00367"></a>00367
+<a name="l00368"></a>00368 <span class="preprocessor">#endif // GGL_ALGORITHMS_FOR_EACH_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_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-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -52,70 +52,70 @@
 <a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_GET_SECTION_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_check.hpp&gt;</span>
-<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/concept/requires.hpp&gt;</span>
-<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
-<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="access_8hpp.html">ggl/core/access.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="l00013"></a>00013 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<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
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="access_8hpp.html">ggl/core/access.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
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="iterators_2vertex__iterator_8hpp.html">ggl/iterators/vertex_iterator.hpp</a>&gt;</span>
 <a name="l00022"></a>00022
-<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="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="segment_8hpp.html">ggl/geometries/segment.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="l00025"></a>00025
 <a name="l00026"></a>00026
-<a name="l00027"></a>00027
-<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
-<a name="l00033"></a>00033 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
-<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
-<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#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_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 {
-<a name="l00044"></a>00044 begin = boost::begin(geometry) + section.begin_index;
-<a name="l00045"></a>00045 end = boost::begin(geometry) + section.end_index + 1;
-<a name="l00046"></a>00046 }
-<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#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_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 {
-<a name="l00056"></a>00056 <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.">ggl::ring_type&lt;Polygon&gt;::type</a> ring_type;
-<a name="l00057"></a>00057 ring_type <span class="keyword">const</span>&amp; ring = section.ring_index &lt; 0
-<a name="l00058"></a>00058 ? <a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">ggl::exterior_ring</a>(polygon)
-<a name="l00059"></a>00059 : ggl::<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(polygon)[section.ring_index];
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061 begin = boost::begin(ring) + section.begin_index;
-<a name="l00062"></a>00062 end = boost::begin(ring) + section.end_index + 1;
-<a name="l00063"></a>00063 }
-<a name="l00064"></a>00064 };
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066 } <span class="comment">// namespace dispatch</span>
-<a name="l00067"></a>00067 <span class="preprocessor">#endif</span>
-<a name="l00068"></a>00068 <span class="preprocessor"></span>
+<a name="l00027"></a>00027 <span class="keyword">namespace </span>ggl
+<a name="l00028"></a>00028 {
+<a name="l00029"></a>00029
+<a name="l00030"></a>00030
+<a name="l00031"></a>00031 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00033"></a>00033 {
+<a name="l00034"></a>00034
+<a name="l00035"></a>00035 <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="l00036"></a>00036 <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="l00037"></a>00037 {
+<a name="l00038"></a>00038 <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="l00039"></a>00039 <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="l00040"></a>00040 iterator_type&amp; begin, iterator_type&amp; end)
+<a name="l00041"></a>00041 {
+<a name="l00042"></a>00042 begin = boost::begin(geometry) + section.begin_index;
+<a name="l00043"></a>00043 end = boost::begin(geometry) + section.end_index + 1;
+<a name="l00044"></a>00044 }
+<a name="l00045"></a>00045 };
+<a name="l00046"></a>00046
+<a name="l00047"></a>00047 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Section&gt;
+<a name="l00048"></a>00048 <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="l00049"></a>00049 {
+<a name="l00050"></a>00050 <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="l00051"></a>00051 <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="l00052"></a>00052 iterator_type&amp; begin, iterator_type&amp; end)
+<a name="l00053"></a>00053 {
+<a name="l00054"></a>00054 <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.">ggl::ring_type&lt;Polygon&gt;::type</a> ring_type;
+<a name="l00055"></a>00055 ring_type <span class="keyword">const</span>&amp; ring = section.ring_index &lt; 0
+<a name="l00056"></a>00056 ? <a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">ggl::exterior_ring</a>(polygon)
+<a name="l00057"></a>00057 : ggl::<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(polygon)[section.ring_index];
+<a name="l00058"></a>00058
+<a name="l00059"></a>00059 begin = boost::begin(ring) + section.begin_index;
+<a name="l00060"></a>00060 end = boost::begin(ring) + section.end_index + 1;
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062 };
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 } <span class="comment">// namespace dispatch</span>
+<a name="l00065"></a>00065 <span class="preprocessor">#endif</span>
+<a name="l00066"></a>00066 <span class="preprocessor"></span>
+<a name="l00067"></a>00067
+<a name="l00068"></a>00068
 <a name="l00069"></a>00069
-<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#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="l00082"></a>00082 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Section&gt;
+<a name="l00083"></a><a class="code" href="group__sectionalize.html#gb862f6c883bcc3baddda33c91298b48a">00083</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="l00084"></a>00084 <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="l00085"></a>00085 <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="l00086"></a>00086 {
+<a name="l00087"></a>00087 concept::check&lt;const Geometry&gt;();
+<a name="l00088"></a>00088
 <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>,

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-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -55,387 +55,390 @@
 <a name="l00013"></a>00013
 <a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/mpl/if.hpp&gt;</span>
 <a name="l00015"></a>00015
-<a name="l00016"></a>00016
-<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="intersection__linestring_8hpp.html">ggl/algorithms/intersection_linestring.hpp</a>&gt;</span>
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="get__intersection__points_8hpp.html">ggl/algorithms/overlay/get_intersection_points.hpp</a>&gt;</span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="merge__intersection__points_8hpp.html">ggl/algorithms/overlay/merge_intersection_points.hpp</a>&gt;</span>
-<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="adapt__turns_8hpp.html">ggl/algorithms/overlay/adapt_turns.hpp</a>&gt;</span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="enrich__intersection__points_8hpp.html">ggl/algorithms/overlay/enrich_intersection_points.hpp</a>&gt;</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="traverse_8hpp.html">ggl/algorithms/overlay/traverse.hpp</a>&gt;</span>
-<a name="l00024"></a>00024
-<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="assign_8hpp.html">ggl/algorithms/assign.hpp</a>&gt;</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;<a class="code" href="convert_8hpp.html">ggl/algorithms/convert.hpp</a>&gt;</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;<a class="code" href="algorithms_2within_8hpp.html">ggl/algorithms/within.hpp</a>&gt;</span>
-<a name="l00028"></a>00028
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="intersection__linestring_8hpp.html">ggl/algorithms/intersection_linestring.hpp</a>&gt;</span>
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="get__intersection__points_8hpp.html">ggl/algorithms/overlay/get_intersection_points.hpp</a>&gt;</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="merge__intersection__points_8hpp.html">ggl/algorithms/overlay/merge_intersection_points.hpp</a>&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="adapt__turns_8hpp.html">ggl/algorithms/overlay/adapt_turns.hpp</a>&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="enrich__intersection__points_8hpp.html">ggl/algorithms/overlay/enrich_intersection_points.hpp</a>&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="traverse_8hpp.html">ggl/algorithms/overlay/traverse.hpp</a>&gt;</span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;<a class="code" href="assign_8hpp.html">ggl/algorithms/assign.hpp</a>&gt;</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;<a class="code" href="convert_8hpp.html">ggl/algorithms/convert.hpp</a>&gt;</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;<a class="code" href="algorithms_2within_8hpp.html">ggl/algorithms/within.hpp</a>&gt;</span>
 <a name="l00029"></a>00029
 <a name="l00030"></a>00030
-<a name="l00076"></a>00076 <span class="keyword">namespace </span>ggl
-<a name="l00077"></a>00077 {
-<a name="l00078"></a>00078
+<a name="l00031"></a>00031
+<a name="l00077"></a>00077 <span class="keyword">namespace </span>ggl
+<a name="l00078"></a>00078 {
 <a name="l00079"></a>00079
-<a name="l00080"></a>00080 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
-<a name="l00081"></a>00081 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a> {
-<a name="l00082"></a>00082
+<a name="l00080"></a>00080
+<a name="l00081"></a>00081 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00082"></a>00082 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a> {
 <a name="l00083"></a>00083
-<a name="l00084"></a>00084 <span class="keyword">template</span>
-<a name="l00085"></a>00085 &lt;
-<a name="l00086"></a>00086 <span class="keyword">typename</span> Polygon1, <span class="keyword">typename</span> Polygon2,
-<a name="l00087"></a>00087 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
-<a name="l00088"></a>00088 &gt;
-<a name="l00089"></a>00089 <span class="keyword">struct </span>intersection_polygon_polygon
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Polygon1 <span class="keyword">const</span>&amp; polygon1,
-<a name="l00092"></a>00092 Polygon2 <span class="keyword">const</span>&amp; polygon2, OutputIterator out)
-<a name="l00093"></a>00093 {
-<a name="l00094"></a>00094 <span class="keyword">typedef</span> detail::intersection::intersection_point
-<a name="l00095"></a>00095 &lt;
-<a name="l00096"></a>00096 <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;GeometryOut&gt;::type</a>
-<a name="l00097"></a>00097 &gt; ip_type;
-<a name="l00098"></a>00098 <span class="keyword">typedef</span> std::deque&lt;ip_type&gt; ips_container;
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <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.">ggl::ring_type&lt;GeometryOut&gt;::type</a> ring_type;
-<a name="l00101"></a>00101
-<a name="l00102"></a>00102 ips_container ips;
-<a name="l00103"></a>00103
-<a name="l00104"></a>00104 <span class="keywordtype">bool</span> trivial = <a class="code" href="group__overlay.html#g9b41efeface4cb10fbce39c8bcc8bec9" title="Calculate intersection points of two geometries.">ggl::get_intersection_points</a>(polygon1, polygon2, ips);
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <span class="keywordflow">if</span> (ips.size() &lt;= 0)
-<a name="l00107"></a>00107 {
-<a name="l00108"></a>00108 <span class="comment">// If there are no IP-s, check if one point is in other polygon</span>
-<a name="l00109"></a>00109 <span class="comment">// assume both polygons having points</span>
-<a name="l00110"></a>00110 <span class="keywordflow">if</span> (<a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">ggl::within</a>(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">ggl::exterior_ring</a>(polygon1).front(), polygon2))
-<a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <span class="comment">// Assume same type (output = input)</span>
-<a name="l00113"></a>00113 <span class="comment">// TODO: solve this (we go to specialize again...)</span>
-<a name="l00114"></a>00114 *out = polygon1;
-<a name="l00115"></a>00115 out++;
-<a name="l00116"></a>00116 }
-<a name="l00117"></a>00117 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">ggl::within</a>(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">ggl::exterior_ring</a>(polygon2).front(), polygon1))
-<a name="l00118"></a>00118 {
-<a name="l00119"></a>00119 *out = polygon2;
-<a name="l00120"></a>00120 out++;
-<a name="l00121"></a>00121 }
-<a name="l00122"></a>00122 }
-<a name="l00123"></a>00123 <span class="keywordflow">else</span>
-<a name="l00124"></a>00124 {
-<a name="l00125"></a>00125 <span class="keywordflow">if</span> (! trivial)
-<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 <a class="code" href="group__overlay.html#gc1dcd7471f802810f7d48b36eea24d0f" title="Merges intersection points such that points at the same location will be merged,...">ggl::merge_intersection_points</a>(ips);
-<a name="l00128"></a>00128 <a class="code" href="namespaceggl.html#a8f29c6cbf3f88d5926a127c76976027">ggl::adapt_turns</a>(ips);
-<a name="l00129"></a>00129
-<a name="l00130"></a>00130 }
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132 <a class="code" href="group__overlay.html#g379db9c2e9741b685302a21f86ea24f3" title="All intersection points are enriched with successor information.">ggl::enrich_intersection_points</a>(ips, trivial);
-<a name="l00133"></a>00133
+<a name="l00084"></a>00084
+<a name="l00085"></a>00085 <span class="keyword">template</span>
+<a name="l00086"></a>00086 &lt;
+<a name="l00087"></a>00087 <span class="keyword">typename</span> Polygon1, <span class="keyword">typename</span> Polygon2,
+<a name="l00088"></a>00088 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
+<a name="l00089"></a>00089 &gt;
+<a name="l00090"></a>00090 <span class="keyword">struct </span>intersection_polygon_polygon
+<a name="l00091"></a>00091 {
+<a name="l00092"></a>00092 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Polygon1 <span class="keyword">const</span>&amp; polygon1,
+<a name="l00093"></a>00093 Polygon2 <span class="keyword">const</span>&amp; polygon2, OutputIterator out)
+<a name="l00094"></a>00094 {
+<a name="l00095"></a>00095 <span class="keyword">typedef</span> detail::intersection::intersection_point
+<a name="l00096"></a>00096 &lt;
+<a name="l00097"></a>00097 <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;GeometryOut&gt;::type</a>
+<a name="l00098"></a>00098 &gt; ip_type;
+<a name="l00099"></a>00099 <span class="keyword">typedef</span> std::deque&lt;ip_type&gt; ips_container;
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <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.">ggl::ring_type&lt;GeometryOut&gt;::type</a> ring_type;
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 ips_container ips;
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105 <span class="keywordtype">bool</span> trivial = <a class="code" href="group__overlay.html#g9b41efeface4cb10fbce39c8bcc8bec9" title="Calculate intersection points of two geometries.">ggl::get_intersection_points</a>(polygon1, polygon2, ips);
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107 <span class="keywordflow">if</span> (ips.size() &lt;= 0)
+<a name="l00108"></a>00108 {
+<a name="l00109"></a>00109 <span class="comment">// If there are no IP-s, check if one point is in other polygon</span>
+<a name="l00110"></a>00110 <span class="comment">// assume both polygons having points</span>
+<a name="l00111"></a>00111 <span class="keywordflow">if</span> (<a class="code" href="group__boolean__relations.html#g599c2aa76cf2037eb40514e449ace28d" title="Within check.">ggl::within</a>(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">ggl::exterior_ring</a>(polygon1).front(), polygon2))
+<a name="l00112"></a>00112 {
+<a name="l00113"></a>00113 <span class="comment">// Assume same type (output = input)</span>
+<a name="l00114"></a>00114 <span class="comment">// TODO: solve this (we go to specialize again...)</span>
+<a name="l00115"></a>00115 *out = polygon1;
+<a name="l00116"></a>00116 out++;
+<a name="l00117"></a>00117 }
+<a name="l00118"></a>00118 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="group__boolean__relations.html#g599c2aa76cf2037eb40514e449ace28d" title="Within check.">ggl::within</a>(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">ggl::exterior_ring</a>(polygon2).front(), polygon1))
+<a name="l00119"></a>00119 {
+<a name="l00120"></a>00120 *out = polygon2;
+<a name="l00121"></a>00121 out++;
+<a name="l00122"></a>00122 }
+<a name="l00123"></a>00123 }
+<a name="l00124"></a>00124 <span class="keywordflow">else</span>
+<a name="l00125"></a>00125 {
+<a name="l00126"></a>00126 <span class="keywordflow">if</span> (! trivial)
+<a name="l00127"></a>00127 {
+<a name="l00128"></a>00128 <a class="code" href="group__overlay.html#gc1dcd7471f802810f7d48b36eea24d0f" title="Merges intersection points such that points at the same location will be merged,...">ggl::merge_intersection_points</a>(ips);
+<a name="l00129"></a>00129 <a class="code" href="namespaceggl.html#a8f29c6cbf3f88d5926a127c76976027">ggl::adapt_turns</a>(ips);
+<a name="l00130"></a>00130
+<a name="l00131"></a>00131 }
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133 <a class="code" href="group__overlay.html#g379db9c2e9741b685302a21f86ea24f3" title="All intersection points are enriched with successor information.">ggl::enrich_intersection_points</a>(ips, trivial);
 <a name="l00134"></a>00134
-<a name="l00135"></a>00135 std::vector&lt;ring_type&gt; v;
-<a name="l00136"></a>00136 ggl::traverse&lt;ring_type&gt;
-<a name="l00137"></a>00137 (
-<a name="l00138"></a>00138 polygon1,
-<a name="l00139"></a>00139 polygon2,
-<a name="l00140"></a>00140 -1,
-<a name="l00141"></a>00141 ips,
-<a name="l00142"></a>00142 trivial,
-<a name="l00143"></a>00143 std::back_inserter(v)
-<a name="l00144"></a>00144 );
-<a name="l00145"></a>00145
+<a name="l00135"></a>00135
+<a name="l00136"></a>00136 std::vector&lt;ring_type&gt; v;
+<a name="l00137"></a>00137 ggl::traverse&lt;ring_type&gt;
+<a name="l00138"></a>00138 (
+<a name="l00139"></a>00139 polygon1,
+<a name="l00140"></a>00140 polygon2,
+<a name="l00141"></a>00141 -1,
+<a name="l00142"></a>00142 ips,
+<a name="l00143"></a>00143 trivial,
+<a name="l00144"></a>00144 std::back_inserter(v)
+<a name="l00145"></a>00145 );
 <a name="l00146"></a>00146
-<a name="l00147"></a>00147 <span class="comment">// TODO:</span>
-<a name="l00148"></a>00148 <span class="comment">// assemble rings / inner rings / to polygons</span>
-<a name="l00149"></a>00149 <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector&lt;ring_type&gt;::const_iterator it = v.begin();
-<a name="l00150"></a>00150 it != v.end(); ++it)
-<a name="l00151"></a>00151 {
-<a name="l00152"></a>00152 <span class="comment">// How can we avoid the double copy here! It is really bad!</span>
-<a name="l00153"></a>00153 <span class="comment">// We have to create a polygon, then copy it to the output iterator.</span>
-<a name="l00154"></a>00154 <span class="comment">// Having an output-vector would have been better: append it to the vector!</span>
-<a name="l00155"></a>00155 <span class="comment">// So output iterators are not that good.</span>
-<a name="l00156"></a>00156 GeometryOut poly;
-<a name="l00157"></a>00157 poly.outer() = *it;
-<a name="l00158"></a>00158 *out = poly;
-<a name="l00159"></a>00159 out++;
-<a name="l00160"></a>00160 }
-<a name="l00161"></a>00161 }
-<a name="l00162"></a>00162
+<a name="l00147"></a>00147
+<a name="l00148"></a>00148 <span class="comment">// TODO:</span>
+<a name="l00149"></a>00149 <span class="comment">// assemble rings / inner rings / to polygons</span>
+<a name="l00150"></a>00150 <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector&lt;ring_type&gt;::const_iterator it = v.begin();
+<a name="l00151"></a>00151 it != v.end(); ++it)
+<a name="l00152"></a>00152 {
+<a name="l00153"></a>00153 <span class="comment">// How can we avoid the double copy here! It is really bad!</span>
+<a name="l00154"></a>00154 <span class="comment">// We have to create a polygon, then copy it to the output iterator.</span>
+<a name="l00155"></a>00155 <span class="comment">// Having an output-vector would have been better: append it to the vector!</span>
+<a name="l00156"></a>00156 <span class="comment">// So output iterators are not that good.</span>
+<a name="l00157"></a>00157 GeometryOut poly;
+<a name="l00158"></a>00158 poly.outer() = *it;
+<a name="l00159"></a>00159 *out = poly;
+<a name="l00160"></a>00160 out++;
+<a name="l00161"></a>00161 }
+<a name="l00162"></a>00162 }
 <a name="l00163"></a>00163
-<a name="l00164"></a>00164 <span class="keywordflow">return</span> out;
-<a name="l00165"></a>00165 }
-<a name="l00166"></a>00166 };
-<a name="l00167"></a>00167
+<a name="l00164"></a>00164
+<a name="l00165"></a>00165 <span class="keywordflow">return</span> out;
+<a name="l00166"></a>00166 }
+<a name="l00167"></a>00167 };
 <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>
-<a name="l00172"></a>00172 &lt;
-<a name="l00173"></a>00173 <span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Box,
-<a name="l00174"></a>00174 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
-<a name="l00175"></a>00175 &gt;
-<a name="l00176"></a>00176 <span class="keyword">struct </span>intersection_polygon_box
-<a name="l00177"></a>00177 {
-<a name="l00178"></a>00178 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Polygon <span class="keyword">const</span>&amp; polygon,
-<a name="l00179"></a>00179 Box <span class="keyword">const</span>&amp; box, OutputIterator out)
-<a name="l00180"></a>00180 {
-<a name="l00181"></a>00181 <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.">ggl::point_type&lt;GeometryOut&gt;::type</a> point_type;
-<a name="l00182"></a>00182 <span class="keyword">typedef</span> detail::intersection::intersection_point&lt;point_type&gt; ip_type;
-<a name="l00183"></a>00183 <span class="keyword">typedef</span> std::deque&lt;ip_type&gt; ips_container;
-<a name="l00184"></a>00184
-<a name="l00185"></a>00185 <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.">ggl::ring_type&lt;GeometryOut&gt;::type</a> ring_type;
-<a name="l00186"></a>00186
-<a name="l00187"></a>00187 ips_container ips;
-<a name="l00188"></a>00188
-<a name="l00189"></a>00189 <span class="keywordtype">bool</span> trivial = <a class="code" href="group__overlay.html#g9b41efeface4cb10fbce39c8bcc8bec9" title="Calculate intersection points of two geometries.">ggl::get_intersection_points</a>(polygon, box, ips);
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191 <span class="comment">// TODO: share this all with polygon_polygon using an "assemble" function!</span>
-<a name="l00192"></a>00192 <span class="comment">// It is only different in the 'within' calls, can be sorted out with specialization</span>
-<a name="l00193"></a>00193
+<a name="l00171"></a>00171
+<a name="l00172"></a>00172 <span class="keyword">template</span>
+<a name="l00173"></a>00173 &lt;
+<a name="l00174"></a>00174 <span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Box,
+<a name="l00175"></a>00175 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
+<a name="l00176"></a>00176 &gt;
+<a name="l00177"></a>00177 <span class="keyword">struct </span>intersection_polygon_box
+<a name="l00178"></a>00178 {
+<a name="l00179"></a>00179 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Polygon <span class="keyword">const</span>&amp; polygon,
+<a name="l00180"></a>00180 Box <span class="keyword">const</span>&amp; box, OutputIterator out)
+<a name="l00181"></a>00181 {
+<a name="l00182"></a>00182 <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.">ggl::point_type&lt;GeometryOut&gt;::type</a> point_type;
+<a name="l00183"></a>00183 <span class="keyword">typedef</span> detail::intersection::intersection_point&lt;point_type&gt; ip_type;
+<a name="l00184"></a>00184 <span class="keyword">typedef</span> std::deque&lt;ip_type&gt; ips_container;
+<a name="l00185"></a>00185
+<a name="l00186"></a>00186 <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.">ggl::ring_type&lt;GeometryOut&gt;::type</a> ring_type;
+<a name="l00187"></a>00187
+<a name="l00188"></a>00188 ips_container ips;
+<a name="l00189"></a>00189
+<a name="l00190"></a>00190 <span class="keywordtype">bool</span> trivial = <a class="code" href="group__overlay.html#g9b41efeface4cb10fbce39c8bcc8bec9" title="Calculate intersection points of two geometries.">ggl::get_intersection_points</a>(polygon, box, ips);
+<a name="l00191"></a>00191
+<a name="l00192"></a>00192 <span class="comment">// TODO: share this all with polygon_polygon using an "assemble" function!</span>
+<a name="l00193"></a>00193 <span class="comment">// It is only different in the 'within' calls, can be sorted out with specialization</span>
 <a name="l00194"></a>00194
-<a name="l00195"></a>00195 <span class="keywordflow">if</span> (ips.size() &lt;= 0)
-<a name="l00196"></a>00196 {
-<a name="l00197"></a>00197 <span class="comment">// If there are no IP-s, check if one point is in other polygon</span>
-<a name="l00198"></a>00198 <span class="comment">// assume both polygons having points</span>
-<a name="l00199"></a>00199 <span class="keywordflow">if</span> (<a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">ggl::within</a>(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">ggl::exterior_ring</a>(polygon).front(), box))
-<a name="l00200"></a>00200 {
-<a name="l00201"></a>00201 <span class="comment">// Assume same type (output = input)</span>
-<a name="l00202"></a>00202 <span class="comment">// TODO: solve this (we go to specialize again...)</span>
-<a name="l00203"></a>00203 *out = polygon;
-<a name="l00204"></a>00204 out++;
-<a name="l00205"></a>00205 }
-<a name="l00206"></a>00206 <span class="keywordflow">else</span>
-<a name="l00207"></a>00207 {
-<a name="l00208"></a>00208 <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;Box&gt;::type</a> p;
-<a name="l00209"></a>00209 ggl::set&lt;0&gt;(p, ggl::get&lt;min_corner, 0&gt;(box));
-<a name="l00210"></a>00210 ggl::set&lt;1&gt;(p, ggl::get&lt;min_corner, 1&gt;(box));
-<a name="l00211"></a>00211 <span class="keywordflow">if</span> (<a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">ggl::within</a>(p, polygon))
-<a name="l00212"></a>00212 {
-<a name="l00213"></a>00213 GeometryOut boxpoly;
-<a name="l00214"></a>00214 <a class="code" href="group__convert.html#ge07fa83176190049c856e35f77d0f569" title="Converts one geometry to another geometry.">ggl::convert</a>(box, boxpoly);
-<a name="l00215"></a>00215 *out = boxpoly;
-<a name="l00216"></a>00216 out++;
-<a name="l00217"></a>00217 }
-<a name="l00218"></a>00218 }
-<a name="l00219"></a>00219 }
-<a name="l00220"></a>00220 <span class="keywordflow">else</span>
-<a name="l00221"></a>00221 {
-<a name="l00222"></a>00222 <span class="keywordflow">if</span> (trivial)
-<a name="l00223"></a>00223 {
-<a name="l00224"></a>00224 <a class="code" href="group__overlay.html#gc1dcd7471f802810f7d48b36eea24d0f" title="Merges intersection points such that points at the same location will be merged,...">ggl::merge_intersection_points</a>(ips);
-<a name="l00225"></a>00225 }
-<a name="l00226"></a>00226
-<a name="l00227"></a>00227 <a class="code" href="group__overlay.html#g379db9c2e9741b685302a21f86ea24f3" title="All intersection points are enriched with successor information.">ggl::enrich_intersection_points</a>(ips, trivial);
-<a name="l00228"></a>00228
-<a name="l00229"></a>00229 std::vector&lt;ring_type&gt; v;
-<a name="l00230"></a>00230 ggl::traverse&lt;ring_type&gt;
-<a name="l00231"></a>00231 (
-<a name="l00232"></a>00232 polygon,
-<a name="l00233"></a>00233 box,
-<a name="l00234"></a>00234 -1,
-<a name="l00235"></a>00235 ips,
-<a name="l00236"></a>00236 trivial,
-<a name="l00237"></a>00237 std::back_inserter(v)
-<a name="l00238"></a>00238 );
-<a name="l00239"></a>00239
-<a name="l00240"></a>00240 <span class="comment">// TODO:</span>
-<a name="l00241"></a>00241 <span class="comment">// assemble rings / inner rings / to polygons</span>
-<a name="l00242"></a>00242 <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector&lt;ring_type&gt;::const_iterator it = v.begin();
-<a name="l00243"></a>00243 it != v.end(); ++it)
-<a name="l00244"></a>00244 {
-<a name="l00245"></a>00245 <span class="comment">// How can we avoid the double copy here! It is really bad!</span>
-<a name="l00246"></a>00246 <span class="comment">// We have to create a polygon, then copy it to the output iterator.</span>
-<a name="l00247"></a>00247 <span class="comment">// Having an output-vector would have been better: append it to the vector!</span>
-<a name="l00248"></a>00248 <span class="comment">// So output iterators are not that good.</span>
-<a name="l00249"></a>00249 GeometryOut poly;
-<a name="l00250"></a>00250 poly.outer() = *it;
-<a name="l00251"></a>00251 *out = poly;
-<a name="l00252"></a>00252 out++;
-<a name="l00253"></a>00253 }
-<a name="l00254"></a>00254 }
-<a name="l00255"></a>00255
+<a name="l00195"></a>00195
+<a name="l00196"></a>00196 <span class="keywordflow">if</span> (ips.size() &lt;= 0)
+<a name="l00197"></a>00197 {
+<a name="l00198"></a>00198 <span class="comment">// If there are no IP-s, check if one point is in other polygon</span>
+<a name="l00199"></a>00199 <span class="comment">// assume both polygons having points</span>
+<a name="l00200"></a>00200 <span class="keywordflow">if</span> (<a class="code" href="group__boolean__relations.html#g599c2aa76cf2037eb40514e449ace28d" title="Within check.">ggl::within</a>(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">ggl::exterior_ring</a>(polygon).front(), box))
+<a name="l00201"></a>00201 {
+<a name="l00202"></a>00202 <span class="comment">// Assume same type (output = input)</span>
+<a name="l00203"></a>00203 <span class="comment">// TODO: solve this (we go to specialize again...)</span>
+<a name="l00204"></a>00204 *out = polygon;
+<a name="l00205"></a>00205 out++;
+<a name="l00206"></a>00206 }
+<a name="l00207"></a>00207 <span class="keywordflow">else</span>
+<a name="l00208"></a>00208 {
+<a name="l00209"></a>00209 <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;Box&gt;::type</a> p;
+<a name="l00210"></a>00210 ggl::set&lt;0&gt;(p, ggl::get&lt;min_corner, 0&gt;(box));
+<a name="l00211"></a>00211 ggl::set&lt;1&gt;(p, ggl::get&lt;min_corner, 1&gt;(box));
+<a name="l00212"></a>00212 <span class="keywordflow">if</span> (<a class="code" href="group__boolean__relations.html#g599c2aa76cf2037eb40514e449ace28d" title="Within check.">ggl::within</a>(p, polygon))
+<a name="l00213"></a>00213 {
+<a name="l00214"></a>00214 GeometryOut boxpoly;
+<a name="l00215"></a>00215 <a class="code" href="group__convert.html#ge07fa83176190049c856e35f77d0f569" title="Converts one geometry to another geometry.">ggl::convert</a>(box, boxpoly);
+<a name="l00216"></a>00216 *out = boxpoly;
+<a name="l00217"></a>00217 out++;
+<a name="l00218"></a>00218 }
+<a name="l00219"></a>00219 }
+<a name="l00220"></a>00220 }
+<a name="l00221"></a>00221 <span class="keywordflow">else</span>
+<a name="l00222"></a>00222 {
+<a name="l00223"></a>00223 <span class="keywordflow">if</span> (trivial)
+<a name="l00224"></a>00224 {
+<a name="l00225"></a>00225 <a class="code" href="group__overlay.html#gc1dcd7471f802810f7d48b36eea24d0f" title="Merges intersection points such that points at the same location will be merged,...">ggl::merge_intersection_points</a>(ips);
+<a name="l00226"></a>00226 }
+<a name="l00227"></a>00227
+<a name="l00228"></a>00228 <a class="code" href="group__overlay.html#g379db9c2e9741b685302a21f86ea24f3" title="All intersection points are enriched with successor information.">ggl::enrich_intersection_points</a>(ips, trivial);
+<a name="l00229"></a>00229
+<a name="l00230"></a>00230 std::vector&lt;ring_type&gt; v;
+<a name="l00231"></a>00231 ggl::traverse&lt;ring_type&gt;
+<a name="l00232"></a>00232 (
+<a name="l00233"></a>00233 polygon,
+<a name="l00234"></a>00234 box,
+<a name="l00235"></a>00235 -1,
+<a name="l00236"></a>00236 ips,
+<a name="l00237"></a>00237 trivial,
+<a name="l00238"></a>00238 std::back_inserter(v)
+<a name="l00239"></a>00239 );
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241 <span class="comment">// TODO:</span>
+<a name="l00242"></a>00242 <span class="comment">// assemble rings / inner rings / to polygons</span>
+<a name="l00243"></a>00243 <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector&lt;ring_type&gt;::const_iterator it = v.begin();
+<a name="l00244"></a>00244 it != v.end(); ++it)
+<a name="l00245"></a>00245 {
+<a name="l00246"></a>00246 <span class="comment">// How can we avoid the double copy here! It is really bad!</span>
+<a name="l00247"></a>00247 <span class="comment">// We have to create a polygon, then copy it to the output iterator.</span>
+<a name="l00248"></a>00248 <span class="comment">// Having an output-vector would have been better: append it to the vector!</span>
+<a name="l00249"></a>00249 <span class="comment">// So output iterators are not that good.</span>
+<a name="l00250"></a>00250 GeometryOut poly;
+<a name="l00251"></a>00251 poly.outer() = *it;
+<a name="l00252"></a>00252 *out = poly;
+<a name="l00253"></a>00253 out++;
+<a name="l00254"></a>00254 }
+<a name="l00255"></a>00255 }
 <a name="l00256"></a>00256
-<a name="l00257"></a>00257 <span class="keywordflow">return</span> out;
-<a name="l00258"></a>00258 }
-<a name="l00259"></a>00259 };
-<a name="l00260"></a>00260
+<a name="l00257"></a>00257
+<a name="l00258"></a>00258 <span class="keywordflow">return</span> out;
+<a name="l00259"></a>00259 }
+<a name="l00260"></a>00260 };
 <a name="l00261"></a>00261
-<a name="l00262"></a>00262 }} <span class="comment">// namespace detail::intersection</span>
-<a name="l00263"></a>00263 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
-<a name="l00264"></a>00264 <span class="preprocessor"></span>
-<a name="l00265"></a>00265
+<a name="l00262"></a>00262
+<a name="l00263"></a>00263 }} <span class="comment">// namespace detail::intersection</span>
+<a name="l00264"></a>00264 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00265"></a>00265 <span class="preprocessor"></span>
 <a name="l00266"></a>00266
 <a name="l00267"></a>00267
 <a name="l00268"></a>00268
-<a name="l00269"></a>00269 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
-<a name="l00270"></a>00270 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
-<a name="l00271"></a>00271 {
-<a name="l00272"></a>00272
-<a name="l00273"></a>00273 <span class="keyword">template</span>
-<a name="l00274"></a>00274 &lt;
-<a name="l00275"></a>00275 <span class="keyword">typename</span> Tag1, <span class="keyword">typename</span> Tag2, <span class="keyword">typename</span> Tag3,
-<a name="l00276"></a>00276 <span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2,
-<a name="l00277"></a>00277 <span class="keyword">typename</span> OutputIterator,
-<a name="l00278"></a>00278 <span class="keyword">typename</span> GeometryOut
-<a name="l00279"></a>00279 &gt;
-<a name="l00280"></a>00280 <span class="keyword">struct </span><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a> {};
-<a name="l00281"></a>00281
+<a name="l00269"></a>00269
+<a name="l00270"></a>00270 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00271"></a>00271 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00272"></a>00272 {
+<a name="l00273"></a>00273
+<a name="l00274"></a>00274 <span class="keyword">template</span>
+<a name="l00275"></a>00275 &lt;
+<a name="l00276"></a>00276 <span class="keyword">typename</span> Tag1, <span class="keyword">typename</span> Tag2, <span class="keyword">typename</span> Tag3,
+<a name="l00277"></a>00277 <span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2,
+<a name="l00278"></a>00278 <span class="keyword">typename</span> OutputIterator,
+<a name="l00279"></a>00279 <span class="keyword">typename</span> GeometryOut
+<a name="l00280"></a>00280 &gt;
+<a name="l00281"></a>00281 <span class="keyword">struct </span><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a> {};
 <a name="l00282"></a>00282
-<a name="l00283"></a>00283 <span class="keyword">template</span>
-<a name="l00284"></a>00284 &lt;
-<a name="l00285"></a>00285 <span class="keyword">typename</span> Segment1, <span class="keyword">typename</span> Segment2,
-<a name="l00286"></a>00286 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
-<a name="l00287"></a>00287 &gt;
-<a name="l00288"></a>00288 <span class="keyword">struct </span><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>
-<a name="l00289"></a>00289 &lt;
-<a name="l00290"></a>00290 segment_tag, segment_tag, point_tag,
-<a name="l00291"></a>00291 Segment1, Segment2,
-<a name="l00292"></a>00292 OutputIterator, GeometryOut
-<a name="l00293"></a>00293 &gt;
-<a name="l00294"></a>00294 {
-<a name="l00295"></a>00295 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Segment1 <span class="keyword">const</span>&amp; segment1,
-<a name="l00296"></a>00296 Segment2 <span class="keyword">const</span>&amp; segment2, OutputIterator out)
-<a name="l00297"></a>00297 {
-<a name="l00298"></a>00298 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;GeometryOut&gt;::type point_type;
-<a name="l00299"></a>00299
-<a name="l00300"></a>00300 <span class="comment">// Get the intersection point (or two points)</span>
-<a name="l00301"></a>00301 segment_intersection_points&lt;point_type&gt; is
-<a name="l00302"></a>00302 = strategy::intersection::relate_cartesian_segments
-<a name="l00303"></a>00303 &lt;
-<a name="l00304"></a>00304 policies::relate::segments_intersection_points
-<a name="l00305"></a>00305 &lt;
-<a name="l00306"></a>00306 Segment1,
-<a name="l00307"></a>00307 Segment2,
-<a name="l00308"></a>00308 segment_intersection_points&lt;point_type&gt;
-<a name="l00309"></a>00309 &gt;
-<a name="l00310"></a>00310 &gt;::relate(segment1, segment2);
-<a name="l00311"></a>00311 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; is.count; i++)
-<a name="l00312"></a>00312 {
-<a name="l00313"></a>00313 GeometryOut p;
-<a name="l00314"></a>00314 <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="l00315"></a>00315 *out = p;
-<a name="l00316"></a>00316 out++;
-<a name="l00317"></a>00317 }
-<a name="l00318"></a>00318 <span class="keywordflow">return</span> out;
-<a name="l00319"></a>00319 }
-<a name="l00320"></a>00320 };
-<a name="l00321"></a>00321
+<a name="l00283"></a>00283
+<a name="l00284"></a>00284 <span class="keyword">template</span>
+<a name="l00285"></a>00285 &lt;
+<a name="l00286"></a>00286 <span class="keyword">typename</span> Segment1, <span class="keyword">typename</span> Segment2,
+<a name="l00287"></a>00287 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
+<a name="l00288"></a>00288 &gt;
+<a name="l00289"></a>00289 <span class="keyword">struct </span><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>
+<a name="l00290"></a>00290 &lt;
+<a name="l00291"></a>00291 segment_tag, segment_tag, point_tag,
+<a name="l00292"></a>00292 Segment1, Segment2,
+<a name="l00293"></a>00293 OutputIterator, GeometryOut
+<a name="l00294"></a>00294 &gt;
+<a name="l00295"></a>00295 {
+<a name="l00296"></a>00296 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Segment1 <span class="keyword">const</span>&amp; segment1,
+<a name="l00297"></a>00297 Segment2 <span class="keyword">const</span>&amp; segment2, OutputIterator out)
+<a name="l00298"></a>00298 {
+<a name="l00299"></a>00299 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;GeometryOut&gt;::type point_type;
+<a name="l00300"></a>00300
+<a name="l00301"></a>00301 <span class="comment">// Get the intersection point (or two points)</span>
+<a name="l00302"></a>00302 segment_intersection_points&lt;point_type&gt; is
+<a name="l00303"></a>00303 = strategy::intersection::relate_cartesian_segments
+<a name="l00304"></a>00304 &lt;
+<a name="l00305"></a>00305 policies::relate::segments_intersection_points
+<a name="l00306"></a>00306 &lt;
+<a name="l00307"></a>00307 Segment1,
+<a name="l00308"></a>00308 Segment2,
+<a name="l00309"></a>00309 segment_intersection_points&lt;point_type&gt;
+<a name="l00310"></a>00310 &gt;
+<a name="l00311"></a>00311 &gt;::relate(segment1, segment2);
+<a name="l00312"></a>00312 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; is.count; i++)
+<a name="l00313"></a>00313 {
+<a name="l00314"></a>00314 GeometryOut p;
+<a name="l00315"></a>00315 <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="l00316"></a>00316 *out = p;
+<a name="l00317"></a>00317 out++;
+<a name="l00318"></a>00318 }
+<a name="l00319"></a>00319 <span class="keywordflow">return</span> out;
+<a name="l00320"></a>00320 }
+<a name="l00321"></a>00321 };
 <a name="l00322"></a>00322
-<a name="l00323"></a>00323 <span class="keyword">template</span>
-<a name="l00324"></a>00324 &lt;
-<a name="l00325"></a>00325 <span class="keyword">typename</span> Linestring, <span class="keyword">typename</span> Box,
-<a name="l00326"></a>00326 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
-<a name="l00327"></a>00327 &gt;
-<a name="l00328"></a>00328 <span class="keyword">struct </span><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>
-<a name="l00329"></a>00329 &lt;
-<a name="l00330"></a>00330 linestring_tag, box_tag, linestring_tag,
-<a name="l00331"></a>00331 Linestring, Box,
-<a name="l00332"></a>00332 OutputIterator, GeometryOut
-<a name="l00333"></a>00333 &gt;
-<a name="l00334"></a>00334 {
-<a name="l00335"></a>00335 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Linestring <span class="keyword">const</span>&amp; linestring,
-<a name="l00336"></a>00336 Box <span class="keyword">const</span>&amp; box, OutputIterator out)
-<a name="l00337"></a>00337 {
-<a name="l00338"></a>00338 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;GeometryOut&gt;::type point_type;
-<a name="l00339"></a>00339 strategy::intersection::liang_barsky&lt;Box, point_type&gt; strategy;
-<a name="l00340"></a>00340 <span class="keywordflow">return</span> detail::intersection::clip_linestring_with_box&lt;GeometryOut&gt;(box, linestring, out, strategy);
-<a name="l00341"></a>00341 }
-<a name="l00342"></a>00342 };
-<a name="l00343"></a>00343
+<a name="l00323"></a>00323
+<a name="l00324"></a>00324 <span class="keyword">template</span>
+<a name="l00325"></a>00325 &lt;
+<a name="l00326"></a>00326 <span class="keyword">typename</span> Linestring, <span class="keyword">typename</span> Box,
+<a name="l00327"></a>00327 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
+<a name="l00328"></a>00328 &gt;
+<a name="l00329"></a>00329 <span class="keyword">struct </span><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>
+<a name="l00330"></a>00330 &lt;
+<a name="l00331"></a>00331 linestring_tag, box_tag, linestring_tag,
+<a name="l00332"></a>00332 Linestring, Box,
+<a name="l00333"></a>00333 OutputIterator, GeometryOut
+<a name="l00334"></a>00334 &gt;
+<a name="l00335"></a>00335 {
+<a name="l00336"></a>00336 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Linestring <span class="keyword">const</span>&amp; linestring,
+<a name="l00337"></a>00337 Box <span class="keyword">const</span>&amp; box, OutputIterator out)
+<a name="l00338"></a>00338 {
+<a name="l00339"></a>00339 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;GeometryOut&gt;::type point_type;
+<a name="l00340"></a>00340 strategy::intersection::liang_barsky&lt;Box, point_type&gt; strategy;
+<a name="l00341"></a>00341 <span class="keywordflow">return</span> detail::intersection::clip_linestring_with_box&lt;GeometryOut&gt;(box, linestring, out, strategy);
+<a name="l00342"></a>00342 }
+<a name="l00343"></a>00343 };
 <a name="l00344"></a>00344
-<a name="l00345"></a>00345 <span class="keyword">template</span>
-<a name="l00346"></a>00346 &lt;
-<a name="l00347"></a>00347 <span class="keyword">typename</span> Polygon1, <span class="keyword">typename</span> Polygon2,
-<a name="l00348"></a>00348 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
-<a name="l00349"></a>00349 &gt;
-<a name="l00350"></a>00350 <span class="keyword">struct </span><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>
-<a name="l00351"></a>00351 &lt;
-<a name="l00352"></a>00352 polygon_tag, polygon_tag, polygon_tag,
-<a name="l00353"></a>00353 Polygon1, Polygon2,
-<a name="l00354"></a>00354 OutputIterator, GeometryOut
-<a name="l00355"></a>00355 &gt;
-<a name="l00356"></a>00356 : detail::<a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>::intersection_polygon_polygon
-<a name="l00357"></a>00357 &lt;Polygon1, Polygon2, OutputIterator, GeometryOut&gt;
-<a name="l00358"></a>00358 {};
-<a name="l00359"></a>00359
+<a name="l00345"></a>00345
+<a name="l00346"></a>00346 <span class="keyword">template</span>
+<a name="l00347"></a>00347 &lt;
+<a name="l00348"></a>00348 <span class="keyword">typename</span> Polygon1, <span class="keyword">typename</span> Polygon2,
+<a name="l00349"></a>00349 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
+<a name="l00350"></a>00350 &gt;
+<a name="l00351"></a>00351 <span class="keyword">struct </span><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>
+<a name="l00352"></a>00352 &lt;
+<a name="l00353"></a>00353 polygon_tag, polygon_tag, polygon_tag,
+<a name="l00354"></a>00354 Polygon1, Polygon2,
+<a name="l00355"></a>00355 OutputIterator, GeometryOut
+<a name="l00356"></a>00356 &gt;
+<a name="l00357"></a>00357 : detail::<a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>::intersection_polygon_polygon
+<a name="l00358"></a>00358 &lt;Polygon1, Polygon2, OutputIterator, GeometryOut&gt;
+<a name="l00359"></a>00359 {};
 <a name="l00360"></a>00360
 <a name="l00361"></a>00361
-<a name="l00362"></a>00362 <span class="keyword">template</span>
-<a name="l00363"></a>00363 &lt;
-<a name="l00364"></a>00364 <span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Box,
-<a name="l00365"></a>00365 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
-<a name="l00366"></a>00366 &gt;
-<a name="l00367"></a>00367 <span class="keyword">struct </span><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>
-<a name="l00368"></a>00368 &lt;
-<a name="l00369"></a>00369 polygon_tag, box_tag, polygon_tag,
-<a name="l00370"></a>00370 Polygon, Box,
-<a name="l00371"></a>00371 OutputIterator, GeometryOut
-<a name="l00372"></a>00372 &gt;
-<a name="l00373"></a>00373 : detail::<a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>::intersection_polygon_box
-<a name="l00374"></a>00374 &lt;Polygon, Box, OutputIterator, GeometryOut&gt;
-<a name="l00375"></a>00375 {};
-<a name="l00376"></a>00376
+<a name="l00362"></a>00362
+<a name="l00363"></a>00363 <span class="keyword">template</span>
+<a name="l00364"></a>00364 &lt;
+<a name="l00365"></a>00365 <span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Box,
+<a name="l00366"></a>00366 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
+<a name="l00367"></a>00367 &gt;
+<a name="l00368"></a>00368 <span class="keyword">struct </span><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>
+<a name="l00369"></a>00369 &lt;
+<a name="l00370"></a>00370 polygon_tag, box_tag, polygon_tag,
+<a name="l00371"></a>00371 Polygon, Box,
+<a name="l00372"></a>00372 OutputIterator, GeometryOut
+<a name="l00373"></a>00373 &gt;
+<a name="l00374"></a>00374 : detail::<a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>::intersection_polygon_box
+<a name="l00375"></a>00375 &lt;Polygon, Box, OutputIterator, GeometryOut&gt;
+<a name="l00376"></a>00376 {};
 <a name="l00377"></a>00377
 <a name="l00378"></a>00378
-<a name="l00379"></a>00379 <span class="keyword">template</span>
-<a name="l00380"></a>00380 &lt;
-<a name="l00381"></a>00381 <span class="keyword">typename</span> GeometryTag1, <span class="keyword">typename</span> GeometryTag2, <span class="keyword">typename</span> GeometryTag3,
-<a name="l00382"></a>00382 <span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2,
-<a name="l00383"></a>00383 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
-<a name="l00384"></a>00384 &gt;
-<a name="l00385"></a>00385 <span class="keyword">struct </span>intersection_reversed
-<a name="l00386"></a>00386 {
-<a name="l00387"></a>00387 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(G1 <span class="keyword">const</span>&amp; g1, G2 <span class="keyword">const</span>&amp; g2, OutputIterator out)
-<a name="l00388"></a>00388 {
-<a name="l00389"></a>00389 <span class="keywordflow">return</span> <a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>
-<a name="l00390"></a>00390 &lt;
-<a name="l00391"></a>00391 GeometryTag2, GeometryTag1, GeometryTag3,
-<a name="l00392"></a>00392 G2, G1,
-<a name="l00393"></a>00393 OutputIterator, GeometryOut
-<a name="l00394"></a>00394 &gt;::apply(g2, g1, out);
-<a name="l00395"></a>00395 }
-<a name="l00396"></a>00396 };
-<a name="l00397"></a>00397
+<a name="l00379"></a>00379
+<a name="l00380"></a>00380 <span class="keyword">template</span>
+<a name="l00381"></a>00381 &lt;
+<a name="l00382"></a>00382 <span class="keyword">typename</span> GeometryTag1, <span class="keyword">typename</span> GeometryTag2, <span class="keyword">typename</span> GeometryTag3,
+<a name="l00383"></a>00383 <span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2,
+<a name="l00384"></a>00384 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
+<a name="l00385"></a>00385 &gt;
+<a name="l00386"></a>00386 <span class="keyword">struct </span>intersection_reversed
+<a name="l00387"></a>00387 {
+<a name="l00388"></a>00388 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(G1 <span class="keyword">const</span>&amp; g1, G2 <span class="keyword">const</span>&amp; g2, OutputIterator out)
+<a name="l00389"></a>00389 {
+<a name="l00390"></a>00390 <span class="keywordflow">return</span> <a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>
+<a name="l00391"></a>00391 &lt;
+<a name="l00392"></a>00392 GeometryTag2, GeometryTag1, GeometryTag3,
+<a name="l00393"></a>00393 G2, G1,
+<a name="l00394"></a>00394 OutputIterator, GeometryOut
+<a name="l00395"></a>00395 &gt;::apply(g2, g1, out);
+<a name="l00396"></a>00396 }
+<a name="l00397"></a>00397 };
 <a name="l00398"></a>00398
 <a name="l00399"></a>00399
-<a name="l00400"></a>00400 } <span class="comment">// namespace dispatch</span>
-<a name="l00401"></a>00401 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
-<a name="l00402"></a>00402 <span class="preprocessor"></span>
-<a name="l00420"></a>00420 <span class="keyword">template</span>
-<a name="l00421"></a>00421 &lt;
-<a name="l00422"></a>00422 <span class="keyword">typename</span> GeometryOut,
-<a name="l00423"></a>00423 <span class="keyword">typename</span> Geometry1,
-<a name="l00424"></a>00424 <span class="keyword">typename</span> Geometry2,
-<a name="l00425"></a>00425 <span class="keyword">typename</span> OutputIterator
-<a name="l00426"></a>00426 &gt;
-<a name="l00427"></a><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5">00427</a> <span class="keyword">inline</span> OutputIterator <a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>(Geometry1 <span class="keyword">const</span>&amp; geometry1,
-<a name="l00428"></a>00428 Geometry2 <span class="keyword">const</span>&amp; geometry2,
-<a name="l00429"></a>00429 OutputIterator out)
-<a name="l00430"></a>00430 {
-<a name="l00431"></a>00431
-<a name="l00432"></a>00432 <span class="keywordflow">return</span> boost::mpl::if_c
-<a name="l00433"></a>00433 &lt;
-<a name="l00434"></a>00434 <a class="code" href="structggl_1_1reverse__dispatch.html">reverse_dispatch&lt;Geometry1, Geometry2&gt;::type::value</a>,
-<a name="l00435"></a>00435 dispatch::intersection_reversed
-<a name="l00436"></a>00436 &lt;
-<a name="l00437"></a>00437 <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="l00438"></a>00438 <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;Geometry2&gt;::type</a>,
-<a name="l00439"></a>00439 <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;GeometryOut&gt;::type</a>,
-<a name="l00440"></a>00440 Geometry1,
-<a name="l00441"></a>00441 Geometry2,
-<a name="l00442"></a>00442 OutputIterator, GeometryOut
-<a name="l00443"></a>00443 &gt;,
-<a name="l00444"></a>00444 <a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">dispatch::intersection</a>
-<a name="l00445"></a>00445 &lt;
-<a name="l00446"></a>00446 <span class="keyword">typename</span> tag&lt;Geometry1&gt;::type,
-<a name="l00447"></a>00447 <span class="keyword">typename</span> tag&lt;Geometry2&gt;::type,
-<a name="l00448"></a>00448 <span class="keyword">typename</span> tag&lt;GeometryOut&gt;::type,
-<a name="l00449"></a>00449 Geometry1,
-<a name="l00450"></a>00450 Geometry2,
-<a name="l00451"></a>00451 OutputIterator, GeometryOut
-<a name="l00452"></a>00452 &gt;
-<a name="l00453"></a>00453 &gt;::type::apply(geometry1, geometry2, out);
-<a name="l00454"></a>00454 }
-<a name="l00455"></a>00455
-<a name="l00456"></a>00456 } <span class="comment">// ggl</span>
-<a name="l00457"></a>00457
-<a name="l00458"></a>00458 <span class="preprocessor">#endif //GGL_ALGORITHMS_INTERSECTION_HPP</span>
+<a name="l00400"></a>00400
+<a name="l00401"></a>00401 } <span class="comment">// namespace dispatch</span>
+<a name="l00402"></a>00402 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00403"></a>00403 <span class="preprocessor"></span>
+<a name="l00421"></a>00421 <span class="keyword">template</span>
+<a name="l00422"></a>00422 &lt;
+<a name="l00423"></a>00423 <span class="keyword">typename</span> GeometryOut,
+<a name="l00424"></a>00424 <span class="keyword">typename</span> Geometry1,
+<a name="l00425"></a>00425 <span class="keyword">typename</span> Geometry2,
+<a name="l00426"></a>00426 <span class="keyword">typename</span> OutputIterator
+<a name="l00427"></a>00427 &gt;
+<a name="l00428"></a><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5">00428</a> <span class="keyword">inline</span> OutputIterator <a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>(Geometry1 <span class="keyword">const</span>&amp; geometry1,
+<a name="l00429"></a>00429 Geometry2 <span class="keyword">const</span>&amp; geometry2,
+<a name="l00430"></a>00430 OutputIterator out)
+<a name="l00431"></a>00431 {
+<a name="l00432"></a>00432 concept::check&lt;const Geometry1&gt;();
+<a name="l00433"></a>00433 concept::check&lt;const Geometry2&gt;();
+<a name="l00434"></a>00434
+<a name="l00435"></a>00435 <span class="keywordflow">return</span> boost::mpl::if_c
+<a name="l00436"></a>00436 &lt;
+<a name="l00437"></a>00437 <a class="code" href="structggl_1_1reverse__dispatch.html">reverse_dispatch&lt;Geometry1, Geometry2&gt;::type::value</a>,
+<a name="l00438"></a>00438 dispatch::intersection_reversed
+<a name="l00439"></a>00439 &lt;
+<a name="l00440"></a>00440 <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="l00441"></a>00441 <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;Geometry2&gt;::type</a>,
+<a name="l00442"></a>00442 <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;GeometryOut&gt;::type</a>,
+<a name="l00443"></a>00443 Geometry1,
+<a name="l00444"></a>00444 Geometry2,
+<a name="l00445"></a>00445 OutputIterator, GeometryOut
+<a name="l00446"></a>00446 &gt;,
+<a name="l00447"></a>00447 <a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">dispatch::intersection</a>
+<a name="l00448"></a>00448 &lt;
+<a name="l00449"></a>00449 <span class="keyword">typename</span> tag&lt;Geometry1&gt;::type,
+<a name="l00450"></a>00450 <span class="keyword">typename</span> tag&lt;Geometry2&gt;::type,
+<a name="l00451"></a>00451 <span class="keyword">typename</span> tag&lt;GeometryOut&gt;::type,
+<a name="l00452"></a>00452 Geometry1,
+<a name="l00453"></a>00453 Geometry2,
+<a name="l00454"></a>00454 OutputIterator, GeometryOut
+<a name="l00455"></a>00455 &gt;
+<a name="l00456"></a>00456 &gt;::type::apply(geometry1, geometry2, out);
+<a name="l00457"></a>00457 }
+<a name="l00458"></a>00458
+<a name="l00459"></a>00459 } <span class="comment">// ggl</span>
+<a name="l00460"></a>00460
+<a name="l00461"></a>00461 <span class="preprocessor">#endif //GGL_ALGORITHMS_INTERSECTION_HPP</span>
 </pre></div></div>
 <hr size="1">
 <table width="100%">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp_source.html 2009-10-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -60,139 +60,148 @@
 <a name="l00018"></a>00018 <span class="preprocessor">#include &lt;boost/type_traits.hpp&gt;</span>
 <a name="l00019"></a>00019
 <a name="l00020"></a>00020
-<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="calculate__null_8hpp.html">ggl/algorithms/detail/calculate_null.hpp</a>&gt;</span>
-<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="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>&gt;</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="length__result_8hpp.html">ggl/strategies/length_result.hpp</a>&gt;</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="calculate__null_8hpp.html">ggl/algorithms/detail/calculate_null.hpp</a>&gt;</span>
 <a name="l00026"></a>00026
-<a name="l00040"></a>00040 <span class="keyword">namespace </span>ggl
-<a name="l00041"></a>00041 {
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
-<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a> {
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;<a class="code" href="length__result_8hpp.html">ggl/strategies/length_result.hpp</a>&gt;</span>
+<a name="l00029"></a>00029
+<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="l00048"></a>00048
-<a name="l00049"></a>00049 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Segment, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00050"></a>00050 <span class="keyword">struct </span>segment_length
-<a name="l00051"></a>00051 {
-<a name="l00052"></a>00052 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keyword">typename</span> length_result&lt;Segment&gt;::type apply(
-<a name="l00053"></a>00053 Segment <span class="keyword">const</span>&amp; segment, Strategy <span class="keyword">const</span>&amp; strategy)
-<a name="l00054"></a>00054 {
-<a name="l00055"></a>00055 <span class="comment">// BSG 10 APR 2009</span>
-<a name="l00056"></a>00056 <span class="comment">// TODO: the segment concept has to be such that it is easy to return a point from it.</span>
-<a name="l00057"></a>00057 <span class="comment">// Now it only accesses per coordinate</span>
-<a name="l00058"></a>00058 <span class="keywordflow">return</span> strategy(segment.first, segment.second);
-<a name="l00059"></a>00059 }
-<a name="l00060"></a>00060 };
-<a name="l00061"></a>00061
-<a name="l00066"></a>00066 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00067"></a>00067 <span class="keyword">struct </span>range_length
-<a name="l00068"></a>00068 {
-<a name="l00069"></a>00069 <span class="keyword">typedef</span> <span class="keyword">typename</span> length_result&lt;Range&gt;::type return_type;
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071 <span class="keyword">static</span> <span class="keyword">inline</span> return_type apply(
-<a name="l00072"></a>00072 Range <span class="keyword">const</span>&amp; range, Strategy <span class="keyword">const</span>&amp; strategy)
-<a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 return_type sum = return_type();
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator&lt;Range&gt;::type iterator_type;
-<a name="l00077"></a>00077 iterator_type it = boost::begin(range);
-<a name="l00078"></a>00078 <span class="keywordflow">if</span> (it != boost::end(range))
-<a name="l00079"></a>00079 {
-<a name="l00080"></a>00080 iterator_type previous = it++;
-<a name="l00081"></a>00081 <span class="keywordflow">while</span>(it != boost::end(range))
-<a name="l00082"></a>00082 {
-<a name="l00083"></a>00083 <span class="comment">// Add point-point distance using the return type belonging to strategy</span>
-<a name="l00084"></a>00084 sum += strategy(*previous, *it);
-<a name="l00085"></a>00085 previous = it++;
-<a name="l00086"></a>00086 }
-<a name="l00087"></a>00087 }
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089 <span class="keywordflow">return</span> sum;
-<a name="l00090"></a>00090 }
-<a name="l00091"></a>00091 };
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 }} <span class="comment">// namespace detail::length</span>
-<a name="l00094"></a>00094 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
-<a name="l00095"></a>00095 <span class="preprocessor"></span>
-<a name="l00096"></a>00096 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
-<a name="l00097"></a>00097 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
-<a name="l00098"></a>00098 {
-<a name="l00099"></a>00099
+<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__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a> {
+<a name="l00051"></a>00051
+<a name="l00052"></a>00052
+<a name="l00053"></a>00053 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Segment, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00054"></a>00054 <span class="keyword">struct </span>segment_length
+<a name="l00055"></a>00055 {
+<a name="l00056"></a>00056 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keyword">typename</span> length_result&lt;Segment&gt;::type apply(
+<a name="l00057"></a>00057 Segment <span class="keyword">const</span>&amp; segment, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00058"></a>00058 {
+<a name="l00059"></a>00059 <span class="comment">// BSG 10 APR 2009</span>
+<a name="l00060"></a>00060 <span class="comment">// TODO: the segment concept has to be such that it is easy</span>
+<a name="l00061"></a>00061 <span class="comment">// to return a point from it.</span>
+<a name="l00062"></a>00062 <span class="comment">// Now it only accesses per coordinate</span>
+<a name="l00063"></a>00063 <span class="keywordflow">return</span> strategy(segment.first, segment.second);
+<a name="l00064"></a>00064 }
+<a name="l00065"></a>00065 };
+<a name="l00066"></a>00066
+<a name="l00073"></a>00073 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00074"></a>00074 <span class="keyword">struct </span>range_length
+<a name="l00075"></a>00075 {
+<a name="l00076"></a>00076 <span class="keyword">typedef</span> <span class="keyword">typename</span> length_result&lt;Range&gt;::type return_type;
+<a name="l00077"></a>00077
+<a name="l00078"></a>00078 <span class="keyword">static</span> <span class="keyword">inline</span> return_type apply(
+<a name="l00079"></a>00079 Range <span class="keyword">const</span>&amp; range, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00080"></a>00080 {
+<a name="l00081"></a>00081 return_type sum = return_type();
+<a name="l00082"></a>00082
+<a name="l00083"></a>00083 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator&lt;Range&gt;::type iterator_type;
+<a name="l00084"></a>00084 iterator_type it = boost::begin(range);
+<a name="l00085"></a>00085 <span class="keywordflow">if</span> (it != boost::end(range))
+<a name="l00086"></a>00086 {
+<a name="l00087"></a>00087 iterator_type previous = it++;
+<a name="l00088"></a>00088 <span class="keywordflow">while</span>(it != boost::end(range))
+<a name="l00089"></a>00089 {
+<a name="l00090"></a>00090 <span class="comment">// Add point-point distance using the return type belonging</span>
+<a name="l00091"></a>00091 <span class="comment">// to strategy</span>
+<a name="l00092"></a>00092 sum += strategy(*previous, *it);
+<a name="l00093"></a>00093 previous = it++;
+<a name="l00094"></a>00094 }
+<a name="l00095"></a>00095 }
+<a name="l00096"></a>00096
+<a name="l00097"></a>00097 <span class="keywordflow">return</span> sum;
+<a name="l00098"></a>00098 }
+<a name="l00099"></a>00099 };
 <a name="l00100"></a>00100
-<a name="l00101"></a>00101 <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="l00102"></a>00102 <span class="keyword">struct </span><a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a> : detail::calculate_null
-<a name="l00103"></a>00103 &lt;
-<a name="l00104"></a>00104 typename length_result&lt;Geometry&gt;::type,
-<a name="l00105"></a>00105 Geometry,
-<a name="l00106"></a>00106 Strategy
-<a name="l00107"></a>00107 &gt;
-<a name="l00108"></a>00108 {};
-<a name="l00109"></a>00109
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00112"></a>00112 <span class="keyword">struct </span><a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>&lt;linestring_tag, Geometry, Strategy&gt;
-<a name="l00113"></a>00113 : detail::<a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>::range_length&lt;Geometry, Strategy&gt;
-<a name="l00114"></a>00114 {};
-<a name="l00115"></a>00115
-<a name="l00116"></a>00116
-<a name="l00117"></a>00117 <span class="comment">// RING: length is currently 0.0 but it might be argued that it is the "perimeter"</span>
+<a name="l00101"></a>00101 }} <span class="comment">// namespace detail::length</span>
+<a name="l00102"></a>00102 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00103"></a>00103 <span class="preprocessor"></span>
+<a name="l00104"></a>00104 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00105"></a>00105 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00106"></a>00106 {
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108
+<a name="l00109"></a>00109 <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="l00110"></a>00110 <span class="keyword">struct </span><a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a> : detail::calculate_null
+<a name="l00111"></a>00111 &lt;
+<a name="l00112"></a>00112 typename length_result&lt;Geometry&gt;::type,
+<a name="l00113"></a>00113 Geometry,
+<a name="l00114"></a>00114 Strategy
+<a name="l00115"></a>00115 &gt;
+<a name="l00116"></a>00116 {};
+<a name="l00117"></a>00117
 <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> Geometry, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00121"></a>00121 <span class="keyword">struct </span><a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>&lt;segment_tag, Geometry, Strategy&gt;
-<a name="l00122"></a>00122 : detail::<a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>::segment_length&lt;Geometry, Strategy&gt;
-<a name="l00123"></a>00123 {};
+<a name="l00119"></a>00119 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00120"></a>00120 <span class="keyword">struct </span><a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>&lt;linestring_tag, Geometry, Strategy&gt;
+<a name="l00121"></a>00121 : detail::<a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>::range_length&lt;Geometry, Strategy&gt;
+<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 } <span class="comment">// namespace dispatch</span>
-<a name="l00127"></a>00127 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
-<a name="l00128"></a>00128 <span class="preprocessor"></span>
-<a name="l00129"></a>00129
-<a name="l00130"></a>00130
-<a name="l00131"></a>00131
+<a name="l00125"></a>00125 <span class="comment">// RING: length is currently 0; it might be argued that it is the "perimeter"</span>
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127
+<a name="l00128"></a>00128 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00129"></a>00129 <span class="keyword">struct </span><a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>&lt;segment_tag, Geometry, Strategy&gt;
+<a name="l00130"></a>00130 : detail::<a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>::segment_length&lt;Geometry, Strategy&gt;
+<a name="l00131"></a>00131 {};
 <a name="l00132"></a>00132
 <a name="l00133"></a>00133
-<a name="l00146"></a>00146 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry&gt;
-<a name="l00147"></a><a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf">00147</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1length__result.html" title="Meta-function defining return type of length function.">length_result&lt;Geometry&gt;::type</a> <a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>(
-<a name="l00148"></a>00148 Geometry <span class="keyword">const</span>&amp; geometry)
-<a name="l00149"></a>00149 {
-<a name="l00150"></a>00150 <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="l00151"></a>00151 <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="l00152"></a>00152 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__distance.html" title="Traits class binding a distance strategy to a (possibly two) coordinate system(s)...">strategy_distance</a>
-<a name="l00153"></a>00153 &lt;
-<a name="l00154"></a>00154 cs_tag,
-<a name="l00155"></a>00155 cs_tag,
-<a name="l00156"></a>00156 point_type,
-<a name="l00157"></a>00157 point_type
-<a name="l00158"></a>00158 &gt;::type strategy_type;
-<a name="l00159"></a>00159
-<a name="l00160"></a>00160 <span class="keywordflow">return</span> <a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">dispatch::length</a>
-<a name="l00161"></a>00161 &lt;
-<a name="l00162"></a>00162 <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="l00163"></a>00163 Geometry,
-<a name="l00164"></a>00164 strategy_type
-<a name="l00165"></a>00165 &gt;::apply(geometry, strategy_type());
-<a name="l00166"></a>00166 }
-<a name="l00167"></a>00167
-<a name="l00182"></a>00182 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00183"></a><a class="code" href="group__length.html#gc25f493cf56a02b9f0077e18a444bed8">00183</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1length__result.html" title="Meta-function defining return type of length function.">length_result&lt;Geometry&gt;::type</a> <a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>(
-<a name="l00184"></a>00184 Geometry <span class="keyword">const</span>&amp; geometry, Strategy <span class="keyword">const</span>&amp; strategy)
-<a name="l00185"></a>00185 {
-<a name="l00186"></a>00186 <span class="keywordflow">return</span> <a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">dispatch::length</a>
-<a name="l00187"></a>00187 &lt;
-<a name="l00188"></a>00188 <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="l00189"></a>00189 Geometry,
-<a name="l00190"></a>00190 Strategy
-<a name="l00191"></a>00191 &gt;::apply(geometry, strategy);
-<a name="l00192"></a>00192 }
-<a name="l00193"></a>00193
-<a name="l00194"></a>00194 } <span class="comment">// namespace ggl</span>
-<a name="l00195"></a>00195
-<a name="l00196"></a>00196 <span class="preprocessor">#endif // GGL_ALGORITHMS_LENGTH_HPP</span>
+<a name="l00134"></a>00134 } <span class="comment">// namespace dispatch</span>
+<a name="l00135"></a>00135 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00136"></a>00136 <span class="preprocessor"></span>
+<a name="l00137"></a>00137
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141
+<a name="l00156"></a>00156 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00157"></a><a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf">00157</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1length__result.html" title="Meta-function defining return type of length function.">length_result&lt;Geometry&gt;::type</a> <a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>(
+<a name="l00158"></a>00158 Geometry <span class="keyword">const</span>&amp; geometry)
+<a name="l00159"></a>00159 {
+<a name="l00160"></a>00160 concept::check&lt;const Geometry&gt;();
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 <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="l00163"></a>00163 <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="l00164"></a>00164 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__distance.html" title="Traits class binding a distance strategy to a (possibly two) coordinate system(s)...">strategy_distance</a>
+<a name="l00165"></a>00165 &lt;
+<a name="l00166"></a>00166 cs_tag,
+<a name="l00167"></a>00167 cs_tag,
+<a name="l00168"></a>00168 point_type,
+<a name="l00169"></a>00169 point_type
+<a name="l00170"></a>00170 &gt;::type strategy_type;
+<a name="l00171"></a>00171
+<a name="l00172"></a>00172 <span class="keywordflow">return</span> <a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">dispatch::length</a>
+<a name="l00173"></a>00173 &lt;
+<a name="l00174"></a>00174 <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="l00175"></a>00175 Geometry,
+<a name="l00176"></a>00176 strategy_type
+<a name="l00177"></a>00177 &gt;::apply(geometry, strategy_type());
+<a name="l00178"></a>00178 }
+<a name="l00179"></a>00179
+<a name="l00197"></a>00197 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00198"></a><a class="code" href="group__length.html#gc25f493cf56a02b9f0077e18a444bed8">00198</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1length__result.html" title="Meta-function defining return type of length function.">length_result&lt;Geometry&gt;::type</a> <a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>(
+<a name="l00199"></a>00199 Geometry <span class="keyword">const</span>&amp; geometry, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00200"></a>00200 {
+<a name="l00201"></a>00201 concept::check&lt;const Geometry&gt;();
+<a name="l00202"></a>00202
+<a name="l00203"></a>00203 <span class="keywordflow">return</span> <a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">dispatch::length</a>
+<a name="l00204"></a>00204 &lt;
+<a name="l00205"></a>00205 <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="l00206"></a>00206 Geometry,
+<a name="l00207"></a>00207 Strategy
+<a name="l00208"></a>00208 &gt;::apply(geometry, strategy);
+<a name="l00209"></a>00209 }
+<a name="l00210"></a>00210
+<a name="l00211"></a>00211 } <span class="comment">// namespace ggl</span>
+<a name="l00212"></a>00212
+<a name="l00213"></a>00213 <span class="preprocessor">#endif // GGL_ALGORITHMS_LENGTH_HPP</span>
 </pre></div></div>
 <hr size="1">
 <table width="100%">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp_source.html 2009-10-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -59,124 +59,123 @@
 <a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="is__linear_8hpp.html">ggl/core/is_linear.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
-<a name="l00020"></a>00020
-<a name="l00021"></a>00021 <span class="keyword">namespace </span>ggl
-<a name="l00022"></a>00022 {
-<a name="l00023"></a>00023
-<a name="l00024"></a>00024 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a> {
-<a name="l00026"></a>00026
-<a name="l00027"></a>00027
-<a name="l00028"></a>00028 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range&gt;
-<a name="l00029"></a>00029 <span class="keyword">struct </span>range_count
-<a name="l00030"></a>00030 {
-<a name="l00031"></a>00031 <span class="keyword">static</span> <span class="keyword">inline</span> std::size_t apply(Range <span class="keyword">const</span>&amp; range)
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033 <span class="keywordflow">return</span> boost::size(range);
-<a name="l00034"></a>00034 }
-<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> Geometry, std::<span class="keywordtype">size_t</span> D&gt;
-<a name="l00038"></a>00038 <span class="keyword">struct </span>other_count
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="keyword">static</span> <span class="keyword">inline</span> std::size_t apply(Geometry <span class="keyword">const</span>&amp; geometry)
-<a name="l00041"></a>00041 {
-<a name="l00042"></a>00042 <span class="keywordflow">return</span> D;
-<a name="l00043"></a>00043 }
-<a name="l00044"></a>00044 };
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon&gt;
-<a name="l00047"></a>00047 <span class="keyword">struct </span>polygon_count
-<a name="l00048"></a>00048 {
-<a name="l00049"></a>00049 <span class="keyword">static</span> <span class="keyword">inline</span> std::size_t apply(Polygon <span class="keyword">const</span>&amp; poly)
-<a name="l00050"></a>00050 {
-<a name="l00051"></a>00051 std::size_t n = boost::size(<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="l00052"></a>00052 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
-<a name="l00053"></a>00053 &lt;
-<a name="l00054"></a>00054 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type
-<a name="l00055"></a>00055 &gt;::type iterator;
-<a name="l00056"></a>00056
-<a name="l00057"></a>00057 <span class="keywordflow">for</span> (iterator 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="l00058"></a>00058 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="l00059"></a>00059 ++it)
-<a name="l00060"></a>00060 {
-<a name="l00061"></a>00061 n += boost::size(*it);
-<a name="l00062"></a>00062 }
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 <span class="keywordflow">return</span> n;
-<a name="l00065"></a>00065 }
-<a name="l00066"></a>00066 };
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 }} <span class="comment">// namespace detail::num_points</span>
-<a name="l00069"></a>00069 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
-<a name="l00070"></a>00070 <span class="preprocessor"></span>
-<a name="l00071"></a>00071
-<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> GeometryTag, <span class="keywordtype">bool</span> Linear, <span class="keyword">typename</span> Geometry&gt;
-<a name="l00077"></a>00077 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</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> GeometryTag, <span class="keyword">typename</span> Geometry&gt;
-<a name="l00082"></a>00082 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;GeometryTag, true, Geometry&gt;
-<a name="l00083"></a>00083 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::range_count&lt;Geometry&gt;
-<a name="l00084"></a>00084 {
-<a name="l00085"></a>00085 };
-<a name="l00086"></a>00086
-<a name="l00087"></a>00087 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
-<a name="l00088"></a>00088 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;point_tag, false, Geometry&gt;
-<a name="l00089"></a>00089 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count&lt;Geometry, 1&gt;
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 };
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
-<a name="l00094"></a>00094 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;box_tag, false, Geometry&gt;
-<a name="l00095"></a>00095 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count&lt;Geometry, 4&gt;
-<a name="l00096"></a>00096 {
-<a name="l00097"></a>00097 };
-<a name="l00098"></a>00098
-<a name="l00099"></a>00099 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
-<a name="l00100"></a>00100 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;segment_tag, false, Geometry&gt;
-<a name="l00101"></a>00101 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count&lt;Geometry, 2&gt;
-<a name="l00102"></a>00102 {
-<a name="l00103"></a>00103 };
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
-<a name="l00106"></a>00106 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;nsphere_tag, false, Geometry&gt;
-<a name="l00107"></a>00107 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count&lt;Geometry, 1&gt;
-<a name="l00108"></a>00108 {
-<a name="l00109"></a>00109 };
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
-<a name="l00112"></a>00112 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;polygon_tag, false, Geometry&gt;
-<a name="l00113"></a>00113 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::polygon_count&lt;Geometry&gt;
-<a name="l00114"></a>00114 {
-<a name="l00115"></a>00115 };
-<a name="l00116"></a>00116
-<a name="l00117"></a>00117 } <span class="comment">// namespace dispatch</span>
-<a name="l00118"></a>00118 <span class="preprocessor">#endif</span>
-<a name="l00119"></a>00119 <span class="preprocessor"></span>
-<a name="l00120"></a>00120
-<a name="l00131"></a>00131 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
-<a name="l00132"></a><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267">00132</a> <span class="keyword">inline</span> std::size_t <a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>(Geometry <span class="keyword">const</span>&amp; geometry)
-<a name="l00133"></a>00133 {
-<a name="l00134"></a>00134 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;Geometry&gt;::type ncg_type;
-<a name="l00135"></a>00135
-<a name="l00136"></a>00136 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">dispatch::num_points</a>
-<a name="l00137"></a>00137 &lt;
-<a name="l00138"></a>00138 <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="l00139"></a>00139 <a class="code" href="structggl_1_1is__linear.html" title="Meta-function defining &amp;quot;true&amp;quot; for linear types (linestring,ring), &amp;quot;false&amp;quot;...">is_linear&lt;ncg_type&gt;::value</a>,
-<a name="l00140"></a>00140 ncg_type
-<a name="l00141"></a>00141 &gt;::apply(geometry);
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 }
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>ggl
+<a name="l00024"></a>00024 {
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a> {
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029
+<a name="l00030"></a>00030 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range&gt;
+<a name="l00031"></a>00031 <span class="keyword">struct </span>range_count
+<a name="l00032"></a>00032 {
+<a name="l00033"></a>00033 <span class="keyword">static</span> <span class="keyword">inline</span> std::size_t apply(Range <span class="keyword">const</span>&amp; range)
+<a name="l00034"></a>00034 {
+<a name="l00035"></a>00035 <span class="keywordflow">return</span> boost::size(range);
+<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> Geometry, std::<span class="keywordtype">size_t</span> D&gt;
+<a name="l00040"></a>00040 <span class="keyword">struct </span>other_count
+<a name="l00041"></a>00041 {
+<a name="l00042"></a>00042 <span class="keyword">static</span> <span class="keyword">inline</span> std::size_t apply(Geometry <span class="keyword">const</span>&amp; geometry)
+<a name="l00043"></a>00043 {
+<a name="l00044"></a>00044 <span class="keywordflow">return</span> D;
+<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> Polygon&gt;
+<a name="l00049"></a>00049 <span class="keyword">struct </span>polygon_count
+<a name="l00050"></a>00050 {
+<a name="l00051"></a>00051 <span class="keyword">static</span> <span class="keyword">inline</span> std::size_t apply(Polygon <span class="keyword">const</span>&amp; poly)
+<a name="l00052"></a>00052 {
+<a name="l00053"></a>00053 std::size_t n = boost::size(<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="l00054"></a>00054 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00055"></a>00055 &lt;
+<a name="l00056"></a>00056 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type
+<a name="l00057"></a>00057 &gt;::type iterator;
+<a name="l00058"></a>00058
+<a name="l00059"></a>00059 <span class="keywordflow">for</span> (iterator 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="l00060"></a>00060 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="l00061"></a>00061 ++it)
+<a name="l00062"></a>00062 {
+<a name="l00063"></a>00063 n += boost::size(*it);
+<a name="l00064"></a>00064 }
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066 <span class="keywordflow">return</span> n;
+<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::num_points</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
+<a name="l00074"></a>00074 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00075"></a>00075 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<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> GeometryTag, <span class="keywordtype">bool</span> Linear, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00079"></a>00079 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>
+<a name="l00080"></a>00080 {
+<a name="l00081"></a>00081 };
+<a name="l00082"></a>00082
+<a name="l00083"></a>00083 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> GeometryTag, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00084"></a>00084 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;GeometryTag, true, Geometry&gt;
+<a name="l00085"></a>00085 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::range_count&lt;Geometry&gt;
+<a name="l00086"></a>00086 {
+<a name="l00087"></a>00087 };
+<a name="l00088"></a>00088
+<a name="l00089"></a>00089 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00090"></a>00090 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;point_tag, false, Geometry&gt;
+<a name="l00091"></a>00091 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count&lt;Geometry, 1&gt;
+<a name="l00092"></a>00092 {
+<a name="l00093"></a>00093 };
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00096"></a>00096 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;box_tag, false, Geometry&gt;
+<a name="l00097"></a>00097 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count&lt;Geometry, 4&gt;
+<a name="l00098"></a>00098 {
+<a name="l00099"></a>00099 };
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00102"></a>00102 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;segment_tag, false, Geometry&gt;
+<a name="l00103"></a>00103 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count&lt;Geometry, 2&gt;
+<a name="l00104"></a>00104 {
+<a name="l00105"></a>00105 };
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00109"></a>00109 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;polygon_tag, false, Geometry&gt;
+<a name="l00110"></a>00110 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::polygon_count&lt;Geometry&gt;
+<a name="l00111"></a>00111 {
+<a name="l00112"></a>00112 };
+<a name="l00113"></a>00113
+<a name="l00114"></a>00114 } <span class="comment">// namespace dispatch</span>
+<a name="l00115"></a>00115 <span class="preprocessor">#endif</span>
+<a name="l00116"></a>00116 <span class="preprocessor"></span>
+<a name="l00117"></a>00117
+<a name="l00128"></a>00128 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00129"></a><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267">00129</a> <span class="keyword">inline</span> std::size_t <a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>(Geometry <span class="keyword">const</span>&amp; geometry)
+<a name="l00130"></a>00130 {
+<a name="l00131"></a>00131 concept::check&lt;const Geometry&gt;();
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;Geometry&gt;::type ncg_type;
+<a name="l00134"></a>00134
+<a name="l00135"></a>00135 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">dispatch::num_points</a>
+<a name="l00136"></a>00136 &lt;
+<a name="l00137"></a>00137 <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="l00138"></a>00138 <a class="code" href="structggl_1_1is__linear.html" title="Meta-function defining &amp;quot;true&amp;quot; for linear types (linestring,ring), &amp;quot;false&amp;quot;...">is_linear&lt;ncg_type&gt;::value</a>,
+<a name="l00139"></a>00139 ncg_type
+<a name="l00140"></a>00140 &gt;::apply(geometry);
+<a name="l00141"></a>00141 }
+<a name="l00142"></a>00142
+<a name="l00143"></a>00143 }
+<a name="l00144"></a>00144
 <a name="l00145"></a>00145
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147 <span class="preprocessor">#endif // GGL_ALGORITHMS_NUM_POINTS_HPP</span>
+<a name="l00146"></a>00146 <span class="preprocessor">#endif // GGL_ALGORITHMS_NUM_POINTS_HPP</span>
 </pre></div></div>
 <hr size="1">
 <table width="100%">

Modified: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp_source.html
==============================================================================
--- sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp_source.html (original)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp_source.html 2009-10-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -51,70 +51,68 @@
 <a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ALGORITHMS_PERIMETER_HPP</span>
 <a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_PERIMETER_HPP</span>
 <a name="l00011"></a>00011 <span class="preprocessor"></span>
-<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;cmath&gt;</span>
-<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;iterator&gt;</span>
+<a name="l00012"></a>00012
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&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="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>&gt;</span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
-<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="length__result_8hpp.html">ggl/strategies/length_result.hpp</a>&gt;</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="length__result_8hpp.html">ggl/strategies/length_result.hpp</a>&gt;</span>
+<a name="l00018"></a>00018
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="algorithms_2length_8hpp.html">ggl/algorithms/length.hpp</a>&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="calculate__null_8hpp.html">ggl/algorithms/detail/calculate_null.hpp</a>&gt;</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="calculate__sum_8hpp.html">ggl/algorithms/detail/calculate_sum.hpp</a>&gt;</span>
 <a name="l00022"></a>00022
-<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="algorithms_2length_8hpp.html">ggl/algorithms/length.hpp</a>&gt;</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="calculate__null_8hpp.html">ggl/algorithms/detail/calculate_null.hpp</a>&gt;</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="calculate__sum_8hpp.html">ggl/algorithms/detail/calculate_sum.hpp</a>&gt;</span>
-<a name="l00026"></a>00026
-<a name="l00027"></a>00027
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>ggl
+<a name="l00023"></a>00023
+<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_DISPATCH</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
 <a name="l00034"></a>00034 {
 <a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
-<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040 <span class="comment">// Default perimeter is 0.0, specializations implement calculated values</span>
-<a name="l00041"></a>00041 <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="l00042"></a>00042 <span class="keyword">struct </span><a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9" title="Calculate perimeter of a geometry.">perimeter</a> : detail::calculate_null
-<a name="l00043"></a>00043 &lt;
-<a name="l00044"></a>00044 typename length_result&lt;Geometry&gt;::type,
-<a name="l00045"></a>00045 Geometry,
-<a name="l00046"></a>00046 Strategy
-<a name="l00047"></a>00047 &gt;
-<a name="l00048"></a>00048 {};
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00051"></a>00051 <span class="keyword">struct </span><a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9" title="Calculate perimeter of a geometry.">perimeter</a>&lt;ring_tag, Geometry, Strategy&gt;
-<a name="l00052"></a>00052 : detail::<a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>::range_length&lt;Geometry, Strategy&gt;
-<a name="l00053"></a>00053 {};
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00056"></a>00056 <span class="keyword">struct </span><a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9" title="Calculate perimeter of a geometry.">perimeter</a>&lt;polygon_tag, Polygon, Strategy&gt;
-<a name="l00057"></a>00057 : detail::calculate_polygon_sum
-<a name="l00058"></a>00058 &lt;
-<a name="l00059"></a>00059 typename length_result&lt;Polygon&gt;::type,
-<a name="l00060"></a>00060 Polygon,
-<a name="l00061"></a>00061 Strategy,
-<a name="l00062"></a>00062 detail::length::range_length
-<a name="l00063"></a>00063 &lt;
-<a name="l00064"></a>00064 typename ring_type&lt;Polygon&gt;::type,
-<a name="l00065"></a>00065 Strategy
-<a name="l00066"></a>00066 &gt;
-<a name="l00067"></a>00067 &gt;
-<a name="l00068"></a>00068 {};
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071 <span class="comment">// box,n-sphere: to be implemented</span>
+<a name="l00036"></a>00036 <span class="comment">// Default perimeter is 0.0, specializations implement calculated values</span>
+<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> Strategy&gt;
+<a name="l00038"></a>00038 <span class="keyword">struct </span><a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9" title="Calculate perimeter of a geometry.">perimeter</a> : detail::calculate_null
+<a name="l00039"></a>00039 &lt;
+<a name="l00040"></a>00040 typename length_result&lt;Geometry&gt;::type,
+<a name="l00041"></a>00041 Geometry,
+<a name="l00042"></a>00042 Strategy
+<a name="l00043"></a>00043 &gt;
+<a name="l00044"></a>00044 {};
+<a name="l00045"></a>00045
+<a name="l00046"></a>00046 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00047"></a>00047 <span class="keyword">struct </span><a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9" title="Calculate perimeter of a geometry.">perimeter</a>&lt;ring_tag, Geometry, Strategy&gt;
+<a name="l00048"></a>00048 : detail::<a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>::range_length&lt;Geometry, Strategy&gt;
+<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> Polygon, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00052"></a>00052 <span class="keyword">struct </span><a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9" title="Calculate perimeter of a geometry.">perimeter</a>&lt;polygon_tag, Polygon, Strategy&gt;
+<a name="l00053"></a>00053 : detail::calculate_polygon_sum
+<a name="l00054"></a>00054 &lt;
+<a name="l00055"></a>00055 typename length_result&lt;Polygon&gt;::type,
+<a name="l00056"></a>00056 Polygon,
+<a name="l00057"></a>00057 Strategy,
+<a name="l00058"></a>00058 detail::length::range_length
+<a name="l00059"></a>00059 &lt;
+<a name="l00060"></a>00060 typename ring_type&lt;Polygon&gt;::type,
+<a name="l00061"></a>00061 Strategy
+<a name="l00062"></a>00062 &gt;
+<a name="l00063"></a>00063 &gt;
+<a name="l00064"></a>00064 {};
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066
+<a name="l00067"></a>00067 <span class="comment">// box,n-sphere: to be implemented</span>
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 } <span class="comment">// namespace dispatch</span>
+<a name="l00070"></a>00070 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00071"></a>00071 <span class="preprocessor"></span>
 <a name="l00072"></a>00072
-<a name="l00073"></a>00073 } <span class="comment">// namespace dispatch</span>
-<a name="l00074"></a>00074 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
-<a name="l00075"></a>00075 <span class="preprocessor"></span>
-<a name="l00076"></a>00076
-<a name="l00084"></a>00084 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry&gt;
-<a name="l00085"></a><a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9">00085</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1length__result.html" title="Meta-function defining return type of length function.">length_result&lt;Geometry&gt;::type</a> <a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9" title="Calculate perimeter of a geometry.">perimeter</a>(
-<a name="l00086"></a>00086 Geometry <span class="keyword">const</span>&amp; geometry)
-<a name="l00087"></a>00087 {
+<a name="l00082"></a>00082 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00083"></a><a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9">00083</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1length__result.html" title="Meta-function defining return type of length function.">length_result&lt;Geometry&gt;::type</a> <a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9" title="Calculate perimeter of a geometry.">perimeter</a>(
+<a name="l00084"></a>00084 Geometry <span class="keyword">const</span>&amp; geometry)
+<a name="l00085"></a>00085 {
+<a name="l00086"></a>00086 concept::check&lt;const Geometry&gt;();
+<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_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="l00089"></a>00089 <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="l00090"></a>00090 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__distance.html" title="Traits class binding a distance strategy to a (possibly two) coordinate system(s)...">strategy_distance</a>
@@ -133,21 +131,24 @@
 <a name="l00103"></a>00103 &gt;::apply(geometry, strategy_type());
 <a name="l00104"></a>00104 }
 <a name="l00105"></a>00105
-<a name="l00114"></a>00114 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
-<a name="l00115"></a><a class="code" href="group__perimeter.html#g78c3f8a2c3eed80533521425079cdf55">00115</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1length__result.html" title="Meta-function defining return type of length function.">length_result&lt;Geometry&gt;::type</a> <a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9" title="Calculate perimeter of a geometry.">perimeter</a>(
-<a name="l00116"></a>00116 Geometry <span class="keyword">const</span>&amp; geometry, Strategy <span class="keyword">const</span>&amp; strategy)
-<a name="l00117"></a>00117 {
-<a name="l00118"></a>00118 <span class="keywordflow">return</span> <a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9" title="Calculate perimeter of a geometry.">dispatch::perimeter</a>
-<a name="l00119"></a>00119 &lt;
-<a name="l00120"></a>00120 <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="l00121"></a>00121 Geometry,
-<a name="l00122"></a>00122 Strategy
-<a name="l00123"></a>00123 &gt;::apply(geometry, strategy);
-<a name="l00124"></a>00124 }
-<a name="l00125"></a>00125
-<a name="l00126"></a>00126 } <span class="comment">// namespace ggl</span>
-<a name="l00127"></a>00127
-<a name="l00128"></a>00128 <span class="preprocessor">#endif // GGL_ALGORITHMS_PERIMETER_HPP</span>
+<a name="l00116"></a>00116 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00117"></a><a class="code" href="group__perimeter.html#g78c3f8a2c3eed80533521425079cdf55">00117</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1length__result.html" title="Meta-function defining return type of length function.">length_result&lt;Geometry&gt;::type</a> <a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9" title="Calculate perimeter of a geometry.">perimeter</a>(
+<a name="l00118"></a>00118 Geometry <span class="keyword">const</span>&amp; geometry, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00119"></a>00119 {
+<a name="l00120"></a>00120 concept::check&lt;const Geometry&gt;();
+<a name="l00121"></a>00121
+<a name="l00122"></a>00122 <span class="keywordflow">return</span> <a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9" title="Calculate perimeter of a geometry.">dispatch::perimeter</a>
+<a name="l00123"></a>00123 &lt;
+<a name="l00124"></a>00124 <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="l00125"></a>00125 Geometry,
+<a name="l00126"></a>00126 Strategy
+<a name="l00127"></a>00127 &gt;::apply(geometry, strategy);
+<a name="l00128"></a>00128 }
+<a name="l00129"></a>00129
+<a name="l00130"></a>00130 } <span class="comment">// namespace ggl</span>
+<a name="l00131"></a>00131
+<a name="l00132"></a>00132 <span class="preprocessor">#endif // GGL_ALGORITHMS_PERIMETER_HPP</span>
+<a name="l00133"></a>00133 <span class="preprocessor"></span>
 </pre></div></div>
 <hr size="1">
 <table width="100%">

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-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -55,7 +55,7 @@
 <a name="l00013"></a>00013 <span class="preprocessor">#include &lt;vector&gt;</span>
 <a name="l00014"></a>00014
 <a name="l00015"></a>00015 <span class="preprocessor">#include &lt;boost/concept_check.hpp&gt;</span>
-<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;boost/concept/requires.hpp&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/range/metafunctions.hpp&gt;</span>
 <a name="l00019"></a>00019
@@ -65,520 +65,525 @@
 <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="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="l00026"></a>00026 <span class="preprocessor">#include &lt;<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00027"></a>00027
 <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="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#g490821bd25a63cc584be1319375794f0" 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="l00109"></a>00109
-<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="classggl_1_1segment.html" title="Class segment: small class 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="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="classggl_1_1segment.html" title="Class segment: small class 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="l00275"></a>00275
-<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="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="l00278"></a>00278
-<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="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="l00281"></a>00281
-<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="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="l00427"></a>00427
-<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="l00428"></a>00428 point_type ll, lr, ul, ur;
+<a name="l00429"></a>00429 <a class="code" href="namespaceggl.html#9ddc8c5f7803a48d3ce186f89072c9ed" 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 concept::check&lt;const Geometry&gt;();
+<a name="l00559"></a>00559
+<a name="l00560"></a>00560 <span class="comment">// A maximum of 10 segments per section seems to give the fastest results</span>
+<a name="l00561"></a>00561 <span class="keyword">static</span> <span class="keyword">const</span> std::size_t max_segments_per_section = 10;
+<a name="l00562"></a>00562 <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="l00563"></a>00563 &lt;
+<a name="l00564"></a>00564 <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="l00565"></a>00565 Geometry,
+<a name="l00566"></a>00566 Sections,
+<a name="l00567"></a>00567 Sections::value,
+<a name="l00568"></a>00568 max_segments_per_section
+<a name="l00569"></a>00569 &gt; sectionalizer_type;
 <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 } <span class="comment">// namespace ggl</span>
+<a name="l00571"></a>00571 sections.clear();
+<a name="l00572"></a>00572 sectionalizer_type::apply(geometry, sections);
+<a name="l00573"></a>00573 }
+<a name="l00574"></a>00574
 <a name="l00575"></a>00575
-<a name="l00576"></a>00576 <span class="preprocessor">#endif // GGL_ALGORITHMS_SECTIONALIZE_HPP</span>
+<a name="l00576"></a>00576
+<a name="l00577"></a>00577
+<a name="l00578"></a>00578
+<a name="l00579"></a>00579 } <span class="comment">// namespace ggl</span>
+<a name="l00580"></a>00580
+<a name="l00581"></a>00581 <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_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-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -54,13 +54,13 @@
 <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;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="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_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
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
 <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="simplify__douglas__peucker_8hpp.html">ggl/strategies/agnostic/simplify_douglas_peucker.hpp</a>&gt;</span>
@@ -265,91 +265,101 @@
 <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="l00259"></a>00259 concept::check&lt;Geometry&gt;();
 <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="l00261"></a>00261 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="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="l00263"></a>00263 <a class="code" href="group__access.html#g6834d3a54e36ad3c0b56065aaaf27771" title="Clears a linestring, linear ring or polygon (exterior+interiors) or multi*.">ggl::clear</a>(out);
+<a name="l00264"></a>00264
+<a name="l00265"></a>00265 <a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry.">dispatch::simplify</a>
+<a name="l00266"></a>00266 &lt;
+<a name="l00267"></a>00267 <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="l00268"></a>00268 Geometry,
+<a name="l00269"></a>00269 Strategy
+<a name="l00270"></a>00270 &gt;::apply(geometry, out, max_distance, strategy);
+<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="classggl_1_1segment.html" title="Class segment: small class 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="l00274"></a>00274
+<a name="l00275"></a>00275
+<a name="l00285"></a>00285 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00286"></a><a class="code" href="group__simplify.html#g953e1055914400f9ad3191adc5b42270">00286</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="l00287"></a>00287 <span class="keywordtype">double</span> max_distance)
+<a name="l00288"></a>00288 {
+<a name="l00289"></a>00289 concept::check&lt;Geometry&gt;();
+<a name="l00290"></a>00290
+<a name="l00291"></a>00291 <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="l00292"></a>00292 <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="l00293"></a>00293 <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="l00294"></a>00294 &lt;
+<a name="l00295"></a>00295 cs_tag,
+<a name="l00296"></a>00296 cs_tag,
+<a name="l00297"></a>00297 point_type,
+<a name="l00298"></a>00298 <a class="code" href="classggl_1_1segment.html" title="Class segment: small class containing two (templatized) point references.">ggl::segment&lt;const point_type&gt;</a>
+<a name="l00299"></a>00299 &gt;::type ds_strategy_type;
+<a name="l00300"></a>00300
+<a name="l00301"></a>00301 <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="l00302"></a>00302 &lt;
+<a name="l00303"></a>00303 point_type, ds_strategy_type
+<a name="l00304"></a>00304 &gt; strategy_type;
 <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="classggl_1_1segment.html" title="Class segment: small class 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="l00306"></a>00306 <a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry.">simplify</a>(geometry, out, max_distance, strategy_type());
+<a name="l00307"></a>00307 }
+<a name="l00308"></a>00308
+<a name="l00309"></a>00309
+<a name="l00326"></a>00326 <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="l00327"></a><a class="code" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a">00327</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="l00328"></a>00328 <span class="keywordtype">double</span> max_distance, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00329"></a>00329 {
+<a name="l00330"></a>00330 concept::check&lt;const Geometry&gt;();
+<a name="l00331"></a>00331 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="l00332"></a>00332
+<a name="l00333"></a>00333 <a class="code" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a" title="Simplify a geometry.">dispatch::simplify_inserter</a>
+<a name="l00334"></a>00334 &lt;
+<a name="l00335"></a>00335 <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="l00336"></a>00336 Geometry,
+<a name="l00337"></a>00337 Strategy
+<a name="l00338"></a>00338 &gt;::apply(geometry, out, max_distance, strategy);
+<a name="l00339"></a>00339 }
+<a name="l00340"></a>00340
+<a name="l00356"></a>00356 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00357"></a><a class="code" href="group__simplify.html#g4285888f1598725bca124878ac16c656">00357</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="l00358"></a>00358 <span class="keywordtype">double</span> max_distance)
+<a name="l00359"></a>00359 {
+<a name="l00360"></a>00360 <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="l00361"></a>00361
+<a name="l00362"></a>00362 <span class="comment">// Concept: output point type = point type of input geometry</span>
+<a name="l00363"></a>00363 concept::check&lt;const Geometry&gt;();
+<a name="l00364"></a>00364 concept::check&lt;point_type&gt;();
+<a name="l00365"></a>00365
+<a name="l00366"></a>00366 <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="l00367"></a>00367 <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="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>
+<a name="l00369"></a>00369 cs_tag,
+<a name="l00370"></a>00370 cs_tag,
+<a name="l00371"></a>00371 point_type,
+<a name="l00372"></a>00372 <a class="code" href="classggl_1_1segment.html" title="Class segment: small class containing two (templatized) point references.">ggl::segment&lt;const point_type&gt;</a>
+<a name="l00373"></a>00373 &gt;::type ds_strategy_type;
+<a name="l00374"></a>00374
+<a name="l00375"></a>00375 <span class="comment">//typedef typename ggl::as_range_type&lt;Geometry&gt;::type range_type;</span>
+<a name="l00376"></a>00376
+<a name="l00377"></a>00377 <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="l00378"></a>00378 &lt;
+<a name="l00379"></a>00379 point_type, ds_strategy_type
+<a name="l00380"></a>00380 &gt; strategy_type;
+<a name="l00381"></a>00381
+<a name="l00382"></a>00382 <a class="code" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a" title="Simplify a geometry.">dispatch::simplify_inserter</a>
+<a name="l00383"></a>00383 &lt;
+<a name="l00384"></a>00384 <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="l00385"></a>00385 Geometry,
+<a name="l00386"></a>00386 strategy_type
+<a name="l00387"></a>00387 &gt;::apply(geometry, out, max_distance, strategy_type());
+<a name="l00388"></a>00388 }
+<a name="l00389"></a>00389
+<a name="l00390"></a>00390
+<a name="l00391"></a>00391 } <span class="comment">// namespace ggl</span>
+<a name="l00392"></a>00392
+<a name="l00393"></a>00393 <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-25 06:40:07 EDT (Sun, 25 Oct 2009)
@@ -58,224 +58,234 @@
 <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="clear_8hpp.html">ggl/algorithms/clear.hpp</a>&gt;</span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.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 <span class="preprocessor">#include &lt;<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>&gt;</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>&gt;</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="assign_8hpp.html">ggl/algorithms/assign.hpp</a>&gt;</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>&gt;</span>
 <a name="l00025"></a>00025
-<a name="l00026"></a>00026
-<a name="l00061"></a>00061 <span class="keyword">namespace </span>ggl
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
-<a name="l00065"></a>00065 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a> {
-<a name="l00066"></a>00066
-<a name="l00067"></a>00067 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2&gt;
-<a name="l00068"></a>00068 <span class="keyword">struct </span>transform_point
-<a name="l00069"></a>00069 {
-<a name="l00070"></a>00070 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> S&gt;
-<a name="l00071"></a>00071 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(P1 <span class="keyword">const</span>&amp; p1, P2&amp; p2, S <span class="keyword">const</span>&amp; strategy)
-<a name="l00072"></a>00072 {
-<a name="l00073"></a>00073 <span class="keywordflow">return</span> strategy(p1, p2);
-<a name="l00074"></a>00074 }
-<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> B1, <span class="keyword">typename</span> B2&gt;
-<a name="l00078"></a>00078 <span class="keyword">struct </span>transform_box
-<a name="l00079"></a>00079 {
-<a name="l00080"></a>00080 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> S&gt;
-<a name="l00081"></a>00081 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(B1 <span class="keyword">const</span>&amp; b1, B2&amp; b2, S <span class="keyword">const</span>&amp; strategy)
-<a name="l00082"></a>00082 {
-<a name="l00083"></a>00083 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;B1&gt;::type point_type1;
-<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 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="l00026"></a>00026 <span class="preprocessor">#include &lt;<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
+<a name="l00029"></a>00029
+<a name="l00030"></a>00030
+<a name="l00065"></a>00065 <span class="keyword">namespace </span>ggl
+<a name="l00066"></a>00066 {
+<a name="l00067"></a>00067
+<a name="l00068"></a>00068 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00069"></a>00069 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a> {
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2&gt;
+<a name="l00072"></a>00072 <span class="keyword">struct </span>transform_point
+<a name="l00073"></a>00073 {
+<a name="l00074"></a>00074 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> S&gt;
+<a name="l00075"></a>00075 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(P1 <span class="keyword">const</span>&amp; p1, P2&amp; p2, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00076"></a>00076 {
+<