![]() |
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 << <a name="a5"></a><a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(ls) << 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 << <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(b) << 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 << <span class="stringliteral">"appended: "</span> << <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(ls) << 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 << <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(b) << 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 << <span class="stringliteral">"centroid: "</span> << <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(cent) << 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<point_2d></a>& 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 << <span class="stringliteral">"with inner ring:"</span> << <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(poly) << std::endl;
<span class="comment">// The area of the polygon is changed of course</span>
std::cout << <span class="stringliteral">"new area of polygon: "</span> << <a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>(poly) << 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 << <span class="stringliteral">"new centroid: "</span> << <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(cent) << std::endl;
<span class="comment">// You can test whether points are within a polygon</span>
std::cout << <span class="stringliteral">"point in polygon:"</span>
- << <span class="stringliteral">" p1: "</span> << boolstr(<a name="a12"></a><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>(make<point_2d>(3.0, 2.0), poly))
- << <span class="stringliteral">" p2: "</span> << boolstr(<a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>(make<point_2d>(3.7, 2.0), poly))
- << <span class="stringliteral">" p3: "</span> << boolstr(<a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>(make<point_2d>(4.4, 2.0), poly))
+ << <span class="stringliteral">" p1: "</span> << boolstr(<a name="a12"></a><a class="code" href="group__boolean__relations.html#g599c2aa76cf2037eb40514e449ace28d" title="Within check.">within</a>(make<point_2d>(3.0, 2.0), poly))
+ << <span class="stringliteral">" p2: "</span> << boolstr(<a class="code" href="group__boolean__relations.html#g599c2aa76cf2037eb40514e449ace28d" title="Within check.">within</a>(make<point_2d>(3.7, 2.0), poly))
+ << <span class="stringliteral">" p3: "</span> << boolstr(<a class="code" href="group__boolean__relations.html#g599c2aa76cf2037eb40514e449ace28d" title="Within check.">within</a>(make<point_2d>(4.4, 2.0), poly))
<< 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<point_2d, std::vector, std::deque></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<polygon_type>::type</a>& 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<point_2d>(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<point_2d>(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<point_2d>(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<point_2d>(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<point_2d>(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<point_2d>(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<point_2d>(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<point_2d>(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<point_2d>(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<point_2d>(2.8, 1.9));
std::cout << <a class="code" href="namespaceggl.html#3399b7516122f515a1ea5ee5fdf49ce4" title="Main DSV-streaming function.">ggl::dsv</a>(poly2) << 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>& 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<typename M::key_type>(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<Route> <span class="keyword">const</span>& 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<typename ggl::point_type<Route>::type> <span class="keyword">const</span>& 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<point_type, std::string, vertex_type> 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<2>(),
&predecessors[0], &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<double>(), std::plus<double>(),
(std::numeric_limits<double>::max)(), <span class="keywordtype">double</span>(),
boost::dijkstra_visitor<boost::null_visitor>());
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 </td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1traits_1_1access.html">ggl::traits::access< Geometry, Dimension ></a></td></tr>
<tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1traits_1_1append__point.html">ggl::traits::append_point< Geometry, Point ></a></td></tr>
+
+<tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1traits_1_1clear.html">ggl::traits::clear< Geometry ></a></td></tr>
+
+<tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1traits_1_1indexed__access.html">ggl::traits::indexed_access< Geometry, Index, Dimension ></a></td></tr>
<tr><td class="mdescLeft"> </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<std::size_t D, typename G > </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">coordinate_type< G >::type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f">ggl::get</a> (const G &geometry, detail::signature_getset_dimension *dummy=0)</td></tr>
-<tr><td class="mdescLeft"> </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"> </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<std::size_t I, std::size_t D, typename G > </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__access.html#g6ced3f6383c5e664984c54a36a1d78a2">ggl::set</a> (G &geometry, const typename coordinate_type< G >::type &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> <<span class="keyword">typename</span> Geometry, std::<span class="keywordtype">size_t</span> Dimension>
-<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> <<span class="keyword">typename</span> Geometry, std::<span class="keywordtype">size_t</span> Dimension>
+<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> <<span class="keyword">typename</span> Geometry, std::<span class="keywordtype">size_t</span> Index, std::<span class="keywordtype">size_t</span> Dimension>
-<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 &quot;get&quot; and &quot;set&quot; to get and set point coordinate...">indexed_access</a> {};
+<a name="l00058"></a>00058 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry, std::<span class="keywordtype">size_t</span> Index, std::<span class="keywordtype">size_t</span> Dimension>
+<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 &quot;get&quot; and &quot;set&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> <<span class="keyword">typename</span> Geometry>
-<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> <<span class="keyword">typename</span> Geometry>
+<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 <
-<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 >
-<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& ) {}</span>
-<a name="l00099"></a>00099 <span class="comment">//static inline void set(G& g, T const& 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 <
-<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 >
-<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& ) {}</span>
-<a name="l00113"></a>00113 <span class="comment">//static inline void set(G& g, T const& value) {}</span>
+<a name="l00082"></a>00082
+<a name="l00094"></a>00094 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry>
+<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> <<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>>
+<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> <<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>
-<a name="l00117"></a>00117 <span class="keyword">struct </span>access<point_tag, Point, CoordinateType, Dimension>
-<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>& 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<Point, Dimension>::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& p, CoordinateType <span class="keyword">const</span>& 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<Point, Dimension>::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> <<span class="keyword">typename</span> Nsphere, <span class="keyword">typename</span> CoordinateType, std::<span class="keywordtype">size_t</span> Dimension>
-<a name="l00130"></a>00130 <span class="keyword">struct </span>access<nsphere_tag, Nsphere, CoordinateType, Dimension>
-<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>& 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<Nsphere, Dimension>::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& s, CoordinateType <span class="keyword">const</span>& 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<Nsphere, Dimension>::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 <
-<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 >
-<a name="l00149"></a>00149 <span class="keyword">struct </span>indexed_access<box_tag, Box, CoordinateType, Index, Dimension>
-<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>& 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<Box, Index, Dimension>::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& b, CoordinateType <span class="keyword">const</span>& 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<Box, Index, Dimension>::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 <
-<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 >
-<a name="l00168"></a>00168 <span class="keyword">struct </span>indexed_access<segment_tag, Segment, CoordinateType, Index, Dimension>
-<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>& 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<Segment, Index, Dimension>::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& segment, CoordinateType <span class="keyword">const</span>& 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<Segment, Index, Dimension>::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> <std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G>
-<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<G>::type</a> <span class="keyword">get</span>(<span class="keyword">const</span> G& 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 <
+<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 >
+<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& ) {}</span>
+<a name="l00137"></a>00137 <span class="comment">//static inline void set(G& g, T const& 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 <
+<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 >
+<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& ) {}</span>
+<a name="l00151"></a>00151 <span class="comment">//static inline void set(G& g, T const& value) {}</span>
+<a name="l00152"></a>00152 };
+<a name="l00153"></a>00153
+<a name="l00154"></a>00154 <span class="keyword">template</span> <<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>
+<a name="l00155"></a>00155 <span class="keyword">struct </span>access<point_tag, Point, CoordinateType, Dimension>
+<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>& 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<Point, Dimension>::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& p, CoordinateType <span class="keyword">const</span>& 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<Point, Dimension>::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 <
+<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 >
+<a name="l00174"></a>00174 <span class="keyword">struct </span>indexed_access<box_tag, Box, CoordinateType, Index, Dimension>
+<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>& 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<Box, Index, Dimension>::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& b, CoordinateType <span class="keyword">const</span>& 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<Box, Index, Dimension>::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 <
+<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 >
+<a name="l00193"></a>00193 <span class="keyword">struct </span>indexed_access<segment_tag, Segment, CoordinateType, Index, Dimension>
+<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>& 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<Segment, Index, Dimension>::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& segment, CoordinateType <span class="keyword">const</span>& 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<Segment, Index, Dimension>::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<G>::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 <
-<a name="l00218"></a>00218 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::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<ncg_type>::type</a>,
-<a name="l00221"></a>00221 D
-<a name="l00222"></a>00222 > 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> <std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G>
-<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& 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<G>::type</a>& 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<G>::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 <
-<a name="l00247"></a>00247 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::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<ncg_type>::type</a>,
-<a name="l00250"></a>00250 D
-<a name="l00251"></a>00251 > coord_access_type;
+<a name="l00233"></a>00233 <span class="keyword">template</span> <std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G>
+<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<G>::type</a> <span class="keyword">get</span>(<span class="keyword">const</span> G& 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<G>::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 <
+<a name="l00243"></a>00243 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::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<ncg_type>::type</a>,
+<a name="l00246"></a>00246 D
+<a name="l00247"></a>00247 > 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> <std::<span class="keywordtype">size_t</span> I, std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G>
-<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<G>::type</a> <span class="keyword">get</span>(<span class="keyword">const</span> G& 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<G>::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 <
-<a name="l00278"></a>00278 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::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<ncg_type>::type</a>,
-<a name="l00281"></a>00281 I,
-<a name="l00282"></a>00282 D
-<a name="l00283"></a>00283 > 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> <std::<span class="keywordtype">size_t</span> I, std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G>
-<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& 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<G>::type</a>& 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<G>::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 <
-<a name="l00308"></a>00308 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::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<ncg_type>::type</a>,
-<a name="l00310"></a>00310 I,
-<a name="l00311"></a>00311 D
-<a name="l00312"></a>00312 > 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> <std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G>
+<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& 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<G>::type</a>& 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<G>::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 <
+<a name="l00272"></a>00272 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::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<ncg_type>::type</a>,
+<a name="l00275"></a>00275 D
+<a name="l00276"></a>00276 > 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> <std::<span class="keywordtype">size_t</span> I, std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G>
+<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<G>::type</a> <span class="keyword">get</span>(<span class="keyword">const</span> G& 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<G>::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 <
+<a name="l00303"></a>00303 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::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<ncg_type>::type</a>,
+<a name="l00306"></a>00306 I,
+<a name="l00307"></a>00307 D
+<a name="l00308"></a>00308 > 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> <std::<span class="keywordtype">size_t</span> I, std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G>
+<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& 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<G>::type</a>& 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<G>::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 <
+<a name="l00333"></a>00333 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::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<ncg_type>::type</a>,
+<a name="l00335"></a>00335 I,
+<a name="l00336"></a>00336 D
+<a name="l00337"></a>00337 > 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 <algorithm></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">
-
-</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 </td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1strategy_1_1within_1_1winding.html">ggl::strategy::within::winding< P, PS ></a></td></tr>
-
-<tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><b>ggl::strategy::within::winding< P, PS >::windings</b></td></tr>
-
-<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </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 </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 </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 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">
-
-</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 <<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>></span>
-<a name="l00015"></a>00015
-<a name="l00016"></a>00016 <span class="preprocessor">#include <<a class="code" href="strategy__traits_8hpp.html">ggl/strategies/strategy_traits.hpp</a>></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><<span class="keyword">typename</span> P, <span class="keyword">typename</span> PS = P>
-<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<P>::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<PS>::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& p;
-<a name="l00050"></a>00050 <span class="keyword">inline</span> <span class="keyword">explicit</span> windings(<span class="keyword">const</span> P& 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 && 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> <<span class="keywordtype">size_t</span> D>
-<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<const PS></a>& s, windings& state)
-<a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 <span class="keyword">const</span> PT& p = get<D>(state.p);
-<a name="l00065"></a>00065 <span class="keyword">const</span> ST& s1 = get<0, D>(s);
-<a name="l00066"></a>00066 <span class="keyword">const</span> ST& s2 = get<1, D>(s);
-<a name="l00067"></a>00067 <span class="keywordflow">if</span> ((s1 <= p && s2 >= p) || (s2 <= p && s1 >= 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> <<span class="keywordtype">size_t</span> D>
-<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<const PS></a>& s, windings& state)
-<a name="l00077"></a>00077 {
-<a name="l00078"></a>00078 <span class="keyword">const</span> PT& p = get<D>(state.p);
-<a name="l00079"></a>00079 <span class="keyword">const</span> ST& s1 = get<0, D>(s);
-<a name="l00080"></a>00080 <span class="keyword">const</span> ST& s2 = get<1, D>(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 && eq2)
-<a name="l00087"></a>00087 {
-<a name="l00088"></a>00088 <span class="comment">// Both equal p -> 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<1 - D>(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 > p ? 1 : -1) <span class="comment">// P on level s1, UP/DOWN depending on s2</span>
-<a name="l00095"></a>00095 : eq2 ? (s1 > p ? -1 : 1) <span class="comment">// idem</span>
-<a name="l00096"></a>00096 : s1 < p && s2 > p ? 2 <span class="comment">// P between s1 -> s2 --> UP</span>
-<a name="l00097"></a>00097 : s2 < p && s1 > p ? -2 <span class="comment">// P between s2 -> s1 --> 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<const PS></a>& s, <a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html#aa5dc8bd530eed3ac8420ccccd2c8e65">state_type</a>& 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<1>(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<typename cs_tag<P>::type</a>, P, PS>::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<P, PS>::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 > 0 ? 1 : -1) * cnt;
-<a name="l00128"></a>00128 <span class="keywordflow">if</span> (sd > 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> <<span class="keyword">typename</span> P, <span class="keyword">typename</span> PS>
-<a name="l00146"></a>00146 <span class="keyword">struct </span>strategy_within<cartesian_tag, cartesian_tag, P, PS>
-<a name="l00147"></a>00147 {
-<a name="l00148"></a>00148 <span class="keyword">typedef</span> strategy::within::winding<P, PS> <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> <<span class="keyword">typename</span> P, <span class="keyword">typename</span> PS>
-<a name="l00152"></a>00152 <span class="keyword">struct </span>strategy_within<geographic_tag, geographic_tag, P, PS>
-<a name="l00153"></a>00153 {
-<a name="l00154"></a>00154 <span class="keyword">typedef</span> strategy::within::winding<P, PS> <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 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 <boost/concept/requires.hpp></span>
-<a name="l00013"></a>00013 <span class="preprocessor">#include <boost/mpl/if.hpp></span>
-<a name="l00014"></a>00014 <span class="preprocessor">#include <boost/range/functions.hpp></span>
-<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include <boost/mpl/if.hpp></span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include <boost/range/functions.hpp></span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include <boost/range/metafunctions.hpp></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 <<a class="code" href="point__order_8hpp.html">ggl/core/point_order.hpp</a>></span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
-<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="nsphere__concept_8hpp.html">ggl/core/concepts/nsphere_concept.hpp</a>></span>
-<a name="l00024"></a>00024
-<a name="l00025"></a>00025 <span class="preprocessor">#include <<a class="code" href="calculate__null_8hpp.html">ggl/algorithms/detail/calculate_null.hpp</a>></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include <<a class="code" href="calculate__sum_8hpp.html">ggl/algorithms/detail/calculate_sum.hpp</a>></span>
-<a name="l00027"></a>00027
-<a name="l00028"></a>00028 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include <<a class="code" href="area__result_8hpp.html">ggl/strategies/area_result.hpp</a>></span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="preprocessor">#include <<a class="code" href="loop_8hpp.html">ggl/util/loop.hpp</a>></span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include <<a class="code" href="point__order_8hpp.html">ggl/core/point_order.hpp</a>></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>></span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>></span>
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="calculate__null_8hpp.html">ggl/algorithms/detail/calculate_null.hpp</a>></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include <<a class="code" href="calculate__sum_8hpp.html">ggl/algorithms/detail/calculate_sum.hpp</a>></span>
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include <<a class="code" href="area__result_8hpp.html">ggl/strategies/area_result.hpp</a>></span>
+<a name="l00029"></a>00029
+<a name="l00030"></a>00030 <span class="preprocessor">#include <<a class="code" href="area__concept_8hpp.html">ggl/strategies/concepts/area_concept.hpp</a>></span>
+<a name="l00031"></a>00031
<a name="l00032"></a>00032 <span class="preprocessor">#include <<a class="code" href="math_8hpp.html">ggl/util/math.hpp</a>></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><<span class="keyword">typename</span> B, <span class="keyword">typename</span> S>
-<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<B>::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>& b, S <span class="keyword">const</span>&)
-<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<B, 2>();
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074 return_type <span class="keyword">const</span> dx = get<max_corner, 0>(b) - get<min_corner, 0>(b);
-<a name="l00075"></a>00075 return_type <span class="keyword">const</span> dy = get<max_corner, 1>(b) - get<min_corner, 1>(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><<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy>
+<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<Box>::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>& box, Strategy <span class="keyword">const</span>&)
+<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<Box, 2>();
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 return_type <span class="keyword">const</span> dx = get<max_corner, 0>(box)
+<a name="l00077"></a>00077 - get<min_corner, 0>(box);
+<a name="l00078"></a>00078 return_type <span class="keyword">const</span> dy = get<max_corner, 1>(box)
+<a name="l00079"></a>00079 - get<min_corner, 1>(box);
<a name="l00080"></a>00080
-<a name="l00081"></a>00081
-<a name="l00082"></a>00082 <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> S>
-<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<C>::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 <
-<a name="l00090"></a>00090 boost::is_integral<coordinate_type>::type::value,
-<a name="l00091"></a>00091 double,
-<a name="l00092"></a>00092 coordinate_type
-<a name="l00093"></a>00093 >::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>& c, S <span class="keyword">const</span>&)
-<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<C, 2>();
+<a name="l00087"></a>00087
+<a name="l00091"></a>00091 <span class="keyword">template</span>
+<a name="l00092"></a>00092 <
+<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 >
+<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<0>(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><<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Strategy>
+<a name="l00103"></a>00103 <span class="keyword">struct </span>ring_area<Ring, <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d55fe53c1821ca13eb0eacb9084cb1d1c">clockwise</a>, Strategy>
+<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<Strategy></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 <
-<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 >
-<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>& ring, Strategy <span class="keyword">const</span>& strategy)
+<a name="l00110"></a>00110 {
+<a name="l00111"></a>00111 assert_dimension<Ring, 2>();
+<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) < 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><<span class="keyword">typename</span> R, <span class="keyword">typename</span> S>
-<a name="l00122"></a>00122 <span class="keyword">struct </span>ring_area<R, <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d55fe53c1821ca13eb0eacb9084cb1d1c">clockwise</a>, S>
-<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>& ring, S <span class="keyword">const</span>& strategy)
-<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 assert_dimension<R, 2>();
-<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) >= 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><<span class="keyword">typename</span> R, <span class="keyword">typename</span> S>
-<a name="l00145"></a>00145 <span class="keyword">struct </span>ring_area<R, <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d7242f3377ee5283786ecb2bc2d90015a">counterclockwise</a>, S>
-<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>& ring, S <span class="keyword">const</span>& 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<R, clockwise, S>::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> <<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry, order_selector Order, <span class="keyword">typename</span> Strategy>
+<a name="l00120"></a>00120 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator<Ring>::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><<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Strategy>
+<a name="l00137"></a>00137 <span class="keyword">struct </span>ring_area<Ring, <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d7242f3377ee5283786ecb2bc2d90015a">counterclockwise</a>, Strategy>
+<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>& ring, Strategy <span class="keyword">const</span>& 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<Ring, clockwise, Strategy>::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 <
+<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 >
<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 <
@@ -192,63 +186,63 @@
<a name="l00172"></a>00172
<a name="l00173"></a>00173 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry, order_selector Order, <span class="keyword">typename</span> Strategy>
<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><box_tag, Geometry, Order, Strategy>
-<a name="l00175"></a>00175 : detail::<a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>::box_area<Geometry, Strategy>
+<a name="l00175"></a>00175 : detail::<a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>::box_area<Geometry, Strategy>
<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> <<span class="keyword">typename</span> Geometry, order_selector Order, <span class="keyword">typename</span> Strategy>
-<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><nsphere_tag, Geometry, Order, Strategy>
-<a name="l00181"></a>00181 : detail::<a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>::circle_area<Geometry, Strategy>
-<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> <<span class="keyword">typename</span> Geometry, order_selector Order, <span class="keyword">typename</span> Strategy>
-<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><ring_tag, Geometry, Order, Strategy>
-<a name="l00189"></a>00189 : detail::<a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>::ring_area<Geometry, Order, Strategy>
-<a name="l00190"></a>00190 {};
-<a name="l00191"></a>00191
-<a name="l00192"></a>00192 <span class="keyword">template</span> <<span class="keyword">typename</span> Polygon, order_selector Order, <span class="keyword">typename</span> Strategy>
-<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><polygon_tag, Polygon, Order, Strategy>
-<a name="l00194"></a>00194 : detail::calculate_polygon_sum
-<a name="l00195"></a>00195 <
-<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 <
-<a name="l00201"></a>00201 typename ring_type<Polygon>::type,
-<a name="l00202"></a>00202 Order,
-<a name="l00203"></a>00203 Strategy
-<a name="l00204"></a>00204 >
-<a name="l00205"></a>00205 >
-<a name="l00206"></a>00206 <span class="comment">//: detail::area::polygon_area<Geometry, Order, Strategy> </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> <<span class="keyword">typename</span> Geometry, order_selector Order, <span class="keyword">typename</span> Strategy>
+<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><ring_tag, Geometry, Order, Strategy>
+<a name="l00185"></a>00185 : detail::<a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>::ring_area<Geometry, Order, Strategy>
+<a name="l00186"></a>00186 {};
+<a name="l00187"></a>00187
+<a name="l00188"></a>00188 <span class="keyword">template</span> <<span class="keyword">typename</span> Polygon, order_selector Order, <span class="keyword">typename</span> Strategy>
+<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><polygon_tag, Polygon, Order, Strategy>
+<a name="l00190"></a>00190 : detail::calculate_polygon_sum
+<a name="l00191"></a>00191 <
+<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 <
+<a name="l00197"></a>00197 typename ring_type<Polygon>::type,
+<a name="l00198"></a>00198 Order,
+<a name="l00199"></a>00199 Strategy
+<a name="l00200"></a>00200 >
+<a name="l00201"></a>00201 >
+<a name="l00202"></a>00202 <span class="comment">//: detail::area::polygon_area<Geometry, Order, Strategy></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> <<span class="keyword">typename</span> Geometry>
-<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<Geometry>::type</a> <a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>(Geometry <span class="keyword">const</span>& 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<Geometry>::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 <
-<a name="l00232"></a>00232 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::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<Geometry>::value</a>,
-<a name="l00235"></a>00235 strategy_type
-<a name="l00236"></a>00236 >::apply(geometry, strategy_type());
-<a name="l00237"></a>00237 }
-<a name="l00238"></a>00238
-<a name="l00248"></a>00248 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
-<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>& geometry, Strategy <span class="keyword">const</span>& strategy)
-<a name="l00251"></a>00251 {
+<a name="l00209"></a>00209
+<a name="l00221"></a>00221 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry>
+<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<Geometry>::type</a> <a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>(Geometry <span class="keyword">const</span>& geometry)
+<a name="l00223"></a>00223 {
+<a name="l00224"></a>00224 concept::check<const Geometry>();
+<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<Geometry>::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 <
+<a name="l00230"></a>00230 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::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<Geometry>::value</a>,
+<a name="l00233"></a>00233 strategy_type
+<a name="l00234"></a>00234 >::apply(geometry, strategy_type());
+<a name="l00235"></a>00235 }
+<a name="l00236"></a>00236
+<a name="l00246"></a>00246 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
+<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>& geometry, Strategy <span class="keyword">const</span>& strategy)
+<a name="l00249"></a>00249 {
+<a name="l00250"></a>00250 concept::check<const Geometry>();
+<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 <
<a name="l00254"></a>00254 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::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 </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<typename G , typename P , typename S > </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#gda8ccb0bcdd94cebe5b66374259c1fe2">ggl::centroid</a> (const G &geometry, P &c, S const &strategy)</td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename Geometry , typename Point > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#gc7e9651663cd19868cae40c20c72afdc">ggl::centroid</a> (Geometry const &geometry, Point &c)</td></tr>
-<tr><td class="mdescLeft"> </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<typename G , typename P > </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd">ggl::centroid</a> (const G &geometry, P &c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate centroid. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template<typename P , typename G , typename S > </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">P </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#g8c284d8ca53c0ace8827431178438852">ggl::make_centroid</a> (const G &geometry, S const &strategy)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate and return centroid. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template<typename P , typename G > </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">P </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#gcb8d61ecb3cb509353728f50d9ae03b4">ggl::make_centroid</a> (const G &geometry)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate centroid. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename Geometry , typename Point , typename Strategy > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2">ggl::centroid</a> (Geometry const &geometry, Point &c, Strategy const &strategy)</td></tr>
+
+<tr><td class="mdescLeft"> </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<typename Point , typename Geometry , typename Strategy > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Point </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#gb077a07483ee2fdd17d66e63b237aaa6">ggl::make_centroid</a> (Geometry const &geometry, Strategy const &strategy)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate and return centroid. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename Point , typename Geometry > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Point </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#ga7146045002e56e5471f8da7dd30609c">ggl::make_centroid</a> (Geometry const &geometry)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate and return centroid. <br></td></tr>
+<tr><td class="mdescLeft"> </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 <cstddef></span>
<a name="l00013"></a>00013
-<a name="l00014"></a>00014 <span class="preprocessor">#include <boost/concept/requires.hpp></span>
-<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/range/functions.hpp></span>
-<a name="l00016"></a>00016 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
-<a name="l00017"></a>00017
-<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="exception_8hpp.html">ggl/core/exception.hpp</a>></span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
-<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="copy_8hpp.html">ggl/util/copy.hpp</a>></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include <<a class="code" href="loop_8hpp.html">ggl/util/loop.hpp</a>></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 <boost/range/functions.hpp></span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="exception_8hpp.html">ggl/core/exception.hpp</a>></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>></span>
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include <<a class="code" href="centroid__concept_8hpp.html">ggl/strategies/concepts/centroid_concept.hpp</a>></span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include <<a class="code" href="copy_8hpp.html">ggl/util/copy.hpp</a>></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><<span class="keyword">typename</span> P, <span class="keyword">typename</span> R>
-<a name="l00069"></a>00069 <span class="keyword">inline</span> <span class="keywordtype">bool</span> ring_ok(R <span class="keyword">const</span>& ring, P& 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 > 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 <= 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><<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy>
-<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>& ring, Point& c, Strategy <span class="keyword">const</span>& 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><<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>
+<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>& point, PointCentroid& <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>&, <span class="keyword">typename</span> Strategy::state_type&)
+<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 <
+<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 >
+<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 <
+<a name="l00093"></a>00093 Box, Point
+<a name="l00094"></a>00094 >::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>& box, Point& <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><<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy>
-<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>& poly, Point& c, Strategy <span class="keyword">const</span>& 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<min_corner, Dimension>(box);
+<a name="l00098"></a>00098 coordinate_type <span class="keyword">const</span> c2 = get<max_corner, Dimension>(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<Dimension>(centroid, m);
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104 centroid_box_calculator
+<a name="l00105"></a>00105 <
+<a name="l00106"></a>00106 Box, Point,
+<a name="l00107"></a>00107 Dimension + 1, DimensionCount
+<a name="l00108"></a>00108 >::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><<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>
+<a name="l00114"></a>00114 <span class="keyword">struct </span>centroid_box_calculator<Box, Point, DimensionCount, DimensionCount>
+<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>& , Point& )
+<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 <
-<a name="l00125"></a>00125 <span class="keyword">typename</span> interior_type<Polygon>::type
-<a name="l00126"></a>00126 >::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><<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy>
-<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>& box, Point& c, Strategy <span class="keyword">const</span>&)
-<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<Box, 2>();
-<a name="l00150"></a>00150 set<0>(c, (get<min_corner, 0>(box) + get<max_corner, 0>(box)) / 2);
-<a name="l00151"></a>00151 set<1>(c, (get<min_corner, 1>(box) + get<max_corner, 1>(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><<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy>
+<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>& box, Point& <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>&, <span class="keyword">typename</span> Strategy::state_type&)
+<a name="l00127"></a>00127 {
+<a name="l00128"></a>00128 centroid_box_calculator
+<a name="l00129"></a>00129 <
+<a name="l00130"></a>00130 Box, Point,
+<a name="l00131"></a>00131 0, <a class="code" href="classcore__dispatch_1_1dimension.html">dimension<Box>::type::value</a>
+<a name="l00132"></a>00132 >::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><<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy>
+<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>& ring, Point& <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>& strategy, <span class="keyword">typename</span> Strategy::state_type& 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<Ring>::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> <<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>
-<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> <<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy>
-<a name="l00167"></a>00167 <span class="keyword">struct </span><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a><box_tag, Box, Point, Strategy>
-<a name="l00168"></a>00168 : detail::<a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>::centroid_box<Box, Point, Strategy>
-<a name="l00169"></a>00169 {};
-<a name="l00170"></a>00170
-<a name="l00171"></a>00171 <span class="keyword">template</span> <<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy>
-<a name="l00172"></a>00172 <span class="keyword">struct </span><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a><ring_tag, Ring, Point, Strategy>
-<a name="l00173"></a>00173 : detail::<a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>::centroid_ring<Ring, Point, Strategy>
-<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> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy>
-<a name="l00177"></a>00177 <span class="keyword">struct </span><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a><polygon_tag, Polygon, Point, Strategy>
-<a name="l00178"></a>00178 : detail::<a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>::centroid_polygon<Polygon, Point, Strategy>
-<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><<span class="keyword">typename</span> G, <span class="keyword">typename</span> P>
-<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& geometry, P& 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<G>::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 <
-<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<point_type>::type</a>,
-<a name="l00209"></a>00209 P,
-<a name="l00210"></a>00210 point_type
-<a name="l00211"></a>00211 >::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 <
-<a name="l00215"></a>00215 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::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 >::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><<span class="keyword">typename</span> G, <span class="keyword">typename</span> P, <span class="keyword">typename</span> S>
-<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& geometry, P& c, S <span class="keyword">const</span>& 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 <
-<a name="l00235"></a>00235 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::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 >::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><<span class="keyword">typename</span> P, <span class="keyword">typename</span> G>
-<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& 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><<span class="keyword">typename</span> P, <span class="keyword">typename</span> G, <span class="keyword">typename</span> S>
-<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& geometry, S <span class="keyword">const</span>& 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><<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy>
+<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>& poly, Point& centroid,
+<a name="l00186"></a>00186 Strategy <span class="keyword">const</span>& strategy, <span class="keyword">typename</span> Strategy::state_type& state)
+<a name="l00187"></a>00187 {
+<a name="l00188"></a>00188 <span class="keyword">typedef</span> centroid_ring
+<a name="l00189"></a>00189 <
+<a name="l00190"></a>00190 <span class="keyword">typename</span> ring_type<Polygon>::type,
+<a name="l00191"></a>00191 Point,
+<a name="l00192"></a>00192 Strategy
+<a name="l00193"></a>00193 > 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 <
+<a name="l00199"></a>00199 <span class="keyword">typename</span> interior_type<Polygon>::type
+<a name="l00200"></a>00200 >::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 <
+<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 >
+<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 <
+<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 >
+<a name="l00236"></a>00236 <span class="keyword">struct </span>centroid<point_tag, Dimension, Geometry, Point, Strategy>
+<a name="l00237"></a>00237 : detail::centroid::centroid_point<Geometry, Point, Strategy>
+<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 <
+<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 >
+<a name="l00247"></a>00247 <span class="keyword">struct </span>centroid<box_tag, Dimension, Box, Point, Strategy>
+<a name="l00248"></a>00248 : detail::centroid::centroid_box<Box, Point, Strategy>
+<a name="l00249"></a>00249 {};
+<a name="l00250"></a>00250
+<a name="l00251"></a>00251 <span class="keyword">template</span> <<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy>
+<a name="l00252"></a>00252 <span class="keyword">struct </span>centroid<ring_tag, 2, Ring, Point, Strategy>
+<a name="l00253"></a>00253 : detail::centroid::centroid_ring<Ring, Point, Strategy>
+<a name="l00254"></a>00254 {};
+<a name="l00255"></a>00255
+<a name="l00256"></a>00256 <span class="keyword">template</span> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy>
+<a name="l00257"></a>00257 <span class="keyword">struct </span>centroid<polygon_tag, 2, Polygon, Point, Strategy>
+<a name="l00258"></a>00258 : detail::centroid::centroid_polygon<Polygon, Point, Strategy>
+<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><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy>
+<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>& geometry, Point& c,
+<a name="l00278"></a>00278 Strategy <span class="keyword">const</span>& 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<Strategy></a>) );
+<a name="l00281"></a>00281
+<a name="l00282"></a>00282 concept::check<const Geometry>();
+<a name="l00283"></a>00283 concept::check<Point>();
+<a name="l00284"></a>00284
+<a name="l00285"></a>00285 assert_dimension_equal<Geometry, Point>();
+<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<Geometry>::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 <
+<a name="l00294"></a>00294 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::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<point_type>::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 >::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><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>>
+<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>& geometry, Point& c)
+<a name="l00329"></a>00329 {
+<a name="l00330"></a>00330 concept::check<const Geometry>();
+<a name="l00331"></a>00331 concept::check<Point>();
+<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<Geometry>::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 <
+<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<point_type>::type</a>,
+<a name="l00337"></a>00337 Point,
+<a name="l00338"></a>00338 point_type
+<a name="l00339"></a>00339 >::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><<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Geometry>
+<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>& geometry)
+<a name="l00356"></a>00356 {
+<a name="l00357"></a>00357 concept::check<const Geometry>();
+<a name="l00358"></a>00358 concept::check<Point>();
+<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><<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
+<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>& geometry, Strategy <span class="keyword">const</span>& 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<Strategy></a>) );
+<a name="l00378"></a>00378
+<a name="l00379"></a>00379 concept::check<const Geometry>();
+<a name="l00380"></a>00380 concept::check<Point>();
+<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 <<a class="code" href="point__order_8hpp.html">ggl/core/point_order.hpp</a>></span>
<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
<a name="l00019"></a>00019
-<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>></span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>></span>
<a name="l00021"></a>00021
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></span>
<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="as__range_8hpp.html">ggl/util/as_range.hpp</a>></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 <
-<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 >
-<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> <<span class="keyword">typename</span> OutputIterator>
-<a name="l00060"></a>00060 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Geometry <span class="keyword">const</span>& 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<Geometry>::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 <
-<a name="l00067"></a>00067 <span class="keyword">typename</span> cs_tag<point_type>::type,
-<a name="l00068"></a>00068 point_type
-<a name="l00069"></a>00069 >::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 <
-<a name="l00073"></a>00073 <span class="keyword">typename</span> as_range_type<Geometry>::type
-<a name="l00074"></a>00074 >(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 <
-<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 >
-<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>& geometry, OutputGeometry& out)
-<a name="l00088"></a>00088 {
-<a name="l00089"></a>00089 hull_inserter
-<a name="l00090"></a>00090 <
-<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<OutputGeometry>::value</a>
-<a name="l00093"></a>00093 >::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 <
-<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<OutputGeometry>::type</a>
-<a name="l00098"></a>00098 >(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 <
+<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 >
+<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> <<span class="keyword">typename</span> OutputIterator>
+<a name="l00062"></a>00062 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Geometry <span class="keyword">const</span>& 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<Geometry>::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 <
+<a name="l00069"></a>00069 <span class="keyword">typename</span> cs_tag<point_type>::type,
+<a name="l00070"></a>00070 point_type
+<a name="l00071"></a>00071 >::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 <
+<a name="l00075"></a>00075 <span class="keyword">typename</span> as_range_type<Geometry>::type
+<a name="l00076"></a>00076 >(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 <
+<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 >
+<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>& geometry, OutputGeometry& out)
+<a name="l00090"></a>00090 {
+<a name="l00091"></a>00091 hull_inserter
+<a name="l00092"></a>00092 <
+<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<OutputGeometry>::value</a>
+<a name="l00095"></a>00095 >::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 <
+<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<OutputGeometry>::type</a>
+<a name="l00100"></a>00100 >(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 <
-<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 >
-<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> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Output>
-<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 <
-<a name="l00125"></a>00125 polygon_tag, false,
-<a name="l00126"></a>00126 Polygon, Output
-<a name="l00127"></a>00127 >
-<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<Polygon, Output>
-<a name="l00129"></a>00129 {};
-<a name="l00130"></a>00130
-<a name="l00131"></a>00131 <span class="keyword">template</span> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Output>
-<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 <
-<a name="l00134"></a>00134 ring_tag, false,
-<a name="l00135"></a>00135 Polygon, Output
-<a name="l00136"></a>00136 >
-<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<Polygon, Output>
-<a name="l00138"></a>00138 {};
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 <span class="keyword">template</span> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Output>
-<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 <
-<a name="l00143"></a>00143 linestring_tag, false,
-<a name="l00144"></a>00144 Polygon, Output
-<a name="l00145"></a>00145 >
-<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<Polygon, Output>
-<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 <
+<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 >
+<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> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Output>
+<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 <
+<a name="l00127"></a>00127 polygon_tag, false,
+<a name="l00128"></a>00128 Polygon, Output
+<a name="l00129"></a>00129 >
+<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<Polygon, Output>
+<a name="l00131"></a>00131 {};
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133 <span class="keyword">template</span> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Output>
+<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 <
+<a name="l00136"></a>00136 ring_tag, false,
+<a name="l00137"></a>00137 Polygon, Output
+<a name="l00138"></a>00138 >
+<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<Polygon, Output>
+<a name="l00140"></a>00140 {};
+<a name="l00141"></a>00141
+<a name="l00142"></a>00142 <span class="keyword">template</span> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Output>
+<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 <
+<a name="l00145"></a>00145 linestring_tag, false,
+<a name="l00146"></a>00146 Polygon, Output
+<a name="l00147"></a>00147 >
+<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<Polygon, Output>
+<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 <
-<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 >
-<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> <<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, order_selector Order>
-<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 <
-<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 >
-<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<Linestring, Order>
-<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> <<span class="keyword">typename</span> Ring, order_selector Order>
-<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 <
-<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 >
-<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<Ring, Order>
-<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> <<span class="keyword">typename</span> Polygon, order_selector Order>
-<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 <
-<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 >
-<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<Polygon, Order>
-<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 <
+<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 >
+<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> <<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, order_selector Order>
+<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 <
+<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 >
+<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<Linestring, Order>
+<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> <<span class="keyword">typename</span> Ring, order_selector Order>
+<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 <
+<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 >
+<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<Ring, Order>
+<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> <<span class="keyword">typename</span> Polygon, order_selector Order>
+<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 <
+<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 >
+<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<Polygon, Order>
+<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><<span class="keyword">typename</span> Geometry1, <span class="keyword">typename</span> Geometry2>
-<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>& geometry,
-<a name="l00213"></a>00213 Geometry2& 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 <
-<a name="l00217"></a>00217 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry1>::type</a>,
-<a name="l00218"></a>00218 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &quot;true&quot; for multi geometries (multi_point, etc).">is_multi<Geometry1>::type::value</a>,
-<a name="l00219"></a>00219 Geometry1,
-<a name="l00220"></a>00220 Geometry2
-<a name="l00221"></a>00221 >::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><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator>
-<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>& 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 <
-<a name="l00243"></a>00243 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::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<Geometry>::value</a>,
-<a name="l00245"></a>00245 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &quot;true&quot; for multi geometries (multi_point, etc).">is_multi<Geometry>::type::value</a>,
-<a name="l00246"></a>00246 Geometry
-<a name="l00247"></a>00247 >::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><<span class="keyword">typename</span> Geometry1, <span class="keyword">typename</span> Geometry2>
+<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>& geometry,
+<a name="l00215"></a>00215 Geometry2& out)
+<a name="l00216"></a>00216 {
+<a name="l00217"></a>00217 concept::check<const Geometry1>();
+<a name="l00218"></a>00218 concept::check<Geometry2>();
+<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 <
+<a name="l00222"></a>00222 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry1>::type</a>,
+<a name="l00223"></a>00223 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &quot;true&quot; for multi geometries (multi_point, etc).">is_multi<Geometry1>::type::value</a>,
+<a name="l00224"></a>00224 Geometry1,
+<a name="l00225"></a>00225 Geometry2
+<a name="l00226"></a>00226 >::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><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator>
+<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>& 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<const Geometry>();
+<a name="l00249"></a>00249 concept::check<typename point_type<Geometry>::type>();
<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 <
+<a name="l00253"></a>00253 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::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<Geometry>::value</a>,
+<a name="l00255"></a>00255 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &quot;true&quot; for multi geometries (multi_point, etc).">is_multi<Geometry>::type::value</a>,
+<a name="l00256"></a>00256 Geometry
+<a name="l00257"></a>00257 >::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 </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<typename G > </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">ggl::correct</a> (G &geometry)</td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename Geometry > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">ggl::correct</a> (Geometry &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 <algorithm></span>
-<a name="l00013"></a>00013 <span class="preprocessor">#include <functional></span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/range/functions.hpp></span>
-<a name="l00016"></a>00016 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
-<a name="l00017"></a>00017
-<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>></span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
-<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
-<a name="l00022"></a>00022
-<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>></span>
-<a name="l00024"></a>00024
-<a name="l00025"></a>00025 <span class="preprocessor">#include <<a class="code" href="algorithms_2area_8hpp.html">ggl/algorithms/area.hpp</a>></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include <<a class="code" href="disjoint_8hpp.html">ggl/algorithms/disjoint.hpp</a>></span>
-<a name="l00027"></a>00027
+<a name="l00012"></a>00012 <span class="preprocessor">#include <cstddef></span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include <algorithm></span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include <functional></span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016 <span class="preprocessor">#include <boost/range/functions.hpp></span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
+<a name="l00018"></a>00018
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>></span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="preprocessor">#include <<a class="code" href="algorithms_2area_8hpp.html">ggl/algorithms/area.hpp</a>></span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include <<a class="code" href="disjoint_8hpp.html">ggl/algorithms/disjoint.hpp</a>></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> <<span class="keyword">typename</span> Box, <span class="keywordtype">int</span> Dimension, <span class="keywordtype">int</span> DimensionCount>
-<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<Box>::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& box)
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043 <span class="keywordflow">if</span> (get<min_corner, Dimension>(box) > get<max_corner, Dimension>(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<min_corner, Dimension>(box);
-<a name="l00047"></a>00047 coordinate_type min_value = get<max_corner, Dimension>(box);
-<a name="l00048"></a>00048 set<min_corner, Dimension>(box, min_value);
-<a name="l00049"></a>00049 set<max_corner, Dimension>(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 <
-<a name="l00054"></a>00054 Box, Dimension + 1, DimensionCount
-<a name="l00055"></a>00055 >::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> <<span class="keyword">typename</span> Box, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount>
+<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<Box>::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& box)
+<a name="l00043"></a>00043 {
+<a name="l00044"></a>00044 <span class="keywordflow">if</span> (get<min_corner, Dimension>(box) > get<max_corner, Dimension>(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<min_corner, Dimension>(box);
+<a name="l00048"></a>00048 coordinate_type min_value = get<max_corner, Dimension>(box);
+<a name="l00049"></a>00049 set<min_corner, Dimension>(box, min_value);
+<a name="l00050"></a>00050 set<max_corner, Dimension>(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 <
+<a name="l00055"></a>00055 Box, Dimension + 1, DimensionCount
+<a name="l00056"></a>00056 >::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> <<span class="keyword">typename</span> Box, <span class="keywordtype">int</span> DimensionCount>
-<a name="l00062"></a>00062 <span class="keyword">struct </span>correct_box_loop<Box, DimensionCount, DimensionCount>
-<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& 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> <<span class="keyword">typename</span> Box, std::<span class="keywordtype">size_t</span> DimensionCount>
+<a name="l00063"></a>00063 <span class="keyword">struct </span>correct_box_loop<Box, DimensionCount, DimensionCount>
+<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& 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> <<span class="keyword">typename</span> Box>
-<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& 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 <
-<a name="l00081"></a>00081 Box, 0, <a class="code" href="classcore__dispatch_1_1dimension.html">dimension<Box>::type::value</a>
-<a name="l00082"></a>00082 >::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> <<span class="keyword">typename</span> Box>
+<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& 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 <
+<a name="l00082"></a>00082 Box, 0, <a class="code" href="classcore__dispatch_1_1dimension.html">dimension<Box>::type::value</a>
+<a name="l00083"></a>00083 >::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> <<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Predicate>
-<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<Ring>::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 <
-<a name="l00095"></a>00095 <span class="keyword">typename</span> cs_tag<point_type>::type,
-<a name="l00096"></a>00096 point_type
-<a name="l00097"></a>00097 >::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 <
-<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<Ring>::value</a>,
-<a name="l00103"></a>00103 strategy_type
-<a name="l00104"></a>00104 > 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> <<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Predicate>
+<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<Ring>::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 <
+<a name="l00096"></a>00096 <span class="keyword">typename</span> cs_tag<point_type>::type,
+<a name="l00097"></a>00097 point_type
+<a name="l00098"></a>00098 >::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 <
+<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<Ring>::value</a>,
+<a name="l00104"></a>00104 strategy_type
+<a name="l00105"></a>00105 > 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& 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) > 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> <<span class="keyword">typename</span> Polygon>
-<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<Polygon>::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& poly)
-<a name="l00135"></a>00135 {
-<a name="l00136"></a>00136 correct_ring<ring_type, std::less<double> >::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 <
-<a name="l00140"></a>00140 <span class="keyword">typename</span> interior_type<Polygon>::type
-<a name="l00141"></a>00141 >::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<ring_type, std::greater<double> >::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& 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) > 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> <<span class="keyword">typename</span> Polygon>
+<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<Polygon>::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& poly)
+<a name="l00136"></a>00136 {
+<a name="l00137"></a>00137 correct_ring<ring_type, std::less<double> >::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 <
+<a name="l00141"></a>00141 <span class="keyword">typename</span> interior_type<Polygon>::type
+<a name="l00142"></a>00142 >::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<ring_type, std::greater<double> >::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> <<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> G>
-<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> <<span class="keyword">typename</span> B>
-<a name="l00163"></a>00163 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a><box_tag, B>
-<a name="l00164"></a>00164 : detail::<a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>::correct_box<B>
-<a name="l00165"></a>00165 {};
-<a name="l00166"></a>00166
-<a name="l00167"></a>00167 <span class="keyword">template</span> <<span class="keyword">typename</span> R>
-<a name="l00168"></a>00168 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a><ring_tag, R>
-<a name="l00169"></a>00169 : detail::<a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>::correct_ring<R, std::less<double> >
-<a name="l00170"></a>00170 {};
-<a name="l00171"></a>00171
-<a name="l00172"></a>00172 <span class="keyword">template</span> <<span class="keyword">typename</span> P>
-<a name="l00173"></a>00173 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a><polygon_tag, P>
-<a name="l00174"></a>00174 : detail::<a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>::correct_polygon<P>
-<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> <<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry>
+<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> <<span class="keyword">typename</span> Box>
+<a name="l00164"></a>00164 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a><box_tag, Box>
+<a name="l00165"></a>00165 : detail::<a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>::correct_box<Box>
+<a name="l00166"></a>00166 {};
+<a name="l00167"></a>00167
+<a name="l00168"></a>00168 <span class="keyword">template</span> <<span class="keyword">typename</span> Ring>
+<a name="l00169"></a>00169 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a><ring_tag, Ring>
+<a name="l00170"></a>00170 : detail::<a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>::correct_ring<Ring, std::less<double> >
+<a name="l00171"></a>00171 {};
+<a name="l00172"></a>00172
+<a name="l00173"></a>00173 <span class="keyword">template</span> <<span class="keyword">typename</span> Polygon>
+<a name="l00174"></a>00174 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a><polygon_tag, Polygon>
+<a name="l00175"></a>00175 : detail::<a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>::correct_polygon<Polygon>
+<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> <<span class="keyword">typename</span> G>
-<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& geometry)
-<a name="l00183"></a>00183 {
-<a name="l00184"></a>00184 dispatch::correct<typename tag<G>::type, G>::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> <<span class="keyword">typename</span> Geometry>
+<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& geometry)
+<a name="l00184"></a>00184 {
+<a name="l00185"></a>00185 concept::check<const Geometry>();
<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<typename tag<Geometry>::type, Geometry>::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<Geometry1, Geometry2>::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>& geometry1, Geometry2 <span class="keyword">const</span>& 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<Geometry1>::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<Geometry2>::type</a> point2_type;
+<a name="l00331"></a>00331 concept::check<const Geometry1>();
+<a name="l00332"></a>00332 concept::check<const Geometry2>();
<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 <
-<a name="l00338"></a>00338 <a class="code" href="structggl_1_1reverse__dispatch.html">ggl::reverse_dispatch<Geometry1, Geometry2>::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 <
-<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<point2_type>::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<point1_type>::type</a>,
-<a name="l00343"></a>00343 point2_type,
-<a name="l00344"></a>00344 point1_type
-<a name="l00345"></a>00345 >::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 <
-<a name="l00348"></a>00348 <span class="keyword">typename</span> cs_tag<point1_type>::type,
-<a name="l00349"></a>00349 <span class="keyword">typename</span> cs_tag<point2_type>::type,
-<a name="l00350"></a>00350 point1_type,
-<a name="l00351"></a>00351 point2_type
-<a name="l00352"></a>00352 >::type
-<a name="l00353"></a>00353 >::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<Geometry1>::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<Geometry2>::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 <
+<a name="l00341"></a>00341 <a class="code" href="structggl_1_1reverse__dispatch.html">ggl::reverse_dispatch<Geometry1, Geometry2>::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 <
+<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<point2_type>::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<point1_type>::type</a>,
+<a name="l00346"></a>00346 point2_type,
+<a name="l00347"></a>00347 point1_type
+<a name="l00348"></a>00348 >::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 <
+<a name="l00351"></a>00351 <span class="keyword">typename</span> cs_tag<point1_type>::type,
+<a name="l00352"></a>00352 <span class="keyword">typename</span> cs_tag<point2_type>::type,
+<a name="l00353"></a>00353 point1_type,
+<a name="l00354"></a>00354 point2_type
+<a name="l00355"></a>00355 >::type
+<a name="l00356"></a>00356 >::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 </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<typename G , typename B > </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#g89671917cfb1753f65d4bcc2fc334bf9">ggl::envelope</a> (G const &geometry, B &mbr)</td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename Geometry , typename Box > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67">ggl::envelope</a> (Geometry const &geometry, Box &mbr)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate envelope of a geometry. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template<typename G , typename B , typename S > </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36">ggl::envelope</a> (G const &geometry, B &mbr, S const &strategy)</td></tr>
-
-<tr><td class="mdescLeft"> </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<typename B , typename G > </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">B </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#g938cf2804a87e138cbf4b5b65314a3e4">ggl::make_envelope</a> (G const &geometry)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate and return envelope of a geometry. <br></td></tr>
-<tr><td class="memTemplParams" nowrap colspan="2">template<typename B , typename G , typename S > </td></tr>
-<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">B </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#g0b2b7b9ef2bc07f4b45695606f3d292d">ggl::make_envelope</a> (G const &geometry, S const &strategy)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate envelope of a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename Geometry , typename Box , typename Strategy > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#g4676217c7bc60742c3dc7dad7bbfa2b8">ggl::envelope</a> (Geometry const &geometry, Box &mbr, Strategy const &strategy)</td></tr>
+
+<tr><td class="mdescLeft"> </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<typename Box , typename Geometry > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Box </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#gb8343582b49458d16bca165b493f678d">ggl::make_envelope</a> (Geometry const &geometry)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate and return envelope of a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename Box , typename Geometry , typename Strategy > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Box </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#g41b5f1545e745767f7afa6b1b889d279">ggl::make_envelope</a> (Geometry const &geometry, Strategy const &strategy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate and return envelope of a geometry. <br></td></tr>
+<tr><td class="mdescLeft"> </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 <boost/concept/requires.hpp></span>
-<a name="l00013"></a>00013 <span class="preprocessor">#include <boost/range/functions.hpp></span>
-<a name="l00014"></a>00014 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
-<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/numeric/conversion/cast.hpp></span>
-<a name="l00016"></a>00016
-<a name="l00017"></a>00017 <span class="preprocessor">#include <<a class="code" href="combine_8hpp.html">ggl/algorithms/combine.hpp</a>></span>
-<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="convert_8hpp.html">ggl/algorithms/convert.hpp</a>></span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
-<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="box__concept_8hpp.html">ggl/core/concepts/box_concept.hpp</a>></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="linestring__concept_8hpp.html">ggl/core/concepts/linestring_concept.hpp</a>></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="nsphere__concept_8hpp.html">ggl/core/concepts/nsphere_concept.hpp</a>></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include <<a class="code" href="polygon__concept_8hpp.html">ggl/core/concepts/polygon_concept.hpp</a>></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include <<a class="code" href="ring__concept_8hpp.html">ggl/core/concepts/ring_concept.hpp</a>></span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></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><<span class="keyword">typename</span> B, <span class="keyword">typename</span> S, <span class="keyword">typename</span> Strategy>
-<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>& s, B& mbr, Strategy <span class="keyword">const</span>&)
-<a name="l00072"></a>00072 {
-<a name="l00073"></a>00073 assert_dimension<S, 2>();
-<a name="l00074"></a>00074 assert_dimension<B, 2>();
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 <span class="keyword">typename</span> radius_type<S>::type r = get_radius<0>(s);
-<a name="l00077"></a>00077 set<min_corner, 0>(mbr, get<0>(s) - r);
-<a name="l00078"></a>00078 set<min_corner, 1>(mbr, get<1>(s) - r);
-<a name="l00079"></a>00079 set<max_corner, 0>(mbr, get<0>(s) + r);
-<a name="l00080"></a>00080 set<max_corner, 1>(mbr, get<1>(s) + r);
+<a name="l00012"></a>00012 <span class="preprocessor">#include <boost/range/functions.hpp></span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include <boost/numeric/conversion/cast.hpp></span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016 <span class="preprocessor">#include <<a class="code" href="combine_8hpp.html">ggl/algorithms/combine.hpp</a>></span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include <<a class="code" href="convert_8hpp.html">ggl/algorithms/convert.hpp</a>></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>></span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></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><<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy>
+<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>& p, Box& mbr, Strategy <span class="keyword">const</span>&)
+<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><<span class="keyword">typename</span> P, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy>
-<a name="l00087"></a>00087 <span class="keyword">struct </span>envelope_point
+<a name="l00086"></a>00086 <span class="keyword">template</span><<span class="keyword">typename</span> Segment, <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy>
+<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>& p, B& mbr, Strategy <span class="keyword">const</span>&)
+<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>& s, Box& mbr, Strategy <span class="keyword">const</span>&)
<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><<span class="keyword">typename</span> S, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy>
-<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>& s, B& mbr, Strategy <span class="keyword">const</span>&)
-<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><<span class="keyword">typename</span> R, <span class="keyword">typename</span> Strategy>
-<a name="l00114"></a>00114 <span class="keyword">inline</span> <span class="keywordtype">void</span> envelope_range_state(R <span class="keyword">const</span>& range, Strategy <span class="keyword">const</span>& strategy, <span class="keyword">typename</span> Strategy::state_type& 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<R>::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> <<span class="keyword">typename</span> R, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy>
-<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>& range, B& mbr, Strategy <span class="keyword">const</span>& 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><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Strategy>
+<a name="l00101"></a>00101 <span class="keyword">inline</span> <span class="keywordtype">void</span> envelope_range_state(Range <span class="keyword">const</span>& range,
+<a name="l00102"></a>00102 Strategy <span class="keyword">const</span>& strategy, <span class="keyword">typename</span> Strategy::state_type& 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<Range>::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> <<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy>
+<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>& range, Box& mbr,
+<a name="l00122"></a>00122 Strategy <span class="keyword">const</span>& 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 <
+<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 >
+<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 <
-<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 >
-<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> <<span class="keyword">typename</span> P, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy>
-<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><point_tag, box_tag, P, B, Strategy>
-<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<P, B, Strategy>
-<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<P>) );
-<a name="l00160"></a>00160 BOOST_CONCEPT_ASSERT( (concept::Box<B>) );
-<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> <<span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy>
-<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><box_tag, box_tag, B, B, Strategy>
-<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>& b, B& mbr, Strategy <span class="keyword">const</span>&)
-<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<B>) );
-<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> <<span class="keyword">typename</span> S, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy>
-<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><segment_tag, box_tag, S, B, Strategy>
-<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<S, B, Strategy>
-<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> <<span class="keyword">typename</span> S, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy>
-<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><nsphere_tag, box_tag, S, B, Strategy>
-<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<S, B, Strategy>
-<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<S>) );
-<a name="l00194"></a>00194 BOOST_CONCEPT_ASSERT( (concept::Box<B>) );
-<a name="l00195"></a>00195 };
-<a name="l00196"></a>00196
-<a name="l00197"></a>00197 <span class="keyword">template</span> <<span class="keyword">typename</span> L, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy>
-<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><linestring_tag, box_tag, L, B, Strategy>
-<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<L, B, Strategy>
-<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<L>) );
-<a name="l00203"></a>00203 BOOST_CONCEPT_ASSERT( (concept::Box<B>) );
-<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> <<span class="keyword">typename</span> R, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy>
-<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><ring_tag, box_tag, R, B, Strategy>
-<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<R, B, Strategy>
-<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<R>) );
-<a name="l00213"></a>00213 BOOST_CONCEPT_ASSERT( (concept::Box<B>) );
-<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> <<span class="keyword">typename</span> P, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy>
-<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><polygon_tag, box_tag, P, B, Strategy>
-<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>& poly, B& mbr, Strategy <span class="keyword">const</span>& 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 <
-<a name="l00226"></a>00226 <span class="keyword">typename</span> ring_type<P>::type,
-<a name="l00227"></a>00227 B,
-<a name="l00228"></a>00228 Strategy
-<a name="l00229"></a>00229 >::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> <<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy>
+<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><point_tag, box_tag, Point, Box, Strategy>
+<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<Point, Box, Strategy>
+<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> <<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy>
+<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><box_tag, box_tag, Box, Box, Strategy>
+<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>& box, Box& mbr, Strategy <span class="keyword">const</span>&)
+<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> <<span class="keyword">typename</span> Segment, <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy>
+<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><segment_tag, box_tag, Segment, Box, Strategy>
+<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<Segment, Box, Strategy>
+<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> <<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy>
+<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><linestring_tag, box_tag, Linestring, Box, Strategy>
+<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<Linestring, Box, Strategy>
+<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> <<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy>
+<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><ring_tag, box_tag, Ring, Box, Strategy>
+<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<Ring, Box, Strategy>
+<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> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy>
+<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><polygon_tag, box_tag, Polygon, Box, Strategy>
+<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>& poly, Box& mbr,
+<a name="l00189"></a>00189 Strategy <span class="keyword">const</span>& 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 <
+<a name="l00195"></a>00195 <span class="keyword">typename</span> ring_type<Polygon>::type,
+<a name="l00196"></a>00196 Box,
+<a name="l00197"></a>00197 Strategy
+<a name="l00198"></a>00198 >::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><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy>
+<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>& geometry,
+<a name="l00217"></a>00217 Box& mbr, Strategy <span class="keyword">const</span>& strategy)
+<a name="l00218"></a>00218 {
+<a name="l00219"></a>00219 concept::check<const Geometry>();
+<a name="l00220"></a>00220 concept::check<Box>();
+<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 <
+<a name="l00224"></a>00224 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>, <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Box>::type</a>,
+<a name="l00225"></a>00225 Geometry, Box, Strategy
+<a name="l00226"></a>00226 >::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<P>) );
-<a name="l00234"></a>00234 BOOST_CONCEPT_ASSERT( (concept::Box<B>) );
-<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><<span class="keyword">typename</span> G, <span class="keyword">typename</span> B, <span class="keyword">typename</span> S>
-<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>& geometry, B& mbr, S <span class="keyword">const</span>& 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 <
-<a name="l00254"></a>00254 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::type</a>, <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<B>::type</a>,
-<a name="l00255"></a>00255 G, B, S
-<a name="l00256"></a>00256 >::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><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Box>
+<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>& geometry, Box& mbr)
+<a name="l00246"></a>00246 {
+<a name="l00247"></a>00247 concept::check<const Geometry>();
+<a name="l00248"></a>00248 concept::check<Box>();
+<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 <
+<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<typename point_type<Geometry>::type</a>>::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<typename point_type<Box>::type</a>>::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<Geometry>::type</a>,
+<a name="l00255"></a>00255 Box
+<a name="l00256"></a>00256 >::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><<span class="keyword">typename</span> G, <span class="keyword">typename</span> B>
-<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>& geometry, B& 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 <
-<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<typename point_type<G>::type</a>>::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<typename point_type<B>::type</a>>::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<G>::type</a>,
-<a name="l00282"></a>00282 B
-<a name="l00283"></a>00283 >::type strategy;
+<a name="l00268"></a>00268 <span class="keyword">template</span><<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
+<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>& geometry, Strategy <span class="keyword">const</span>& strategy)
+<a name="l00270"></a>00270 {
+<a name="l00271"></a>00271 concept::check<const Geometry>();
+<a name="l00272"></a>00272 concept::check<Box>();
+<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 <
+<a name="l00277"></a>00277 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>, <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Box>::type</a>,
+<a name="l00278"></a>00278 Geometry, Box, Strategy
+<a name="l00279"></a>00279 >::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><<span class="keyword">typename</span> B, <span class="keyword">typename</span> G, <span class="keyword">typename</span> S>
-<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>& geometry, S <span class="keyword">const</span>& 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 <
-<a name="l00301"></a>00301 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::type</a>, <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<B>::type</a>,
-<a name="l00302"></a>00302 G, B, S
-<a name="l00303"></a>00303 >::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><<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Geometry>
+<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>& geometry)
+<a name="l00292"></a>00292 {
+<a name="l00293"></a>00293 concept::check<const Geometry>();
+<a name="l00294"></a>00294 concept::check<Box>();
+<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 <
+<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<typename point_type<Geometry>::type</a>>::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<typename point_type<Box>::type</a>>::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<Geometry>::type</a>,
+<a name="l00301"></a>00301 Box
+<a name="l00302"></a>00302 >::type strategy;
+<a name="l00303"></a>00303 <span class="keywordflow">return</span> make_envelope<Box>(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><<span class="keyword">typename</span> B, <span class="keyword">typename</span> G>
-<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>& 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 <
-<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<typename point_type<G>::type</a>>::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<typename point_type<B>::type</a>>::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<G>::type</a>,
-<a name="l00322"></a>00322 B
-<a name="l00323"></a>00323 >::type strategy;
-<a name="l00324"></a>00324 <span class="keywordflow">return</span> make_envelope<B>(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 <algorithm></span>
<a name="l00022"></a>00022
-<a name="l00023"></a>00023 <span class="preprocessor">#include <boost/concept/requires.hpp></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <boost/mpl/if.hpp></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include <boost/range/functions.hpp></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
-<a name="l00027"></a>00027
-<a name="l00028"></a>00028 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include <<a class="code" href="core_2is__multi_8hpp.html">ggl/core/is_multi.hpp</a>></span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include <<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>></span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include <<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>></span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include <<a class="code" href="iterators_2vertex__iterator_8hpp.html">ggl/iterators/vertex_iterator.hpp</a>></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 <boost/mpl/if.hpp></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <boost/range/functions.hpp></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include <<a class="code" href="core_2is__multi_8hpp.html">ggl/core/is_multi.hpp</a>></span>
+<a name="l00030"></a>00030
+<a name="l00031"></a>00031 <span class="preprocessor">#include <<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>></span>
+<a name="l00032"></a>00032
+<a name="l00033"></a>00033 <span class="preprocessor">#include <<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>></span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include <<a class="code" href="iterators_2vertex__iterator_8hpp.html">ggl/iterators/vertex_iterator.hpp</a>></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> <<span class="keyword">typename</span> Type, <span class="keywordtype">bool</span> IsConst>
-<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 <
-<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 >::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> <<span class="keyword">typename</span> Range, <span class="keywordtype">bool</span> IsConst>
-<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 <
-<a name="l00061"></a>00061 IsConst,
-<a name="l00062"></a>00062 <span class="keyword">typename</span> boost::range_const_iterator<Range>::type,
-<a name="l00063"></a>00063 <span class="keyword">typename</span> boost::range_iterator<Range>::type
-<a name="l00064"></a>00064 >::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> <<span class="keyword">typename</span> Type, <span class="keywordtype">bool</span> IsConst>
+<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 <
+<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 >::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> <<span class="keyword">typename</span> Range, <span class="keywordtype">bool</span> IsConst>
+<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 <
+<a name="l00062"></a>00062 IsConst,
+<a name="l00063"></a>00063 <span class="keyword">typename</span> boost::range_const_iterator<Range>::type,
+<a name="l00064"></a>00064 <span class="keyword">typename</span> boost::range_iterator<Range>::type
+<a name="l00065"></a>00065 >::type type;
+<a name="l00066"></a>00066 };
<a name="l00067"></a>00067
-<a name="l00068"></a>00068 <span class="keyword">template</span> <<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
-<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<Point, IsConst>::type& 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> <<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
-<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<Point, IsConst>::type& 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> <<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
-<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<Range, IsConst>::type& 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> <<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
-<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<Range, IsConst>::type& 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<Range, IsConst>::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 <
-<a name="l00111"></a>00111 <span class="keyword">typename</span> point_type<Range>::type, IsConst
-<a name="l00112"></a>00112 >::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<point_type> 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> <<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
+<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<Point, IsConst>::type& 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> <<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
+<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<Point, IsConst>::type& 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> <<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
+<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<Range, IsConst>::type& 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> <<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
+<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<Range, IsConst>::type& 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 <
+<a name="l00110"></a>00110 Range, IsConst
+<a name="l00111"></a>00111 >::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 <
+<a name="l00115"></a>00115 <span class="keyword">typename</span> point_type<Range>::type, IsConst
+<a name="l00116"></a>00116 >::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<point_type> 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> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
-<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<Polygon, IsConst>::type& 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 <
-<a name="l00137"></a>00137 <span class="keyword">typename</span> interior_type<Polygon>::type,
-<a name="l00138"></a>00138 IsConst
-<a name="l00139"></a>00139 >::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 <
-<a name="l00143"></a>00143 <span class="keyword">typename</span> ring_type<Polygon>::type,
-<a name="l00144"></a>00144 Functor,
-<a name="l00145"></a>00145 IsConst
-<a name="l00146"></a>00146 > 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> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
-<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<Polygon, IsConst>::type& 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 <
-<a name="l00172"></a>00172 <span class="keyword">typename</span> interior_type<Polygon>::type,
-<a name="l00173"></a>00173 IsConst
-<a name="l00174"></a>00174 >::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 <
-<a name="l00178"></a>00178 <span class="keyword">typename</span> ring_type<Polygon>::type,
-<a name="l00179"></a>00179 Functor,
-<a name="l00180"></a>00180 IsConst
-<a name="l00181"></a>00181 > 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> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
+<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<Polygon, IsConst>::type& 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 <
+<a name="l00141"></a>00141 <span class="keyword">typename</span> interior_type<Polygon>::type,
+<a name="l00142"></a>00142 IsConst
+<a name="l00143"></a>00143 >::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 <
+<a name="l00147"></a>00147 <span class="keyword">typename</span> ring_type<Polygon>::type,
+<a name="l00148"></a>00148 Functor,
+<a name="l00149"></a>00149 IsConst
+<a name="l00150"></a>00150 > 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> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
+<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<Polygon, IsConst>::type& 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 <
+<a name="l00176"></a>00176 <span class="keyword">typename</span> interior_type<Polygon>::type,
+<a name="l00177"></a>00177 IsConst
+<a name="l00178"></a>00178 >::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 <
+<a name="l00182"></a>00182 <span class="keyword">typename</span> ring_type<Polygon>::type,
+<a name="l00183"></a>00183 Functor,
+<a name="l00184"></a>00184 IsConst
+<a name="l00185"></a>00185 > 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 <
-<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 >
-<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> <<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
-<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><point_tag, false, Point, Functor, IsConst>
-<a name="l00217"></a>00217 : detail::for_each::fe_point_per_point<Point, Functor, IsConst>
-<a name="l00218"></a>00218 {};
-<a name="l00219"></a>00219
-<a name="l00220"></a>00220 <span class="keyword">template</span> <<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
-<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><linestring_tag, false, Linestring, Functor, IsConst>
-<a name="l00222"></a>00222 : detail::for_each::fe_range_per_point<Linestring, Functor, IsConst>
-<a name="l00223"></a>00223 {};
-<a name="l00224"></a>00224
-<a name="l00225"></a>00225 <span class="keyword">template</span> <<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
-<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><ring_tag, false, Ring, Functor, IsConst>
-<a name="l00227"></a>00227 : detail::for_each::fe_range_per_point<Ring, Functor, IsConst>
-<a name="l00228"></a>00228 {};
-<a name="l00229"></a>00229
-<a name="l00230"></a>00230 <span class="keyword">template</span> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
-<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><polygon_tag, false, Polygon, Functor, IsConst>
-<a name="l00232"></a>00232 : detail::for_each::fe_polygon_per_point<Polygon, Functor, IsConst>
-<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 <
-<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 >
-<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> <<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
-<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><point_tag, false, Point, Functor, IsConst>
-<a name="l00250"></a>00250 : detail::for_each::fe_point_per_segment<Point, Functor, IsConst>
-<a name="l00251"></a>00251 {};
-<a name="l00252"></a>00252
-<a name="l00253"></a>00253 <span class="keyword">template</span> <<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
-<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><linestring_tag, false, Linestring, Functor, IsConst>
-<a name="l00255"></a>00255 : detail::for_each::fe_range_per_segment<Linestring, Functor, IsConst>
-<a name="l00256"></a>00256 {};
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258 <span class="keyword">template</span> <<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
-<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><ring_tag, false, Ring, Functor, IsConst>
-<a name="l00260"></a>00260 : detail::for_each::fe_range_per_segment<Ring, Functor, IsConst>
-<a name="l00261"></a>00261 {};
-<a name="l00262"></a>00262
-<a name="l00263"></a>00263 <span class="keyword">template</span> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
-<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><polygon_tag, false, Polygon, Functor, IsConst>
-<a name="l00265"></a>00265 : detail::for_each::fe_polygon_per_segment<Polygon, Functor, IsConst>
-<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><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Functor>
-<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>& 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 <
-<a name="l00284"></a>00284 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
-<a name="l00285"></a>00285 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &quot;true&quot; for multi geometries (multi_point, etc).">is_multi<Geometry>::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 >::apply(geometry, f);
-<a name="l00290"></a>00290 }
-<a name="l00291"></a>00291
-<a name="l00299"></a>00299 <span class="keyword">template</span><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Functor>
-<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& 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 <
-<a name="l00304"></a>00304 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
-<a name="l00305"></a>00305 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &quot;true&quot; for multi geometries (multi_point, etc).">is_multi<Geometry>::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 >::apply(geometry, f);
-<a name="l00310"></a>00310 }
-<a name="l00311"></a>00311
-<a name="l00319"></a>00319 <span class="keyword">template</span><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Functor>
-<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>& 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 <
-<a name="l00324"></a>00324 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
-<a name="l00325"></a>00325 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &quot;true&quot; for multi geometries (multi_point, etc).">is_multi<Geometry>::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 >::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 <
+<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 >
+<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> <<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
+<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><point_tag, false, Point, Functor, IsConst>
+<a name="l00221"></a>00221 : detail::for_each::fe_point_per_point<Point, Functor, IsConst>
+<a name="l00222"></a>00222 {};
+<a name="l00223"></a>00223
+<a name="l00224"></a>00224 <span class="keyword">template</span> <<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
+<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><linestring_tag, false, Linestring, Functor, IsConst>
+<a name="l00226"></a>00226 : detail::for_each::fe_range_per_point<Linestring, Functor, IsConst>
+<a name="l00227"></a>00227 {};
+<a name="l00228"></a>00228
+<a name="l00229"></a>00229 <span class="keyword">template</span> <<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
+<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><ring_tag, false, Ring, Functor, IsConst>
+<a name="l00231"></a>00231 : detail::for_each::fe_range_per_point<Ring, Functor, IsConst>
+<a name="l00232"></a>00232 {};
+<a name="l00233"></a>00233
+<a name="l00234"></a>00234 <span class="keyword">template</span> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
+<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><polygon_tag, false, Polygon, Functor, IsConst>
+<a name="l00236"></a>00236 : detail::for_each::fe_polygon_per_point<Polygon, Functor, IsConst>
+<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 <
+<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 >
+<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> <<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
+<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><point_tag, false, Point, Functor, IsConst>
+<a name="l00254"></a>00254 : detail::for_each::fe_point_per_segment<Point, Functor, IsConst>
+<a name="l00255"></a>00255 {};
+<a name="l00256"></a>00256
+<a name="l00257"></a>00257 <span class="keyword">template</span> <<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
+<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><linestring_tag, false, Linestring, Functor, IsConst>
+<a name="l00259"></a>00259 : detail::for_each::fe_range_per_segment<Linestring, Functor, IsConst>
+<a name="l00260"></a>00260 {};
+<a name="l00261"></a>00261
+<a name="l00262"></a>00262 <span class="keyword">template</span> <<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
+<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><ring_tag, false, Ring, Functor, IsConst>
+<a name="l00264"></a>00264 : detail::for_each::fe_range_per_segment<Ring, Functor, IsConst>
+<a name="l00265"></a>00265 {};
+<a name="l00266"></a>00266
+<a name="l00267"></a>00267 <span class="keyword">template</span> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst>
+<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><polygon_tag, false, Polygon, Functor, IsConst>
+<a name="l00269"></a>00269 : detail::for_each::fe_polygon_per_segment<Polygon, Functor, IsConst>
+<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><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Functor>
+<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>& geometry, Functor f)
+<a name="l00285"></a>00285 {
+<a name="l00286"></a>00286 concept::check<const Geometry>();
+<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 <
+<a name="l00290"></a>00290 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
+<a name="l00291"></a>00291 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &quot;true&quot; for multi geometries (multi_point, etc).">is_multi<Geometry>::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 >::apply(geometry, f);
+<a name="l00296"></a>00296 }
+<a name="l00297"></a>00297
+<a name="l00305"></a>00305 <span class="keyword">template</span><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Functor>
+<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& geometry, Functor f)
+<a name="l00307"></a>00307 {
+<a name="l00308"></a>00308 concept::check<Geometry>();
+<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 <
+<a name="l00312"></a>00312 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
+<a name="l00313"></a>00313 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &quot;true&quot; for multi geometries (multi_point, etc).">is_multi<Geometry>::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 >::apply(geometry, f);
+<a name="l00318"></a>00318 }
+<a name="l00319"></a>00319
+<a name="l00328"></a>00328 <span class="keyword">template</span><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Functor>
+<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>& geometry, Functor f)
+<a name="l00330"></a>00330 {
+<a name="l00331"></a>00331 concept::check<const Geometry>();
<a name="l00332"></a>00332
-<a name="l00340"></a>00340 <span class="keyword">template</span><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Functor>
-<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& 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 <
-<a name="l00345"></a>00345 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
-<a name="l00346"></a>00346 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &quot;true&quot; for multi geometries (multi_point, etc).">is_multi<Geometry>::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 >::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 <
+<a name="l00335"></a>00335 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
+<a name="l00336"></a>00336 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &quot;true&quot; for multi geometries (multi_point, etc).">is_multi<Geometry>::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 >::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><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Functor>
+<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& geometry, Functor f)
+<a name="l00353"></a>00353 {
+<a name="l00354"></a>00354 concept::check<Geometry>();
+<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 <
+<a name="l00358"></a>00358 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
+<a name="l00359"></a>00359 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &quot;true&quot; for multi geometries (multi_point, etc).">is_multi<Geometry>::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 >::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 <boost/concept_check.hpp></span>
-<a name="l00014"></a>00014 <span class="preprocessor">#include <boost/concept/requires.hpp></span>
-<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/range/functions.hpp></span>
-<a name="l00016"></a>00016 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
-<a name="l00017"></a>00017
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="access_8hpp.html">ggl/core/access.hpp</a>></span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
-<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include <boost/range/functions.hpp></span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#include <<a class="code" href="access_8hpp.html">ggl/core/access.hpp</a>></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="iterators_2vertex__iterator_8hpp.html">ggl/iterators/vertex_iterator.hpp</a>></span>
<a name="l00022"></a>00022
-<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="iterators_2vertex__iterator_8hpp.html">ggl/iterators/vertex_iterator.hpp</a>></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>></span>
<a name="l00024"></a>00024
-<a name="l00025"></a>00025 <span class="preprocessor">#include <<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>></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> <<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Section>
-<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<Geometry, true>::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>& geometry, Section <span class="keyword">const</span>& section,
-<a name="l00042"></a>00042 iterator_type& begin, iterator_type& 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> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Section>
-<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><polygon_tag, Polygon, Section>
-<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<Polygon, true>::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>& polygon, Section <span class="keyword">const</span>& section,
-<a name="l00054"></a>00054 iterator_type& begin, iterator_type& 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<Polygon>::type</a> ring_type;
-<a name="l00057"></a>00057 ring_type <span class="keyword">const</span>& ring = section.ring_index < 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> <<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Section>
+<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<Geometry, true>::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>& geometry, Section <span class="keyword">const</span>& section,
+<a name="l00040"></a>00040 iterator_type& begin, iterator_type& 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> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Section>
+<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><polygon_tag, Polygon, Section>
+<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<Polygon, true>::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>& polygon, Section <span class="keyword">const</span>& section,
+<a name="l00052"></a>00052 iterator_type& begin, iterator_type& 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<Polygon>::type</a> ring_type;
+<a name="l00055"></a>00055 ring_type <span class="keyword">const</span>& ring = section.ring_index < 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> <<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Section>
-<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>& geometry, Section <span class="keyword">const</span>& <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<Geometry, true>::type</a>& 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<Geometry, true>::type</a>& end)
-<a name="l00088"></a>00088 {
+<a name="l00082"></a>00082 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Section>
+<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>& geometry, Section <span class="keyword">const</span>& <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<Geometry, true>::type</a>& 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<Geometry, true>::type</a>& end)
+<a name="l00086"></a>00086 {
+<a name="l00087"></a>00087 concept::check<const Geometry>();
+<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 <
<a name="l00091"></a>00091 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::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 <boost/mpl/if.hpp></span>
<a name="l00015"></a>00015
-<a name="l00016"></a>00016
-<a name="l00017"></a>00017 <span class="preprocessor">#include <<a class="code" href="intersection__linestring_8hpp.html">ggl/algorithms/intersection_linestring.hpp</a>></span>
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="get__intersection__points_8hpp.html">ggl/algorithms/overlay/get_intersection_points.hpp</a>></span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="merge__intersection__points_8hpp.html">ggl/algorithms/overlay/merge_intersection_points.hpp</a>></span>
-<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="adapt__turns_8hpp.html">ggl/algorithms/overlay/adapt_turns.hpp</a>></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="enrich__intersection__points_8hpp.html">ggl/algorithms/overlay/enrich_intersection_points.hpp</a>></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="traverse_8hpp.html">ggl/algorithms/overlay/traverse.hpp</a>></span>
-<a name="l00024"></a>00024
-<a name="l00025"></a>00025 <span class="preprocessor">#include <<a class="code" href="assign_8hpp.html">ggl/algorithms/assign.hpp</a>></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include <<a class="code" href="convert_8hpp.html">ggl/algorithms/convert.hpp</a>></span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include <<a class="code" href="algorithms_2within_8hpp.html">ggl/algorithms/within.hpp</a>></span>
-<a name="l00028"></a>00028
+<a name="l00016"></a>00016 <span class="preprocessor">#include <<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>></span>
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="intersection__linestring_8hpp.html">ggl/algorithms/intersection_linestring.hpp</a>></span>
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="get__intersection__points_8hpp.html">ggl/algorithms/overlay/get_intersection_points.hpp</a>></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="merge__intersection__points_8hpp.html">ggl/algorithms/overlay/merge_intersection_points.hpp</a>></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="adapt__turns_8hpp.html">ggl/algorithms/overlay/adapt_turns.hpp</a>></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="enrich__intersection__points_8hpp.html">ggl/algorithms/overlay/enrich_intersection_points.hpp</a>></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="traverse_8hpp.html">ggl/algorithms/overlay/traverse.hpp</a>></span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="preprocessor">#include <<a class="code" href="assign_8hpp.html">ggl/algorithms/assign.hpp</a>></span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include <<a class="code" href="convert_8hpp.html">ggl/algorithms/convert.hpp</a>></span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include <<a class="code" href="algorithms_2within_8hpp.html">ggl/algorithms/within.hpp</a>></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 <
-<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 >
-<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>& polygon1,
-<a name="l00092"></a>00092 Polygon2 <span class="keyword">const</span>& 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 <
-<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<GeometryOut>::type</a>
-<a name="l00097"></a>00097 > ip_type;
-<a name="l00098"></a>00098 <span class="keyword">typedef</span> std::deque<ip_type> 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<GeometryOut>::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() <= 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 <
+<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 >
+<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>& polygon1,
+<a name="l00093"></a>00093 Polygon2 <span class="keyword">const</span>& 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 <
+<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<GeometryOut>::type</a>
+<a name="l00098"></a>00098 > ip_type;
+<a name="l00099"></a>00099 <span class="keyword">typedef</span> std::deque<ip_type> 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<GeometryOut>::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() <= 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<ring_type> v;
-<a name="l00136"></a>00136 ggl::traverse<ring_type>
-<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<ring_type> v;
+<a name="l00137"></a>00137 ggl::traverse<ring_type>
+<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<ring_type>::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<ring_type>::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 <
-<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 >
-<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>& polygon,
-<a name="l00179"></a>00179 Box <span class="keyword">const</span>& 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<GeometryOut>::type</a> point_type;
-<a name="l00182"></a>00182 <span class="keyword">typedef</span> detail::intersection::intersection_point<point_type> ip_type;
-<a name="l00183"></a>00183 <span class="keyword">typedef</span> std::deque<ip_type> 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<GeometryOut>::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 <
+<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 >
+<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>& polygon,
+<a name="l00180"></a>00180 Box <span class="keyword">const</span>& 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<GeometryOut>::type</a> point_type;
+<a name="l00183"></a>00183 <span class="keyword">typedef</span> detail::intersection::intersection_point<point_type> ip_type;
+<a name="l00184"></a>00184 <span class="keyword">typedef</span> std::deque<ip_type> 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<GeometryOut>::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() <= 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<Box>::type</a> p;
-<a name="l00209"></a>00209 ggl::set<0>(p, ggl::get<min_corner, 0>(box));
-<a name="l00210"></a>00210 ggl::set<1>(p, ggl::get<min_corner, 1>(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<ring_type> v;
-<a name="l00230"></a>00230 ggl::traverse<ring_type>
-<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<ring_type>::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() <= 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<Box>::type</a> p;
+<a name="l00210"></a>00210 ggl::set<0>(p, ggl::get<min_corner, 0>(box));
+<a name="l00211"></a>00211 ggl::set<1>(p, ggl::get<min_corner, 1>(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<ring_type> v;
+<a name="l00231"></a>00231 ggl::traverse<ring_type>
+<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<ring_type>::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 <
-<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 >
-<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 <
+<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 >
+<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 <
-<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 >
-<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 <
-<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 >
-<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>& segment1,
-<a name="l00296"></a>00296 Segment2 <span class="keyword">const</span>& 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<GeometryOut>::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<point_type> is
-<a name="l00302"></a>00302 = strategy::intersection::relate_cartesian_segments
-<a name="l00303"></a>00303 <
-<a name="l00304"></a>00304 policies::relate::segments_intersection_points
-<a name="l00305"></a>00305 <
-<a name="l00306"></a>00306 Segment1,
-<a name="l00307"></a>00307 Segment2,
-<a name="l00308"></a>00308 segment_intersection_points<point_type>
-<a name="l00309"></a>00309 >
-<a name="l00310"></a>00310 >::relate(segment1, segment2);
-<a name="l00311"></a>00311 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < 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 <
+<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 >
+<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 <
+<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 >
+<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>& segment1,
+<a name="l00297"></a>00297 Segment2 <span class="keyword">const</span>& 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<GeometryOut>::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<point_type> is
+<a name="l00303"></a>00303 = strategy::intersection::relate_cartesian_segments
+<a name="l00304"></a>00304 <
+<a name="l00305"></a>00305 policies::relate::segments_intersection_points
+<a name="l00306"></a>00306 <
+<a name="l00307"></a>00307 Segment1,
+<a name="l00308"></a>00308 Segment2,
+<a name="l00309"></a>00309 segment_intersection_points<point_type>
+<a name="l00310"></a>00310 >
+<a name="l00311"></a>00311 >::relate(segment1, segment2);
+<a name="l00312"></a>00312 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < 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 <
-<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 >
-<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 <
-<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 >
-<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>& linestring,
-<a name="l00336"></a>00336 Box <span class="keyword">const</span>& 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<GeometryOut>::type point_type;
-<a name="l00339"></a>00339 strategy::intersection::liang_barsky<Box, point_type> strategy;
-<a name="l00340"></a>00340 <span class="keywordflow">return</span> detail::intersection::clip_linestring_with_box<GeometryOut>(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 <
+<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 >
+<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 <
+<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 >
+<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>& linestring,
+<a name="l00337"></a>00337 Box <span class="keyword">const</span>& 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<GeometryOut>::type point_type;
+<a name="l00340"></a>00340 strategy::intersection::liang_barsky<Box, point_type> strategy;
+<a name="l00341"></a>00341 <span class="keywordflow">return</span> detail::intersection::clip_linestring_with_box<GeometryOut>(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 <
-<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 >
-<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 <
-<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 >
-<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 <Polygon1, Polygon2, OutputIterator, GeometryOut>
-<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 <
+<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 >
+<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 <
+<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 >
+<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 <Polygon1, Polygon2, OutputIterator, GeometryOut>
+<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 <
-<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 >
-<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 <
-<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 >
-<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 <Polygon, Box, OutputIterator, GeometryOut>
-<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 <
+<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 >
+<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 <
+<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 >
+<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 <Polygon, Box, OutputIterator, GeometryOut>
+<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 <
-<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 >
-<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>& g1, G2 <span class="keyword">const</span>& 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 <
-<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 >::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 <
+<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 >
+<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>& g1, G2 <span class="keyword">const</span>& 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 <
+<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 >::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 <
-<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 >
-<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>& geometry1,
-<a name="l00428"></a>00428 Geometry2 <span class="keyword">const</span>& 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 <
-<a name="l00434"></a>00434 <a class="code" href="structggl_1_1reverse__dispatch.html">reverse_dispatch<Geometry1, Geometry2>::type::value</a>,
-<a name="l00435"></a>00435 dispatch::intersection_reversed
-<a name="l00436"></a>00436 <
-<a name="l00437"></a>00437 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry1>::type</a>,
-<a name="l00438"></a>00438 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry2>::type</a>,
-<a name="l00439"></a>00439 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<GeometryOut>::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 >,
-<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 <
-<a name="l00446"></a>00446 <span class="keyword">typename</span> tag<Geometry1>::type,
-<a name="l00447"></a>00447 <span class="keyword">typename</span> tag<Geometry2>::type,
-<a name="l00448"></a>00448 <span class="keyword">typename</span> tag<GeometryOut>::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 >
-<a name="l00453"></a>00453 >::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 <
+<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 >
+<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>& geometry1,
+<a name="l00429"></a>00429 Geometry2 <span class="keyword">const</span>& geometry2,
+<a name="l00430"></a>00430 OutputIterator out)
+<a name="l00431"></a>00431 {
+<a name="l00432"></a>00432 concept::check<const Geometry1>();
+<a name="l00433"></a>00433 concept::check<const Geometry2>();
+<a name="l00434"></a>00434
+<a name="l00435"></a>00435 <span class="keywordflow">return</span> boost::mpl::if_c
+<a name="l00436"></a>00436 <
+<a name="l00437"></a>00437 <a class="code" href="structggl_1_1reverse__dispatch.html">reverse_dispatch<Geometry1, Geometry2>::type::value</a>,
+<a name="l00438"></a>00438 dispatch::intersection_reversed
+<a name="l00439"></a>00439 <
+<a name="l00440"></a>00440 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry1>::type</a>,
+<a name="l00441"></a>00441 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry2>::type</a>,
+<a name="l00442"></a>00442 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<GeometryOut>::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 >,
+<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 <
+<a name="l00449"></a>00449 <span class="keyword">typename</span> tag<Geometry1>::type,
+<a name="l00450"></a>00450 <span class="keyword">typename</span> tag<Geometry2>::type,
+<a name="l00451"></a>00451 <span class="keyword">typename</span> tag<GeometryOut>::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 >
+<a name="l00456"></a>00456 >::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 <boost/type_traits.hpp></span>
<a name="l00019"></a>00019
<a name="l00020"></a>00020
-<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="calculate__null_8hpp.html">ggl/algorithms/detail/calculate_null.hpp</a>></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include <<a class="code" href="length__result_8hpp.html">ggl/strategies/length_result.hpp</a>></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>></span>
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="preprocessor">#include <<a class="code" href="calculate__null_8hpp.html">ggl/algorithms/detail/calculate_null.hpp</a>></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 <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include <<a class="code" href="length__result_8hpp.html">ggl/strategies/length_result.hpp</a>></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><<span class="keyword">typename</span> Segment, <span class="keyword">typename</span> Strategy>
-<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<Segment>::type apply(
-<a name="l00053"></a>00053 Segment <span class="keyword">const</span>& segment, Strategy <span class="keyword">const</span>& 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><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Strategy>
-<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<Range>::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>& range, Strategy <span class="keyword">const</span>& 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<Range>::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><<span class="keyword">typename</span> Segment, <span class="keyword">typename</span> Strategy>
+<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<Segment>::type apply(
+<a name="l00057"></a>00057 Segment <span class="keyword">const</span>& segment, Strategy <span class="keyword">const</span>& 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><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Strategy>
+<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<Range>::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>& range, Strategy <span class="keyword">const</span>& 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<Range>::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> <<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
-<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 <
-<a name="l00104"></a>00104 typename length_result<Geometry>::type,
-<a name="l00105"></a>00105 Geometry,
-<a name="l00106"></a>00106 Strategy
-<a name="l00107"></a>00107 >
-<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> <<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
-<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><linestring_tag, Geometry, Strategy>
-<a name="l00113"></a>00113 : detail::<a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>::range_length<Geometry, Strategy>
-<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> <<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
+<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 <
+<a name="l00112"></a>00112 typename length_result<Geometry>::type,
+<a name="l00113"></a>00113 Geometry,
+<a name="l00114"></a>00114 Strategy
+<a name="l00115"></a>00115 >
+<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> <<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
-<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><segment_tag, Geometry, Strategy>
-<a name="l00122"></a>00122 : detail::<a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>::segment_length<Geometry, Strategy>
-<a name="l00123"></a>00123 {};
+<a name="l00119"></a>00119 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
+<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><linestring_tag, Geometry, Strategy>
+<a name="l00121"></a>00121 : detail::<a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>::range_length<Geometry, Strategy>
+<a name="l00122"></a>00122 {};
+<a name="l00123"></a>00123
<a name="l00124"></a>00124
-<a name="l00125"></a>00125
-<a name="l00126"></a>00126 } <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> <<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
+<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><segment_tag, Geometry, Strategy>
+<a name="l00130"></a>00130 : detail::<a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>::segment_length<Geometry, Strategy>
+<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><<span class="keyword">typename</span> Geometry>
-<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<Geometry>::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>& 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<Geometry>::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<point_type>::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 <
-<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 >::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 <
-<a name="l00162"></a>00162 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
-<a name="l00163"></a>00163 Geometry,
-<a name="l00164"></a>00164 strategy_type
-<a name="l00165"></a>00165 >::apply(geometry, strategy_type());
-<a name="l00166"></a>00166 }
-<a name="l00167"></a>00167
-<a name="l00182"></a>00182 <span class="keyword">template</span><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
-<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<Geometry>::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>& geometry, Strategy <span class="keyword">const</span>& 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 <
-<a name="l00188"></a>00188 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
-<a name="l00189"></a>00189 Geometry,
-<a name="l00190"></a>00190 Strategy
-<a name="l00191"></a>00191 >::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><<span class="keyword">typename</span> Geometry>
+<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<Geometry>::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>& geometry)
+<a name="l00159"></a>00159 {
+<a name="l00160"></a>00160 concept::check<const Geometry>();
+<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<Geometry>::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<point_type>::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 <
+<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 >::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 <
+<a name="l00174"></a>00174 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
+<a name="l00175"></a>00175 Geometry,
+<a name="l00176"></a>00176 strategy_type
+<a name="l00177"></a>00177 >::apply(geometry, strategy_type());
+<a name="l00178"></a>00178 }
+<a name="l00179"></a>00179
+<a name="l00197"></a>00197 <span class="keyword">template</span><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
+<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<Geometry>::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>& geometry, Strategy <span class="keyword">const</span>& strategy)
+<a name="l00200"></a>00200 {
+<a name="l00201"></a>00201 concept::check<const Geometry>();
+<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 <
+<a name="l00205"></a>00205 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
+<a name="l00206"></a>00206 Geometry,
+<a name="l00207"></a>00207 Strategy
+<a name="l00208"></a>00208 >::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 <<a class="code" href="is__linear_8hpp.html">ggl/core/is_linear.hpp</a>></span>
<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></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> <<span class="keyword">typename</span> Range>
-<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>& 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> <<span class="keyword">typename</span> Geometry, std::<span class="keywordtype">size_t</span> D>
-<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>& 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> <<span class="keyword">typename</span> Polygon>
-<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>& 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 <
-<a name="l00054"></a>00054 <span class="keyword">typename</span> interior_type<Polygon>::type
-<a name="l00055"></a>00055 >::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> <<span class="keyword">typename</span> GeometryTag, <span class="keywordtype">bool</span> Linear, <span class="keyword">typename</span> Geometry>
-<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> <<span class="keyword">typename</span> GeometryTag, <span class="keyword">typename</span> Geometry>
-<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><GeometryTag, true, Geometry>
-<a name="l00083"></a>00083 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::range_count<Geometry>
-<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> <<span class="keyword">typename</span> Geometry>
-<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><point_tag, false, Geometry>
-<a name="l00089"></a>00089 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count<Geometry, 1>
-<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> <<span class="keyword">typename</span> Geometry>
-<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><box_tag, false, Geometry>
-<a name="l00095"></a>00095 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count<Geometry, 4>
-<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> <<span class="keyword">typename</span> Geometry>
-<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><segment_tag, false, Geometry>
-<a name="l00101"></a>00101 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count<Geometry, 2>
-<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> <<span class="keyword">typename</span> Geometry>
-<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><nsphere_tag, false, Geometry>
-<a name="l00107"></a>00107 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count<Geometry, 1>
-<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> <<span class="keyword">typename</span> Geometry>
-<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><polygon_tag, false, Geometry>
-<a name="l00113"></a>00113 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::polygon_count<Geometry>
-<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> <<span class="keyword">typename</span> Geometry>
-<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>& geometry)
-<a name="l00133"></a>00133 {
-<a name="l00134"></a>00134 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const<Geometry>::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 <
-<a name="l00138"></a>00138 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
-<a name="l00139"></a>00139 <a class="code" href="structggl_1_1is__linear.html" title="Meta-function defining &quot;true&quot; for linear types (linestring,ring), &quot;false&quot;...">is_linear<ncg_type>::value</a>,
-<a name="l00140"></a>00140 ncg_type
-<a name="l00141"></a>00141 >::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 <<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>></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> <<span class="keyword">typename</span> Range>
+<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>& 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> <<span class="keyword">typename</span> Geometry, std::<span class="keywordtype">size_t</span> D>
+<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>& 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> <<span class="keyword">typename</span> Polygon>
+<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>& 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 <
+<a name="l00056"></a>00056 <span class="keyword">typename</span> interior_type<Polygon>::type
+<a name="l00057"></a>00057 >::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> <<span class="keyword">typename</span> GeometryTag, <span class="keywordtype">bool</span> Linear, <span class="keyword">typename</span> Geometry>
+<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> <<span class="keyword">typename</span> GeometryTag, <span class="keyword">typename</span> Geometry>
+<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><GeometryTag, true, Geometry>
+<a name="l00085"></a>00085 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::range_count<Geometry>
+<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> <<span class="keyword">typename</span> Geometry>
+<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><point_tag, false, Geometry>
+<a name="l00091"></a>00091 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count<Geometry, 1>
+<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> <<span class="keyword">typename</span> Geometry>
+<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><box_tag, false, Geometry>
+<a name="l00097"></a>00097 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count<Geometry, 4>
+<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> <<span class="keyword">typename</span> Geometry>
+<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><segment_tag, false, Geometry>
+<a name="l00103"></a>00103 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count<Geometry, 2>
+<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> <<span class="keyword">typename</span> Geometry>
+<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><polygon_tag, false, Geometry>
+<a name="l00110"></a>00110 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::polygon_count<Geometry>
+<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> <<span class="keyword">typename</span> Geometry>
+<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>& geometry)
+<a name="l00130"></a>00130 {
+<a name="l00131"></a>00131 concept::check<const Geometry>();
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const<Geometry>::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 <
+<a name="l00137"></a>00137 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
+<a name="l00138"></a>00138 <a class="code" href="structggl_1_1is__linear.html" title="Meta-function defining &quot;true&quot; for linear types (linestring,ring), &quot;false&quot;...">is_linear<ncg_type>::value</a>,
+<a name="l00139"></a>00139 ncg_type
+<a name="l00140"></a>00140 >::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 <cmath></span>
-<a name="l00013"></a>00013 <span class="preprocessor">#include <iterator></span>
+<a name="l00012"></a>00012
+<a name="l00013"></a>00013 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/range/functions.hpp></span>
-<a name="l00016"></a>00016 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
-<a name="l00017"></a>00017
-<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>></span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></span>
-<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="length__result_8hpp.html">ggl/strategies/length_result.hpp</a>></span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>></span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#include <<a class="code" href="length__result_8hpp.html">ggl/strategies/length_result.hpp</a>></span>
+<a name="l00018"></a>00018
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="algorithms_2length_8hpp.html">ggl/algorithms/length.hpp</a>></span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="calculate__null_8hpp.html">ggl/algorithms/detail/calculate_null.hpp</a>></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="calculate__sum_8hpp.html">ggl/algorithms/detail/calculate_sum.hpp</a>></span>
<a name="l00022"></a>00022
-<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="algorithms_2length_8hpp.html">ggl/algorithms/length.hpp</a>></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="calculate__null_8hpp.html">ggl/algorithms/detail/calculate_null.hpp</a>></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include <<a class="code" href="calculate__sum_8hpp.html">ggl/algorithms/detail/calculate_sum.hpp</a>></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> <<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
-<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 <
-<a name="l00044"></a>00044 typename length_result<Geometry>::type,
-<a name="l00045"></a>00045 Geometry,
-<a name="l00046"></a>00046 Strategy
-<a name="l00047"></a>00047 >
-<a name="l00048"></a>00048 {};
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
-<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><ring_tag, Geometry, Strategy>
-<a name="l00052"></a>00052 : detail::<a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>::range_length<Geometry, Strategy>
-<a name="l00053"></a>00053 {};
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055 <span class="keyword">template</span> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Strategy>
-<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><polygon_tag, Polygon, Strategy>
-<a name="l00057"></a>00057 : detail::calculate_polygon_sum
-<a name="l00058"></a>00058 <
-<a name="l00059"></a>00059 typename length_result<Polygon>::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 <
-<a name="l00064"></a>00064 typename ring_type<Polygon>::type,
-<a name="l00065"></a>00065 Strategy
-<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
-<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> <<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
+<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 <
+<a name="l00040"></a>00040 typename length_result<Geometry>::type,
+<a name="l00041"></a>00041 Geometry,
+<a name="l00042"></a>00042 Strategy
+<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> <<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
+<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><ring_tag, Geometry, Strategy>
+<a name="l00048"></a>00048 : detail::<a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>::range_length<Geometry, Strategy>
+<a name="l00049"></a>00049 {};
+<a name="l00050"></a>00050
+<a name="l00051"></a>00051 <span class="keyword">template</span> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Strategy>
+<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><polygon_tag, Polygon, Strategy>
+<a name="l00053"></a>00053 : detail::calculate_polygon_sum
+<a name="l00054"></a>00054 <
+<a name="l00055"></a>00055 typename length_result<Polygon>::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 <
+<a name="l00060"></a>00060 typename ring_type<Polygon>::type,
+<a name="l00061"></a>00061 Strategy
+<a name="l00062"></a>00062 >
+<a name="l00063"></a>00063 >
+<a name="l00064"></a>00064 {};
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066
+<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><<span class="keyword">typename</span> Geometry>
-<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<Geometry>::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>& geometry)
-<a name="l00087"></a>00087 {
+<a name="l00082"></a>00082 <span class="keyword">template</span><<span class="keyword">typename</span> Geometry>
+<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<Geometry>::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>& geometry)
+<a name="l00085"></a>00085 {
+<a name="l00086"></a>00086 concept::check<const Geometry>();
+<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<Geometry>::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<point_type>::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 >::apply(geometry, strategy_type());
<a name="l00104"></a>00104 }
<a name="l00105"></a>00105
-<a name="l00114"></a>00114 <span class="keyword">template</span><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
-<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<Geometry>::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>& geometry, Strategy <span class="keyword">const</span>& 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 <
-<a name="l00120"></a>00120 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
-<a name="l00121"></a>00121 Geometry,
-<a name="l00122"></a>00122 Strategy
-<a name="l00123"></a>00123 >::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><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
+<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<Geometry>::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>& geometry, Strategy <span class="keyword">const</span>& strategy)
+<a name="l00119"></a>00119 {
+<a name="l00120"></a>00120 concept::check<const Geometry>();
+<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 <
+<a name="l00124"></a>00124 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
+<a name="l00125"></a>00125 Geometry,
+<a name="l00126"></a>00126 Strategy
+<a name="l00127"></a>00127 >::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 <vector></span>
<a name="l00014"></a>00014
<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/concept_check.hpp></span>
-<a name="l00016"></a>00016 <span class="preprocessor">#include <boost/concept/requires.hpp></span>
+<a name="l00016"></a>00016
<a name="l00017"></a>00017 <span class="preprocessor">#include <boost/range/functions.hpp></span>
<a name="l00018"></a>00018 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
<a name="l00019"></a>00019
@@ -65,520 +65,525 @@
<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="access_8hpp.html">ggl/core/access.hpp</a>></span>
<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
<a name="l00025"></a>00025
-<a name="l00026"></a>00026 <span class="preprocessor">#include <<a class="code" href="math_8hpp.html">ggl/util/math.hpp</a>></span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include <<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>></span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include <<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>></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> <<span class="keyword">typename</span> Box, std::<span class="keywordtype">size_t</span> DimensionCount>
-<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 < 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> <<span class="keyword">typename</span> Box, std::<span class="keywordtype">size_t</span> DimensionCount>
-<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<section<Box, DimensionCount> >
-<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 <<a class="code" href="math_8hpp.html">ggl/util/math.hpp</a>></span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include <<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>></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> <<span class="keyword">typename</span> Box, std::<span class="keywordtype">size_t</span> DimensionCount>
+<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 < 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> <<span class="keyword">typename</span> Box, std::<span class="keywordtype">size_t</span> DimensionCount>
+<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<section<Box, DimensionCount> >
+<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> <<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount>
-<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<Segment>::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>& 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<1, Dimension>(seg) - ggl::get<0, Dimension>(seg);
-<a name="l00120"></a>00120
-<a name="l00121"></a>00121 directions[Dimension] = diff > 0 ? 1 : (diff < 0 ? -1 : 0);
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123 get_direction_loop
-<a name="l00124"></a>00124 <
-<a name="l00125"></a>00125 Segment, Dimension + 1, DimensionCount
-<a name="l00126"></a>00126 >::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> <<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> DimensionCount>
-<a name="l00131"></a>00131 <span class="keyword">struct </span>get_direction_loop<Segment, DimensionCount, DimensionCount>
-<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>& 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> <<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount>
-<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<T, Dimension + 1, DimensionCount>::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> <<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> DimensionCount>
-<a name="l00153"></a>00153 <span class="keyword">struct </span>copy_loop<T, DimensionCount, DimensionCount>
-<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> <<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount>
-<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 <
-<a name="l00175"></a>00175 T, Dimension + 1, DimensionCount
-<a name="l00176"></a>00176 >::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> <<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> DimensionCount>
-<a name="l00181"></a>00181 <span class="keyword">struct </span>compare_loop<T, DimensionCount, DimensionCount>
-<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> <<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount>
-<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<Segment>::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>& 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<1, Dimension>(seg) - ggl::get<0, Dimension>(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 <
-<a name="l00211"></a>00211 Segment, Dimension + 1, DimensionCount
-<a name="l00212"></a>00212 >::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> <<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> DimensionCount>
-<a name="l00217"></a>00217 <span class="keyword">struct </span>check_duplicate_loop<Segment, DimensionCount, DimensionCount>
-<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>&)
-<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> <<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount>
-<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<T, Dimension + 1, DimensionCount>::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> <<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> DimensionCount>
-<a name="l00236"></a>00236 <span class="keyword">struct </span>assign_loop<T, DimensionCount, DimensionCount>
-<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 <
-<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 >
-<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>& range, Sections& <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<const Point></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 ==> 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> <<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount>
+<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<Segment>::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>& 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<1, Dimension>(seg) - ggl::get<0, Dimension>(seg);
+<a name="l00123"></a>00123
+<a name="l00124"></a>00124 directions[Dimension] = diff > 0 ? 1 : (diff < 0 ? -1 : 0);
+<a name="l00125"></a>00125
+<a name="l00126"></a>00126 get_direction_loop
+<a name="l00127"></a>00127 <
+<a name="l00128"></a>00128 Segment, Dimension + 1, DimensionCount
+<a name="l00129"></a>00129 >::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> <<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> DimensionCount>
+<a name="l00134"></a>00134 <span class="keyword">struct </span>get_direction_loop<Segment, DimensionCount, DimensionCount>
+<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>& 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> <<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount>
+<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<T, Dimension + 1, DimensionCount>::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> <<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> DimensionCount>
+<a name="l00156"></a>00156 <span class="keyword">struct </span>copy_loop<T, DimensionCount, DimensionCount>
+<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> <<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount>
+<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 <
+<a name="l00178"></a>00178 T, Dimension + 1, DimensionCount
+<a name="l00179"></a>00179 >::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> <<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> DimensionCount>
+<a name="l00184"></a>00184 <span class="keyword">struct </span>compare_loop<T, DimensionCount, DimensionCount>
+<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> <<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount>
+<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<Segment>::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>& 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<1, Dimension>(seg) - ggl::get<0, Dimension>(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 <
+<a name="l00214"></a>00214 Segment, Dimension + 1, DimensionCount
+<a name="l00215"></a>00215 >::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> <<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> DimensionCount>
+<a name="l00220"></a>00220 <span class="keyword">struct </span>check_duplicate_loop<Segment, DimensionCount, DimensionCount>
+<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>&)
+<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> <<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount>
+<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<T, Dimension + 1, DimensionCount>::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> <<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> DimensionCount>
+<a name="l00239"></a>00239 <span class="keyword">struct </span>assign_loop<T, DimensionCount, DimensionCount>
+<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 <
+<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 >
+<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>& range, Sections& <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<const Point></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 ==> 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<Sections>::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<Range>::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<Sections>::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 <
-<a name="l00291"></a>00291 segment_type, 0, DimensionCount
-<a name="l00292"></a>00292 >::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 && 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 < dimension<P>::value</span>
-<a name="l00304"></a>00304 <span class="keywordflow">if</span> (check_duplicate_loop
-<a name="l00305"></a>00305 <
-<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<Point>::type::value</a>
-<a name="l00307"></a>00307 >::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 <
-<a name="l00318"></a>00318 int, 0, DimensionCount
-<a name="l00319"></a>00319 >::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 > 0
-<a name="l00324"></a>00324 && (!compare_loop
-<a name="l00325"></a>00325 <
-<a name="l00326"></a>00326 <span class="keywordtype">int</span>, 0, DimensionCount
-<a name="l00327"></a>00327 >::apply(direction_classes, section.directions)
-<a name="l00328"></a>00328 || section.count > 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 <
-<a name="l00347"></a>00347 int, 0, DimensionCount
-<a name="l00348"></a>00348 >::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 > 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 <
-<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 >
-<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>& poly, Sections& <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<Polygon>::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<Polygon>::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 <
-<a name="l00384"></a>00384 ring_type, point_type, Sections, DimensionCount, MaxCount
-<a name="l00385"></a>00385 > 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 <
-<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<Polygon>::type</a>
-<a name="l00390"></a>00390 >::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 <
-<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 >
-<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>& <a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a>, Sections& <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<Box>::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<Box, 2>();
-<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<Range>::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 <
+<a name="l00294"></a>00294 segment_type, 0, DimensionCount
+<a name="l00295"></a>00295 >::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 && 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 < dimension<P>::value</span>
+<a name="l00307"></a>00307 <span class="keywordflow">if</span> (check_duplicate_loop
+<a name="l00308"></a>00308 <
+<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<Point>::type::value</a>
+<a name="l00310"></a>00310 >::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 <
+<a name="l00321"></a>00321 int, 0, DimensionCount
+<a name="l00322"></a>00322 >::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 > 0
+<a name="l00327"></a>00327 && (!compare_loop
+<a name="l00328"></a>00328 <
+<a name="l00329"></a>00329 <span class="keywordtype">int</span>, 0, DimensionCount
+<a name="l00330"></a>00330 >::apply(direction_classes, section.directions)
+<a name="l00331"></a>00331 || section.count > 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 <
+<a name="l00350"></a>00350 int, 0, DimensionCount
+<a name="l00351"></a>00351 >::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 > 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 <
+<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 >
+<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>& poly, Sections& <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<Polygon>::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<Polygon>::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 <
+<a name="l00387"></a>00387 ring_type, point_type, Sections, DimensionCount, MaxCount
+<a name="l00388"></a>00388 > 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 <
+<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<Polygon>::type</a>
+<a name="l00393"></a>00393 >::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 <
+<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 >
+<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>& <a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a>, Sections& <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<Box>::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<Box, 2>();
+<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<point_type> 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 <
-<a name="l00437"></a>00437 std::vector<point_type>,
-<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 >::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 <
-<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 >
-<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 <
-<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 >
-<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><box_tag, Box, Sections, DimensionCount, MaxCount>
-<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 <
-<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 >
-<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 <
-<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 >
-<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 <
-<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 >
-<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 <
-<a name="l00499"></a>00499 LineString,
-<a name="l00500"></a>00500 typename point_type<LineString>::type,
-<a name="l00501"></a>00501 Sections,
-<a name="l00502"></a>00502 DimensionCount,
-<a name="l00503"></a>00503 MaxCount
-<a name="l00504"></a>00504 >
-<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 <
-<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 >
-<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><ring_tag, Range, Sections, DimensionCount, MaxCount>
-<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 <
-<a name="l00517"></a>00517 Range,
-<a name="l00518"></a>00518 typename point_type<Range>::type,
-<a name="l00519"></a>00519 Sections,
-<a name="l00520"></a>00520 DimensionCount,
-<a name="l00521"></a>00521 MaxCount
-<a name="l00522"></a>00522 >
-<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 <
-<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 >
-<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><polygon_tag, Polygon, Sections, DimensionCount, MaxCount>
-<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 <
-<a name="l00535"></a>00535 Polygon, Sections, DimensionCount, MaxCount
-<a name="l00536"></a>00536 >
-<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><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Sections>
-<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>& geometry, Sections& <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 <
-<a name="l00559"></a>00559 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::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 > 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<point_type> 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 <
+<a name="l00440"></a>00440 std::vector<point_type>,
+<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 >::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 <
+<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 >
+<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 <
+<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 >
+<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><box_tag, Box, Sections, DimensionCount, MaxCount>
+<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 <
+<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 >
+<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 <
+<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 >
+<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 <
+<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 >
+<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 <
+<a name="l00502"></a>00502 LineString,
+<a name="l00503"></a>00503 typename point_type<LineString>::type,
+<a name="l00504"></a>00504 Sections,
+<a name="l00505"></a>00505 DimensionCount,
+<a name="l00506"></a>00506 MaxCount
+<a name="l00507"></a>00507 >
+<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 <
+<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 >
+<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><ring_tag, Range, Sections, DimensionCount, MaxCount>
+<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 <
+<a name="l00520"></a>00520 Range,
+<a name="l00521"></a>00521 typename point_type<Range>::type,
+<a name="l00522"></a>00522 Sections,
+<a name="l00523"></a>00523 DimensionCount,
+<a name="l00524"></a>00524 MaxCount
+<a name="l00525"></a>00525 >
+<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 <
+<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 >
+<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><polygon_tag, Polygon, Sections, DimensionCount, MaxCount>
+<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 <
+<a name="l00538"></a>00538 Polygon, Sections, DimensionCount, MaxCount
+<a name="l00539"></a>00539 >
+<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><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Sections>
+<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>& geometry, Sections& <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<const Geometry>();
+<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 <
+<a name="l00564"></a>00564 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::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 > 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 <boost/range/functions.hpp></span>
<a name="l00013"></a>00013 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/concept/requires.hpp></span>
-<a name="l00016"></a>00016 <span class="preprocessor">#include <boost/concept_check.hpp></span>
-<a name="l00017"></a>00017
-<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>></span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
-<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include <<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>></span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></span>
<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="simplify__douglas__peucker_8hpp.html">ggl/strategies/agnostic/simplify_douglas_peucker.hpp</a>></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>& geometry, Geometry& out,
<a name="l00257"></a>00257 <span class="keywordtype">double</span> max_distance, Strategy <span class="keyword">const</span>& 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<Strategy></a>) );
+<a name="l00259"></a>00259 concept::check<Geometry>();
<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<Strategy></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 <
-<a name="l00265"></a>00265 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
-<a name="l00266"></a>00266 Geometry,
-<a name="l00267"></a>00267 Strategy
-<a name="l00268"></a>00268 >::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 <
+<a name="l00267"></a>00267 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
+<a name="l00268"></a>00268 Geometry,
+<a name="l00269"></a>00269 Strategy
+<a name="l00270"></a>00270 >::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><<span class="keyword">typename</span> Geometry>
-<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>& geometry, Geometry& 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<Geometry>::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<point_type>::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 <
-<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<const point_type></a>
-<a name="l00295"></a>00295 >::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 <
-<a name="l00299"></a>00299 point_type, ds_strategy_type
-<a name="l00300"></a>00300 > 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><<span class="keyword">typename</span> Geometry>
+<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>& geometry, Geometry& 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<Geometry>();
+<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<Geometry>::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<point_type>::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 <
+<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<const point_type></a>
+<a name="l00299"></a>00299 >::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 <
+<a name="l00303"></a>00303 point_type, ds_strategy_type
+<a name="l00304"></a>00304 > strategy_type;
<a name="l00305"></a>00305
-<a name="l00322"></a>00322 <span class="keyword">template</span><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> Strategy>
-<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>& geometry, OutputIterator out,
-<a name="l00324"></a>00324 <span class="keywordtype">double</span> max_distance, Strategy <span class="keyword">const</span>& 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<Strategy></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 <
-<a name="l00330"></a>00330 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
-<a name="l00331"></a>00331 Geometry,
-<a name="l00332"></a>00332 Strategy
-<a name="l00333"></a>00333 >::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><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator>
-<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>& 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<Geometry>::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<point_type>::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 <
-<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<const point_type></a>
-<a name="l00363"></a>00363 >::type ds_strategy_type;
-<a name="l00364"></a>00364
-<a name="l00365"></a>00365 <span class="comment">//typedef typename ggl::as_range_type<Geometry>::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><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> Strategy>
+<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>& geometry, OutputIterator out,
+<a name="l00328"></a>00328 <span class="keywordtype">double</span> max_distance, Strategy <span class="keyword">const</span>& strategy)
+<a name="l00329"></a>00329 {
+<a name="l00330"></a>00330 concept::check<const Geometry>();
+<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<Strategy></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 <
+<a name="l00335"></a>00335 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
+<a name="l00336"></a>00336 Geometry,
+<a name="l00337"></a>00337 Strategy
+<a name="l00338"></a>00338 >::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><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator>
+<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>& 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<Geometry>::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<const Geometry>();
+<a name="l00364"></a>00364 concept::check<point_type>();
+<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<point_type>::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 <
-<a name="l00369"></a>00369 point_type, ds_strategy_type
-<a name="l00370"></a>00370 > 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 <
-<a name="l00374"></a>00374 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
-<a name="l00375"></a>00375 Geometry,
-<a name="l00376"></a>00376 strategy_type
-<a name="l00377"></a>00377 >::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<const point_type></a>
+<a name="l00373"></a>00373 >::type ds_strategy_type;
+<a name="l00374"></a>00374
+<a name="l00375"></a>00375 <span class="comment">//typedef typename ggl::as_range_type<Geometry>::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 <
+<a name="l00379"></a>00379 point_type, ds_strategy_type
+<a name="l00380"></a>00380 > 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 <
+<a name="l00384"></a>00384 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
+<a name="l00385"></a>00385 Geometry,
+<a name="l00386"></a>00386 strategy_type
+<a name="l00387"></a>00387 >::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 <boost/range/metafunctions.hpp></span>
<a name="l00017"></a>00017
<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="clear_8hpp.html">ggl/algorithms/clear.hpp</a>></span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
-<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="assign_8hpp.html">ggl/algorithms/assign.hpp</a>></span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>></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> <<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2>
-<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> <<span class="keyword">typename</span> S>
-<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>& p1, P2& p2, S <span class="keyword">const</span>& 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> <<span class="keyword">typename</span> B1, <span class="keyword">typename</span> B2>
-<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> <<span class="keyword">typename</span> S>
-<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>& b1, B2& b2, S <span class="keyword">const</span>& strategy)
-<a name="l00082"></a>00082 {
-<a name="l00083"></a>00083 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type<B1>::type point_type1;
-<a name="l00084"></a>00084 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type<B2>::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<min_corner, min_corner>(b1, lower_left);
-<a name="l00088"></a>00088 detail::assign::assign_box_2d_corner<max_corner, max_corner>(b1, upper_right);
+<a name="l00026"></a>00026 <span class="preprocessor">#include <<a class="code" href="check_8hpp.html">ggl/geometries/concepts/check.hpp</a>></span>
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></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> <<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2>
+<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> <<span class="keyword">typename</span> S>
+<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>& p1, P2& p2, S <span class="keyword">const</span>& strategy)
+<a name="l00076"></a>00076 {
+<