Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r56787 - in sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html: . images
From: barend.gehrels_at_[hidden]
Date: 2009-10-13 12:20:48


Author: barendgehrels
Date: 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
New Revision: 56787
URL: http://svn.boost.org/trac/boost/changeset/56787

Log:
Added doc and example folders
Some doc changes in sources plus some moves to extension
Added:
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/access_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/access_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__convex__hull_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__convex__hull_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__simplify_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__simplify_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__within_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__within_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2within_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2within_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/annotated.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/append_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/append_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/arithmetic_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/arithmetic_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/as__range_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/as__range_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign__box__corner_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign__box__corner_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/base_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/base_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/boost__array__as__linestring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/boost__array__as__linestring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/boost__array__as__ring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/boost__array__as__ring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/box_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/box_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/box__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/box__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/buffer_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/buffer_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c01__custom__point__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c02__custom__box__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c04__a__custom__triangle__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c04__b__custom__triangle__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c05__custom__point__pointer__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c__array_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c__array_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c__array__cartesian_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c__array__cartesian_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/calculate__null_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/calculate__null_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__area_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__area_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__centroid_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__centroid_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__compare_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__compare_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__distance_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__distance_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__envelope_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__envelope_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__side_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__side_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__within_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__within_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cartesian2d_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cartesian2d_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cartesian3d_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cartesian3d_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/centroid_polygon.png (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/centroid_ring.png (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/circular__iterator_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/circular__iterator_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/class_point_list.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classcore__dispatch_1_1dimension.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classes.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1box-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1box.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1centroid__exception-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1centroid__exception.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1degree.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1dsv__manipulator-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1dsv__manipulator.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1linear__ring-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1linear__ring.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1linestring-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1linestring.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1nsphere-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1nsphere.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1point-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1point.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1point__xy-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1point__xy.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1polygon-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1polygon.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1radian.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1area_1_1by__spherical__excess-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1area_1_1by__spherical__excess.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1area_1_1by__triangles-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1area_1_1by__triangles.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1centroid_1_1bashein__detmer-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1centroid_1_1bashein__detmer.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1centroid_1_1geolib1995-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1centroid_1_1geolib1995.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1convex__hull_1_1graham-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1convex__hull_1_1graham.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1distance_1_1haversine-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1distance_1_1haversine.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1distance_1_1ll__point__segment-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1distance_1_1ll__point__segment.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1intersection_1_1liang__barsky-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1intersection_1_1liang__barsky.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1simplify_1_1douglas__peucker-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1transform_1_1ublas__transformer.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_012_00_012_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_012_00_012_01_4.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1within_1_1winding-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1within_1_1winding.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1svg__manipulator-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1svg__manipulator.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/clear_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/clear_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/clip_linestring.png (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/clip_polygon.png (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/clip_segment_segment.png (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/combine_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/combine_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/combine_box_box.png (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/combine_box_point.png (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/compiling.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/concepts.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/convert_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/convert_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/convexhull_polygon_polygon.png (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/coordinate__dimension_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/coordinate__dimension_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/coordinate__system_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/coordinate__system_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/coordinate__type_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/coordinate__type_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/copy_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/copy_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/copy__segments_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/copy__segments_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2geometry__id_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2geometry__id_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2is__multi_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2is__multi_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2point__type_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2point__type_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2ring__type_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2ring__type_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2tags_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2tags_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2topological__dimension_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2topological__dimension_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cs_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cs_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/de9im_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/de9im_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/design.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/direction_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/direction_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/disjoint_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/disjoint_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/distance__result_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/distance__result_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/dot__product_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/dot__product_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/download.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen.css (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen.png (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen__design__cross__section_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen__design__cross__section_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen__examples_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen__examples_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen__mainpage_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen__mainpage_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen__pages_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen__pages_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/dsv.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/enrich__intersection__points_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/enrich__intersection__points_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/envelope_polygon.png (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/equals_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/equals_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/ever__circling__iterator_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/ever__circling__iterator_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/examples.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/exception_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/exception_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/exterior__ring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/exterior__ring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/files.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/for__each_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/for__each_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/for__each__coordinate_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/for__each__coordinate_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/foreach_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/foreach_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x62.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x63.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x64.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x65.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x66.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x67.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x68.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x69.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x6c.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x6d.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x6e.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x6f.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x70.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x72.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x73.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x74.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x75.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x76.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x77.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x78.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x79.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x7e.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_rela.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_type.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_vars.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/geometries_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/geometries_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/get__cs__as__radian_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/get__cs__as__radian_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/get__intersection__points_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/get__intersection__points_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/globals.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/globals_defs.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__access.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__area.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__arithmetic.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__boolean__relations.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__buffer.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__centroid.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__combine.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__concepts.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__convert.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__convex__hull.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__core.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__cs.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__distance.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__envelope.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__intermediate.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__length.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__loop.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__overlay.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__perimeter.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__sectionalize.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__selected.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__simplify.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__svg.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__traits.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__transform.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__utility.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/haversine_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/haversine_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/hierarchy.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/images/
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/images/draft.png (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/images/ggl-logo-big.png (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/images/proposed_boost.png (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/index.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/interior__rings_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/interior__rings_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intermediate_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intermediate_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersection__linestring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersection__linestring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersection__point_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersection__point_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersection__points_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersection__points_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersection__result_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersection__result_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersects_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersects_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/inverse__transformer_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/inverse__transformer_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/is__linear_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/is__linear_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/iterators_2point__const__iterator_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/iterators_2point__const__iterator_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/less_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/less_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/linear__ring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/linear__ring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/linestring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/linestring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/linestring__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/linestring__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/loop_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/loop_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/make_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/make_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/map__transformer_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/map__transformer_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/math_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/math_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/matrix__transformers_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/matrix__transformers_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/merge__intersection__points_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/merge__intersection__points_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/modify__with__predicate_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/modify__with__predicate_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/modules.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2area_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2area_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2centroid_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2centroid_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2convex__hull_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2convex__hull_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2correct_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2correct_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2distance_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2distance_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2envelope_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2envelope_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2get__section_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2get__section_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2intersection_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2intersection_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2length_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2length_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2num__points_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2num__points_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2perimeter_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2perimeter_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2sectionalize_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2sectionalize_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2simplify_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2simplify_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2transform_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2transform_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2within_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2within_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2geometry__id_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2geometry__id_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2is__multi_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2is__multi_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2point__type_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2point__type_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2ring__type_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2ring__type_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2tags_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2tags_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2topological__dimension_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2topological__dimension_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2iterators_2point__const__iterator_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2iterators_2point__const__iterator_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi__linestring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi__linestring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi__point_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi__point_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi__polygon_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi__polygon_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi__sum_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi__sum_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1concept.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1cs.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1math.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1policies.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1policies_1_1relate.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1area.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1centroid.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1compare.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1convex__hull.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1distance.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1envelope.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1envelope_1_1shift.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1intersection.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1side.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1simplify.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1transform.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1within.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1traits.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespacemembers.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespacemembers_func.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespacemembers_type.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespacemembers_vars.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaces.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/not_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/not_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/nsphere_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/nsphere_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/nsphere__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/nsphere__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/ogc.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/output_main.png (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/overlaps_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/overlaps_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/pages.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/performance.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point__xy_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point__xy_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/polygon_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/polygon_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/polygon__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/polygon__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/radian__access_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/radian__access_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/radius_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/radius_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/register_2box_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/register_2box_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/register_2linestring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/register_2linestring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/register_2point_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/register_2point_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/replace__point__type_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/replace__point__type_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/reverse__dispatch_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/reverse__dispatch_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/ring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/ring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/ring__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/ring__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/segment_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/segment_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/segment__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/segment__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/segment__identifier_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/segment__identifier_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/segment__iterator_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/segment__iterator_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/select__coordinate__type_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/select__coordinate__type_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/select__most__precise_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/select__most__precise_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/selected_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/selected_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/self__intersection__points_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/self__intersection__points_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/simplify_linestring.png (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/sph__area_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/sph__area_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/sph__envelope_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/sph__envelope_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/status.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/std__as__linestring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/std__as__linestring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/std__as__ring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/std__as__ring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/strategies_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/strategies_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/strategy__traits_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/strategy__traits_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/strategy__transform_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/strategy__transform_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1area__result-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1area__result.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1as__range__type-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1as__range__type.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1box__tag.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cartesian__distance-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cartesian__distance.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cartesian__tag.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1circular__iterator-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1circular__iterator.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_box-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_box.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_box-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_box.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_linestring-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_linestring.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_nsphere-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_nsphere.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_point-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_point.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_polygon-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_polygon.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_ring-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_ring.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_segment-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_segment.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_linestring-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_linestring.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_nsphere-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_nsphere.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_point-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_point.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_polygon-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_polygon.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_ring-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_ring.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_segment-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_segment.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1coordinate__system-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1coordinate__system.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1coordinate__type-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1coordinate__type.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1cartesian.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1geographic-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1geographic.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1polar-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1polar.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1spherical-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1spherical.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cs__tag-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cs__tag.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1de9im-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1de9im.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1de9im__segment-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1de9im__segment.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1dimension.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1distance__result-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1distance__result.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1ever__circling__iterator-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1ever__circling__iterator.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1exception.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1geographic__tag.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1geometry__collection__tag.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1geometry__id.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1geometry__not__recognized__tag.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1interior__type-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1interior__type.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1is__linear.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1is__multi.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1is__radian.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1less-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1less.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1linestring__tag.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__linestring-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__linestring.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__linestring__tag.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__point-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__point.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__point__tag.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__polygon-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__polygon.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__polygon__tag.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1nsphere__tag.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1point__const__iterator-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1point__const__iterator.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1point__tag.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1point__type-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1point__type.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1direction__type-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1direction__type.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__de9im-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__de9im.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__direction-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__direction.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__intersection__points-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__intersection__points.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__tupled-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__tupled.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1polygon__tag.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1radius__type-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1radius__type.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1replace__point__type.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1reverse__dispatch.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1ring__tag.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1ring__type-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1ring__type.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1section-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1section.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1sections-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1sections.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1segment-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1segment.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__identifier-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__identifier.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__intersection__points-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__intersection__points.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__iterator-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__iterator.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__tag.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1select__coordinate__type-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1select__coordinate__type.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1select__most__precise-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1select__most__precise.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1spherical__tag.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1compare_1_1euclidian-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1compare_1_1euclidian.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1distance_1_1pythagoras-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1distance_1_1pythagoras.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1distance_1_1xy__point__segment-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1distance_1_1xy__point__segment.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1combine__xy-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1combine__xy.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1combine__xy_1_1state-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1combine__xy_1_1state.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1grow__ll-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1grow__ll.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1grow__ll_1_1state-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1grow__ll_1_1state.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1shift_1_1shifted.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1shift_1_1shifted_3_01degree_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1shift_1_1shifted_3_01degree_01_4.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1shift_1_1shifted_3_01radian_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1shift_1_1shifted_3_01radian_01_4.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1not__implemented.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1side_1_1xy__side-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1side_1_1xy__side.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1copy__direct-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1copy__direct.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1copy__per__coordinate-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1copy__per__coordinate.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1degree__radian__vv-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1degree__radian__vv.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1degree__radian__vv__3-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1degree__radian__vv__3.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1from__cartesian__3__to__spherical__2-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1from__cartesian__3__to__spherical__2.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1from__cartesian__3__to__spherical__3-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1from__cartesian__3__to__spherical__3.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1from__spherical__2__to__cartesian__3-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1from__spherical__2__to__cartesian__3.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1from__spherical__3__to__cartesian__3-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1from__spherical__3__to__cartesian__3.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1inverse__transformer-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1inverse__transformer.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1map__transformer-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1map__transformer.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1rotate__transformer-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1rotate__transformer.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1scale__transformer.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1scale__transformer_3_01_p1_00_01_p2_00_012_00_012_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1scale__transformer_3_01_p1_00_01_p2_00_012_00_012_01_4.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1scale__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1scale__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1translate__transformer.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1translate__transformer_3_01_p1_00_01_p2_00_012_00_012_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1translate__transformer_3_01_p1_00_01_p2_00_012_00_012_01_4.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1translate__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1translate__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_013_00_012_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_013_00_012_01_4.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1within_1_1franklin-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1within_1_1franklin.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__area-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__area.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__centroid-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__centroid.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__compare-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__compare.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__convex__hull-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__convex__hull.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__distance-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__distance.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__distance__segment-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__distance__segment.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__envelope-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__envelope.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__parse-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__parse.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__side-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__side.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1pythagoras_3_01_p1_00_01_p2_01_4_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1pythagoras_3_01_p1_00_01_p2_01_4_01_4.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1xy__point__segment_3_01_point_00_01_segmed55c3cfc5827a9fce761418deab6f486.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1xy__point__segment_3_01_point_00_01_segment_00_01_p_p_strategy_01_4_01_4.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag__distance__point__point.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag__distance__point__segment.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag__unknown.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__transform-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__transform.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__within-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__within.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1tag-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1tag.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1topological__dimension.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1access.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1access_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1access_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1append__point.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1clear.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1coordinate__system.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1coordinate__system_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1coordinate__system_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1coordinate__type.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1coordinate__type_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1coordinate__type_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1cs__tag.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1dimension.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1dimension_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1exterior__ring.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1indexed__access.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1interior__rings.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1interior__type.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1point__type.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1radius__access.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1radius__type.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1ring__type.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1tag-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1tag.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1tag_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1tag_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1use__std-members.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1use__std.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tab_b.gif (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tab_l.gif (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tab_r.gif (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tabs.css (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tag_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tag_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/traverse_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/traverse_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tuple_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tuple_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tuple__cartesian_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tuple__cartesian_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tupled_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tupled_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/within_polygon.png (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/within_ring.png (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/write__dsv_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/write__dsv_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/write__svg_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/write__svg_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/write__svg__multi_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/write__svg__multi_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/x01__qt__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/x01_qt_example_output.png (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/x03__a__soci__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/x03__b__soci__example_8cpp-example.html (contents, props changed)

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/access_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/access_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,109 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/core/access.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">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1traits_1_1access.html">ggl::traits::access&lt; G &gt;</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Traits class which gives <a class="el" href="structggl_1_1traits_1_1access.html" title="Traits class which gives access (get,set) to points.">access</a> (get,set) to points. More...<br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1traits_1_1indexed__access.html">ggl::traits::indexed_access&lt; G, I, D &gt;</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Traits class defining "get" and "set" to get and set <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> coordinate values. More...<br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1traits_1_1use__std.html">ggl::traits::use_std&lt; G &gt;</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Traits class, optional, indicating that the std-library should be used. More...<br></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;std::size_t I, std::size_t D, typename G &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">coordinate_type&lt; G &gt;::type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__access.html#gd3c007fcbae837d56d13aa77ed03f920">ggl::get</a> (const G &amp;geometry, detail::signature_getset_index_dimension *dummy=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get a coordinate value of a <a class="el" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a> / <a class="el" href="structggl_1_1segment.html" title="Class segment: small containing two (templatized) point references.">segment</a> <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;std::size_t D, typename G &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">coordinate_type&lt; G &gt;::type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f">ggl::get</a> (const G &amp;geometry, detail::signature_getset_dimension *dummy=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get a coordinate value of a <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> / <a class="el" href="classggl_1_1nsphere.html" title="Class nsphere: defines a circle or a sphere: a point with radius.">nsphere</a> <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;std::size_t I, std::size_t D, typename G &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__access.html#g6ced3f6383c5e664984c54a36a1d78a2">ggl::set</a> (G &amp;geometry, const typename coordinate_type&lt; G &gt;::type &amp;value, detail::signature_getset_index_dimension *dummy=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">assign a coordinate value of a <a class="el" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a> / <a class="el" href="structggl_1_1segment.html" title="Class segment: small containing two (templatized) point references.">segment</a> <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;std::size_t D, typename G &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a">ggl::set</a> (G &amp;geometry, const typename coordinate_type&lt; G &gt;::type &amp;value, detail::signature_getset_dimension *dummy=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">assign coordinate value to a <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> / sphere <br></td></tr>
+<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html#0df0bc9b23e7d20e4596c25071039f0a">ggl::max_corner</a> = 1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html#1ce1f1fae9b689b692d623ee76d20857">ggl::min_corner</a> = 0</td></tr>
+
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/access_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/access_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,282 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/core/access.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 Bruno Lalande 2008, 2009</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</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_CORE_ACCESS_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_CORE_ACCESS_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;cstddef&gt;</span>
+<a name="l00013"></a>00013
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/type_traits/remove_const.hpp&gt;</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;boost/concept_check.hpp&gt;</span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="coordinate__type_8hpp.html">ggl/core/coordinate_type.hpp</a>&gt;</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="core_2point__type_8hpp.html">ggl/core/point_type.hpp</a>&gt;</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="tag_8hpp.html">ggl/core/tag.hpp</a>&gt;</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a><a class="code" href="namespaceggl.html">00021</a> <span class="keyword">namespace </span>ggl
+<a name="l00022"></a>00022 {
+<a name="l00023"></a>00023
+<a name="l00024"></a><a class="code" href="namespaceggl.html#1ce1f1fae9b689b692d623ee76d20857">00024</a> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespaceggl.html#1ce1f1fae9b689b692d623ee76d20857">min_corner</a> = 0;
+<a name="l00025"></a><a class="code" href="namespaceggl.html#0df0bc9b23e7d20e4596c25071039f0a">00025</a> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespaceggl.html#0df0bc9b23e7d20e4596c25071039f0a">max_corner</a> = 1;
+<a name="l00026"></a>00026
+<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="l00041"></a>00041 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G&gt;
+<a name="l00042"></a><a class="code" href="structggl_1_1traits_1_1access.html">00042</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1traits_1_1access.html" title="Traits class which gives access (get,set) to points.">access</a> {};
+<a name="l00043"></a>00043
+<a name="l00044"></a>00044
+<a name="l00058"></a>00058 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G, std::<span class="keywordtype">size_t</span> I, std::<span class="keywordtype">size_t</span> D&gt;
+<a name="l00059"></a><a class="code" href="structggl_1_1traits_1_1indexed__access.html">00059</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1traits_1_1indexed__access.html" title="Traits class defining &amp;quot;get&amp;quot; and &amp;quot;set&amp;quot; to get and set point coordinate...">indexed_access</a> {};
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061
+<a name="l00075"></a>00075 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G&gt;
+<a name="l00076"></a><a class="code" href="structggl_1_1traits_1_1use__std.html">00076</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1traits_1_1use__std.html" title="Traits class, optional, indicating that the std-library should be used.">use_std</a>
+<a name="l00077"></a>00077 {
+<a name="l00078"></a><a class="code" href="structggl_1_1traits_1_1use__std.html#17f62fd601472a4c970adeda2281f145">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#17f62fd601472a4c970adeda2281f145">value</a> = <span class="keyword">true</span>;
+<a name="l00079"></a>00079 };
+<a name="l00080"></a>00080
+<a name="l00081"></a>00081 } <span class="comment">// namespace traits</span>
+<a name="l00082"></a>00082
+<a name="l00083"></a>00083
+<a name="l00084"></a>00084 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00085"></a>00085 <span class="preprocessor"></span><span class="keyword">namespace </span>core_dispatch
+<a name="l00086"></a>00086 {
+<a name="l00087"></a>00087 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> G, <span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> D&gt;
+<a name="l00088"></a>00088 <span class="keyword">struct </span>access
+<a name="l00089"></a>00089 {
+<a name="l00090"></a>00090 <span class="comment">//static inline T get(const G&amp; ) {}</span>
+<a name="l00091"></a>00091 <span class="comment">//static inline void set(G&amp; g, const T&amp; value) {}</span>
+<a name="l00092"></a>00092 };
+<a name="l00093"></a>00093
+<a name="l00094"></a>00094 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> G, <span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> I, std::<span class="keywordtype">size_t</span> D&gt;
+<a name="l00095"></a>00095 <span class="keyword">struct </span>indexed_access
+<a name="l00096"></a>00096 {
+<a name="l00097"></a>00097 <span class="comment">//static inline T get(const G&amp; ) {}</span>
+<a name="l00098"></a>00098 <span class="comment">//static inline void set(G&amp; g, const T&amp; value) {}</span>
+<a name="l00099"></a>00099 };
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> D&gt;
+<a name="l00102"></a>00102 <span class="keyword">struct </span>access&lt;point_tag, P, T, D&gt;
+<a name="l00103"></a>00103 {
+<a name="l00104"></a>00104 <span class="keyword">static</span> <span class="keyword">inline</span> T <span class="keyword">get</span>(<span class="keyword">const</span> P&amp; p)
+<a name="l00105"></a>00105 {
+<a name="l00106"></a>00106 <span class="keywordflow">return</span> traits::access&lt;P&gt;::template get&lt;D&gt;(p);
+<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> <span class="keyword">set</span>(P&amp; p, <span class="keyword">const</span> T&amp; value)
+<a name="l00109"></a>00109 {
+<a name="l00110"></a>00110 traits::access&lt;P&gt;::template set&lt;D&gt;(p, value);
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112 };
+<a name="l00113"></a>00113
+<a name="l00114"></a>00114 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> S, <span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> D&gt;
+<a name="l00115"></a>00115 <span class="keyword">struct </span>access&lt;nsphere_tag, S, T, D&gt;
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 <span class="keyword">static</span> <span class="keyword">inline</span> T <span class="keyword">get</span>(<span class="keyword">const</span> S&amp; s)
+<a name="l00118"></a>00118 {
+<a name="l00119"></a>00119 <span class="keywordflow">return</span> traits::access&lt;S&gt;::template get&lt;D&gt;(s);
+<a name="l00120"></a>00120 }
+<a name="l00121"></a>00121 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(S&amp; s, <span class="keyword">const</span> T&amp; value)
+<a name="l00122"></a>00122 {
+<a name="l00123"></a>00123 traits::access&lt;S&gt;::template set&lt;D&gt;(s, value);
+<a name="l00124"></a>00124 }
+<a name="l00125"></a>00125 };
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> I, std::<span class="keywordtype">size_t</span> D&gt;
+<a name="l00128"></a>00128 <span class="keyword">struct </span>indexed_access&lt;box_tag, B, T, I, D&gt;
+<a name="l00129"></a>00129 {
+<a name="l00130"></a>00130 <span class="keyword">static</span> <span class="keyword">inline</span> T <span class="keyword">get</span>(<span class="keyword">const</span> B&amp; b)
+<a name="l00131"></a>00131 {
+<a name="l00132"></a>00132 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">traits::indexed_access&lt;B, I, D&gt;::get</a>(b);
+<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> <span class="keyword">set</span>(B&amp; b, <span class="keyword">const</span> T&amp; value)
+<a name="l00135"></a>00135 {
+<a name="l00136"></a>00136 <a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a" title="assign coordinate value to a point / sphere">traits::indexed_access&lt;B, I, D&gt;::set</a>(b, value);
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138 };
+<a name="l00139"></a>00139
+<a name="l00140"></a>00140 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> S, <span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> I, std::<span class="keywordtype">size_t</span> D&gt;
+<a name="l00141"></a>00141 <span class="keyword">struct </span>indexed_access&lt;segment_tag, S, T, I, D&gt;
+<a name="l00142"></a>00142 {
+<a name="l00143"></a>00143 <span class="keyword">static</span> <span class="keyword">inline</span> T <span class="keyword">get</span>(<span class="keyword">const</span> S&amp; segment)
+<a name="l00144"></a>00144 {
+<a name="l00145"></a>00145 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">traits::indexed_access&lt;S, I, D&gt;::get</a>(segment);
+<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> <span class="keyword">set</span>(S&amp; segment, <span class="keyword">const</span> T&amp; value)
+<a name="l00148"></a>00148 {
+<a name="l00149"></a>00149 <a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a" title="assign coordinate value to a point / sphere">traits::indexed_access&lt;S, I, D&gt;::set</a>(segment, value);
+<a name="l00150"></a>00150 }
+<a name="l00151"></a>00151 };
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 } <span class="comment">// namespace core_dispatch</span>
+<a name="l00154"></a>00154 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00155"></a>00155 <span class="preprocessor"></span>
+<a name="l00156"></a>00156
+<a name="l00157"></a>00157 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00158"></a>00158 <span class="preprocessor"></span><span class="keyword">namespace </span>detail
+<a name="l00159"></a>00159 {
+<a name="l00160"></a>00160
+<a name="l00161"></a>00161 <span class="comment">// Two dummy tags to distinguish get/set variants below.</span>
+<a name="l00162"></a>00162 <span class="comment">// They don't have to be specified by the user. The functions are distinguished</span>
+<a name="l00163"></a>00163 <span class="comment">// by template signature also, but for e.g. GCC this is not enough. So give them</span>
+<a name="l00164"></a>00164 <span class="comment">// a different signature.</span>
+<a name="l00165"></a>00165 <span class="keyword">struct </span>signature_getset_dimension {};
+<a name="l00166"></a>00166 <span class="keyword">struct </span>signature_getset_index_dimension {};
+<a name="l00167"></a>00167
+<a name="l00168"></a>00168 } <span class="comment">// namespace detail</span>
+<a name="l00169"></a>00169 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00170"></a>00170 <span class="preprocessor"></span>
+<a name="l00171"></a>00171
+<a name="l00181"></a>00181 <span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G&gt;
+<a name="l00182"></a><a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f">00182</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type&lt;G&gt;::type</a> <span class="keyword">get</span>(<span class="keyword">const</span> G&amp; geometry,
+<a name="l00183"></a>00183 detail::signature_getset_dimension* dummy = 0)
+<a name="l00184"></a>00184 {
+<a name="l00185"></a>00185 boost::ignore_unused_variable_warning(dummy);
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;G&gt;::type ncg_type;
+<a name="l00188"></a>00188
+<a name="l00189"></a>00189 <span class="keyword">typedef</span> core_dispatch::access
+<a name="l00190"></a>00190 &lt;
+<a name="l00191"></a>00191 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>,
+<a name="l00192"></a>00192 ncg_type,
+<a name="l00193"></a>00193 <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type&lt;ncg_type&gt;::type</a>,
+<a name="l00194"></a>00194 D
+<a name="l00195"></a>00195 &gt; coord_access_type;
+<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 / nsphere">coord_access_type::get</a>(geometry);
+<a name="l00198"></a>00198 }
+<a name="l00199"></a>00199
+<a name="l00200"></a>00200
+<a name="l00210"></a>00210 <span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G&gt;
+<a name="l00211"></a><a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a">00211</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(G&amp; geometry, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type&lt;G&gt;::type</a>&amp; value,
+<a name="l00212"></a>00212 detail::signature_getset_dimension* dummy = 0)
+<a name="l00213"></a>00213 {
+<a name="l00214"></a>00214 boost::ignore_unused_variable_warning(dummy);
+<a name="l00215"></a>00215
+<a name="l00216"></a>00216 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;G&gt;::type ncg_type;
+<a name="l00217"></a>00217
+<a name="l00218"></a>00218 <span class="keyword">typedef</span> core_dispatch::access
+<a name="l00219"></a>00219 &lt;
+<a name="l00220"></a>00220 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>,
+<a name="l00221"></a>00221 ncg_type,
+<a name="l00222"></a>00222 <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type&lt;ncg_type&gt;::type</a>,
+<a name="l00223"></a>00223 D
+<a name="l00224"></a>00224 &gt; coord_access_type;
+<a name="l00225"></a>00225
+<a name="l00226"></a>00226 <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="l00227"></a>00227 }
+<a name="l00228"></a>00228
+<a name="l00229"></a>00229 <span class="comment">// Note: doxygen needs a construct to distinguish get/set (like the gcc compiler)</span>
+<a name="l00230"></a>00230
+<a name="l00241"></a>00241 <span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> I, std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G&gt;
+<a name="l00242"></a><a class="code" href="group__access.html#gd3c007fcbae837d56d13aa77ed03f920">00242</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type&lt;G&gt;::type</a> <span class="keyword">get</span>(<span class="keyword">const</span> G&amp; geometry,
+<a name="l00243"></a>00243 detail::signature_getset_index_dimension* dummy = 0)
+<a name="l00244"></a>00244 {
+<a name="l00245"></a>00245 boost::ignore_unused_variable_warning(dummy);
+<a name="l00246"></a>00246
+<a name="l00247"></a>00247 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;G&gt;::type ncg_type;
+<a name="l00248"></a>00248
+<a name="l00249"></a>00249 <span class="keyword">typedef</span> core_dispatch::indexed_access
+<a name="l00250"></a>00250 &lt;
+<a name="l00251"></a>00251 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>,
+<a name="l00252"></a>00252 ncg_type,
+<a name="l00253"></a>00253 <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type&lt;ncg_type&gt;::type</a>,
+<a name="l00254"></a>00254 I,
+<a name="l00255"></a>00255 D
+<a name="l00256"></a>00256 &gt; coord_access_type;
+<a name="l00257"></a>00257
+<a name="l00258"></a>00258 <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="l00259"></a>00259 }
+<a name="l00260"></a>00260
+<a name="l00271"></a>00271 <span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> I, std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G&gt;
+<a name="l00272"></a><a class="code" href="group__access.html#g6ced3f6383c5e664984c54a36a1d78a2">00272</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(G&amp; geometry, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type&lt;G&gt;::type</a>&amp; value,
+<a name="l00273"></a>00273 detail::signature_getset_index_dimension* dummy = 0)
+<a name="l00274"></a>00274 {
+<a name="l00275"></a>00275 boost::ignore_unused_variable_warning(dummy);
+<a name="l00276"></a>00276
+<a name="l00277"></a>00277 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;G&gt;::type ncg_type;
+<a name="l00278"></a>00278
+<a name="l00279"></a>00279 <span class="keyword">typedef</span> core_dispatch::indexed_access
+<a name="l00280"></a>00280 &lt;
+<a name="l00281"></a>00281 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>, ncg_type,
+<a name="l00282"></a>00282 <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type&lt;ncg_type&gt;::type</a>,
+<a name="l00283"></a>00283 I,
+<a name="l00284"></a>00284 D
+<a name="l00285"></a>00285 &gt; coord_access_type;
+<a name="l00286"></a>00286
+<a name="l00287"></a>00287 <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="l00288"></a>00288 }
+<a name="l00289"></a>00289
+<a name="l00290"></a>00290 } <span class="comment">// namespace ggl</span>
+<a name="l00291"></a>00291
+<a name="l00292"></a>00292 <span class="preprocessor">#endif // GGL_CORE_ACCESS_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/overlay/adapt_turns.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename V &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceggl.html#a8f29c6cbf3f88d5926a127c76976027">ggl::adapt_turns</a> (V &amp;intersection_points)</td></tr>
+
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,621 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/overlay/adapt_turns.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_ADAPT_TURNS_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ADAPT_TURNS_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;algorithm&gt;</span>
+<a name="l00013"></a>00013
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="coordinate__type_8hpp.html">ggl/core/coordinate_type.hpp</a>&gt;</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="equals_8hpp.html">ggl/algorithms/equals.hpp</a>&gt;</span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="keyword">namespace </span>ggl
+<a name="l00025"></a>00025 {
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00029"></a>00029 <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="l00030"></a>00030
+<a name="l00031"></a>00031
+<a name="l00032"></a>00032
+<a name="l00033"></a>00033 <span class="comment">// TEMP: another COPY of side</span>
+<a name="l00034"></a>00034 <span class="comment">// TODO: solve this inside SIDE!!!</span>
+<a name="l00035"></a>00035 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2, <span class="keyword">typename</span> P&gt;
+<a name="l00036"></a>00036 <span class="keyword">inline</span> <span class="keywordtype">int</span> the_side(P1 <span class="keyword">const</span>&amp; p1, P2 <span class="keyword">const</span>&amp; p2, P <span class="keyword">const</span>&amp; p)
+<a name="l00037"></a>00037 {
+<a name="l00038"></a>00038 <span class="keyword">typedef</span> <span class="keyword">typename</span> select_coordinate_type&lt;P, P1&gt;::type T;
+<a name="l00039"></a>00039
+<a name="l00040"></a>00040 T dx = get&lt;0&gt;(p2) - get&lt;0&gt;(p1);
+<a name="l00041"></a>00041 T dy = get&lt;1&gt;(p2) - get&lt;1&gt;(p1);
+<a name="l00042"></a>00042 T dpx = get&lt;0&gt;(p) - get&lt;0&gt;(p1);
+<a name="l00043"></a>00043 T dpy = get&lt;1&gt;(p) - get&lt;1&gt;(p1);
+<a name="l00044"></a>00044 T product = dx * dpy - dy * dpx;
+<a name="l00045"></a>00045 <span class="keywordflow">return</span> product &gt; 0 ? 1 : product &lt; 0 ? -1 : 0;
+<a name="l00046"></a>00046 }
+<a name="l00047"></a>00047
+<a name="l00048"></a>00048 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00049"></a>00049 <span class="keyword">inline</span> <span class="keywordtype">void</span> join_adapt(T&amp; info, <span class="keywordtype">int</span> direction)
+<a name="l00050"></a>00050 {
+<a name="l00051"></a>00051 info.first-&gt;direction = direction;
+<a name="l00052"></a>00052 info.second-&gt;direction = direction;
+<a name="l00053"></a>00053 }
+<a name="l00054"></a>00054
+<a name="l00055"></a>00055
+<a name="l00056"></a>00056
+<a name="l00057"></a>00057 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00058"></a>00058 <span class="keyword">inline</span> <span class="keywordtype">void</span> both_same(T <span class="keyword">const</span>&amp; <a class="code" href="namespaceggl_1_1math.html#54fc384779fa97a61e07149d880a599c">pi</a>, T &amp; pk, T <span class="keyword">const</span>&amp; qu, T&amp; qw, <span class="keywordtype">int</span> dir_p, <span class="keywordtype">int</span> dir_q, <span class="keywordtype">int</span> direction)
+<a name="l00059"></a>00059 {
+<a name="l00060"></a>00060 <span class="comment">// Comments are for "both Left"</span>
+<a name="l00061"></a>00061 <span class="keywordflow">if</span> (dir_q == direction) <span class="comment">// If (Qw left-of Qu)</span>
+<a name="l00062"></a>00062 {
+<a name="l00063"></a>00063 <span class="keywordflow">if</span> (dir_p == -direction) <span class="comment">// if (Pk right-of Pi)</span>
+<a name="l00064"></a>00064 {
+<a name="l00065"></a>00065 <span class="comment">// make Pk Right, Qw Left</span>
+<a name="l00066"></a>00066 join_adapt(pk, -direction);
+<a name="l00067"></a>00067 join_adapt(qw, direction);
+<a name="l00068"></a>00068 }
+<a name="l00069"></a>00069 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pk.first-&gt;direction == -direction) <span class="comment">// else if (Pk right-of Qu)</span>
+<a name="l00070"></a>00070 {
+<a name="l00071"></a>00071 <span class="comment">// make both Right</span>
+<a name="l00072"></a>00072 join_adapt(pk, -direction);
+<a name="l00073"></a>00073 join_adapt(qw, -direction);
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075 }
+<a name="l00076"></a>00076 <span class="keywordflow">else</span>
+<a name="l00077"></a>00077 {
+<a name="l00078"></a>00078 <span class="keywordflow">if</span> (dir_p == -direction <span class="comment">// if (Pk right-of Pi</span>
+<a name="l00079"></a>00079 || pk.first-&gt;direction == direction) <span class="comment">// || Pk left-of Qu)</span>
+<a name="l00080"></a>00080 {
+<a name="l00081"></a>00081 <span class="comment">// make both Left</span>
+<a name="l00082"></a>00082 join_adapt(pk, direction);
+<a name="l00083"></a>00083 join_adapt(qw, direction);
+<a name="l00084"></a>00084 }
+<a name="l00085"></a>00085 }
+<a name="l00086"></a>00086 }
+<a name="l00087"></a>00087
+<a name="l00088"></a>00088 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00089"></a>00089 <span class="keyword">inline</span> <span class="keywordtype">void</span> crossing(T <span class="keyword">const</span>&amp; pi, T &amp; pk, T <span class="keyword">const</span>&amp; qu, T&amp; qw, <span class="keywordtype">int</span> dir_p, <span class="keywordtype">int</span> dir_q, <span class="keywordtype">int</span> direction)
+<a name="l00090"></a>00090 {
+<a name="l00091"></a>00091 <span class="keywordflow">if</span> (dir_p == direction) <span class="comment">// If (Pk left-of Pi)</span>
+<a name="l00092"></a>00092 {
+<a name="l00093"></a>00093 <span class="keywordflow">if</span> (pk.first-&gt;direction == -direction) <span class="comment">// if (Pk right-of Qu)</span>
+<a name="l00094"></a>00094 {
+<a name="l00095"></a>00095 <span class="comment">// make both Right</span>
+<a name="l00096"></a>00096 join_adapt(pk, -direction);
+<a name="l00097"></a>00097 join_adapt(qw, -direction);
+<a name="l00098"></a>00098 }
+<a name="l00099"></a>00099 <span class="keywordflow">else</span>
+<a name="l00100"></a>00100 {
+<a name="l00101"></a>00101 <span class="comment">// make Pk Left, Qw Right</span>
+<a name="l00102"></a>00102 join_adapt(pk, direction);
+<a name="l00103"></a>00103 join_adapt(qw, -direction);
+<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
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00111"></a>00111 <span class="keyword">inline</span> <span class="keywordtype">void</span> collinear(T <span class="keyword">const</span>&amp; pi, T &amp; pk, T <span class="keyword">const</span>&amp; qu, T&amp; qw, <span class="keywordtype">int</span> dir_p, <span class="keywordtype">int</span> dir_q, <span class="keywordtype">int</span> direction)
+<a name="l00112"></a>00112 {
+<a name="l00113"></a>00113 <span class="keywordflow">if</span> (dir_p == direction <span class="comment">// If (Pk left-of Pi</span>
+<a name="l00114"></a>00114 &amp;&amp; dir_q == direction <span class="comment">// &amp;&amp; Qw left-of Qu</span>
+<a name="l00115"></a>00115 &amp;&amp; pk.first-&gt;direction == -direction) <span class="comment">// &amp;&amp; Pk right-of Qu</span>
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 <span class="comment">// make both Right</span>
+<a name="l00118"></a>00118 join_adapt(pk, -direction);
+<a name="l00119"></a>00119 join_adapt(qw, -direction);
+<a name="l00120"></a>00120 }
+<a name="l00121"></a>00121 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dir_p == -direction <span class="comment">// If (Pk right-of Pi</span>
+<a name="l00122"></a>00122 &amp;&amp; dir_q == -direction) <span class="comment">// &amp;&amp; Qw right-of Qu</span>
+<a name="l00123"></a>00123 {
+<a name="l00124"></a>00124 <span class="comment">// make both Left</span>
+<a name="l00125"></a>00125 join_adapt(pk, direction);
+<a name="l00126"></a>00126 join_adapt(qw, direction);
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130
+<a name="l00131"></a>00131 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> P&gt;
+<a name="l00132"></a>00132 <span class="keyword">inline</span> <span class="keywordtype">void</span> assign_pq(T <span class="keyword">const</span>&amp; info, P&amp; p, P&amp; q)
+<a name="l00133"></a>00133 {
+<a name="l00134"></a>00134 <span class="keywordflow">if</span> (info.seg_id.source_index == 0)
+<a name="l00135"></a>00135 {
+<a name="l00136"></a>00136 <span class="keywordflow">if</span> (info.arrival == 1)
+<a name="l00137"></a>00137 {
+<a name="l00138"></a>00138 p.first = info.other_point;
+<a name="l00139"></a>00139 }
+<a name="l00140"></a>00140 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (info.arrival == -1)
+<a name="l00141"></a>00141 {
+<a name="l00142"></a>00142 p.second = info.other_point;
+<a name="l00143"></a>00143 }
+<a name="l00144"></a>00144 }
+<a name="l00145"></a>00145 <span class="keywordflow">else</span>
+<a name="l00146"></a>00146 {
+<a name="l00147"></a>00147 <span class="keywordflow">if</span> (info.arrival == 1)
+<a name="l00148"></a>00148 {
+<a name="l00149"></a>00149 q.first = info.other_point;
+<a name="l00150"></a>00150 }
+<a name="l00151"></a>00151 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (info.arrival == -1)
+<a name="l00152"></a>00152 {
+<a name="l00153"></a>00153 q.second = info.other_point;
+<a name="l00154"></a>00154 }
+<a name="l00155"></a>00155 }
+<a name="l00156"></a>00156 }
+<a name="l00157"></a>00157
+<a name="l00158"></a>00158 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Info, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>&gt;
+<a name="l00159"></a>00159 <span class="keyword">inline</span> <span class="keywordtype">void</span> touch_in_the_middle(Info&amp; info, Point <span class="keyword">const</span>&amp; point)
+<a name="l00160"></a>00160 {
+<a name="l00161"></a>00161 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator&lt;Info&gt;::type iterator;
+<a name="l00162"></a>00162
+<a name="l00163"></a>00163 <span class="comment">// Determine which is Q, and assign points</span>
+<a name="l00164"></a>00164 iterator qu, qw, p;
+<a name="l00165"></a>00165 <span class="keywordtype">int</span> count = 0;
+<a name="l00166"></a>00166
+<a name="l00167"></a>00167 <span class="comment">// Find out which one is arriving/departing from the middle</span>
+<a name="l00168"></a>00168 <span class="keywordflow">for</span> (iterator it = boost::begin(info);
+<a name="l00169"></a>00169 it != boost::end(info);
+<a name="l00170"></a>00170 ++it)
+<a name="l00171"></a>00171 {
+<a name="l00172"></a>00172 <span class="comment">// One arrives AND departs in the middle of the other.</span>
+<a name="l00173"></a>00173 <span class="keywordflow">if</span>(it-&gt;how == <span class="charliteral">'m'</span> &amp;&amp; it-&gt;arrival == 1)
+<a name="l00174"></a>00174 {
+<a name="l00175"></a>00175 qu = it;
+<a name="l00176"></a>00176 count |= 1;
+<a name="l00177"></a>00177 }
+<a name="l00178"></a>00178 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(it-&gt;how == <span class="charliteral">'s'</span> &amp;&amp; it-&gt;arrival == -1)
+<a name="l00179"></a>00179 {
+<a name="l00180"></a>00180 qw = it;
+<a name="l00181"></a>00181 count |= 2;
+<a name="l00182"></a>00182 }
+<a name="l00183"></a>00183 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (it-&gt;how == <span class="charliteral">'s'</span>) <span class="comment">// or m, does not really matter</span>
+<a name="l00184"></a>00184 {
+<a name="l00185"></a>00185 p = it;
+<a name="l00186"></a>00186 count |= 4;
+<a name="l00187"></a>00187 }
+<a name="l00188"></a>00188
+<a name="l00189"></a>00189 }
+<a name="l00190"></a>00190 <span class="comment">// Adapt it</span>
+<a name="l00191"></a>00191 <span class="keywordflow">if</span> (count == 7
+<a name="l00192"></a>00192 &amp;&amp; qu-&gt;direction == qw-&gt;direction
+<a name="l00193"></a>00193 &amp;&amp; qu-&gt;seg_id.source_index == qw-&gt;seg_id.source_index)
+<a name="l00194"></a>00194 {
+<a name="l00195"></a>00195 <span class="keywordtype">int</span> dir_q = the_side(qu-&gt;other_point, point, qw-&gt;other_point);
+<a name="l00196"></a>00196
+<a name="l00197"></a>00197 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00198"></a>00198 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Both "</span>
+<a name="l00199"></a>00199 &lt;&lt; (qu-&gt;direction == 1 ? <span class="stringliteral">"Left"</span> : <span class="stringliteral">"Right"</span>)
+<a name="l00200"></a>00200 &lt;&lt; <span class="stringliteral">", Turn "</span> &lt;&lt; (dir_q == 1 ? <span class="stringliteral">"Left"</span> : dir_q == -1 ? <span class="stringliteral">"Right"</span> : <span class="stringliteral">"?"</span>)
+<a name="l00201"></a>00201 &lt;&lt; std::endl;
+<a name="l00202"></a>00202 <span class="preprocessor">#endif</span>
+<a name="l00203"></a>00203 <span class="preprocessor"></span>
+<a name="l00204"></a>00204 <span class="comment">// Let P also be starting</span>
+<a name="l00205"></a>00205 p-&gt;arrival = -1;
+<a name="l00206"></a>00206
+<a name="l00207"></a>00207 <span class="comment">// This is also symmetric. See slides:</span>
+<a name="l00208"></a>00208 <span class="comment">// Qu left-of P &amp;&amp; Qw left-of P</span>
+<a name="l00209"></a>00209 <span class="keywordflow">if</span> (qu-&gt;direction == 1 &amp;&amp; dir_q == -1)
+<a name="l00210"></a>00210 {
+<a name="l00211"></a>00211 <span class="comment">// make both Left</span>
+<a name="l00212"></a>00212 p-&gt;direction = 1;
+<a name="l00213"></a>00213 qw-&gt;direction = 1;
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215 <span class="comment">// else, symmetric version</span>
+<a name="l00216"></a>00216 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (qu-&gt;direction == -1 &amp;&amp; dir_q == 1)
+<a name="l00217"></a>00217 {
+<a name="l00218"></a>00218 p-&gt;direction = -1;
+<a name="l00219"></a>00219 qw-&gt;direction = -1;
+<a name="l00220"></a>00220 }
+<a name="l00221"></a>00221 }
+<a name="l00222"></a>00222 }
+<a name="l00223"></a>00223
+<a name="l00224"></a>00224
+<a name="l00225"></a>00225
+<a name="l00226"></a>00226
+<a name="l00227"></a>00227 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Info&gt;
+<a name="l00228"></a>00228 <span class="keyword">inline</span> <span class="keywordtype">void</span> arrive_in_the_middle(Info&amp; info)
+<a name="l00229"></a>00229 {
+<a name="l00230"></a>00230 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator&lt;Info&gt;::type iterator;
+<a name="l00231"></a>00231
+<a name="l00232"></a>00232 <span class="comment">// Find out which one is NOT arriving in the middle,</span>
+<a name="l00233"></a>00233 <span class="comment">// and the direction of the one arriving in the middle</span>
+<a name="l00234"></a>00234 <span class="keywordtype">int</span> departing = -1;
+<a name="l00235"></a>00235 <span class="keywordtype">int</span> direction = 0;
+<a name="l00236"></a>00236 <span class="keywordflow">for</span> (iterator it = boost::begin(info);
+<a name="l00237"></a>00237 it != boost::end(info);
+<a name="l00238"></a>00238 ++it)
+<a name="l00239"></a>00239 {
+<a name="l00240"></a>00240 <span class="keywordflow">if</span>(it-&gt;how == <span class="charliteral">'m'</span>)
+<a name="l00241"></a>00241 {
+<a name="l00242"></a>00242 <span class="keywordflow">switch</span>(it-&gt;arrival)
+<a name="l00243"></a>00243 {
+<a name="l00244"></a>00244 <span class="keywordflow">case</span> 1 : direction = it-&gt;direction; <span class="keywordflow">break</span>;
+<a name="l00245"></a>00245 <span class="keywordflow">default</span> : departing = it-&gt;seg_id.source_index;
+<a name="l00246"></a>00246 }
+<a name="l00247"></a>00247 }
+<a name="l00248"></a>00248 }
+<a name="l00249"></a>00249
+<a name="l00250"></a>00250 <span class="comment">// Make this the departing one, following collinear in opposite segment,</span>
+<a name="l00251"></a>00251 <span class="comment">// same direction as established above</span>
+<a name="l00252"></a>00252 <span class="keywordflow">for</span> (iterator it = boost::begin(info);
+<a name="l00253"></a>00253 it != boost::end(info);
+<a name="l00254"></a>00254 ++it)
+<a name="l00255"></a>00255 {
+<a name="l00256"></a>00256 <span class="keywordflow">if</span> (it-&gt;how == <span class="charliteral">'c'</span> &amp;&amp; it-&gt;seg_id.source_index == departing)
+<a name="l00257"></a>00257 {
+<a name="l00258"></a>00258 it-&gt;arrival = -1;
+<a name="l00259"></a>00259 it-&gt;direction = direction;
+<a name="l00260"></a>00260 }
+<a name="l00261"></a>00261 }
+<a name="l00262"></a>00262 }
+<a name="l00263"></a>00263
+<a name="l00264"></a>00264 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Info&gt;
+<a name="l00265"></a>00265 <span class="keyword">inline</span> <span class="keywordtype">void</span> start_in_the_middle(Info&amp; info, <span class="keywordtype">bool</span> opposite)
+<a name="l00266"></a>00266 {
+<a name="l00267"></a>00267 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator&lt;Info&gt;::type iterator;
+<a name="l00268"></a>00268
+<a name="l00269"></a>00269 <span class="keywordflow">for</span> (iterator it = boost::begin(info);
+<a name="l00270"></a>00270 it != boost::end(info);
+<a name="l00271"></a>00271 ++it)
+<a name="l00272"></a>00272 {
+<a name="l00273"></a>00273 <span class="keywordflow">if</span>(it-&gt;how == <span class="charliteral">'s'</span>)
+<a name="l00274"></a>00274 {
+<a name="l00275"></a>00275 <span class="keywordflow">if</span> (! opposite)
+<a name="l00276"></a>00276 {
+<a name="l00277"></a>00277 <span class="comment">// Not opposite, all "start" traversals can also be made "departing"</span>
+<a name="l00278"></a>00278 it-&gt;arrival = -1;
+<a name="l00279"></a>00279 }
+<a name="l00280"></a>00280 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (opposite &amp;&amp; it-&gt;arrival == 0)
+<a name="l00281"></a>00281 {
+<a name="l00282"></a>00282 <span class="comment">// Prevent the collinear the "start" from "departing",</span>
+<a name="l00283"></a>00283 <span class="comment">// if it is in opposite direction</span>
+<a name="l00284"></a>00284 it-&gt;arrival = 1;
+<a name="l00285"></a>00285 it-&gt;direction = 0;
+<a name="l00286"></a>00286 it-&gt;flagged = <span class="keyword">true</span>; <span class="comment">// might be deleted</span>
+<a name="l00287"></a>00287 }
+<a name="l00288"></a>00288 }
+<a name="l00289"></a>00289 }
+<a name="l00290"></a>00290 }
+<a name="l00291"></a>00291
+<a name="l00292"></a>00292
+<a name="l00293"></a>00293 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> V&gt;
+<a name="l00294"></a>00294 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceggl.html#a8f29c6cbf3f88d5926a127c76976027">adapt_turns</a>(V&amp; intersection_points)
+<a name="l00295"></a>00295 {
+<a name="l00296"></a>00296 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator&lt;V&gt;::type iterator_type;
+<a name="l00297"></a>00297 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_value&lt;V&gt;::type ip_type;
+<a name="l00298"></a>00298 <span class="keyword">typedef</span> <span class="keyword">typename</span> ip_type::traversal_type info_type;
+<a name="l00299"></a>00299
+<a name="l00300"></a>00300 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_value&lt;V&gt;::type::traversal_vector vector_type;
+<a name="l00301"></a>00301 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator&lt;vector_type&gt;::type tvit_type;
+<a name="l00302"></a>00302
+<a name="l00303"></a>00303 <span class="keywordflow">for</span> (iterator_type it = boost::begin(intersection_points);
+<a name="l00304"></a>00304 it != boost::end(intersection_points);
+<a name="l00305"></a>00305 ++it)
+<a name="l00306"></a>00306 {
+<a name="l00307"></a>00307 <span class="keywordflow">if</span> (! it-&gt;trivial)
+<a name="l00308"></a>00308 {
+<a name="l00309"></a>00309 <span class="keywordflow">if</span> (boost::size(it-&gt;info) == 4)
+<a name="l00310"></a>00310 {
+<a name="l00311"></a>00311 <span class="comment">/*</span>
+<a name="l00312"></a>00312 <span class="comment"> can be ARRIVE/START from the middle (#11)</span>
+<a name="l00313"></a>00313 <span class="comment"> src 0 seg 1 (// 1.0) how m[A R] p // qu</span>
+<a name="l00314"></a>00314 <span class="comment"> src 0 seg 1 (// 1.1) how s[D L] p // qw</span>
+<a name="l00315"></a>00315 <span class="comment"> src 1 seg 0 (// 0.1) how m[A R] qu / p</span>
+<a name="l00316"></a>00316 <span class="comment"> src 1 seg 1 (// 0.1) how s[D R] qw / p</span>
+<a name="l00317"></a>00317 <span class="comment"></span>
+<a name="l00318"></a>00318 <span class="comment"> or can be ARRIVE at COLLINEARITY (#8, #13)</span>
+<a name="l00319"></a>00319 <span class="comment"> src 0 seg 1 (// 1.1) how m[A L] p // qu</span>
+<a name="l00320"></a>00320 <span class="comment"> src 0 seg 1 (// 1.2) how c[- -] p // qw</span>
+<a name="l00321"></a>00321 <span class="comment"> src 1 seg 1 (// 0.1) how m[A L] qu // p</span>
+<a name="l00322"></a>00322 <span class="comment"> src 1 seg 2 (// 0.1) how c[- -] qw // p</span>
+<a name="l00323"></a>00323 <span class="comment"></span>
+<a name="l00324"></a>00324 <span class="comment"> or can be START from COLLINEARITY (#8, #13)</span>
+<a name="l00325"></a>00325 <span class="comment"> src 0 seg 1 (// 1.2) how c[- -] p // qu</span>
+<a name="l00326"></a>00326 <span class="comment"> src 0 seg 1 (// 1.0) how s[D R] p // qw</span>
+<a name="l00327"></a>00327 <span class="comment"> src 1 seg 2 (// 0.1) how c[- -] qu // p</span>
+<a name="l00328"></a>00328 <span class="comment"> src 1 seg 0 (// 0.1) how s[D L] qw // p</span>
+<a name="l00329"></a>00329 <span class="comment"> */</span>
+<a name="l00330"></a>00330
+<a name="l00331"></a>00331 <span class="comment">// First detect the case and if it is opposite</span>
+<a name="l00332"></a>00332 <span class="keywordtype">int</span> count_m = 0, count_s = 0, count_c = 0;
+<a name="l00333"></a>00333
+<a name="l00334"></a>00334 <span class="keywordtype">bool</span> opposite = <span class="keyword">false</span>;
+<a name="l00335"></a>00335 <span class="keywordflow">for</span> (tvit_type tvit = boost::begin(it-&gt;info);
+<a name="l00336"></a>00336 tvit != boost::end(it-&gt;info);
+<a name="l00337"></a>00337 ++tvit)
+<a name="l00338"></a>00338 {
+<a name="l00339"></a>00339 <span class="keywordflow">switch</span>(tvit-&gt;how)
+<a name="l00340"></a>00340 {
+<a name="l00341"></a>00341 <span class="keywordflow">case</span> <span class="charliteral">'m'</span> : count_m++; <span class="keywordflow">break</span>;
+<a name="l00342"></a>00342 <span class="keywordflow">case</span> <span class="charliteral">'s'</span> : count_s++; <span class="keywordflow">break</span>;
+<a name="l00343"></a>00343 <span class="keywordflow">case</span> <span class="charliteral">'c'</span> : count_c++; <span class="keywordflow">break</span>;
+<a name="l00344"></a>00344 }
+<a name="l00345"></a>00345 <span class="keywordflow">if</span> (tvit-&gt;opposite)
+<a name="l00346"></a>00346 {
+<a name="l00347"></a>00347 opposite = <span class="keyword">true</span>;
+<a name="l00348"></a>00348 }
+<a name="l00349"></a>00349 }
+<a name="l00350"></a>00350
+<a name="l00351"></a>00351
+<a name="l00352"></a>00352 <span class="keywordflow">if</span> (count_m == 2 &amp;&amp; count_s == 2)
+<a name="l00353"></a>00353 {
+<a name="l00354"></a>00354 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00355"></a>00355 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Touching the middle "</span> &lt;&lt; std::endl;
+<a name="l00356"></a>00356 <span class="preprocessor">#endif</span>
+<a name="l00357"></a>00357 <span class="preprocessor"></span>
+<a name="l00358"></a>00358 touch_in_the_middle(it-&gt;info, it-&gt;point);
+<a name="l00359"></a>00359 }
+<a name="l00360"></a>00360 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (count_m == 2 &amp;&amp; count_c == 2 &amp;&amp; opposite)
+<a name="l00361"></a>00361 {
+<a name="l00362"></a>00362 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00363"></a>00363 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Arriving the middle/collinearity, opposite"</span> &lt;&lt; std::endl;
+<a name="l00364"></a>00364 <span class="preprocessor">#endif</span>
+<a name="l00365"></a>00365 <span class="preprocessor"></span>
+<a name="l00366"></a>00366 arrive_in_the_middle(it-&gt;info);
+<a name="l00367"></a>00367 }
+<a name="l00368"></a>00368 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (count_s == 2 &amp;&amp; count_c == 2)
+<a name="l00369"></a>00369 {
+<a name="l00370"></a>00370 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00371"></a>00371 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Starting from middle/collinearity"</span>
+<a name="l00372"></a>00372 &lt;&lt; (opposite ? <span class="stringliteral">" , opposite"</span> : <span class="stringliteral">""</span>)
+<a name="l00373"></a>00373 &lt;&lt; std::endl;
+<a name="l00374"></a>00374 <span class="preprocessor">#endif</span>
+<a name="l00375"></a>00375 <span class="preprocessor"></span>
+<a name="l00376"></a>00376 start_in_the_middle(it-&gt;info, opposite);
+<a name="l00377"></a>00377 }
+<a name="l00378"></a>00378 }
+<a name="l00379"></a>00379
+<a name="l00380"></a>00380 <span class="keywordflow">if</span> (boost::size(it-&gt;info) == 8)
+<a name="l00381"></a>00381 {
+<a name="l00382"></a>00382 <span class="comment">/*</span>
+<a name="l00383"></a>00383 <span class="comment"> src 0 seg 1 (// 1.0) how t[A R] pi // qu pi.first</span>
+<a name="l00384"></a>00384 <span class="comment"> src 0 seg 1 (// 1.1) how a[A R] pi // qw pi.second</span>
+<a name="l00385"></a>00385 <span class="comment"> src 0 seg 2 (// 1.0) how a[D R] pk // qu pk.first</span>
+<a name="l00386"></a>00386 <span class="comment"> src 0 seg 2 (// 1.1) how f[D L] pk // qw pk.second</span>
+<a name="l00387"></a>00387 <span class="comment"></span>
+<a name="l00388"></a>00388 <span class="comment"> src 1 seg 0 (// 0.1) how t[A L] qu // pi</span>
+<a name="l00389"></a>00389 <span class="comment"> src 1 seg 0 (// 0.2) how a[A R] qu // pk</span>
+<a name="l00390"></a>00390 <span class="comment"> src 1 seg 1 (// 0.1) how a[D R] qw // pi</span>
+<a name="l00391"></a>00391 <span class="comment"> src 1 seg 1 (// 0.2) how f[D R] qw // pk</span>
+<a name="l00392"></a>00392 <span class="comment"> */</span>
+<a name="l00393"></a>00393
+<a name="l00394"></a>00394 std::pair&lt;tvit_type, tvit_type&gt; pi, pk, qu, qw;
+<a name="l00395"></a>00395 std::pair&lt;typename info_type::point_type, typename info_type::point_type&gt; p, q;
+<a name="l00396"></a>00396
+<a name="l00397"></a>00397
+<a name="l00398"></a>00398 <span class="comment">// Find out which is which</span>
+<a name="l00399"></a>00399 <span class="keywordflow">for</span> (tvit_type tvit = boost::begin(it-&gt;info);
+<a name="l00400"></a>00400 tvit != boost::end(it-&gt;info);
+<a name="l00401"></a>00401 ++tvit)
+<a name="l00402"></a>00402 {
+<a name="l00403"></a>00403 assign_pq(*tvit, p, q);
+<a name="l00404"></a>00404 <span class="keywordflow">if</span> (tvit-&gt;seg_id.source_index == 0)
+<a name="l00405"></a>00405 {
+<a name="l00406"></a>00406 <span class="keywordflow">if</span> (tvit-&gt;arrival == 1)
+<a name="l00407"></a>00407 {
+<a name="l00408"></a>00408 <span class="keywordflow">if</span>(tvit-&gt;how != <span class="charliteral">'a'</span>)
+<a name="l00409"></a>00409 {
+<a name="l00410"></a>00410 pi.first = tvit;
+<a name="l00411"></a>00411 }
+<a name="l00412"></a>00412 <span class="keywordflow">else</span>
+<a name="l00413"></a>00413 {
+<a name="l00414"></a>00414 pi.second = tvit;
+<a name="l00415"></a>00415 }
+<a name="l00416"></a>00416
+<a name="l00417"></a>00417 }
+<a name="l00418"></a>00418 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tvit-&gt;arrival == -1)
+<a name="l00419"></a>00419 {
+<a name="l00420"></a>00420 <span class="keywordflow">if</span> (tvit-&gt;how == <span class="charliteral">'a'</span>)
+<a name="l00421"></a>00421 {
+<a name="l00422"></a>00422 pk.first = tvit;
+<a name="l00423"></a>00423 }
+<a name="l00424"></a>00424 <span class="keywordflow">else</span>
+<a name="l00425"></a>00425 {
+<a name="l00426"></a>00426 pk.second = tvit;
+<a name="l00427"></a>00427 }
+<a name="l00428"></a>00428 }
+<a name="l00429"></a>00429 }
+<a name="l00430"></a>00430 <span class="keywordflow">else</span>
+<a name="l00431"></a>00431 {
+<a name="l00432"></a>00432 <span class="keywordflow">if</span> (tvit-&gt;arrival == 1)
+<a name="l00433"></a>00433 {
+<a name="l00434"></a>00434 <span class="keywordflow">if</span>(tvit-&gt;how != <span class="charliteral">'a'</span>)
+<a name="l00435"></a>00435 {
+<a name="l00436"></a>00436 qu.first = tvit;
+<a name="l00437"></a>00437 }
+<a name="l00438"></a>00438 <span class="keywordflow">else</span>
+<a name="l00439"></a>00439 {
+<a name="l00440"></a>00440 qu.second = tvit;
+<a name="l00441"></a>00441 }
+<a name="l00442"></a>00442 }
+<a name="l00443"></a>00443 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tvit-&gt;arrival == -1)
+<a name="l00444"></a>00444 {
+<a name="l00445"></a>00445 <span class="keywordflow">if</span> (tvit-&gt;how == <span class="charliteral">'a'</span>)
+<a name="l00446"></a>00446 {
+<a name="l00447"></a>00447 qw.first = tvit;
+<a name="l00448"></a>00448 }
+<a name="l00449"></a>00449 <span class="keywordflow">else</span>
+<a name="l00450"></a>00450 {
+<a name="l00451"></a>00451 qw.second = tvit;
+<a name="l00452"></a>00452 }
+<a name="l00453"></a>00453 }
+<a name="l00454"></a>00454 }
+<a name="l00455"></a>00455 }
+<a name="l00456"></a>00456
+<a name="l00457"></a>00457 <span class="keywordtype">int</span> dir_p = the_side(p.first, it-&gt;point, p.second);
+<a name="l00458"></a>00458 <span class="keywordtype">int</span> dir_q = the_side(q.first, it-&gt;point, q.second);
+<a name="l00459"></a>00459
+<a name="l00460"></a>00460 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00461"></a>00461 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Pi//Qu : "</span> &lt;&lt; *pi.first &lt;&lt; std::endl;
+<a name="l00462"></a>00462 std::cout &lt;&lt; <span class="stringliteral">"Pi//Qw : "</span> &lt;&lt; *pi.second &lt;&lt; std::endl;
+<a name="l00463"></a>00463 std::cout &lt;&lt; <span class="stringliteral">"Pk//Qu : "</span> &lt;&lt; *pk.first &lt;&lt; std::endl;
+<a name="l00464"></a>00464 std::cout &lt;&lt; <span class="stringliteral">"Pk//Qw : "</span> &lt;&lt; *pk.second &lt;&lt; std::endl;
+<a name="l00465"></a>00465 std::cout &lt;&lt; <span class="stringliteral">"Qu//Pi : "</span> &lt;&lt; *qu.first &lt;&lt; std::endl;
+<a name="l00466"></a>00466 std::cout &lt;&lt; <span class="stringliteral">"Qu//Pk : "</span> &lt;&lt; *qu.second &lt;&lt; std::endl;
+<a name="l00467"></a>00467 std::cout &lt;&lt; <span class="stringliteral">"Qw//Pi : "</span> &lt;&lt; *qw.first &lt;&lt; std::endl;
+<a name="l00468"></a>00468 std::cout &lt;&lt; <span class="stringliteral">"Qw//Pk : "</span> &lt;&lt; *qw.second &lt;&lt; std::endl;
+<a name="l00469"></a>00469 <span class="keywordflow">if</span> (dir_p == 1) std::cout &lt;&lt; <span class="stringliteral">"P turns left"</span> &lt;&lt; std::endl;
+<a name="l00470"></a>00470 <span class="keywordflow">if</span> (dir_p == -1) std::cout &lt;&lt; <span class="stringliteral">"P turns right"</span> &lt;&lt; std::endl;
+<a name="l00471"></a>00471 <span class="keywordflow">if</span> (dir_q == 1) std::cout &lt;&lt; <span class="stringliteral">"Q turns left"</span> &lt;&lt; std::endl;
+<a name="l00472"></a>00472 <span class="keywordflow">if</span> (dir_q == -1) std::cout &lt;&lt; <span class="stringliteral">"Q turns right"</span> &lt;&lt; std::endl;
+<a name="l00473"></a>00473 <span class="preprocessor">#endif</span>
+<a name="l00474"></a>00474 <span class="preprocessor"></span>
+<a name="l00475"></a>00475 <span class="keywordflow">if</span> (qu.first-&gt;direction == qw.first-&gt;direction)
+<a name="l00476"></a>00476 {
+<a name="l00477"></a>00477 <span class="comment">// Both Right or Both Left</span>
+<a name="l00478"></a>00478 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00479"></a>00479 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Both "</span>
+<a name="l00480"></a>00480 &lt;&lt; (qu.first-&gt;direction == 1 ? <span class="stringliteral">"Left"</span> : <span class="stringliteral">"Right"</span>)
+<a name="l00481"></a>00481 &lt;&lt; std::endl;
+<a name="l00482"></a>00482 <span class="preprocessor">#endif</span>
+<a name="l00483"></a>00483 <span class="preprocessor"></span>
+<a name="l00484"></a>00484 both_same(pi, pk, qu, qw, dir_p, dir_q, qu.first-&gt;direction);
+<a name="l00485"></a>00485 }
+<a name="l00486"></a>00486 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (qu.first-&gt;direction == -qw.first-&gt;direction)
+<a name="l00487"></a>00487 {
+<a name="l00488"></a>00488 <span class="comment">// From Left to Right, or from Right to Left</span>
+<a name="l00489"></a>00489 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00490"></a>00490 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Left to/from Right"</span> &lt;&lt; std::endl;
+<a name="l00491"></a>00491 <span class="preprocessor">#endif</span>
+<a name="l00492"></a>00492 <span class="preprocessor"></span> crossing(pi, pk, qu, qw, dir_p, dir_q, qu.first-&gt;direction);
+<a name="l00493"></a>00493 }
+<a name="l00494"></a>00494 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (qw.first-&gt;direction == 1 || qu.first-&gt;direction == 1)
+<a name="l00495"></a>00495 {
+<a name="l00496"></a>00496 <span class="comment">// Collinear left</span>
+<a name="l00497"></a>00497 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00498"></a>00498 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Collinear left"</span> &lt;&lt; std::endl;
+<a name="l00499"></a>00499 <span class="preprocessor">#endif</span>
+<a name="l00500"></a>00500 <span class="preprocessor"></span> collinear(pi, pk, qu, qw, dir_p, dir_q, 1);
+<a name="l00501"></a>00501 }
+<a name="l00502"></a>00502 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (qw.first-&gt;direction == -1 || qu.first-&gt;direction == -1)
+<a name="l00503"></a>00503 {
+<a name="l00504"></a>00504 <span class="comment">// Collinear right</span>
+<a name="l00505"></a>00505 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00506"></a>00506 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Collinear right"</span> &lt;&lt; std::endl;
+<a name="l00507"></a>00507 <span class="preprocessor">#endif</span>
+<a name="l00508"></a>00508 <span class="preprocessor"></span> collinear(pi, pk, qu, qw, dir_p, dir_q, -1);
+<a name="l00509"></a>00509 }
+<a name="l00510"></a>00510
+<a name="l00511"></a>00511
+<a name="l00512"></a>00512 <span class="keywordflow">for</span> (tvit_type tvit = boost::begin(it-&gt;info);
+<a name="l00513"></a>00513 tvit != boost::end(it-&gt;info);
+<a name="l00514"></a>00514 ++tvit)
+<a name="l00515"></a>00515 {
+<a name="l00516"></a>00516 <span class="keywordflow">if</span> (tvit-&gt;how == <span class="charliteral">'a'</span>)
+<a name="l00517"></a>00517 {
+<a name="l00518"></a>00518 tvit-&gt;direction = 0;
+<a name="l00519"></a>00519 }
+<a name="l00520"></a>00520 }
+<a name="l00521"></a>00521
+<a name="l00522"></a>00522
+<a name="l00523"></a>00523 }
+<a name="l00524"></a>00524 }
+<a name="l00525"></a>00525 }
+<a name="l00526"></a>00526
+<a name="l00527"></a>00527 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00528"></a>00528 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Adapted turns: "</span> &lt;&lt; std::endl;
+<a name="l00529"></a>00529 report_ip(intersection_points);
+<a name="l00530"></a>00530 <span class="preprocessor">#endif</span>
+<a name="l00531"></a>00531 <span class="preprocessor"></span>}
+<a name="l00532"></a>00532
+<a name="l00533"></a>00533
+<a name="l00534"></a>00534
+<a name="l00535"></a>00535 }} <span class="comment">// namespace detail::intersection</span>
+<a name="l00536"></a>00536 <span class="preprocessor">#endif //DOXYGEN_NO_DETAIL</span>
+<a name="l00537"></a>00537 <span class="preprocessor"></span>
+<a name="l00538"></a>00538
+<a name="l00539"></a>00539
+<a name="l00540"></a>00540 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> V&gt;
+<a name="l00541"></a><a class="code" href="namespaceggl.html#a8f29c6cbf3f88d5926a127c76976027">00541</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceggl.html#a8f29c6cbf3f88d5926a127c76976027">adapt_turns</a>(V&amp; intersection_points)
+<a name="l00542"></a>00542 {
+<a name="l00543"></a>00543 <span class="comment">// If there are merges, there might be merged IP's which have right turns</span>
+<a name="l00544"></a>00544 <a class="code" href="namespaceggl.html#a8f29c6cbf3f88d5926a127c76976027">detail::intersection::adapt_turns</a>(intersection_points);
+<a name="l00545"></a>00545
+<a name="l00546"></a>00546 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00547"></a>00547 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Merged (2): "</span> &lt;&lt; std::endl;
+<a name="l00548"></a>00548 report_ip(intersection_points);
+<a name="l00549"></a>00549 <span class="preprocessor">#endif</span>
+<a name="l00550"></a>00550 <span class="preprocessor"></span>
+<a name="l00551"></a>00551 }
+<a name="l00552"></a>00552
+<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>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__convex__hull_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__convex__hull_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/strategies/agnostic/agn_convex_hull.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html">ggl::strategy::convex_hull::graham&lt; P &gt;</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl_1_1strategy.html">ggl::strategy</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl_1_1strategy_1_1convex__hull.html">ggl::strategy::convex_hull</a></td></tr>
+
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__convex__hull_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__convex__hull_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,343 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/strategies/agnostic/agn_convex_hull.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_STRATEGIES_AGNOSTIC_CONVEX_HULL_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_STRATEGIES_AGNOSTIC_CONVEX_HULL_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#ifdef _MSC_VER</span>
+<a name="l00013"></a>00013 <span class="preprocessor"></span><span class="preprocessor">#pragma warning( disable : 4101 )</span>
+<a name="l00014"></a>00014 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00015"></a>00015 <span class="preprocessor"></span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;cstddef&gt;</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;algorithm&gt;</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;vector&gt;</span>
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="strategy__traits_8hpp.html">ggl/strategies/strategy_traits.hpp</a>&gt;</span>
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="comment">// TODO: Temporary, comparing tests, this can be removed in the end</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#if defined(GGL_USE_SMOOTH_SORT)</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor"># include "SmoothSort.hpp"</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#elif defined(GGL_USE_MERGE_SORT)</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor"># include "MergeSort.hpp"</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#else</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span>
+<a name="l00033"></a>00033 <span class="keyword">namespace </span>ggl
+<a name="l00034"></a>00034 {
+<a name="l00035"></a>00035
+<a name="l00036"></a><a class="code" href="namespaceggl_1_1strategy_1_1convex__hull.html">00036</a> <span class="keyword">namespace </span>strategy { <span class="keyword">namespace </span><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a> {
+<a name="l00037"></a>00037
+<a name="l00038"></a>00038 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="keyword">namespace </span>detail
+<a name="l00040"></a>00040 {
+<a name="l00041"></a>00041
+<a name="l00042"></a>00042 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> RangeIterator, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00043"></a>00043 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> get_extremes(<span class="keyword">const</span> Range&amp; range,
+<a name="l00044"></a>00044 RangeIterator&amp; min_it, RangeIterator&amp; max_it,
+<a name="l00045"></a>00045 <span class="keyword">const</span> Strategy&amp; strategy)
+<a name="l00046"></a>00046 {
+<a name="l00047"></a>00047 min_it = boost::begin(range);
+<a name="l00048"></a>00048 max_it = boost::begin(range);
+<a name="l00049"></a>00049
+<a name="l00050"></a>00050 <span class="keywordflow">for</span> (RangeIterator it = boost::begin(range) + 1; it != boost::end(range); ++it)
+<a name="l00051"></a>00051 {
+<a name="l00052"></a>00052 <span class="keywordflow">if</span> (strategy.smaller(*it, *min_it))
+<a name="l00053"></a>00053 {
+<a name="l00054"></a>00054 min_it = it;
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056
+<a name="l00057"></a>00057 <span class="keywordflow">if</span> (strategy.larger(*it, *max_it))
+<a name="l00058"></a>00058 {
+<a name="l00059"></a>00059 max_it = it;
+<a name="l00060"></a>00060 }
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062 }
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R&gt;
+<a name="l00065"></a>00065 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> sort(R&amp; range)
+<a name="l00066"></a>00066 {
+<a name="l00067"></a>00067 <span class="preprocessor"> #if defined(USE_SMOOTH_SORT)</span>
+<a name="l00068"></a>00068 <span class="preprocessor"></span> smoothsort::sort(boost::begin(range), boost::end(range));
+<a name="l00069"></a>00069 <span class="preprocessor"> #elif defined(USE_MERGE_SORT)</span>
+<a name="l00070"></a>00070 <span class="preprocessor"></span> comparing::merge_sort&lt;thread_count&gt;(boost::begin(range), boost::end(range), std::less&lt;P&gt;());
+<a name="l00071"></a>00071 <span class="preprocessor"> #else</span>
+<a name="l00072"></a>00072 <span class="preprocessor"></span> std::sort(boost::begin(range), boost::end(range));
+<a name="l00073"></a>00073 <span class="preprocessor"> #endif</span>
+<a name="l00074"></a>00074 <span class="preprocessor"></span>}
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 } <span class="comment">// namespace detail</span>
+<a name="l00077"></a>00077 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00078"></a>00078 <span class="preprocessor"></span>
+<a name="l00079"></a>00079
+<a name="l00080"></a>00080 <span class="comment">// Completely reworked version from source at:</span>
+<a name="l00081"></a>00081 <span class="comment">// http://www.ddj.com/architect/201806315>
+<a name="l00082"></a>00082 <span class="comment">// also available at
http://marknelson.us/2007/08/22/convex>
+<a name="l00083"></a>00083 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P&gt;
+<a name="l00084"></a><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html">00084</a> <span class="keyword">class </span><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html">graham</a>
+<a name="l00085"></a>00085 {
+<a name="l00086"></a>00086 <span class="keyword">private</span>:
+<a name="l00087"></a>00087
+<a name="l00088"></a>00088 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;P&gt;::type</a> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag</a>;
+<a name="l00089"></a>00089 <span class="keyword">typedef</span> <span class="keyword">typename</span> std::vector&lt;P&gt; container;
+<a name="l00090"></a>00090 <span class="keyword">typedef</span> <span class="keyword">typename</span> std::vector&lt;P&gt;::const_iterator iterator;
+<a name="l00091"></a>00091 <span class="keyword">typedef</span> <span class="keyword">typename</span> std::vector&lt;P&gt;::const_reverse_iterator rev_iterator;
+<a name="l00092"></a>00092
+<a name="l00093"></a>00093 container m_lower_hull;
+<a name="l00094"></a>00094 container m_upper_hull;
+<a name="l00095"></a>00095 container m_copied_input;
+<a name="l00096"></a>00096
+<a name="l00097"></a>00097
+<a name="l00098"></a>00098 <span class="keyword">public</span>:
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100 <span class="comment">// Default constructor, ranges can be added using "add_range" but note they'll be copied</span>
+<a name="l00101"></a><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#00ccb1a05057f89cd1d557506e9eba1d">00101</a> <span class="keyword">inline</span> <a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#00ccb1a05057f89cd1d557506e9eba1d">graham</a>()
+<a name="l00102"></a>00102 {
+<a name="l00103"></a>00103 }
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105 <span class="comment">// Constructor with a range</span>
+<a name="l00106"></a>00106 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range&gt;
+<a name="l00107"></a><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#03467845cee70dffe77e7469290d4e62">00107</a> <span class="keyword">inline</span> <a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#00ccb1a05057f89cd1d557506e9eba1d">graham</a>(<span class="keyword">const</span> Range&amp; range)
+<a name="l00108"></a>00108 {
+<a name="l00109"></a>00109 handle_range(range);
+<a name="l00110"></a>00110 }
+<a name="l00111"></a>00111
+<a name="l00112"></a>00112
+<a name="l00113"></a>00113 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00114"></a><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#23378d3d7d381ddac21b68e449fbccbc">00114</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">get</span>(OutputIterator out)
+<a name="l00115"></a>00115 {
+<a name="l00116"></a>00116 <span class="keywordflow">for</span> (iterator it = m_upper_hull.begin(); it != m_upper_hull.end(); ++it, ++out)
+<a name="l00117"></a>00117 {
+<a name="l00118"></a>00118 *out = *it;
+<a name="l00119"></a>00119 }
+<a name="l00120"></a>00120
+<a name="l00121"></a>00121 <span class="comment">// STL Port does not accept iterating from rbegin+1 to rend</span>
+<a name="l00122"></a>00122 std::size_t size = m_lower_hull.size();
+<a name="l00123"></a>00123 <span class="keywordflow">if</span> (size &gt; 0)
+<a name="l00124"></a>00124 {
+<a name="l00125"></a>00125 rev_iterator it = m_lower_hull.rbegin() + 1;
+<a name="l00126"></a>00126 <span class="keywordflow">for</span> (std::size_t i = 1; i &lt; size; ++i, ++it, ++out)
+<a name="l00127"></a>00127 {
+<a name="l00128"></a>00128 *out = *it;
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131 }
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133
+<a name="l00134"></a>00134 <span class="comment">// Note /</span>
+<a name="l00135"></a>00135 <span class="comment">// TODO:</span>
+<a name="l00136"></a>00136 <span class="comment">// Consider if it is better to create an iterator over a multi, which is then used here,</span>
+<a name="l00137"></a>00137 <span class="comment">// instead of copying the range</span>
+<a name="l00138"></a>00138 <span class="comment">// It makes it slightly more complicated but avoids the copy, which is attractive because</span>
+<a name="l00139"></a>00139 <span class="comment">// multi-polygons (where it is used for) can be large.</span>
+<a name="l00140"></a>00140 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range&gt;
+<a name="l00141"></a><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#5fdc022ecff10cfbea0d8d0f0dc4bcad">00141</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#5fdc022ecff10cfbea0d8d0f0dc4bcad">add_range</a>(<span class="keyword">const</span> Range&amp; range)
+<a name="l00142"></a>00142 {
+<a name="l00143"></a>00143 std::copy(boost::begin(range), boost::end(range), std::back_inserter(m_copied_input));
+<a name="l00144"></a>00144 }
+<a name="l00145"></a>00145
+<a name="l00146"></a><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#886de91332db9c491dd1ea63c476a1c3">00146</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#886de91332db9c491dd1ea63c476a1c3">handle_input</a>()
+<a name="l00147"></a>00147 {
+<a name="l00148"></a>00148 handle_range(m_copied_input);
+<a name="l00149"></a>00149 }
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151
+<a name="l00152"></a>00152 <span class="keyword">private</span>:
+<a name="l00153"></a>00153
+<a name="l00154"></a>00154 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range&gt;
+<a name="l00155"></a>00155 <span class="keyword">inline</span> <span class="keywordtype">void</span> handle_range(<span class="keyword">const</span> Range&amp; range)
+<a name="l00156"></a>00156 {
+<a name="l00157"></a>00157 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator&lt;Range&gt;::type range_iterator;
+<a name="l00158"></a>00158
+<a name="l00159"></a>00159 <span class="comment">// Polygons with three corners, or closed with 4 points, are always convex</span>
+<a name="l00160"></a>00160 <span class="keywordflow">if</span> (boost::size(range) &lt;= 3)
+<a name="l00161"></a>00161 {
+<a name="l00162"></a>00162 <span class="keywordflow">for</span> (range_iterator it = boost::begin(range);
+<a name="l00163"></a>00163 it != boost::end(range);
+<a name="l00164"></a>00164 ++it)
+<a name="l00165"></a>00165 {
+<a name="l00166"></a>00166 m_upper_hull.push_back(*it);
+<a name="l00167"></a>00167 }
+<a name="l00168"></a>00168 <span class="keywordflow">return</span>;
+<a name="l00169"></a>00169 }
+<a name="l00170"></a>00170
+<a name="l00171"></a>00171 <span class="comment">// Get min/max (in most cases left / right) points</span>
+<a name="l00172"></a>00172 range_iterator left_it, right_it;
+<a name="l00173"></a>00173 <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.">strategy_compare&lt;cs_tag, P, 0&gt;::type</a> comparing;
+<a name="l00174"></a>00174 detail::get_extremes(range, left_it, right_it, comparing);
+<a name="l00175"></a>00175
+<a name="l00176"></a>00176 <span class="comment">// Bounding left/right points</span>
+<a name="l00177"></a>00177 container lower_points, upper_points;
+<a name="l00178"></a>00178
+<a name="l00179"></a>00179 assign_range(range, left_it, right_it, lower_points, upper_points);
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 detail::sort(lower_points);
+<a name="l00182"></a>00182 detail::sort(upper_points);
+<a name="l00183"></a>00183
+<a name="l00184"></a>00184 build_half_hull&lt;1&gt;(lower_points, m_lower_hull, *left_it, *right_it);
+<a name="l00185"></a>00185 build_half_hull&lt;-1&gt;(upper_points, m_upper_hull, *left_it, *right_it);
+<a name="l00186"></a>00186 }
+<a name="l00187"></a>00187
+<a name="l00188"></a>00188
+<a name="l00189"></a>00189
+<a name="l00190"></a>00190 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> RangeIterator, <span class="keyword">typename</span> Range&gt;
+<a name="l00191"></a>00191 <span class="keyword">inline</span> <span class="keywordtype">void</span> assign_range(<span class="keyword">const</span> Range&amp; range,
+<a name="l00192"></a>00192 <span class="keyword">const</span> RangeIterator&amp; left_it,
+<a name="l00193"></a>00193 <span class="keyword">const</span> RangeIterator&amp; right_it,
+<a name="l00194"></a>00194 container&amp; lower_points,
+<a name="l00195"></a>00195 container&amp; upper_points)
+<a name="l00196"></a>00196 {
+<a name="l00197"></a>00197 <span class="keyword">typename</span> strategy_side&lt;cs_tag, P&gt;::type side;
+<a name="l00198"></a>00198
+<a name="l00199"></a>00199 <span class="comment">// Put points in one of the two output sequences</span>
+<a name="l00200"></a>00200 <span class="keywordflow">for</span> (RangeIterator it = boost::begin(range);
+<a name="l00201"></a>00201 it != boost::end(range);
+<a name="l00202"></a>00202 ++it)
+<a name="l00203"></a>00203 {
+<a name="l00204"></a>00204 <span class="keywordflow">if</span> (it != left_it &amp;&amp; it != right_it)
+<a name="l00205"></a>00205 {
+<a name="l00206"></a>00206 <span class="keywordtype">int</span> dir = side.side(*left_it, *right_it, *it);
+<a name="l00207"></a>00207 <span class="keywordflow">if</span> ( dir &lt; 0 )
+<a name="l00208"></a>00208 {
+<a name="l00209"></a>00209 upper_points.push_back(*it);
+<a name="l00210"></a>00210 }
+<a name="l00211"></a>00211 <span class="keywordflow">else</span>
+<a name="l00212"></a>00212 {
+<a name="l00213"></a>00213 lower_points.push_back(*it);
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215 }
+<a name="l00216"></a>00216 }
+<a name="l00217"></a>00217 }
+<a name="l00218"></a>00218
+<a name="l00219"></a>00219
+<a name="l00220"></a>00220 <span class="keyword">template</span> &lt;<span class="keywordtype">int</span> Factor&gt;
+<a name="l00221"></a>00221 <span class="keyword">inline</span> <span class="keywordtype">void</span> build_half_hull(<span class="keyword">const</span> container&amp; input, container&amp; output,
+<a name="l00222"></a>00222 <span class="keyword">const</span> P&amp; left, <span class="keyword">const</span> P&amp; right)
+<a name="l00223"></a>00223 {
+<a name="l00224"></a>00224 output.push_back(left);
+<a name="l00225"></a>00225 <span class="keywordflow">for</span>(iterator it = input.begin(); it != input.end(); ++it)
+<a name="l00226"></a>00226 {
+<a name="l00227"></a>00227 add_to_hull&lt;Factor&gt;(*it, output);
+<a name="l00228"></a>00228 }
+<a name="l00229"></a>00229 add_to_hull&lt;Factor&gt;(right, output);
+<a name="l00230"></a>00230 }
+<a name="l00231"></a>00231
+<a name="l00232"></a>00232 <span class="keyword">template</span> &lt;<span class="keywordtype">int</span> Factor&gt;
+<a name="l00233"></a>00233 <span class="keyword">inline</span> <span class="keywordtype">void</span> add_to_hull(<span class="keyword">const</span> P&amp; p, container&amp; output)
+<a name="l00234"></a>00234 {
+<a name="l00235"></a>00235 <span class="keyword">typename</span> strategy_side&lt;cs_tag, P&gt;::type side;
+<a name="l00236"></a>00236
+<a name="l00237"></a>00237 output.push_back(p);
+<a name="l00238"></a>00238 <span class="keyword">register</span> std::size_t output_size = output.size();
+<a name="l00239"></a>00239 <span class="keywordflow">while</span> (output_size &gt;= 3)
+<a name="l00240"></a>00240 {
+<a name="l00241"></a>00241 rev_iterator rit = output.rbegin();
+<a name="l00242"></a>00242 <span class="keyword">const</span> P&amp; last = *rit++;
+<a name="l00243"></a>00243 <span class="keyword">const</span> P&amp; last2 = *rit++;
+<a name="l00244"></a>00244
+<a name="l00245"></a>00245 <span class="keywordflow">if</span> (Factor * side.side(*rit, last, last2) &lt;= 0)
+<a name="l00246"></a>00246 {
+<a name="l00247"></a>00247 <span class="comment">// Remove last two points from stack, and add last again</span>
+<a name="l00248"></a>00248 <span class="comment">// This is much faster then erasing the one but last.</span>
+<a name="l00249"></a>00249 output.pop_back();
+<a name="l00250"></a>00250 output.pop_back();
+<a name="l00251"></a>00251 output.push_back(last);
+<a name="l00252"></a>00252 output_size--;
+<a name="l00253"></a>00253 }
+<a name="l00254"></a>00254 <span class="keywordflow">else</span>
+<a name="l00255"></a>00255 {
+<a name="l00256"></a>00256 <span class="keywordflow">return</span>;
+<a name="l00257"></a>00257 }
+<a name="l00258"></a>00258 }
+<a name="l00259"></a>00259 }
+<a name="l00260"></a>00260
+<a name="l00261"></a>00261
+<a name="l00262"></a>00262 };
+<a name="l00263"></a>00263
+<a name="l00264"></a>00264 }} <span class="comment">// namespace strategy::convex_hull</span>
+<a name="l00265"></a>00265
+<a name="l00266"></a>00266
+<a name="l00267"></a>00267 <span class="preprocessor">#ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS</span>
+<a name="l00268"></a>00268 <span class="preprocessor"></span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> P&gt;
+<a name="l00269"></a>00269 <span class="keyword">struct </span>strategy_convex_hull&lt;cartesian_tag, P&gt;
+<a name="l00270"></a>00270 {
+<a name="l00271"></a>00271 <span class="keyword">typedef</span> strategy::convex_hull::graham&lt;P&gt; <a class="code" href="structggl_1_1strategy__convex__hull.html#ec3cbad2b86bbd620de9d6c669863f32">type</a>;
+<a name="l00272"></a>00272 };
+<a name="l00273"></a>00273 <span class="preprocessor">#endif</span>
+<a name="l00274"></a>00274 <span class="preprocessor"></span>
+<a name="l00275"></a>00275 } <span class="comment">// namespace ggl</span>
+<a name="l00276"></a>00276
+<a name="l00277"></a>00277
+<a name="l00278"></a>00278 <span class="preprocessor">#endif // GGL_STRATEGY_AGNOSTIC_CONVEX_HULL_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;
Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__simplify_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__simplify_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,83 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/strategies/agnostic/agn_simplify.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html">ggl::strategy::simplify::douglas_peucker&lt; R, O_IT, PSDS &gt;</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Implements the <a class="el" href="namespaceggl_1_1strategy_1_1simplify.html">simplify</a> algorithm. More...<br></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl_1_1strategy.html">ggl::strategy</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl_1_1strategy_1_1simplify.html">ggl::strategy::simplify</a></td></tr>
+
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__simplify_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__simplify_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,236 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/strategies/agnostic/agn_simplify.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_SIMPLIFY_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_STRATEGY_AGNOSTIC_SIMPLIFY_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<a name="l00013"></a>00013
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="comment">//#define GL_DEBUG_SIMPLIFY</span>
+<a name="l00018"></a>00018
+<a name="l00019"></a>00019 <span class="preprocessor">#ifdef GL_DEBUG_SIMPLIFY</span>
+<a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#include &lt;ggl/extensions/gis/io/wkt/write_wkt.hpp&gt;</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;ggl/extensions/gis/io/wkt/stream_wkt.hpp&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;iostream&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#endif</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="keyword">namespace </span>ggl
+<a name="l00027"></a>00027 {
+<a name="l00028"></a>00028 <span class="keyword">namespace </span>strategy
+<a name="l00029"></a>00029 {
+<a name="l00030"></a><a class="code" href="namespaceggl_1_1strategy_1_1simplify.html">00030</a> <span class="keyword">namespace </span><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>
+<a name="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
+<a name="l00034"></a>00034 {
+<a name="l00035"></a>00035
+<a name="l00044"></a>00044 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P&gt;
+<a name="l00045"></a>00045 <span class="keyword">struct </span>douglas_peucker_point
+<a name="l00046"></a>00046 {
+<a name="l00047"></a>00047 <span class="keyword">const</span> P&amp; p;
+<a name="l00048"></a>00048 <span class="keywordtype">bool</span> included;
+<a name="l00049"></a>00049
+<a name="l00050"></a>00050 <span class="keyword">inline</span> douglas_peucker_point(<span class="keyword">const</span> P&amp; ap)
+<a name="l00051"></a>00051 : p(ap)
+<a name="l00052"></a>00052 , included(<span class="keyword">false</span>)
+<a name="l00053"></a>00053 {}
+<a name="l00054"></a>00054
+<a name="l00055"></a>00055 <span class="keyword">inline</span> douglas_peucker_point&lt;P&gt; operator=(<span class="keyword">const</span> douglas_peucker_point&lt;P&gt;&amp; other)
+<a name="l00056"></a>00056 {
+<a name="l00057"></a>00057 <span class="keywordflow">return</span> douglas_peucker_point&lt;P&gt;(*this);
+<a name="l00058"></a>00058 }
+<a name="l00059"></a>00059 };
+<a name="l00060"></a>00060 }
+<a name="l00061"></a>00061 <span class="preprocessor"> #endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00062"></a>00062 <span class="preprocessor"></span>
+<a name="l00063"></a>00063
+<a name="l00078"></a>00078 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> O_IT, <span class="keyword">typename</span> PSDS&gt;
+<a name="l00079"></a><a class="code" href="classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html">00079</a> <span class="keyword">class </span><a class="code" href="classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html" title="Implements the simplify algorithm.">douglas_peucker</a>
+<a name="l00080"></a>00080 {
+<a name="l00081"></a>00081 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;R&gt;::type</a> P;
+<a name="l00082"></a>00082 <span class="keyword">typedef</span> detail::douglas_peucker_point&lt;P&gt; DP;
+<a name="l00083"></a>00083 <span class="keyword">typedef</span> <span class="keyword">typename</span> std::vector&lt;DP&gt;::iterator DIT;
+<a name="l00084"></a>00084
+<a name="l00085"></a>00085 <span class="keyword">typedef</span> <span class="keyword">typename</span> PSDS::return_type RET;
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 <span class="keyword">inline</span> <span class="keywordtype">void</span> consider(DIT begin, DIT end, <span class="keyword">const</span> RET&amp; max_dist, <span class="keywordtype">int</span>&amp; n,
+<a name="l00088"></a>00088 <span class="keyword">const</span> PSDS&amp; ps_distance_strategy)<span class="keyword"> const</span>
+<a name="l00089"></a>00089 <span class="keyword"> </span>{
+<a name="l00090"></a>00090 <span class="keywordtype">size_t</span> size = end - begin;
+<a name="l00091"></a>00091 <span class="comment">// size must be at least 3 here: we want to consider a candidate point between begin and end</span>
+<a name="l00092"></a>00092 <span class="keywordflow">if</span> (size &lt;= 2)
+<a name="l00093"></a>00093 {
+<a name="l00094"></a>00094 <span class="preprocessor">#ifdef GL_DEBUG_SIMPLIFY</span>
+<a name="l00095"></a>00095 <span class="preprocessor"></span> <span class="keywordflow">if</span> (begin != end)
+<a name="l00096"></a>00096 {
+<a name="l00097"></a>00097 std::cout &lt;&lt; <span class="stringliteral">"ignore between "</span> &lt;&lt; begin-&gt;p &lt;&lt; <span class="stringliteral">" and "</span> &lt;&lt; (end - 1)-&gt;p &lt;&lt; <span class="stringliteral">" size="</span> &lt;&lt; size &lt;&lt; std::endl;
+<a name="l00098"></a>00098 }
+<a name="l00099"></a>00099 std::cout &lt;&lt; <span class="stringliteral">"return because size="</span> &lt;&lt; size &lt;&lt; std::endl;
+<a name="l00100"></a>00100 <span class="preprocessor">#endif</span>
+<a name="l00101"></a>00101 <span class="preprocessor"></span> <span class="keywordflow">return</span>;
+<a name="l00102"></a>00102 }
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104 DIT last = end - 1;
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 <span class="preprocessor">#ifdef GL_DEBUG_SIMPLIFY</span>
+<a name="l00107"></a>00107 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"find between "</span> &lt;&lt; begin-&gt;p &lt;&lt; <span class="stringliteral">" and "</span> &lt;&lt; last-&gt;p &lt;&lt; <span class="stringliteral">" size="</span> &lt;&lt; size &lt;&lt; std::endl;
+<a name="l00108"></a>00108 <span class="preprocessor">#endif</span>
+<a name="l00109"></a>00109 <span class="preprocessor"></span>
+<a name="l00110"></a>00110
+<a name="l00111"></a>00111 <span class="comment">// Find most distance point, compare to the current segment</span>
+<a name="l00112"></a>00112 <a class="code" href="structggl_1_1segment.html" title="Class segment: small containing two (templatized) point references.">ggl::segment&lt;const P&gt;</a> s(begin-&gt;p, last-&gt;p);
+<a name="l00113"></a>00113 RET md(-1.0); <span class="comment">// any value &lt; 0</span>
+<a name="l00114"></a>00114 DIT candidate;
+<a name="l00115"></a>00115 <span class="keywordflow">for</span>(DIT it = begin + 1; it != last; it++)
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 RET dist = ps_distance_strategy(it-&gt;p, s);
+<a name="l00118"></a>00118
+<a name="l00119"></a>00119 <span class="preprocessor">#ifdef GL_DEBUG_SIMPLIFY</span>
+<a name="l00120"></a>00120 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"consider "</span> &lt;&lt; it-&gt;p &lt;&lt; <span class="stringliteral">" at "</span> &lt;&lt; dist.value() &lt;&lt; (dist.value() &gt; max_dist.value() ? <span class="stringliteral">" maybe"</span> : <span class="stringliteral">" no"</span>) &lt;&lt; std::endl;
+<a name="l00121"></a>00121 <span class="preprocessor">#endif</span>
+<a name="l00122"></a>00122 <span class="preprocessor"></span> <span class="keywordflow">if</span> (dist &gt; md)
+<a name="l00123"></a>00123 {
+<a name="l00124"></a>00124 md = dist;
+<a name="l00125"></a>00125 candidate = it;
+<a name="l00126"></a>00126 }
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128
+<a name="l00129"></a>00129 <span class="comment">// If a point is found, set the include flag and handle segments in between recursively</span>
+<a name="l00130"></a>00130 <span class="keywordflow">if</span> (md &gt; max_dist)
+<a name="l00131"></a>00131 {
+<a name="l00132"></a>00132 <span class="preprocessor">#ifdef GL_DEBUG_SIMPLIFY</span>
+<a name="l00133"></a>00133 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"use "</span> &lt;&lt; candidate-&gt;p &lt;&lt; std::endl;
+<a name="l00134"></a>00134 <span class="preprocessor">#endif</span>
+<a name="l00135"></a>00135 <span class="preprocessor"></span>
+<a name="l00136"></a>00136 candidate-&gt;included = <span class="keyword">true</span>;
+<a name="l00137"></a>00137 n++;
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139 consider(begin, candidate + 1, max_dist, n, ps_distance_strategy);
+<a name="l00140"></a>00140 consider(candidate, end, max_dist, n, ps_distance_strategy);
+<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 <span class="keyword">public</span> :
+<a name="l00146"></a>00146
+<a name="l00147"></a><a class="code" href="classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html#8baa11b24fd260345ee451512c710350">00147</a> <span class="keyword">typedef</span> PSDS <a class="code" href="classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html#8baa11b24fd260345ee451512c710350">distance_strategy_type</a>;
+<a name="l00148"></a>00148
+<a name="l00152"></a><a class="code" href="classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html#dca55aa87f6d5b49df52585fa0f97add">00152</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html#dca55aa87f6d5b49df52585fa0f97add" title="Call simplification on an iterator pair.">simplify</a>(<span class="keyword">const</span> R&amp; range, O_IT out, <span class="keywordtype">double</span> max_distance)<span class="keyword"> const</span>
+<a name="l00153"></a>00153 <span class="keyword"> </span>{
+<a name="l00154"></a>00154 PSDS strategy;
+<a name="l00155"></a>00155 <span class="comment">// Init the output, a vector of references to all points</span>
+<a name="l00156"></a>00156
+<a name="l00157"></a>00157 <span class="comment">// Note Geometry Algorithms suggest here</span>
+<a name="l00158"></a>00158 <span class="comment">// http://geometryalgorithms.com/Archive/algorithm_0205/algorithm_0205.htm>
+<a name="l00159"></a>00159 <span class="comment">// to "STAGE 1: Vertex Reduction within max_distance of prior vertex cluster"</span>
+<a name="l00160"></a>00160 <span class="comment">// However, that is not correct: a vertex within the specified distance might be</span>
+<a name="l00161"></a>00161 <span class="comment">// excluded here, but might be a better candidate for final inclusion than the point before.</span>
+<a name="l00162"></a>00162
+<a name="l00163"></a>00163 std::vector&lt;DP&gt; ref_candidates(boost::begin(range), boost::end(range));
+<a name="l00164"></a>00164
+<a name="l00165"></a>00165 <span class="comment">// Include first and last point of line, they are always part of the line</span>
+<a name="l00166"></a>00166 <span class="keywordtype">int</span> n = 2;
+<a name="l00167"></a>00167 ref_candidates.front().included = <span class="keyword">true</span>;
+<a name="l00168"></a>00168 ref_candidates.back().included = <span class="keyword">true</span>;
+<a name="l00169"></a>00169
+<a name="l00170"></a>00170 <span class="comment">// Get points, recursively, including them if they are further away than the specified distance</span>
+<a name="l00171"></a>00171 <span class="keyword">typedef</span> <span class="keyword">typename</span> PSDS::return_type RET;
+<a name="l00172"></a>00172
+<a name="l00173"></a>00173 consider(boost::begin(ref_candidates), boost::end(ref_candidates),
+<a name="l00174"></a>00174 make_distance_result&lt;RET&gt;(max_distance), n, strategy);
+<a name="l00175"></a>00175
+<a name="l00176"></a>00176 <span class="comment">// Copy included elements to the output (might be changed using copy_if)</span>
+<a name="l00177"></a>00177 <span class="keywordflow">for</span>(<span class="keyword">typename</span> std::vector&lt;DP&gt;::const_iterator it = boost::begin(ref_candidates);
+<a name="l00178"></a>00178 it != boost::end(ref_candidates); it++)
+<a name="l00179"></a>00179 {
+<a name="l00180"></a>00180 <span class="keywordflow">if</span> (it-&gt;included)
+<a name="l00181"></a>00181 {
+<a name="l00182"></a>00182 *out = it-&gt;p;
+<a name="l00183"></a>00183 out++;
+<a name="l00184"></a>00184 }
+<a name="l00185"></a>00185 }
+<a name="l00186"></a>00186 }
+<a name="l00187"></a>00187
+<a name="l00188"></a>00188 };
+<a name="l00189"></a>00189
+<a name="l00190"></a>00190 }
+<a name="l00191"></a>00191 }
+<a name="l00192"></a>00192
+<a name="l00193"></a>00193
+<a name="l00194"></a>00194 } <span class="comment">// namespace ggl</span>
+<a name="l00195"></a>00195
+<a name="l00196"></a>00196 <span class="preprocessor">#endif // GGL_STRATEGY_AGNOSTIC_SIMPLIFY_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;
Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__within_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__within_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/strategies/agnostic/agn_within.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1strategy_1_1within_1_1winding.html">ggl::strategy::within::winding&lt; P, PS &gt;</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Within detection using <a class="el" href="classggl_1_1strategy_1_1within_1_1winding.html" title="Within detection using winding rule.">winding</a> rule. More...<br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><b>ggl::strategy::within::winding&lt; P, PS &gt;::windings</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl_1_1strategy.html">ggl::strategy</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl_1_1strategy_1_1within.html">ggl::strategy::within</a></td></tr>
+
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__within_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__within_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,216 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/strategies/agnostic/agn_within.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_STRATEGY_AGNOSTIC_WITHIN_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_STRATEGY_AGNOSTIC_WITHIN_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012
+<a name="l00013"></a>00013
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>&gt;</span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;<a class="code" href="strategy__traits_8hpp.html">ggl/strategies/strategy_traits.hpp</a>&gt;</span>
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020 <span class="keyword">namespace </span>ggl
+<a name="l00021"></a>00021 {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>strategy
+<a name="l00023"></a>00023 {
+<a name="l00024"></a><a class="code" href="namespaceggl_1_1strategy_1_1within.html">00024</a> <span class="keyword">namespace </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>
+<a name="l00025"></a>00025 {
+<a name="l00026"></a>00026
+<a name="l00037"></a>00037 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> PS = P&gt;
+<a name="l00038"></a><a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html">00038</a> <span class="keyword">class </span><a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html" title="Within detection using winding rule.">winding</a>
+<a name="l00039"></a>00039 {
+<a name="l00040"></a>00040 <span class="keyword">private</span> :
+<a name="l00041"></a>00041 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type&lt;P&gt;::type</a> PT;
+<a name="l00042"></a>00042 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type&lt;PS&gt;::type</a> ST;
+<a name="l00043"></a>00043
+<a name="l00045"></a>00045 <span class="keyword">struct </span>windings
+<a name="l00046"></a>00046 {
+<a name="l00047"></a>00047 <span class="keywordtype">int</span> count;
+<a name="l00048"></a>00048 <span class="keywordtype">bool</span> touches;
+<a name="l00049"></a>00049 <span class="keyword">const</span> P&amp; p;
+<a name="l00050"></a>00050 <span class="keyword">inline</span> <span class="keyword">explicit</span> windings(<span class="keyword">const</span> P&amp; ap)
+<a name="l00051"></a>00051 : count(0)
+<a name="l00052"></a>00052 , touches(<span class="keyword">false</span>)
+<a name="l00053"></a>00053 , p(ap)
+<a name="l00054"></a>00054 {}
+<a name="l00055"></a>00055 <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>()<span class="keyword"> const</span>
+<a name="l00056"></a>00056 <span class="keyword"> </span>{
+<a name="l00057"></a>00057 <span class="keywordflow">return</span> ! touches &amp;&amp; count != 0;
+<a name="l00058"></a>00058 }
+<a name="l00059"></a>00059 };
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061 <span class="keyword">template</span> &lt;<span class="keywordtype">size_t</span> D&gt;
+<a name="l00062"></a>00062 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> check_touch(<span class="keyword">const</span> <a class="code" href="structggl_1_1segment.html" title="Class segment: small containing two (templatized) point references.">segment&lt;const PS&gt;</a>&amp; s, windings&amp; state)
+<a name="l00063"></a>00063 {
+<a name="l00064"></a>00064 <span class="keyword">const</span> PT&amp; p = get&lt;D&gt;(state.p);
+<a name="l00065"></a>00065 <span class="keyword">const</span> ST&amp; s1 = get&lt;0, D&gt;(s);
+<a name="l00066"></a>00066 <span class="keyword">const</span> ST&amp; s2 = get&lt;1, D&gt;(s);
+<a name="l00067"></a>00067 <span class="keywordflow">if</span> ((s1 &lt;= p &amp;&amp; s2 &gt;= p) || (s2 &lt;= p &amp;&amp; s1 &gt;= p))
+<a name="l00068"></a>00068 {
+<a name="l00069"></a>00069 state.touches = <span class="keyword">true</span>;
+<a name="l00070"></a>00070 }
+<a name="l00071"></a>00071 <span class="keywordflow">return</span> 0;
+<a name="l00072"></a>00072 }
+<a name="l00073"></a>00073
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 <span class="keyword">template</span> &lt;<span class="keywordtype">size_t</span> D&gt;
+<a name="l00076"></a>00076 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> check_segment(<span class="keyword">const</span> <a class="code" href="structggl_1_1segment.html" title="Class segment: small containing two (templatized) point references.">segment&lt;const PS&gt;</a>&amp; s, windings&amp; state)
+<a name="l00077"></a>00077 {
+<a name="l00078"></a>00078 <span class="keyword">const</span> PT&amp; p = get&lt;D&gt;(state.p);
+<a name="l00079"></a>00079 <span class="keyword">const</span> ST&amp; s1 = get&lt;0, D&gt;(s);
+<a name="l00080"></a>00080 <span class="keyword">const</span> ST&amp; s2 = get&lt;1, D&gt;(s);
+<a name="l00081"></a>00081
+<a name="l00082"></a>00082 <span class="comment">// Check if one of segment endpoints is at same level of point</span>
+<a name="l00083"></a>00083 <span class="keywordtype">bool</span> eq1 = <a class="code" href="group__boolean__relations.html#g122b1fd835cee0742da7c97dfdda94c5" title="Calculate if two geometries are equals.">math::equals</a>(s1, p);
+<a name="l00084"></a>00084 <span class="keywordtype">bool</span> eq2 = <a class="code" href="group__boolean__relations.html#g122b1fd835cee0742da7c97dfdda94c5" title="Calculate if two geometries are equals.">math::equals</a>(s2, p);
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 <span class="keywordflow">if</span> (eq1 &amp;&amp; eq2)
+<a name="l00087"></a>00087 {
+<a name="l00088"></a>00088 <span class="comment">// Both equal p -&gt; segment is horizontal (or vertical for D=0)</span>
+<a name="l00089"></a>00089 <span class="comment">// The only thing which has to be done is check if point is ON segment</span>
+<a name="l00090"></a>00090 <span class="keywordflow">return</span> check_touch&lt;1 - D&gt;(s, state);
+<a name="l00091"></a>00091 }
+<a name="l00092"></a>00092
+<a name="l00093"></a>00093 <span class="keywordflow">return</span>
+<a name="l00094"></a>00094 eq1 ? (s2 &gt; p ? 1 : -1) <span class="comment">// P on level s1, UP/DOWN depending on s2</span>
+<a name="l00095"></a>00095 : eq2 ? (s1 &gt; p ? -1 : 1) <span class="comment">// idem</span>
+<a name="l00096"></a>00096 : s1 &lt; p &amp;&amp; s2 &gt; p ? 2 <span class="comment">// P between s1 -&gt; s2 --&gt; UP</span>
+<a name="l00097"></a>00097 : s2 &lt; p &amp;&amp; s1 &gt; p ? -2 <span class="comment">// P between s2 -&gt; s1 --&gt; DOWN</span>
+<a name="l00098"></a>00098 : 0;
+<a name="l00099"></a>00099 }
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 <span class="keyword">public</span> :
+<a name="l00103"></a>00103
+<a name="l00104"></a><a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html#aa5dc8bd530eed3ac8420ccccd2c8e65">00104</a> <span class="keyword">typedef</span> windings <a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html#aa5dc8bd530eed3ac8420ccccd2c8e65">state_type</a>;
+<a name="l00105"></a>00105
+<a name="l00106"></a><a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html#8ce0e3219bdded9943af7bc594a7f1be">00106</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html#8ce0e3219bdded9943af7bc594a7f1be">operator()</a>(<span class="keyword">const</span> <a class="code" href="structggl_1_1segment.html" title="Class segment: small containing two (templatized) point references.">segment&lt;const PS&gt;</a>&amp; s, <a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html#aa5dc8bd530eed3ac8420ccccd2c8e65">state_type</a>&amp; state)<span class="keyword"> const</span>
+<a name="l00107"></a>00107 <span class="keyword"> </span>{
+<a name="l00108"></a>00108 <span class="keywordtype">int</span> cnt = check_segment&lt;1&gt;(s, state);
+<a name="l00109"></a>00109 <span class="keywordflow">if</span> (cnt != 0)
+<a name="l00110"></a>00110 {
+<a name="l00111"></a>00111 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__side.html" title="Traits class binding a side determination strategy to a coordinate system.">strategy_side&lt;typename cs_tag&lt;P&gt;::type</a>, P, PS&gt;::type SS;
+<a name="l00112"></a>00112
+<a name="l00113"></a>00113 <span class="keyword">typename</span> <a class="code" href="structggl_1_1select__coordinate__type.html" title="Utility selecting the most precise coordinate type of two geometries.">select_coordinate_type&lt;P, PS&gt;::type</a> side = SS::side(s, state.p);
+<a name="l00114"></a>00114
+<a name="l00115"></a>00115 <span class="keywordflow">if</span> (<a class="code" href="namespaceggl_1_1math.html#d90ba94c2d65876e9485b2bbd10def34" title="returns true if both arguments are equal.">math::equals</a>(side, 0))
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 <span class="comment">// Point is lying on segment</span>
+<a name="l00118"></a>00118 state.touches = <span class="keyword">true</span>;
+<a name="l00119"></a>00119 state.count = 0;
+<a name="l00120"></a>00120 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00121"></a>00121 }
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123 <span class="comment">// Side is NEG for right, POS for left.</span>
+<a name="l00124"></a>00124 <span class="comment">// CNT is -2 for down, 2 for up (or -1/1)</span>
+<a name="l00125"></a>00125 <span class="comment">// Side positive thus means UP and LEFTSIDE or DOWN and RIGHTSIDE</span>
+<a name="l00126"></a>00126 <span class="comment">// See accompagnying figure (TODO)</span>
+<a name="l00127"></a>00127 <span class="keywordtype">int</span> sd = (side &gt; 0 ? 1 : -1) * cnt;
+<a name="l00128"></a>00128 <span class="keywordflow">if</span> (sd &gt; 0)
+<a name="l00129"></a>00129 {
+<a name="l00130"></a>00130 state.count += cnt;
+<a name="l00131"></a>00131 }
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133 }
+<a name="l00134"></a>00134 <span class="keywordflow">return</span> ! state.touches;
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136
+<a name="l00137"></a>00137 };
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139 } <span class="comment">// namespace within</span>
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141 } <span class="comment">// namespace strategy</span>
+<a name="l00142"></a>00142
+<a name="l00143"></a>00143
+<a name="l00144"></a>00144 <span class="preprocessor">#ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS</span>
+<a name="l00145"></a>00145 <span class="preprocessor"></span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> PS&gt;
+<a name="l00146"></a>00146 <span class="keyword">struct </span>strategy_within&lt;cartesian_tag, cartesian_tag, P, PS&gt;
+<a name="l00147"></a>00147 {
+<a name="l00148"></a>00148 <span class="keyword">typedef</span> strategy::within::winding&lt;P, PS&gt; <a class="code" href="structggl_1_1strategy__within.html#91c77dd02ec4c0826d7b4debc7aa6599">type</a>;
+<a name="l00149"></a>00149 };
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> PS&gt;
+<a name="l00152"></a>00152 <span class="keyword">struct </span>strategy_within&lt;geographic_tag, geographic_tag, P, PS&gt;
+<a name="l00153"></a>00153 {
+<a name="l00154"></a>00154 <span class="keyword">typedef</span> strategy::within::winding&lt;P, PS&gt; <a class="code" href="structggl_1_1strategy__within.html#91c77dd02ec4c0826d7b4debc7aa6599">type</a>;
+<a name="l00155"></a>00155 };
+<a name="l00156"></a>00156 <span class="preprocessor">#endif</span>
+<a name="l00157"></a>00157 <span class="preprocessor"></span>
+<a name="l00158"></a>00158
+<a name="l00159"></a>00159 } <span class="comment">// namespace ggl</span>
+<a name="l00160"></a>00160
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 <span class="preprocessor">#endif // GGL_STRATEGY_AGNOSTIC_WITHIN_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/area.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">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1area__result.html">ggl::area_result&lt; Geometry &gt;</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , typename Strategy &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Strategy::return_type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__area.html#g7e0783c73b5f561707c50b445a01b833">ggl::area</a> (Geometry const &amp;geometry, Strategy const &amp;strategy)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate area of a geometry using a <a class="el" href="namespaceggl_1_1strategy.html">strategy</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">area_result&lt; Geometry &gt;<br class="typebreak">
+::return_type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3">ggl::area</a> (Geometry const &amp;geometry)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate area of a geometry. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,275 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/area.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_ALGORITHMS_AREA_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_AREA_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;boost/concept/requires.hpp&gt;</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;<a class="code" href="calculate__null_8hpp.html">ggl/algorithms/detail/calculate_null.hpp</a>&gt;</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>&gt;</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="nsphere__concept_8hpp.html">ggl/core/concepts/nsphere_concept.hpp</a>&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="loop_8hpp.html">ggl/util/loop.hpp</a>&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="math_8hpp.html">ggl/util/math.hpp</a>&gt;</span>
+<a name="l00025"></a>00025
+<a name="l00048"></a>00048 <span class="keyword">namespace </span>ggl
+<a name="l00049"></a>00049 {
+<a name="l00050"></a>00050
+<a name="l00051"></a>00051 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00052"></a>00052 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a> {
+<a name="l00053"></a>00053
+<a name="l00054"></a>00054 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> S&gt;
+<a name="l00055"></a>00055 <span class="keyword">struct </span>box_area
+<a name="l00056"></a>00056 {
+<a name="l00057"></a>00057 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html#b723a443a97f7c4ed7c47ac96d7e29ee">coordinate_type&lt;B&gt;::type</a> return_type;
+<a name="l00058"></a>00058
+<a name="l00059"></a>00059 <span class="keyword">static</span> <span class="keyword">inline</span> return_type apply(B <span class="keyword">const</span>&amp; b, S <span class="keyword">const</span>&amp;)
+<a name="l00060"></a>00060 {
+<a name="l00061"></a>00061 <span class="comment">// Currently only works for Cartesian boxes</span>
+<a name="l00062"></a>00062 <span class="comment">// Todo: use strategy</span>
+<a name="l00063"></a>00063 <span class="comment">// Todo: use concept</span>
+<a name="l00064"></a>00064 assert_dimension&lt;B, 2&gt;();
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066 return_type <span class="keyword">const</span> dx = get&lt;max_corner, 0&gt;(b) - get&lt;min_corner, 0&gt;(b);
+<a name="l00067"></a>00067 return_type <span class="keyword">const</span> dy = get&lt;max_corner, 1&gt;(b) - get&lt;min_corner, 1&gt;(b);
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 <span class="keywordflow">return</span> dx * dy;
+<a name="l00070"></a>00070 }
+<a name="l00071"></a>00071 };
+<a name="l00072"></a>00072
+<a name="l00073"></a>00073
+<a name="l00074"></a>00074 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> C, <span class="keyword">typename</span> S&gt;
+<a name="l00075"></a>00075 <span class="keyword">struct </span>circle_area
+<a name="l00076"></a>00076 {
+<a name="l00077"></a>00077 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;C&gt;::type coordinate_type;
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 <span class="comment">// Returning the coordinate precision, but if integer, returning a double</span>
+<a name="l00080"></a>00080 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_c
+<a name="l00081"></a>00081 &lt;
+<a name="l00082"></a>00082 boost::is_integral&lt;coordinate_type&gt;::type::value,
+<a name="l00083"></a>00083 double,
+<a name="l00084"></a>00084 coordinate_type
+<a name="l00085"></a>00085 &gt;::type return_type;
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 <span class="keyword">static</span> <span class="keyword">inline</span> return_type apply(C <span class="keyword">const</span>&amp; c, S <span class="keyword">const</span>&amp;)
+<a name="l00088"></a>00088 {
+<a name="l00089"></a>00089 <span class="comment">// Currently only works for Cartesian circles</span>
+<a name="l00090"></a>00090 <span class="comment">// Todo: use strategy</span>
+<a name="l00091"></a>00091 <span class="comment">// Todo: use concept</span>
+<a name="l00092"></a>00092 assert_dimension&lt;C, 2&gt;();
+<a name="l00093"></a>00093
+<a name="l00094"></a>00094 return_type r = get_radius&lt;0&gt;(c);
+<a name="l00095"></a>00095 r *= r * <a class="code" href="namespaceggl_1_1math.html#54fc384779fa97a61e07149d880a599c">ggl::math::pi</a>;
+<a name="l00096"></a>00096 <span class="keywordflow">return</span> r;
+<a name="l00097"></a>00097 }
+<a name="l00098"></a>00098 };
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <span class="comment">// Area of a linear linear_ring, assuming a closed linear_ring</span>
+<a name="l00102"></a>00102 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> S&gt;
+<a name="l00103"></a>00103 <span class="keyword">struct </span>ring_area
+<a name="l00104"></a>00104 {
+<a name="l00105"></a>00105 <span class="keyword">typedef</span> <span class="keyword">typename</span> S::return_type type;
+<a name="l00106"></a>00106 <span class="keyword">static</span> <span class="keyword">inline</span> type apply(R <span class="keyword">const</span>&amp; ring, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00107"></a>00107 {
+<a name="l00108"></a>00108 assert_dimension&lt;R, 2&gt;();
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110 <span class="comment">// A closed linear_ring has at least four points, if not there is no area</span>
+<a name="l00111"></a>00111 <span class="keywordflow">if</span> (boost::size(ring) &gt;= 4)
+<a name="l00112"></a>00112 {
+<a name="l00113"></a>00113 <span class="keyword">typename</span> S::state_type state_type;
+<a name="l00114"></a>00114 <span class="keywordflow">if</span> (<a class="code" href="group__loop.html#g1ff95a74f261e15dfa714146bdcbf23f" title="Loops through segments of a container and call specified functor for all segments...">loop</a>(ring, strategy, state_type))
+<a name="l00115"></a>00115 {
+<a name="l00116"></a>00116 <span class="keywordflow">return</span> state_type.area();
+<a name="l00117"></a>00117 }
+<a name="l00118"></a>00118 }
+<a name="l00119"></a>00119
+<a name="l00120"></a>00120 <span class="keywordflow">return</span> type();
+<a name="l00121"></a>00121 }
+<a name="l00122"></a>00122 };
+<a name="l00123"></a>00123
+<a name="l00124"></a>00124 <span class="comment">// Area of a polygon, either clockwise or anticlockwise</span>
+<a name="l00125"></a>00125 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00126"></a>00126 <span class="keyword">class </span>polygon_area
+<a name="l00127"></a>00127 {
+<a name="l00128"></a>00128 <span class="keyword">typedef</span> <span class="keyword">typename</span> Strategy::return_type type;
+<a name="l00129"></a>00129 <span class="keyword">static</span> <span class="keyword">inline</span> type call_abs(type <span class="keyword">const</span>&amp; v)
+<a name="l00130"></a>00130 {
+<a name="l00131"></a>00131 <span class="preprocessor">#if defined(NUMERIC_ADAPTOR_INCLUDED)</span>
+<a name="l00132"></a>00132 <span class="preprocessor"></span> <span class="keywordflow">return</span> boost::abs(v);
+<a name="l00133"></a>00133 <span class="preprocessor">#else</span>
+<a name="l00134"></a>00134 <span class="preprocessor"></span> <span class="keywordflow">return</span> std::abs(v);
+<a name="l00135"></a>00135 <span class="preprocessor">#endif</span>
+<a name="l00136"></a>00136 <span class="preprocessor"></span> }
+<a name="l00137"></a>00137
+<a name="l00138"></a>00138 <span class="keyword">public</span>:
+<a name="l00139"></a>00139 <span class="keyword">static</span> <span class="keyword">inline</span> type apply(Polygon <span class="keyword">const</span>&amp; poly,
+<a name="l00140"></a>00140 Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00141"></a>00141 {
+<a name="l00142"></a>00142 assert_dimension&lt;Polygon, 2&gt;();
+<a name="l00143"></a>00143
+<a name="l00144"></a>00144 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type&lt;Polygon&gt;::type ring_type;
+<a name="l00145"></a>00145 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00146"></a>00146 &lt;
+<a name="l00147"></a>00147 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type
+<a name="l00148"></a>00148 &gt;::type iterator_type;
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 type a = call_abs(
+<a name="l00151"></a>00151 ring_area&lt;ring_type, Strategy&gt;::apply(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), strategy));
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 <span class="keywordflow">for</span> (iterator_type it = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00154"></a>00154 it != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly)); ++it)
+<a name="l00155"></a>00155 {
+<a name="l00156"></a>00156 a -= call_abs(ring_area&lt;ring_type, Strategy&gt;::apply(*it, strategy));
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158 <span class="keywordflow">return</span> a;
+<a name="l00159"></a>00159 }
+<a name="l00160"></a>00160 };
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 }} <span class="comment">// namespace detail::area</span>
+<a name="l00163"></a>00163
+<a name="l00164"></a>00164 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00165"></a>00165 <span class="preprocessor"></span>
+<a name="l00166"></a>00166 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00167"></a>00167 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch {
+<a name="l00168"></a>00168
+<a name="l00169"></a>00169 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
+<a name="l00170"></a>00170 <span class="keyword">struct </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a> : detail::calculate_null&lt;typename S::return_type, G, S&gt; {};
+<a name="l00171"></a>00171
+<a name="l00172"></a>00172
+<a name="l00173"></a>00173 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
+<a name="l00174"></a>00174 <span class="keyword">struct </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>&lt;box_tag, G, S&gt; : detail::<a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>::box_area&lt;G, S&gt; {};
+<a name="l00175"></a>00175
+<a name="l00176"></a>00176
+<a name="l00177"></a>00177 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
+<a name="l00178"></a>00178 <span class="keyword">struct </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>&lt;nsphere_tag, G, S&gt; : detail::<a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>::circle_area&lt;G, S&gt; {};
+<a name="l00179"></a>00179
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 <span class="comment">// Area of ring currently returns area of closed rings but it might be argued</span>
+<a name="l00182"></a>00182 <span class="comment">// that it is 0.0, because a ring is just a line.</span>
+<a name="l00183"></a>00183 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
+<a name="l00184"></a>00184 <span class="keyword">struct </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>&lt;ring_tag, G, S&gt; : detail::<a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>::ring_area&lt;G, S&gt; {};
+<a name="l00185"></a>00185
+<a name="l00186"></a>00186 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
+<a name="l00187"></a>00187 <span class="keyword">struct </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>&lt;polygon_tag, G, S&gt; : detail::<a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>::polygon_area&lt;G, S&gt; {};
+<a name="l00188"></a>00188
+<a name="l00189"></a>00189 } <span class="comment">// namespace dispatch</span>
+<a name="l00190"></a>00190 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00191"></a>00191 <span class="preprocessor"></span>
+<a name="l00192"></a>00192
+<a name="l00193"></a>00193 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00194"></a><a class="code" href="structggl_1_1area__result.html">00194</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1area__result.html">area_result</a>
+<a name="l00195"></a>00195 {
+<a name="l00196"></a><a class="code" href="structggl_1_1area__result.html#d6428313802f153cd99b803ecde23872">00196</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;Geometry&gt;::type</a> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+<a name="l00197"></a>00197 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__area.html" title="Traits class binding an area strategy to a coordinate system.">strategy_area</a>
+<a name="l00198"></a>00198 &lt;
+<a name="l00199"></a>00199 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;point_type&gt;::type</a>,
+<a name="l00200"></a>00200 <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>
+<a name="l00201"></a><a class="code" href="structggl_1_1area__result.html#ccb03cf635c157788a99c33d8f3c3a1e">00201</a> &gt;::type <a class="code" href="structggl_1_1strategy_1_1not__implemented.html" title="Indicate compiler/library user that strategy is not implemented.">strategy_type</a>;
+<a name="l00202"></a><a class="code" href="structggl_1_1area__result.html#4915057a85bc6a0c7292b3db1e4f33be">00202</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_type::return_type <a class="code" href="structggl_1_1area__result.html#4915057a85bc6a0c7292b3db1e4f33be">return_type</a>;
+<a name="l00203"></a>00203 };
+<a name="l00204"></a>00204
+<a name="l00216"></a>00216 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00217"></a><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3">00217</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1area__result.html">area_result&lt;Geometry&gt;::return_type</a> <a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>(Geometry <span class="keyword">const</span>&amp; geometry)
+<a name="l00218"></a>00218 {
+<a name="l00219"></a>00219 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy_1_1not__implemented.html" title="Indicate compiler/library user that strategy is not implemented.">area_result&lt;Geometry&gt;::strategy_type</a> strategy_type;
+<a name="l00220"></a>00220
+<a name="l00221"></a>00221 <span class="keywordflow">return</span> <a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">dispatch::area</a>
+<a name="l00222"></a>00222 &lt;
+<a name="l00223"></a>00223 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00224"></a>00224 Geometry,
+<a name="l00225"></a>00225 strategy_type
+<a name="l00226"></a>00226 &gt;::apply(geometry, strategy_type());
+<a name="l00227"></a>00227 }
+<a name="l00228"></a>00228
+<a name="l00238"></a>00238 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00239"></a><a class="code" href="group__area.html#g7e0783c73b5f561707c50b445a01b833">00239</a> <span class="keyword">inline</span> <span class="keyword">typename</span> Strategy::return_type <a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>(
+<a name="l00240"></a>00240 Geometry <span class="keyword">const</span>&amp; geometry, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00241"></a>00241 {
+<a name="l00242"></a>00242 <span class="keywordflow">return</span> <a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">dispatch::area</a>
+<a name="l00243"></a>00243 &lt;
+<a name="l00244"></a>00244 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00245"></a>00245 Geometry,
+<a name="l00246"></a>00246 Strategy
+<a name="l00247"></a>00247 &gt;::apply(geometry, strategy);
+<a name="l00248"></a>00248 }
+<a name="l00249"></a>00249
+<a name="l00250"></a>00250 } <span class="comment">// namespace ggl</span>
+<a name="l00251"></a>00251
+<a name="l00252"></a>00252 <span class="preprocessor">#endif // GGL_ALGORITHMS_AREA_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,95 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/centroid.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1centroid__exception.html">ggl::centroid_exception</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G , typename P , typename S &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#gda8ccb0bcdd94cebe5b66374259c1fe2">ggl::centroid</a> (const G &amp;geometry, P &amp;c, S const &amp;strategy)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate centroid using a specified <a class="el" href="namespaceggl_1_1strategy.html">strategy</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G , typename P &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd">ggl::centroid</a> (const G &amp;geometry, P &amp;c)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate centroid. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename P , typename G , typename S &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">P&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#g8c284d8ca53c0ace8827431178438852">ggl::make_centroid</a> (const G &amp;geometry, S const &amp;strategy)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate and return centroid. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename P , typename G &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">P&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#gcb8d61ecb3cb509353728f50d9ae03b4">ggl::make_centroid</a> (const G &amp;geometry)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate and return centroid. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,270 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/centroid.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_ALGORITHMS_CENTROID_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_CENTROID_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;cstddef&gt;</span>
+<a name="l00013"></a>00013
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/concept/requires.hpp&gt;</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="exception_8hpp.html">ggl/core/exception.hpp</a>&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="copy_8hpp.html">ggl/util/copy.hpp</a>&gt;</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="loop_8hpp.html">ggl/util/loop.hpp</a>&gt;</span>
+<a name="l00026"></a>00026
+<a name="l00045"></a>00045 <span class="keyword">namespace </span>ggl
+<a name="l00046"></a>00046 {
+<a name="l00047"></a>00047
+<a name="l00048"></a><a class="code" href="classggl_1_1centroid__exception.html">00048</a> <span class="keyword">class </span><a class="code" href="classggl_1_1centroid__exception.html">centroid_exception</a> : <span class="keyword">public</span> ggl::<a class="code" href="structggl_1_1exception.html" title="Base exception class for GGL.">exception</a>
+<a name="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="l00064"></a>00064
+<a name="l00068"></a>00068 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> R&gt;
+<a name="l00069"></a>00069 <span class="keyword">inline</span> <span class="keywordtype">bool</span> ring_ok(R <span class="keyword">const</span>&amp; ring, P&amp; c)
+<a name="l00070"></a>00070 {
+<a name="l00071"></a>00071 std::size_t <span class="keyword">const</span> n = boost::size(ring);
+<a name="l00072"></a>00072 <span class="keywordflow">if</span> (n &gt; 1)
+<a name="l00073"></a>00073 {
+<a name="l00074"></a>00074 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00075"></a>00075 }
+<a name="l00076"></a>00076 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n &lt;= 0)
+<a name="l00077"></a>00077 {
+<a name="l00078"></a>00078 <span class="keywordflow">throw</span> centroid_exception();
+<a name="l00079"></a>00079 }
+<a name="l00080"></a>00080 <span class="keywordflow">else</span>
+<a name="l00081"></a>00081 {
+<a name="l00082"></a>00082 <span class="comment">// n == 1: Take over the first point in a "coordinate neutral way"</span>
+<a name="l00083"></a>00083 <a class="code" href="namespaceggl.html#173003fecd63871d3a6aee07f4ba7011" title="Copies coordinates from source to destination point.">copy_coordinates</a>(ring.front(), c);
+<a name="l00084"></a>00084 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00085"></a>00085 }
+<a name="l00086"></a>00086 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00087"></a>00087 }
+<a name="l00088"></a>00088
+<a name="l00092"></a>00092 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00093"></a>00093 <span class="keyword">struct </span>centroid_ring
+<a name="l00094"></a>00094 {
+<a name="l00095"></a>00095 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Ring <span class="keyword">const</span>&amp; ring, Point&amp; c, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00096"></a>00096 {
+<a name="l00097"></a>00097 <span class="keywordflow">if</span> (ring_ok(ring, c))
+<a name="l00098"></a>00098 {
+<a name="l00099"></a>00099 <span class="keyword">typename</span> Strategy::state_type state;
+<a name="l00100"></a>00100 <a class="code" href="group__loop.html#g1ff95a74f261e15dfa714146bdcbf23f" title="Loops through segments of a container and call specified functor for all segments...">loop</a>(ring, strategy, state);
+<a name="l00101"></a>00101 state.centroid(c);
+<a name="l00102"></a>00102 }
+<a name="l00103"></a>00103 }
+<a name="l00104"></a>00104 };
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106
+<a name="l00112"></a>00112 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00113"></a>00113 <span class="keyword">struct </span>centroid_polygon
+<a name="l00114"></a>00114 {
+<a name="l00115"></a>00115 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Polygon <span class="keyword">const</span>&amp; poly, Point&amp; c, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 <span class="keywordflow">if</span> (ring_ok(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), c))
+<a name="l00118"></a>00118 {
+<a name="l00119"></a>00119 <span class="keyword">typename</span> Strategy::state_type state;
+<a name="l00120"></a>00120
+<a name="l00121"></a>00121 <a class="code" href="group__loop.html#g1ff95a74f261e15dfa714146bdcbf23f" title="Loops through segments of a container and call specified functor for all segments...">loop</a>(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), strategy, state);
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00124"></a>00124 &lt;
+<a name="l00125"></a>00125 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type
+<a name="l00126"></a>00126 &gt;::type iterator_type;
+<a name="l00127"></a>00127
+<a name="l00128"></a>00128 <span class="keywordflow">for</span> (iterator_type it = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00129"></a>00129 it != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00130"></a>00130 ++it)
+<a name="l00131"></a>00131 {
+<a name="l00132"></a>00132 <a class="code" href="group__loop.html#g1ff95a74f261e15dfa714146bdcbf23f" title="Loops through segments of a container and call specified functor for all segments...">loop</a>(*it, strategy, state);
+<a name="l00133"></a>00133 }
+<a name="l00134"></a>00134 state.centroid(c);
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136 }
+<a name="l00137"></a>00137 };
+<a name="l00138"></a>00138
+<a name="l00143"></a>00143 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00144"></a>00144 <span class="keyword">struct </span>centroid_box
+<a name="l00145"></a>00145 {
+<a name="l00146"></a>00146 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box <span class="keyword">const</span>&amp; box, Point&amp; c, Strategy <span class="keyword">const</span>&amp;)
+<a name="l00147"></a>00147 {
+<a name="l00148"></a>00148 <span class="comment">// TODO: adapt using strategies</span>
+<a name="l00149"></a>00149 assert_dimension&lt;Box, 2&gt;();
+<a name="l00150"></a>00150 set&lt;0&gt;(c, (get&lt;min_corner, 0&gt;(box) + get&lt;max_corner, 0&gt;(box)) / 2);
+<a name="l00151"></a>00151 set&lt;1&gt;(c, (get&lt;min_corner, 1&gt;(box) + get&lt;max_corner, 1&gt;(box)) / 2);
+<a name="l00152"></a>00152 }
+<a name="l00153"></a>00153 };
+<a name="l00154"></a>00154
+<a name="l00155"></a>00155 }} <span class="comment">// namespace detail::centroid</span>
+<a name="l00156"></a>00156 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00157"></a>00157 <span class="preprocessor"></span>
+<a name="l00158"></a>00158
+<a name="l00159"></a>00159 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00160"></a>00160 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00161"></a>00161 {
+<a name="l00162"></a>00162
+<a name="l00163"></a>00163 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00164"></a>00164 <span class="keyword">struct </span><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a> {};
+<a name="l00165"></a>00165
+<a name="l00166"></a>00166 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00167"></a>00167 <span class="keyword">struct </span><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>&lt;box_tag, Box, Point, Strategy&gt;
+<a name="l00168"></a>00168 : detail::<a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>::centroid_box&lt;Box, Point, Strategy&gt;
+<a name="l00169"></a>00169 {};
+<a name="l00170"></a>00170
+<a name="l00171"></a>00171 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00172"></a>00172 <span class="keyword">struct </span><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>&lt;ring_tag, Ring, Point, Strategy&gt;
+<a name="l00173"></a>00173 : detail::<a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>::centroid_ring&lt;Ring, Point, Strategy&gt;
+<a name="l00174"></a>00174 {};
+<a name="l00175"></a>00175
+<a name="l00176"></a>00176 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00177"></a>00177 <span class="keyword">struct </span><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>&lt;polygon_tag, Polygon, Point, Strategy&gt;
+<a name="l00178"></a>00178 : detail::<a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>::centroid_polygon&lt;Polygon, Point, Strategy&gt;
+<a name="l00179"></a>00179
+<a name="l00180"></a>00180 {};
+<a name="l00181"></a>00181
+<a name="l00182"></a>00182 } <span class="comment">// namespace dispatch</span>
+<a name="l00183"></a>00183 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00184"></a>00184 <span class="preprocessor"></span>
+<a name="l00185"></a>00185
+<a name="l00202"></a>00202 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> P&gt;
+<a name="l00203"></a><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd">00203</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>(<span class="keyword">const</span> G&amp; geometry, P&amp; c)
+<a name="l00204"></a>00204 {
+<a name="l00205"></a>00205 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;G&gt;::type</a> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+<a name="l00206"></a>00206 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__centroid.html" title="Traits class binding a centroid calculation strategy to a coordinate system.">strategy_centroid</a>
+<a name="l00207"></a>00207 &lt;
+<a name="l00208"></a>00208 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;point_type&gt;::type</a>,
+<a name="l00209"></a>00209 P,
+<a name="l00210"></a>00210 point_type
+<a name="l00211"></a>00211 &gt;::type strategy_type;
+<a name="l00212"></a>00212
+<a name="l00213"></a>00213 <a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">dispatch::centroid</a>
+<a name="l00214"></a>00214 &lt;
+<a name="l00215"></a>00215 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>,
+<a name="l00216"></a>00216 G,
+<a name="l00217"></a>00217 P,
+<a name="l00218"></a>00218 strategy_type
+<a name="l00219"></a>00219 &gt;::apply(geometry, c, strategy_type());
+<a name="l00220"></a>00220 }
+<a name="l00221"></a>00221
+<a name="l00230"></a>00230 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> P, <span class="keyword">typename</span> S&gt;
+<a name="l00231"></a><a class="code" href="group__centroid.html#gda8ccb0bcdd94cebe5b66374259c1fe2">00231</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>(<span class="keyword">const</span> G&amp; geometry, P&amp; c, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00232"></a>00232 {
+<a name="l00233"></a>00233 <a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">dispatch::centroid</a>
+<a name="l00234"></a>00234 &lt;
+<a name="l00235"></a>00235 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>,
+<a name="l00236"></a>00236 G,
+<a name="l00237"></a>00237 P,
+<a name="l00238"></a>00238 S
+<a name="l00239"></a>00239 &gt;::apply(geometry, c, strategy);
+<a name="l00240"></a>00240 }
+<a name="l00241"></a>00241
+<a name="l00242"></a>00242 <span class="comment">// Versions returning a centroid</span>
+<a name="l00243"></a>00243
+<a name="l00251"></a>00251 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> G&gt;
+<a name="l00252"></a><a class="code" href="group__centroid.html#gcb8d61ecb3cb509353728f50d9ae03b4">00252</a> <span class="keyword">inline</span> P <a class="code" href="group__centroid.html#gcb8d61ecb3cb509353728f50d9ae03b4" title="Calculate and return centroid.">make_centroid</a>(<span class="keyword">const</span> G&amp; geometry)
+<a name="l00253"></a>00253 {
+<a name="l00254"></a>00254 P c;
+<a name="l00255"></a>00255 <a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>(geometry, c);
+<a name="l00256"></a>00256 <span class="keywordflow">return</span> c;
+<a name="l00257"></a>00257 }
+<a name="l00258"></a>00258
+<a name="l00267"></a>00267 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
+<a name="l00268"></a><a class="code" href="group__centroid.html#g8c284d8ca53c0ace8827431178438852">00268</a> <span class="keyword">inline</span> P <a class="code" href="group__centroid.html#gcb8d61ecb3cb509353728f50d9ae03b4" title="Calculate and return centroid.">make_centroid</a>(<span class="keyword">const</span> G&amp; geometry, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00269"></a>00269 {
+<a name="l00270"></a>00270 P c;
+<a name="l00271"></a>00271 <a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>(geometry, c, strategy);
+<a name="l00272"></a>00272 <span class="keywordflow">return</span> c;
+<a name="l00273"></a>00273 }
+<a name="l00274"></a>00274
+<a name="l00275"></a>00275 } <span class="comment">// namespace ggl</span>
+<a name="l00276"></a>00276
+<a name="l00277"></a>00277 <span class="preprocessor">#endif // GGL_ALGORITHMS_CENTROID_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/convex_hull.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , typename OutputIterator &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">OutputIterator&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18">ggl::convex_hull</a> (Geometry const &amp;geometry, OutputIterator out)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the convex hull of a geometry. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,167 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/convex_hull.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_ALGORITHMS_CONVEX_HULL_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_CONVEX_HULL_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;boost/concept/requires.hpp&gt;</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/type_traits/remove_const.hpp&gt;</span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="core_2is__multi_8hpp.html">ggl/core/is_multi.hpp</a>&gt;</span>
+<a name="l00018"></a>00018
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>&gt;</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="as__range_8hpp.html">ggl/util/as_range.hpp</a>&gt;</span>
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025
+<a name="l00044"></a>00044 <span class="keyword">namespace </span>ggl {
+<a name="l00045"></a>00045
+<a name="l00046"></a>00046 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a> {
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00050"></a>00050 <span class="keyword">struct </span>hull
+<a name="l00051"></a>00051 {
+<a name="l00052"></a>00052 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Geometry <span class="keyword">const</span>&amp; geometry,
+<a name="l00053"></a>00053 OutputIterator out)
+<a name="l00054"></a>00054 {
+<a name="l00055"></a>00055 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;Geometry&gt;::type point_type;
+<a name="l00056"></a>00056
+<a name="l00057"></a>00057 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_convex_hull
+<a name="l00058"></a>00058 &lt;
+<a name="l00059"></a>00059 <span class="keyword">typename</span> cs_tag&lt;point_type&gt;::type,
+<a name="l00060"></a>00060 point_type
+<a name="l00061"></a>00061 &gt;::type strategy_type;
+<a name="l00062"></a>00062
+<a name="l00063"></a>00063 strategy_type s(<a class="code" href="group__utility.html#g1868bde329b825c540572ac0a73e4f2b" title="Function getting either the range (ring, linestring) itself or the outer ring.">as_range</a>&lt;<span class="keyword">typename</span> as_range_type&lt;Geometry&gt;::type&gt;(geometry));
+<a name="l00064"></a>00064 s.get(out);
+<a name="l00065"></a>00065 <span class="keywordflow">return</span> out;
+<a name="l00066"></a>00066 }
+<a name="l00067"></a>00067 };
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070 }} <span class="comment">// namespace detail::convex_hull</span>
+<a name="l00071"></a>00071 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00072"></a>00072 <span class="preprocessor"></span>
+<a name="l00073"></a>00073 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00074"></a>00074 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00075"></a>00075 {
+<a name="l00076"></a>00076
+<a name="l00077"></a>00077 <span class="keyword">template</span>
+<a name="l00078"></a>00078 &lt;
+<a name="l00079"></a>00079 <span class="keyword">typename</span> GeometryTag,
+<a name="l00080"></a>00080 <span class="keywordtype">bool</span> IsMulti,
+<a name="l00081"></a>00081 <span class="keyword">typename</span> Geometry,
+<a name="l00082"></a>00082 <span class="keyword">typename</span> OutputIterator
+<a name="l00083"></a>00083 &gt;
+<a name="l00084"></a>00084 <span class="keyword">struct </span><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a> {};
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00087"></a>00087 <span class="keyword">struct </span><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a>&lt;linestring_tag, false, Linestring, OutputIterator&gt;
+<a name="l00088"></a>00088 : detail::<a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a>::hull&lt;Linestring, OutputIterator&gt;
+<a name="l00089"></a>00089 {};
+<a name="l00090"></a>00090
+<a name="l00091"></a>00091 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00092"></a>00092 <span class="keyword">struct </span><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a>&lt;ring_tag, false, Ring, OutputIterator&gt;
+<a name="l00093"></a>00093 : detail::<a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a>::hull&lt;Ring, OutputIterator&gt;
+<a name="l00094"></a>00094 {};
+<a name="l00095"></a>00095
+<a name="l00096"></a>00096 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00097"></a>00097 <span class="keyword">struct </span><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a>&lt;polygon_tag, false, Polygon, OutputIterator&gt;
+<a name="l00098"></a>00098 : detail::<a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a>::hull&lt;Polygon, OutputIterator&gt;
+<a name="l00099"></a>00099 {};
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 } <span class="comment">// namespace dispatch</span>
+<a name="l00102"></a>00102 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00103"></a>00103 <span class="preprocessor"></span>
+<a name="l00111"></a>00111 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00112"></a><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18">00112</a> <span class="keyword">inline</span> OutputIterator <a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a>(Geometry <span class="keyword">const</span>&amp; geometry, OutputIterator out)
+<a name="l00113"></a>00113 {
+<a name="l00114"></a>00114 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;Geometry&gt;::type ncg_type;
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116 <span class="keywordflow">return</span> <a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">dispatch::convex_hull</a>
+<a name="l00117"></a>00117 &lt;
+<a name="l00118"></a>00118 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;ncg_type&gt;::type</a>,
+<a name="l00119"></a>00119 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &amp;quot;true&amp;quot; for multi geometries (multi_point, etc).">is_multi&lt;ncg_type&gt;::type::value</a>,
+<a name="l00120"></a>00120 Geometry,
+<a name="l00121"></a>00121 OutputIterator
+<a name="l00122"></a>00122 &gt;::apply(geometry, out);
+<a name="l00123"></a>00123 }
+<a name="l00124"></a>00124
+<a name="l00125"></a>00125 } <span class="comment">// namespace ggl</span>
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127 <span class="preprocessor">#endif // GGL_ALGORITHMS_CONVEX_HULL_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/correct.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">ggl::correct</a> (G &amp;geometry)</td></tr>
+
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,226 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/correct.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_ALGORITHMS_CORRECT_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_CORRECT_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;algorithm&gt;</span>
+<a name="l00013"></a>00013
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>&gt;</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>&gt;</span>
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="algorithms_2area_8hpp.html">ggl/algorithms/area.hpp</a>&gt;</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="disjoint_8hpp.html">ggl/algorithms/disjoint.hpp</a>&gt;</span>
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 <span class="keyword">namespace </span>ggl
+<a name="l00029"></a>00029 {
+<a name="l00030"></a>00030
+<a name="l00031"></a>00031 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a> {
+<a name="l00033"></a>00033
+<a name="l00034"></a>00034 <span class="comment">// correct an box: make min/max are correct</span>
+<a name="l00035"></a>00035 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B&gt;
+<a name="l00036"></a>00036 <span class="keyword">inline</span> <span class="keywordtype">void</span> correct_box(B&amp; b)
+<a name="l00037"></a>00037 {
+<a name="l00038"></a>00038 <span class="comment">// Currently only for Cartesian coordinates</span>
+<a name="l00039"></a>00039 <span class="comment">// TODO: adapt using strategies</span>
+<a name="l00040"></a>00040 <span class="comment">// TODO: adapt using traits</span>
+<a name="l00041"></a>00041 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html#b723a443a97f7c4ed7c47ac96d7e29ee">coordinate_type&lt;B&gt;::type</a> coordinate_type;
+<a name="l00042"></a>00042
+<a name="l00043"></a>00043 <span class="keywordflow">if</span> (get&lt;min_corner, 0&gt;(b) &gt; get&lt;max_corner, 0&gt;(b))
+<a name="l00044"></a>00044 {
+<a name="l00045"></a>00045 coordinate_type max_value = get&lt;min_corner, 0&gt;(b);
+<a name="l00046"></a>00046 coordinate_type min_value = get&lt;max_corner, 0&gt;(b);
+<a name="l00047"></a>00047 set&lt;min_corner, 0&gt;(b, min_value);
+<a name="l00048"></a>00048 set&lt;max_corner, 0&gt;(b, max_value);
+<a name="l00049"></a>00049 }
+<a name="l00050"></a>00050
+<a name="l00051"></a>00051 <span class="keywordflow">if</span> (get&lt;min_corner, 1&gt;(b) &gt; get&lt;max_corner, 1&gt;(b))
+<a name="l00052"></a>00052 {
+<a name="l00053"></a>00053 coordinate_type max_value = get&lt;min_corner, 1&gt;(b);
+<a name="l00054"></a>00054 coordinate_type min_value = get&lt;max_corner, 1&gt;(b);
+<a name="l00055"></a>00055 set&lt;min_corner, 1&gt;(b, min_value);
+<a name="l00056"></a>00056 set&lt;max_corner, 1&gt;(b, max_value);
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058 }
+<a name="l00059"></a>00059
+<a name="l00060"></a>00060 <span class="comment">// close a linear_ring, if not closed</span>
+<a name="l00061"></a>00061 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R&gt;
+<a name="l00062"></a>00062 <span class="keyword">inline</span> <span class="keywordtype">void</span> ensure_closed_ring(R&amp; r)
+<a name="l00063"></a>00063 {
+<a name="l00064"></a>00064 <span class="keywordflow">if</span> (boost::size(r) &gt; 2)
+<a name="l00065"></a>00065 {
+<a name="l00066"></a>00066 <span class="comment">// check if closed, if not, close it</span>
+<a name="l00067"></a>00067 <span class="keywordflow">if</span> (<a class="code" href="group__boolean__relations.html#g6d772a2eb8ad083e056bdbf0ec7ae8a1" title="Calculate if two geometries are disjoint.">ggl::disjoint</a>(r.front(), r.back()))
+<a name="l00068"></a>00068 {
+<a name="l00069"></a>00069 r.push_back(r.front());
+<a name="l00070"></a>00070 }
+<a name="l00071"></a>00071 }
+<a name="l00072"></a>00072 }
+<a name="l00073"></a>00073
+<a name="l00074"></a>00074 <span class="comment">// correct a polygon: normalizes all rings, sets outer linear_ring clockwise, sets all</span>
+<a name="l00075"></a>00075 <span class="comment">// inner rings counter clockwise</span>
+<a name="l00076"></a>00076 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Y&gt;
+<a name="l00077"></a>00077 <span class="keyword">inline</span> <span class="keywordtype">void</span> correct_polygon(Y&amp; poly)
+<a name="l00078"></a>00078 {
+<a name="l00079"></a>00079 <span class="keyword">typename</span> ring_type&lt;Y&gt;::type&amp; outer = <a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly);
+<a name="l00080"></a>00080 ensure_closed_ring(outer);
+<a name="l00081"></a>00081
+<a name="l00082"></a>00082 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;Y&gt;::type point_type;
+<a name="l00083"></a>00083 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type&lt;Y&gt;::type ring_type;
+<a name="l00084"></a>00084 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_area
+<a name="l00085"></a>00085 &lt;
+<a name="l00086"></a>00086 <span class="keyword">typename</span> cs_tag&lt;point_type&gt;::type,
+<a name="l00087"></a>00087 point_type
+<a name="l00088"></a>00088 &gt;::type strategy_type;
+<a name="l00089"></a>00089
+<a name="l00090"></a>00090 strategy_type strategy;
+<a name="l00091"></a>00091
+<a name="l00092"></a>00092 <span class="keywordflow">if</span> (detail::area::ring_area&lt;ring_type, strategy_type&gt;::apply(outer, strategy) &lt; 0)
+<a name="l00093"></a>00093 {
+<a name="l00094"></a>00094 std::reverse(boost::begin(outer), boost::end(outer));
+<a name="l00095"></a>00095 }
+<a name="l00096"></a>00096
+<a name="l00097"></a>00097 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator
+<a name="l00098"></a>00098 &lt;
+<a name="l00099"></a>00099 <span class="keyword">typename</span> interior_type&lt;Y&gt;::type
+<a name="l00100"></a>00100 &gt;::type iterator_type;
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 <span class="keywordflow">for</span> (iterator_type it = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00103"></a>00103 it != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly)); ++it)
+<a name="l00104"></a>00104 {
+<a name="l00105"></a>00105 ensure_closed_ring(*it);
+<a name="l00106"></a>00106 <span class="keywordflow">if</span> (detail::area::ring_area&lt;ring_type, strategy_type&gt;::apply(*it, strategy) &gt; 0)
+<a name="l00107"></a>00107 {
+<a name="l00108"></a>00108 std::reverse(boost::begin(*it), boost::end(*it));
+<a name="l00109"></a>00109 }
+<a name="l00110"></a>00110 }
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112
+<a name="l00113"></a>00113 }} <span class="comment">// namespace detail::correct</span>
+<a name="l00114"></a>00114 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00115"></a>00115 <span class="preprocessor"></span>
+<a name="l00116"></a>00116 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00117"></a>00117 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00118"></a>00118 {
+<a name="l00119"></a>00119
+<a name="l00120"></a>00120 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> G&gt;
+<a name="l00121"></a>00121 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a> {};
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B&gt;
+<a name="l00124"></a>00124 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>&lt;box_tag, B&gt;
+<a name="l00125"></a>00125 {
+<a name="l00126"></a>00126 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(B&amp; box)
+<a name="l00127"></a>00127 {
+<a name="l00128"></a>00128 detail::correct::correct_box(box);
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130 };
+<a name="l00131"></a>00131
+<a name="l00132"></a>00132 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R&gt;
+<a name="l00133"></a>00133 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>&lt;ring_tag, R&gt;
+<a name="l00134"></a>00134 {
+<a name="l00135"></a>00135 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(R&amp; ring)
+<a name="l00136"></a>00136 {
+<a name="l00137"></a>00137 detail::correct::ensure_closed_ring(ring);
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139 };
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P&gt;
+<a name="l00142"></a>00142 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>&lt;polygon_tag, P&gt;
+<a name="l00143"></a>00143 {
+<a name="l00144"></a>00144 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(P&amp; poly)
+<a name="l00145"></a>00145 {
+<a name="l00146"></a>00146 detail::correct::correct_polygon(poly);
+<a name="l00147"></a>00147 }
+<a name="l00148"></a>00148 };
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 } <span class="comment">// namespace dispatch</span>
+<a name="l00151"></a>00151 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00152"></a>00152 <span class="preprocessor"></span>
+<a name="l00153"></a>00153 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G&gt;
+<a name="l00154"></a><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">00154</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>(G&amp; geometry)
+<a name="l00155"></a>00155 {
+<a name="l00156"></a>00156 dispatch::correct&lt;typename tag&lt;G&gt;::type, G&gt;::apply(geometry);
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158
+<a name="l00159"></a>00159 } <span class="comment">// namespace ggl</span>
+<a name="l00160"></a>00160
+<a name="l00161"></a>00161 <span class="preprocessor">#endif // GGL_ALGORITHMS_CORRECT_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/distance.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry1 , typename Geometry2 &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">distance_result&lt; Geometry1, <br class="typebreak">
+Geometry2 &gt;::type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__distance.html#gd122aa78e960f37b9d61bb02c6913f55">ggl::distance</a> (Geometry1 const &amp;geometry1, Geometry2 const &amp;geometry2)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate distance between two geometries. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry1 , typename Geometry2 , typename Strategy &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Strategy::return_type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__distance.html#g22a618786d2601e9201896a8346c161b">ggl::distance</a> (Geometry1 const &amp;geometry1, Geometry2 const &amp;geometry2, Strategy const &amp;strategy)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate distance between two geometries with a specified <a class="el" href="namespaceggl_1_1strategy.html">strategy</a>. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,363 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/distance.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_ALGORITHMS_DISTANCE_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_DISTANCE_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;boost/mpl/if.hpp&gt;</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;boost/static_assert.hpp&gt;</span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="core_2is__multi_8hpp.html">ggl/core/is_multi.hpp</a>&gt;</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="reverse__dispatch_8hpp.html">ggl/core/reverse_dispatch.hpp</a>&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>&gt;</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="distance__result_8hpp.html">ggl/strategies/distance_result.hpp</a>&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
+<a name="l00023"></a>00023
+<a name="l00055"></a>00055 <span class="keyword">namespace </span>ggl
+<a name="l00056"></a>00056 {
+<a name="l00057"></a>00057
+<a name="l00058"></a>00058 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00059"></a>00059 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a> {
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00062"></a>00062 <span class="keyword">struct </span>point_to_point
+<a name="l00063"></a>00063 {
+<a name="l00064"></a>00064 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keyword">typename</span> Strategy::return_type apply(P1 <span class="keyword">const</span>&amp; p1,
+<a name="l00065"></a>00065 P2 <span class="keyword">const</span>&amp; p2, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00066"></a>00066 {
+<a name="l00067"></a>00067 <span class="keywordflow">return</span> strategy(p1, p2);
+<a name="l00068"></a>00068 }
+<a name="l00069"></a>00069 };
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071
+<a name="l00072"></a>00072 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Segment, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00073"></a>00073 <span class="keyword">struct </span>point_to_segment
+<a name="l00074"></a>00074 {
+<a name="l00075"></a>00075 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keyword">typename</span> Strategy::return_type apply(Point <span class="keyword">const</span>&amp; point,
+<a name="l00076"></a>00076 Segment <span class="keyword">const</span>&amp; segment, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00077"></a>00077 {
+<a name="l00078"></a>00078 <span class="keyword">typename</span> strategy_distance_segment
+<a name="l00079"></a>00079 &lt;
+<a name="l00080"></a>00080 <span class="keyword">typename</span> cs_tag&lt;Point&gt;::type,
+<a name="l00081"></a>00081 <span class="keyword">typename</span> cs_tag&lt;Segment&gt;::type,
+<a name="l00082"></a>00082 Point,
+<a name="l00083"></a>00083 Segment
+<a name="l00084"></a>00084 &gt;::type segment_strategy;
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 <span class="keywordflow">return</span> segment_strategy(point, segment);
+<a name="l00087"></a>00087 }
+<a name="l00088"></a>00088 };
+<a name="l00089"></a>00089
+<a name="l00090"></a>00090
+<a name="l00091"></a>00091 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> L, <span class="keyword">typename</span> PPStrategy, <span class="keyword">typename</span> PSStrategy&gt;
+<a name="l00092"></a>00092 <span class="keyword">struct </span>point_to_linestring
+<a name="l00093"></a>00093 {
+<a name="l00094"></a>00094 <span class="keyword">typedef</span> <span class="keyword">typename</span> PPStrategy::return_type return_type;
+<a name="l00095"></a>00095
+<a name="l00096"></a>00096 <span class="keyword">static</span> <span class="keyword">inline</span> return_type apply(P <span class="keyword">const</span>&amp; point, L <span class="keyword">const</span>&amp; linestring,
+<a name="l00097"></a>00097 PPStrategy <span class="keyword">const</span>&amp; pp_strategy, PSStrategy <span class="keyword">const</span>&amp; ps_strategy)
+<a name="l00098"></a>00098 {
+<a name="l00099"></a>00099 <span class="keyword">typedef</span> segment&lt;const typename point_type&lt;L&gt;::type&gt; segment_type;
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <span class="keywordflow">if</span> (boost::begin(linestring) == boost::end(linestring))
+<a name="l00102"></a>00102 {
+<a name="l00103"></a>00103 <span class="keywordflow">return</span> return_type(0);
+<a name="l00104"></a>00104 }
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 <span class="comment">// line of one point: return point square_distance</span>
+<a name="l00107"></a>00107 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator&lt;L&gt;::type iterator_type;
+<a name="l00108"></a>00108 iterator_type it = boost::begin(linestring);
+<a name="l00109"></a>00109 iterator_type prev = it++;
+<a name="l00110"></a>00110 <span class="keywordflow">if</span> (it == boost::end(linestring))
+<a name="l00111"></a>00111 {
+<a name="l00112"></a>00112 <span class="keywordflow">return</span> pp_strategy(point, *boost::begin(linestring));
+<a name="l00113"></a>00113 }
+<a name="l00114"></a>00114
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116 <span class="comment">// start with first segment distance</span>
+<a name="l00117"></a>00117 return_type d = ps_strategy(point, segment_type(*prev, *it));
+<a name="l00118"></a>00118
+<a name="l00119"></a>00119 <span class="comment">// check if other segments are closer</span>
+<a name="l00120"></a>00120 prev = it++;
+<a name="l00121"></a>00121 <span class="keywordflow">while</span>(it != boost::end(linestring))
+<a name="l00122"></a>00122 {
+<a name="l00123"></a>00123 return_type ds = ps_strategy(point, segment_type(*prev, *it));
+<a name="l00124"></a>00124 <span class="keywordflow">if</span> (<a class="code" href="group__distance.html#ge8ca95bca0a05bf37ceee1996d55c098" title="Utility function to check if a distance is very small.">ggl::close_to_zero</a>(ds))
+<a name="l00125"></a>00125 {
+<a name="l00126"></a>00126 <span class="keywordflow">return</span> return_type(0);
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ds &lt; d)
+<a name="l00129"></a>00129 {
+<a name="l00130"></a>00130 d = ds;
+<a name="l00131"></a>00131 }
+<a name="l00132"></a>00132 prev = it++;
+<a name="l00133"></a>00133 }
+<a name="l00134"></a>00134
+<a name="l00135"></a>00135 <span class="keywordflow">return</span> d;
+<a name="l00136"></a>00136 }
+<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 }} <span class="comment">// namespace detail::distance</span>
+<a name="l00142"></a>00142 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00143"></a>00143 <span class="preprocessor"></span>
+<a name="l00144"></a>00144
+<a name="l00145"></a>00145 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00146"></a>00146 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00147"></a>00147 {
+<a name="l00148"></a>00148
+<a name="l00149"></a>00149 <span class="keyword">template</span>
+<a name="l00150"></a>00150 &lt;
+<a name="l00151"></a>00151 <span class="keyword">typename</span> GeometryTag1, <span class="keyword">typename</span> GeometryTag2,
+<a name="l00152"></a>00152 <span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2,
+<a name="l00153"></a>00153 <span class="keyword">typename</span> StrategyTag, <span class="keyword">typename</span> Strategy,
+<a name="l00154"></a>00154 <span class="keywordtype">bool</span> IsMulti1, <span class="keywordtype">bool</span> IsMulti2
+<a name="l00155"></a>00155 &gt;
+<a name="l00156"></a>00156 <span class="keyword">struct </span><a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>
+<a name="l00157"></a>00157 {};
+<a name="l00158"></a>00158
+<a name="l00159"></a>00159
+<a name="l00160"></a>00160 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00161"></a>00161 <span class="keyword">struct </span><a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>
+<a name="l00162"></a>00162 &lt;
+<a name="l00163"></a>00163 point_tag, point_tag,
+<a name="l00164"></a>00164 P1, P2,
+<a name="l00165"></a>00165 strategy_tag_distance_point_point, Strategy,
+<a name="l00166"></a>00166 false, false
+<a name="l00167"></a>00167 &gt; : detail::<a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>::point_to_point&lt;P1, P2, Strategy&gt;
+<a name="l00168"></a>00168 {};
+<a name="l00169"></a>00169
+<a name="l00171"></a>00171 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00172"></a>00172 <span class="keyword">struct </span><a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>
+<a name="l00173"></a>00173 &lt;
+<a name="l00174"></a>00174 point_tag, linestring_tag,
+<a name="l00175"></a>00175 Point, Linestring,
+<a name="l00176"></a>00176 strategy_tag_distance_point_point, Strategy,
+<a name="l00177"></a>00177 false, false
+<a name="l00178"></a>00178 &gt;
+<a name="l00179"></a>00179 {
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keyword">typename</span> Strategy::return_type apply(Point <span class="keyword">const</span>&amp; point,
+<a name="l00182"></a>00182 Linestring <span class="keyword">const</span>&amp; linestring,
+<a name="l00183"></a>00183 Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00184"></a>00184 {
+<a name="l00185"></a>00185 <span class="keyword">typedef</span> segment&lt;const typename point_type&lt;Linestring&gt;::type&gt; segment_type;
+<a name="l00186"></a>00186 <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...">ggl::strategy_distance_segment</a>
+<a name="l00187"></a>00187 &lt;
+<a name="l00188"></a>00188 <span class="keyword">typename</span> cs_tag&lt;Point&gt;::type,
+<a name="l00189"></a>00189 <span class="keyword">typename</span> cs_tag&lt;segment_type&gt;::type,
+<a name="l00190"></a>00190 Point,
+<a name="l00191"></a>00191 segment_type
+<a name="l00192"></a>00192 &gt;::type ps_strategy_type;
+<a name="l00193"></a>00193
+<a name="l00194"></a>00194 <span class="keywordflow">return</span> detail::distance::point_to_linestring
+<a name="l00195"></a>00195 &lt;
+<a name="l00196"></a>00196 Point, Linestring, Strategy, ps_strategy_type
+<a name="l00197"></a>00197 &gt;::apply(point, linestring, strategy, ps_strategy_type());
+<a name="l00198"></a>00198 }
+<a name="l00199"></a>00199 };
+<a name="l00200"></a>00200
+<a name="l00201"></a>00201
+<a name="l00203"></a>00203 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00204"></a>00204 <span class="keyword">struct </span><a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>
+<a name="l00205"></a>00205 &lt;
+<a name="l00206"></a>00206 point_tag, linestring_tag,
+<a name="l00207"></a>00207 Point, Linestring,
+<a name="l00208"></a>00208 strategy_tag_distance_point_segment, Strategy,
+<a name="l00209"></a>00209 false, false
+<a name="l00210"></a>00210 &gt;
+<a name="l00211"></a>00211 {
+<a name="l00212"></a>00212 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keyword">typename</span> Strategy::return_type apply(Point <span class="keyword">const</span>&amp; point,
+<a name="l00213"></a>00213 Linestring <span class="keyword">const</span>&amp; linestring,
+<a name="l00214"></a>00214 Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00215"></a>00215 {
+<a name="l00216"></a>00216 <span class="keyword">typedef</span> <span class="keyword">typename</span> Strategy::point_strategy_type pp_strategy_type;
+<a name="l00217"></a>00217 <span class="keywordflow">return</span> detail::distance::point_to_linestring
+<a name="l00218"></a>00218 &lt;
+<a name="l00219"></a>00219 Point, Linestring, pp_strategy_type, Strategy
+<a name="l00220"></a>00220 &gt;::apply(point, linestring, pp_strategy_type(), strategy);
+<a name="l00221"></a>00221 }
+<a name="l00222"></a>00222 };
+<a name="l00223"></a>00223
+<a name="l00224"></a>00224
+<a name="l00225"></a>00225 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Segment, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00226"></a>00226 <span class="keyword">struct </span><a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>
+<a name="l00227"></a>00227 &lt;
+<a name="l00228"></a>00228 point_tag, segment_tag,
+<a name="l00229"></a>00229 Point, Segment,
+<a name="l00230"></a>00230 strategy_tag_distance_point_point, Strategy,
+<a name="l00231"></a>00231 false, false
+<a name="l00232"></a>00232 &gt; : detail::<a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>::point_to_segment&lt;Point, Segment, Strategy&gt;
+<a name="l00233"></a>00233 {};
+<a name="l00234"></a>00234
+<a name="l00235"></a>00235
+<a name="l00236"></a>00236 <span class="comment">// Strictly spoken this might be in namespace &lt;impl&gt; again</span>
+<a name="l00237"></a>00237 <span class="keyword">template</span>
+<a name="l00238"></a>00238 &lt;
+<a name="l00239"></a>00239 <span class="keyword">typename</span> GeometryTag1, <span class="keyword">typename</span> GeometryTag2,
+<a name="l00240"></a>00240 <span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2,
+<a name="l00241"></a>00241 <span class="keyword">typename</span> StrategyTag, <span class="keyword">typename</span> Strategy,
+<a name="l00242"></a>00242 <span class="keywordtype">bool</span> IsMulti1, <span class="keywordtype">bool</span> IsMulti2
+<a name="l00243"></a>00243 &gt;
+<a name="l00244"></a>00244 <span class="keyword">struct </span>distance_reversed
+<a name="l00245"></a>00245 {
+<a name="l00246"></a>00246 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keyword">typename</span> Strategy::return_type apply(G1 <span class="keyword">const</span>&amp; g1,
+<a name="l00247"></a>00247 G2 <span class="keyword">const</span>&amp; g2, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00248"></a>00248 {
+<a name="l00249"></a>00249 <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>
+<a name="l00250"></a>00250 &lt;
+<a name="l00251"></a>00251 GeometryTag2, GeometryTag1,
+<a name="l00252"></a>00252 G2, G1,
+<a name="l00253"></a>00253 StrategyTag, Strategy,
+<a name="l00254"></a>00254 IsMulti2, IsMulti1
+<a name="l00255"></a>00255 &gt;::apply(g2, g1, strategy);
+<a name="l00256"></a>00256 }
+<a name="l00257"></a>00257 };
+<a name="l00258"></a>00258
+<a name="l00259"></a>00259 } <span class="comment">// namespace dispatch</span>
+<a name="l00260"></a>00260 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00261"></a>00261 <span class="preprocessor"></span>
+<a name="l00281"></a>00281 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry1, <span class="keyword">typename</span> Geometry2, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00282"></a><a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b">00282</a> <span class="keyword">inline</span> <span class="keyword">typename</span> Strategy::return_type <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>(Geometry1 <span class="keyword">const</span>&amp; geometry1,
+<a name="l00283"></a>00283 Geometry2 <span class="keyword">const</span>&amp; geometry2, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00284"></a>00284 {
+<a name="l00285"></a>00285 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;Geometry1&gt;::type ncg1_type;
+<a name="l00286"></a>00286 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;Geometry2&gt;::type ncg2_type;
+<a name="l00287"></a>00287
+<a name="l00288"></a>00288 <span class="keywordflow">return</span> boost::mpl::if_c
+<a name="l00289"></a>00289 &lt;
+<a name="l00290"></a>00290 <a class="code" href="structggl_1_1reverse__dispatch.html">ggl::reverse_dispatch&lt;Geometry1, Geometry2&gt;::type::value</a>,
+<a name="l00291"></a>00291 dispatch::distance_reversed
+<a name="l00292"></a>00292 &lt;
+<a name="l00293"></a>00293 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;ncg1_type&gt;::type</a>,
+<a name="l00294"></a>00294 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;ncg2_type&gt;::type</a>,
+<a name="l00295"></a>00295 ncg1_type,
+<a name="l00296"></a>00296 ncg2_type,
+<a name="l00297"></a>00297 <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__tag__unknown.html">strategy_tag&lt;Strategy&gt;::type</a>,
+<a name="l00298"></a>00298 Strategy,
+<a name="l00299"></a>00299 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &amp;quot;true&amp;quot; for multi geometries (multi_point, etc).">is_multi&lt;ncg1_type&gt;::value</a>,
+<a name="l00300"></a>00300 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &amp;quot;true&amp;quot; for multi geometries (multi_point, etc).">is_multi&lt;ncg2_type&gt;::value</a>
+<a name="l00301"></a>00301 &gt;,
+<a name="l00302"></a>00302 <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">dispatch::distance</a>
+<a name="l00303"></a>00303 &lt;
+<a name="l00304"></a>00304 <span class="keyword">typename</span> tag&lt;ncg1_type&gt;::type,
+<a name="l00305"></a>00305 <span class="keyword">typename</span> tag&lt;ncg2_type&gt;::type,
+<a name="l00306"></a>00306 ncg1_type,
+<a name="l00307"></a>00307 ncg2_type,
+<a name="l00308"></a>00308 <span class="keyword">typename</span> strategy_tag&lt;Strategy&gt;::type,
+<a name="l00309"></a>00309 Strategy,
+<a name="l00310"></a>00310 is_multi&lt;ncg1_type&gt;::value,
+<a name="l00311"></a>00311 is_multi&lt;ncg2_type&gt;::value
+<a name="l00312"></a>00312 &gt;
+<a name="l00313"></a>00313 &gt;::type::apply(geometry1, geometry2, strategy);
+<a name="l00314"></a>00314 }
+<a name="l00315"></a>00315
+<a name="l00316"></a>00316
+<a name="l00327"></a>00327 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry1, <span class="keyword">typename</span> Geometry2&gt;
+<a name="l00328"></a><a class="code" href="group__distance.html#gd122aa78e960f37b9d61bb02c6913f55">00328</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1distance__result.html" title="Shortcut to define return type of distance strategy.">distance_result&lt;Geometry1, Geometry2&gt;::type</a> <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>(
+<a name="l00329"></a>00329 Geometry1 <span class="keyword">const</span>&amp; geometry1, Geometry2 <span class="keyword">const</span>&amp; geometry2)
+<a name="l00330"></a>00330 {
+<a name="l00331"></a>00331 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;Geometry1&gt;::type</a> point1_type;
+<a name="l00332"></a>00332 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;Geometry2&gt;::type</a> point2_type;
+<a name="l00333"></a>00333
+<a name="l00334"></a>00334 <span class="comment">// Define a point-point-distance-strategy</span>
+<a name="l00335"></a>00335 <span class="comment">// for either the normal case, either the reversed case</span>
+<a name="l00336"></a>00336 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_c
+<a name="l00337"></a>00337 &lt;
+<a name="l00338"></a>00338 <a class="code" href="structggl_1_1reverse__dispatch.html">ggl::reverse_dispatch&lt;Geometry1, Geometry2&gt;::type::value</a>,
+<a name="l00339"></a>00339 <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__distance.html" title="Traits class binding a distance strategy to a (possibly two) coordinate system(s)...">strategy_distance</a>
+<a name="l00340"></a>00340 &lt;
+<a name="l00341"></a>00341 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;point2_type&gt;::type</a>,
+<a name="l00342"></a>00342 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;point1_type&gt;::type</a>,
+<a name="l00343"></a>00343 point2_type,
+<a name="l00344"></a>00344 point1_type
+<a name="l00345"></a>00345 &gt;::type,
+<a name="l00346"></a>00346 <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__distance.html" title="Traits class binding a distance strategy to a (possibly two) coordinate system(s)...">strategy_distance</a>
+<a name="l00347"></a>00347 &lt;
+<a name="l00348"></a>00348 <span class="keyword">typename</span> cs_tag&lt;point1_type&gt;::type,
+<a name="l00349"></a>00349 <span class="keyword">typename</span> cs_tag&lt;point2_type&gt;::type,
+<a name="l00350"></a>00350 point1_type,
+<a name="l00351"></a>00351 point2_type
+<a name="l00352"></a>00352 &gt;::type
+<a name="l00353"></a>00353 &gt;::type strategy;
+<a name="l00354"></a>00354
+<a name="l00355"></a>00355 <span class="keywordflow">return</span> <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>(geometry1, geometry2, strategy());
+<a name="l00356"></a>00356 }
+<a name="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>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,92 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/envelope.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G , typename B &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#g89671917cfb1753f65d4bcc2fc334bf9">ggl::envelope</a> (G const &amp;geometry, B &amp;mbr)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate envelope of a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G , typename B , typename S &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36">ggl::envelope</a> (G const &amp;geometry, B &amp;mbr, S const &amp;strategy)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate envelope of a geometry, using a specified <a class="el" href="namespaceggl_1_1strategy.html">strategy</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename B , typename G &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">B&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#g938cf2804a87e138cbf4b5b65314a3e4">ggl::make_envelope</a> (G const &amp;geometry)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate and return envelope of a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename B , typename G , typename S &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">B&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#g0b2b7b9ef2bc07f4b45695606f3d292d">ggl::make_envelope</a> (G const &amp;geometry, S const &amp;strategy)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate and return envelope of a geometry. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,321 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/envelope.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_ALGORITHMS_ENVELOPE_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_ENVELOPE_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;boost/concept/requires.hpp&gt;</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;boost/numeric/conversion/cast.hpp&gt;</span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="combine_8hpp.html">ggl/algorithms/combine.hpp</a>&gt;</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="convert_8hpp.html">ggl/algorithms/convert.hpp</a>&gt;</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="box__concept_8hpp.html">ggl/core/concepts/box_concept.hpp</a>&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="linestring__concept_8hpp.html">ggl/core/concepts/linestring_concept.hpp</a>&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="nsphere__concept_8hpp.html">ggl/core/concepts/nsphere_concept.hpp</a>&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>&gt;</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="polygon__concept_8hpp.html">ggl/core/concepts/polygon_concept.hpp</a>&gt;</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;<a class="code" href="ring__concept_8hpp.html">ggl/core/concepts/ring_concept.hpp</a>&gt;</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
+<a name="l00028"></a>00028
+<a name="l00061"></a>00061 <span class="keyword">namespace </span>ggl
+<a name="l00062"></a>00062 {
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00065"></a>00065 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a> {
+<a name="l00066"></a>00066
+<a name="l00068"></a>00068 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> S, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00069"></a>00069 <span class="keyword">struct </span>envelope_nsphere
+<a name="l00070"></a>00070 {
+<a name="l00071"></a>00071 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(S <span class="keyword">const</span>&amp; s, B&amp; mbr, Strategy <span class="keyword">const</span>&amp;)
+<a name="l00072"></a>00072 {
+<a name="l00073"></a>00073 assert_dimension&lt;S, 2&gt;();
+<a name="l00074"></a>00074 assert_dimension&lt;B, 2&gt;();
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 <span class="keyword">typename</span> radius_type&lt;S&gt;::type r = get_radius&lt;0&gt;(s);
+<a name="l00077"></a>00077 set&lt;min_corner, 0&gt;(mbr, get&lt;0&gt;(s) - r);
+<a name="l00078"></a>00078 set&lt;min_corner, 1&gt;(mbr, get&lt;1&gt;(s) - r);
+<a name="l00079"></a>00079 set&lt;max_corner, 0&gt;(mbr, get&lt;0&gt;(s) + r);
+<a name="l00080"></a>00080 set&lt;max_corner, 1&gt;(mbr, get&lt;1&gt;(s) + r);
+<a name="l00081"></a>00081 }
+<a name="l00082"></a>00082 };
+<a name="l00083"></a>00083
+<a name="l00084"></a>00084
+<a name="l00086"></a>00086 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00087"></a>00087 <span class="keyword">struct </span>envelope_point
+<a name="l00088"></a>00088 {
+<a name="l00089"></a>00089 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(P <span class="keyword">const</span>&amp; p, B&amp; mbr, Strategy <span class="keyword">const</span>&amp;)
+<a name="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="l00097"></a>00097
+<a name="l00099"></a>00099 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> S, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00100"></a>00100 <span class="keyword">struct </span>envelope_segment
+<a name="l00101"></a>00101 {
+<a name="l00102"></a>00102 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(S <span class="keyword">const</span>&amp; s, B&amp; mbr, Strategy <span class="keyword">const</span>&amp;)
+<a name="l00103"></a>00103 {
+<a name="l00104"></a>00104 <a class="code" href="group__access.html#gaa27514a7d1c16133d28dd5601cd32fd" title="assign to a box inverse infinite">ggl::assign_inverse</a>(mbr);
+<a name="l00105"></a>00105 <a class="code" href="group__combine.html#gf2336ad085ad8b79cde5a759ab229199" title="Combines a box with another geometry (box, point).">ggl::combine</a>(mbr, s.first);
+<a name="l00106"></a>00106 <a class="code" href="group__combine.html#gf2336ad085ad8b79cde5a759ab229199" title="Combines a box with another geometry (box, point).">ggl::combine</a>(mbr, s.second);
+<a name="l00107"></a>00107 }
+<a name="l00108"></a>00108 };
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110
+<a name="l00112"></a>00112 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00113"></a>00113 <span class="keyword">inline</span> <span class="keywordtype">void</span> envelope_range_state(R <span class="keyword">const</span>&amp; range, Strategy <span class="keyword">const</span>&amp; strategy, <span class="keyword">typename</span> Strategy::state_type&amp; state)
+<a name="l00114"></a>00114 {
+<a name="l00115"></a>00115 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator&lt;R&gt;::type iterator_type;
+<a name="l00116"></a>00116
+<a name="l00117"></a>00117 <span class="keywordflow">for</span> (iterator_type it = boost::begin(range); it != boost::end(range); it++)
+<a name="l00118"></a>00118 {
+<a name="l00119"></a>00119 strategy(*it, state);
+<a name="l00120"></a>00120 }
+<a name="l00121"></a>00121 }
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123
+<a name="l00124"></a>00124
+<a name="l00126"></a>00126 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00127"></a>00127 <span class="keyword">struct </span>envelope_range
+<a name="l00128"></a>00128 {
+<a name="l00130"></a>00130 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(R <span class="keyword">const</span>&amp; range, B&amp; mbr, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00131"></a>00131 {
+<a name="l00132"></a>00132 <span class="keyword">typename</span> Strategy::state_type state(mbr);
+<a name="l00133"></a>00133 envelope_range_state(range, strategy, state);
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135 };
+<a name="l00136"></a>00136
+<a name="l00137"></a>00137 }} <span class="comment">// namespace detail::envelope</span>
+<a name="l00138"></a>00138 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00139"></a>00139 <span class="preprocessor"></span>
+<a name="l00140"></a>00140 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00141"></a>00141 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00142"></a>00142 {
+<a name="l00143"></a>00143
+<a name="l00144"></a>00144 <span class="keyword">template</span>
+<a name="l00145"></a>00145 &lt;
+<a name="l00146"></a>00146 <span class="keyword">typename</span> Tag1, <span class="keyword">typename</span> Tag2,
+<a name="l00147"></a>00147 <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Box,
+<a name="l00148"></a>00148 <span class="keyword">typename</span> Strategy
+<a name="l00149"></a>00149 &gt;
+<a name="l00150"></a>00150 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a> {};
+<a name="l00151"></a>00151
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00154"></a>00154 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;point_tag, box_tag, P, B, Strategy&gt;
+<a name="l00155"></a>00155 : detail::<a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_point&lt;P, B, Strategy&gt;
+<a name="l00156"></a>00156 {
+<a name="l00157"></a>00157 <span class="keyword">private</span>:
+<a name="l00158"></a>00158 BOOST_CONCEPT_ASSERT( (concept::ConstPoint&lt;P&gt;) );
+<a name="l00159"></a>00159 BOOST_CONCEPT_ASSERT( (concept::Box&lt;B&gt;) );
+<a name="l00160"></a>00160 };
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162
+<a name="l00163"></a>00163 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00164"></a>00164 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;box_tag, box_tag, B, B, Strategy&gt;
+<a name="l00165"></a>00165 {
+<a name="l00171"></a>00171 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(B <span class="keyword">const</span>&amp; b, B&amp; mbr, Strategy <span class="keyword">const</span>&amp;)
+<a name="l00172"></a>00172 {
+<a name="l00173"></a>00173 mbr = b;
+<a name="l00174"></a>00174 }
+<a name="l00175"></a>00175
+<a name="l00176"></a>00176 <span class="keyword">private</span>:
+<a name="l00177"></a>00177 BOOST_CONCEPT_ASSERT( (concept::Box&lt;B&gt;) );
+<a name="l00178"></a>00178 };
+<a name="l00179"></a>00179
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> S, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00182"></a>00182 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;segment_tag, box_tag, S, B, Strategy&gt;
+<a name="l00183"></a>00183 : detail::<a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_segment&lt;S, B, Strategy&gt;
+<a name="l00184"></a>00184 {};
+<a name="l00185"></a>00185
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> S, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00188"></a>00188 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;nsphere_tag, box_tag, S, B, Strategy&gt;
+<a name="l00189"></a>00189 : detail::<a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_nsphere&lt;S, B, Strategy&gt;
+<a name="l00190"></a>00190 {
+<a name="l00191"></a>00191 <span class="keyword">private</span>:
+<a name="l00192"></a>00192 BOOST_CONCEPT_ASSERT( (concept::ConstNsphere&lt;S&gt;) );
+<a name="l00193"></a>00193 BOOST_CONCEPT_ASSERT( (concept::Box&lt;B&gt;) );
+<a name="l00194"></a>00194 };
+<a name="l00195"></a>00195
+<a name="l00196"></a>00196 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> L, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00197"></a>00197 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;linestring_tag, box_tag, L, B, Strategy&gt;
+<a name="l00198"></a>00198 : detail::<a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_range&lt;L, B, Strategy&gt;
+<a name="l00199"></a>00199 {
+<a name="l00200"></a>00200 <span class="keyword">private</span>:
+<a name="l00201"></a>00201 BOOST_CONCEPT_ASSERT( (concept::ConstLinestring&lt;L&gt;) );
+<a name="l00202"></a>00202 BOOST_CONCEPT_ASSERT( (concept::Box&lt;B&gt;) );
+<a name="l00203"></a>00203 };
+<a name="l00204"></a>00204
+<a name="l00205"></a>00205
+<a name="l00206"></a>00206 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00207"></a>00207 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;ring_tag, box_tag, R, B, Strategy&gt;
+<a name="l00208"></a>00208 : detail::<a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_range&lt;R, B, Strategy&gt;
+<a name="l00209"></a>00209 {
+<a name="l00210"></a>00210 <span class="keyword">private</span>:
+<a name="l00211"></a>00211 BOOST_CONCEPT_ASSERT( (concept::ConstRing&lt;R&gt;) );
+<a name="l00212"></a>00212 BOOST_CONCEPT_ASSERT( (concept::Box&lt;B&gt;) );
+<a name="l00213"></a>00213 };
+<a name="l00214"></a>00214
+<a name="l00215"></a>00215
+<a name="l00216"></a>00216 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00217"></a>00217 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>&lt;polygon_tag, box_tag, P, B, Strategy&gt;
+<a name="l00218"></a>00218 {
+<a name="l00219"></a>00219 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(P <span class="keyword">const</span>&amp; poly, B&amp; mbr, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00220"></a>00220 {
+<a name="l00221"></a>00221 <span class="comment">// For polygon inspecting outer linear_ring is sufficient</span>
+<a name="l00222"></a>00222
+<a name="l00223"></a>00223 detail::envelope::envelope_range
+<a name="l00224"></a>00224 &lt;
+<a name="l00225"></a>00225 <span class="keyword">typename</span> ring_type&lt;P&gt;::type,
+<a name="l00226"></a>00226 B,
+<a name="l00227"></a>00227 Strategy
+<a name="l00228"></a>00228 &gt;::apply(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), mbr, strategy);
+<a name="l00229"></a>00229 }
+<a name="l00230"></a>00230
+<a name="l00231"></a>00231 <span class="keyword">private</span>:
+<a name="l00232"></a>00232 BOOST_CONCEPT_ASSERT( (concept::ConstPolygon&lt;P&gt;) );
+<a name="l00233"></a>00233 BOOST_CONCEPT_ASSERT( (concept::Box&lt;B&gt;) );
+<a name="l00234"></a>00234 };
+<a name="l00235"></a>00235
+<a name="l00236"></a>00236
+<a name="l00237"></a>00237 } <span class="comment">// namespace dispatch</span>
+<a name="l00238"></a>00238 <span class="preprocessor">#endif</span>
+<a name="l00239"></a>00239 <span class="preprocessor"></span>
+<a name="l00240"></a>00240
+<a name="l00248"></a>00248 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> B, <span class="keyword">typename</span> S&gt;
+<a name="l00249"></a><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36">00249</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>(G <span class="keyword">const</span>&amp; geometry, B&amp; mbr, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00250"></a>00250 {
+<a name="l00251"></a>00251 <a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">dispatch::envelope</a>
+<a name="l00252"></a>00252 &lt;
+<a name="l00253"></a>00253 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>, <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;B&gt;::type</a>,
+<a name="l00254"></a>00254 G, B, S
+<a name="l00255"></a>00255 &gt;::apply(geometry, mbr, strategy);
+<a name="l00256"></a>00256 }
+<a name="l00257"></a>00257
+<a name="l00258"></a>00258
+<a name="l00259"></a>00259
+<a name="l00260"></a>00260
+<a name="l00273"></a>00273 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> B&gt;
+<a name="l00274"></a><a class="code" href="group__envelope.html#g89671917cfb1753f65d4bcc2fc334bf9">00274</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>(G <span class="keyword">const</span>&amp; geometry, B&amp; mbr)
+<a name="l00275"></a>00275 {
+<a name="l00276"></a>00276 <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__envelope.html" title="Traits class binding envelope strategy to a coordinate system.">strategy_envelope</a>
+<a name="l00277"></a>00277 &lt;
+<a name="l00278"></a>00278 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;typename point_type&lt;G&gt;::type</a>&gt;::type,
+<a name="l00279"></a>00279 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;typename point_type&lt;B&gt;::type</a>&gt;::type,
+<a name="l00280"></a>00280 <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;G&gt;::type</a>,
+<a name="l00281"></a>00281 B
+<a name="l00282"></a>00282 &gt;::type strategy;
+<a name="l00283"></a>00283
+<a name="l00284"></a>00284 <a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>(geometry, mbr, strategy);
+<a name="l00285"></a>00285 }
+<a name="l00286"></a>00286
+<a name="l00287"></a>00287
+<a name="l00294"></a>00294 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
+<a name="l00295"></a><a class="code" href="group__envelope.html#g0b2b7b9ef2bc07f4b45695606f3d292d">00295</a> <span class="keyword">inline</span> B <a class="code" href="group__envelope.html#g0b2b7b9ef2bc07f4b45695606f3d292d" title="Calculate and return envelope of a geometry.">make_envelope</a>(G <span class="keyword">const</span>&amp; geometry, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00296"></a>00296 {
+<a name="l00297"></a>00297 B <a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a>;
+<a name="l00298"></a>00298 <a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">dispatch::envelope</a>
+<a name="l00299"></a>00299 &lt;
+<a name="l00300"></a>00300 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>, <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;B&gt;::type</a>,
+<a name="l00301"></a>00301 G, B, S
+<a name="l00302"></a>00302 &gt;::apply(geometry, box, strategy);
+<a name="l00303"></a>00303
+<a name="l00304"></a>00304 <span class="keywordflow">return</span> box;
+<a name="l00305"></a>00305 }
+<a name="l00306"></a>00306
+<a name="l00307"></a>00307
+<a name="l00313"></a>00313 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> G&gt;
+<a name="l00314"></a><a class="code" href="group__envelope.html#g938cf2804a87e138cbf4b5b65314a3e4">00314</a> <span class="keyword">inline</span> B <a class="code" href="group__envelope.html#g0b2b7b9ef2bc07f4b45695606f3d292d" title="Calculate and return envelope of a geometry.">make_envelope</a>(G <span class="keyword">const</span>&amp; geometry)
+<a name="l00315"></a>00315 {
+<a name="l00316"></a>00316 <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__envelope.html" title="Traits class binding envelope strategy to a coordinate system.">strategy_envelope</a>
+<a name="l00317"></a>00317 &lt;
+<a name="l00318"></a>00318 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;typename point_type&lt;G&gt;::type</a>&gt;::type,
+<a name="l00319"></a>00319 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;typename point_type&lt;B&gt;::type</a>&gt;::type,
+<a name="l00320"></a>00320 <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;G&gt;::type</a>,
+<a name="l00321"></a>00321 B
+<a name="l00322"></a>00322 &gt;::type strategy;
+<a name="l00323"></a>00323 <span class="keywordflow">return</span> make_envelope&lt;B&gt;(geometry, strategy);
+<a name="l00324"></a>00324 }
+<a name="l00325"></a>00325
+<a name="l00326"></a>00326
+<a name="l00327"></a>00327 } <span class="comment">// namespace ggl</span>
+<a name="l00328"></a>00328
+<a name="l00329"></a>00329 <span class="preprocessor">#endif // GGL_ALGORITHMS_ENVELOPE_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/get_section.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , typename Section &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__sectionalize.html#g5c0732d32eb6c6154f615b3a3337f4b9">ggl::get_section</a> (Geometry const &amp;geometry, Section const &amp;section, typename point_const_iterator&lt; Geometry &gt;::type &amp;begin, typename point_const_iterator&lt; Geometry &gt;::type &amp;end)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get iterators for a specified <a class="el" href="structggl_1_1section.html" title="Structure containing section information.">section</a>. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,155 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/get_section.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_ALGORITHMS_GET_SECTION_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_GET_SECTION_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;boost/concept_check.hpp&gt;</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/concept/requires.hpp&gt;</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="access_8hpp.html">ggl/core/access.hpp</a>&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="iterators_2point__const__iterator_8hpp.html">ggl/iterators/point_const_iterator.hpp</a>&gt;</span>
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>&gt;</span>
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029 <span class="keyword">namespace </span>ggl
+<a name="l00030"></a>00030 {
+<a name="l00031"></a>00031
+<a name="l00032"></a>00032
+<a name="l00033"></a>00033 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00035"></a>00035 {
+<a name="l00036"></a>00036
+<a name="l00037"></a>00037 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Section&gt;
+<a name="l00038"></a>00038 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g5c0732d32eb6c6154f615b3a3337f4b9" title="Get iterators for a specified section.">get_section</a>
+<a name="l00039"></a>00039 {
+<a name="l00040"></a>00040 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__const__iterator.html" title="Meta-function which defines point-const-iterator type.">ggl::point_const_iterator&lt;Geometry&gt;::type</a> iterator_type;
+<a name="l00041"></a>00041 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Geometry <span class="keyword">const</span>&amp; geometry, Section <span class="keyword">const</span>&amp; section,
+<a name="l00042"></a>00042 iterator_type&amp; begin, iterator_type&amp; end)
+<a name="l00043"></a>00043 {
+<a name="l00044"></a>00044 begin = boost::begin(geometry) + section.begin_index;
+<a name="l00045"></a>00045 end = boost::begin(geometry) + section.end_index + 1;
+<a name="l00046"></a>00046 }
+<a name="l00047"></a>00047 };
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Section&gt;
+<a name="l00050"></a>00050 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g5c0732d32eb6c6154f615b3a3337f4b9" title="Get iterators for a specified section.">get_section</a>&lt;polygon_tag, Polygon, Section&gt;
+<a name="l00051"></a>00051 {
+<a name="l00052"></a>00052 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__const__iterator.html" title="Meta-function which defines point-const-iterator type.">ggl::point_const_iterator&lt;Polygon&gt;::type</a> iterator_type;
+<a name="l00053"></a>00053 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Polygon <span class="keyword">const</span>&amp; polygon, Section <span class="keyword">const</span>&amp; section,
+<a name="l00054"></a>00054 iterator_type&amp; begin, iterator_type&amp; end)
+<a name="l00055"></a>00055 {
+<a name="l00056"></a>00056 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1ring__type.html" title="Meta-function which defines ring type of (multi)polygon geometry.">ggl::ring_type&lt;Polygon&gt;::type</a> ring_type;
+<a name="l00057"></a>00057 ring_type <span class="keyword">const</span>&amp; ring = section.ring_index &lt; 0
+<a name="l00058"></a>00058 ? <a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">ggl::exterior_ring</a>(polygon)
+<a name="l00059"></a>00059 : ggl::<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(polygon)[section.ring_index];
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061 begin = boost::begin(ring) + section.begin_index;
+<a name="l00062"></a>00062 end = boost::begin(ring) + section.end_index + 1;
+<a name="l00063"></a>00063 }
+<a name="l00064"></a>00064 };
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066 } <span class="comment">// namespace dispatch</span>
+<a name="l00067"></a>00067 <span class="preprocessor">#endif</span>
+<a name="l00068"></a>00068 <span class="preprocessor"></span>
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071
+<a name="l00084"></a>00084 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Section&gt;
+<a name="l00085"></a><a class="code" href="group__sectionalize.html#g5c0732d32eb6c6154f615b3a3337f4b9">00085</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__sectionalize.html#g5c0732d32eb6c6154f615b3a3337f4b9" title="Get iterators for a specified section.">get_section</a>(Geometry <span class="keyword">const</span>&amp; geometry, Section <span class="keyword">const</span>&amp; <a class="code" href="structggl_1_1section.html" title="Structure containing section information.">section</a>,
+<a name="l00086"></a>00086 <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__const__iterator.html" title="Meta-function which defines point-const-iterator type.">point_const_iterator&lt;Geometry&gt;::type</a>&amp; begin,
+<a name="l00087"></a>00087 <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__const__iterator.html" title="Meta-function which defines point-const-iterator type.">point_const_iterator&lt;Geometry&gt;::type</a>&amp; end)
+<a name="l00088"></a>00088 {
+<a name="l00089"></a>00089 <a class="code" href="group__sectionalize.html#g5c0732d32eb6c6154f615b3a3337f4b9" title="Get iterators for a specified section.">dispatch::get_section</a>
+<a name="l00090"></a>00090 &lt;
+<a name="l00091"></a>00091 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00092"></a>00092 Geometry,
+<a name="l00093"></a>00093 Section
+<a name="l00094"></a>00094 &gt;::apply(geometry, section, begin, end);
+<a name="l00095"></a>00095 }
+<a name="l00096"></a>00096
+<a name="l00097"></a>00097
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100 } <span class="comment">// namespace ggl</span>
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 <span class="preprocessor">#endif // GGL_ALGORITHMS_GET_SECTION_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/intersection.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename GeometryOut , typename Geometry1 , typename Geometry2 , typename OutputIterator &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">OutputIterator&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5">ggl::intersection</a> (Geometry1 const &amp;geometry1, Geometry2 const &amp;geometry2, OutputIterator out)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Intersects two geometries which each other. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

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

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/length.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G , typename S &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__length.html#ge20f9cdc37ebded2be03934edb05c3dd">ggl::length</a> (G const &amp;geometry, S const &amp;strategy)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate length of a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa">ggl::length</a> (const G &amp;geometry)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate length of a geometry. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,203 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/length.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_ALGORITHMS_LENGTH_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_LENGTH_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;iterator&gt;</span>
+<a name="l00013"></a>00013
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;boost/mpl/if.hpp&gt;</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;boost/type_traits.hpp&gt;</span>
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="calculate__null_8hpp.html">ggl/algorithms/detail/calculate_null.hpp</a>&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
+<a name="l00025"></a>00025
+<a name="l00039"></a>00039 <span class="keyword">namespace </span>ggl
+<a name="l00040"></a>00040 {
+<a name="l00041"></a>00041
+<a name="l00042"></a>00042 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">length</a> {
+<a name="l00044"></a>00044
+<a name="l00045"></a>00045
+<a name="l00046"></a>00046 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Segment, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00047"></a>00047 <span class="keyword">struct </span>segment_length
+<a name="l00048"></a>00048 {
+<a name="l00049"></a>00049 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">double</span> apply(Segment <span class="keyword">const</span>&amp; segment, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00050"></a>00050 {
+<a name="l00051"></a>00051 <span class="comment">// BSG 10 APR 2009</span>
+<a name="l00052"></a>00052 <span class="comment">// TODO: the segment concept has to be such that it is easy to return a point from it.</span>
+<a name="l00053"></a>00053 <span class="comment">// Now it only accesses per coordinate</span>
+<a name="l00054"></a>00054 <span class="keywordflow">return</span> strategy(segment.first, segment.second);
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056 };
+<a name="l00057"></a>00057
+<a name="l00062"></a>00062 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00063"></a>00063 <span class="keyword">struct </span>range_length
+<a name="l00064"></a>00064 {
+<a name="l00065"></a>00065 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">double</span> apply(Range <span class="keyword">const</span>&amp; range, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00066"></a>00066 {
+<a name="l00067"></a>00067 <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...">ggl::coordinate_type&lt;Range&gt;::type</a> coordinate_type;
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 <span class="comment">// Because result is square-rooted, for integer, the cast should</span>
+<a name="l00070"></a>00070 <span class="comment">// go to double and NOT to T</span>
+<a name="l00071"></a>00071 <span class="keyword">typedef</span> <span class="keyword">typename</span>
+<a name="l00072"></a>00072 boost::mpl::if_c
+<a name="l00073"></a>00073 &lt;
+<a name="l00074"></a>00074 boost::is_integral&lt;coordinate_type&gt;::type::value,
+<a name="l00075"></a>00075 double,
+<a name="l00076"></a>00076 coordinate_type
+<a name="l00077"></a>00077 &gt;::type calculation_type;
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 calculation_type sum = 0.0;
+<a name="l00080"></a>00080
+<a name="l00081"></a>00081 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator&lt;Range&gt;::type iterator_type;
+<a name="l00082"></a>00082 iterator_type it = boost::begin(range);
+<a name="l00083"></a>00083 <span class="keywordflow">if</span> (it != boost::end(range))
+<a name="l00084"></a>00084 {
+<a name="l00085"></a>00085 iterator_type previous = it++;
+<a name="l00086"></a>00086 <span class="keywordflow">while</span>(it != boost::end(range))
+<a name="l00087"></a>00087 {
+<a name="l00088"></a>00088 <span class="comment">// Add point-point distance using the return type belonging to strategy</span>
+<a name="l00089"></a>00089 sum += strategy(*previous, *it);
+<a name="l00090"></a>00090 previous = it++;
+<a name="l00091"></a>00091 }
+<a name="l00092"></a>00092 }
+<a name="l00093"></a>00093
+<a name="l00094"></a>00094 <span class="keywordflow">return</span> sum;
+<a name="l00095"></a>00095 }
+<a name="l00096"></a>00096 };
+<a name="l00097"></a>00097
+<a name="l00098"></a>00098 }} <span class="comment">// namespace detail::length</span>
+<a name="l00099"></a>00099 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00100"></a>00100 <span class="preprocessor"></span>
+<a name="l00101"></a>00101 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00102"></a>00102 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00103"></a>00103 {
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
+<a name="l00107"></a>00107 <span class="keyword">struct </span><a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">length</a> : detail::calculate_null&lt;double, G, S&gt;
+<a name="l00108"></a>00108 {};
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110
+<a name="l00111"></a>00111 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
+<a name="l00112"></a>00112 <span class="keyword">struct </span><a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">length</a>&lt;linestring_tag, G, S&gt;
+<a name="l00113"></a>00113 : detail::<a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">length</a>::range_length&lt;G, S&gt;
+<a name="l00114"></a>00114 {};
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116
+<a name="l00117"></a>00117 <span class="comment">// RING: length is currently 0.0 but it might be argued that it is the "perimeter"</span>
+<a name="l00118"></a>00118 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
+<a name="l00119"></a>00119 <span class="keyword">struct </span><a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">length</a>&lt;segment_tag, G, S&gt; : detail::<a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">length</a>::segment_length&lt;G, S&gt;
+<a name="l00120"></a>00120 {};
+<a name="l00121"></a>00121
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123 } <span class="comment">// namespace dispatch</span>
+<a name="l00124"></a>00124 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00125"></a>00125 <span class="preprocessor"></span>
+<a name="l00138"></a>00138 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G&gt;
+<a name="l00139"></a><a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa">00139</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">length</a>(<span class="keyword">const</span> G&amp; geometry)
+<a name="l00140"></a>00140 {
+<a name="l00141"></a>00141 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;G&gt;::type</a> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+<a name="l00142"></a>00142 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;point_type&gt;::type</a> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag</a>;
+<a name="l00143"></a>00143 <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="l00144"></a>00144 &lt;
+<a name="l00145"></a>00145 cs_tag,
+<a name="l00146"></a>00146 cs_tag,
+<a name="l00147"></a>00147 point_type,
+<a name="l00148"></a>00148 point_type
+<a name="l00149"></a>00149 &gt;::type strategy_type;
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151 <span class="keywordflow">return</span> <a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">dispatch::length</a>
+<a name="l00152"></a>00152 &lt;
+<a name="l00153"></a>00153 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G&gt;::type</a>,
+<a name="l00154"></a>00154 G,
+<a name="l00155"></a>00155 strategy_type
+<a name="l00156"></a>00156 &gt;::apply(geometry, strategy_type());
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158
+<a name="l00173"></a>00173 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
+<a name="l00174"></a><a class="code" href="group__length.html#ge20f9cdc37ebded2be03934edb05c3dd">00174</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">length</a>(G <span class="keyword">const</span>&amp; geometry, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00175"></a>00175 {
+<a name="l00176"></a>00176 <span class="keywordflow">return</span> dispatch::length&lt;typename tag&lt;G&gt;::type, G, S&gt;::apply(geometry, strategy);
+<a name="l00177"></a>00177 }
+<a name="l00178"></a>00178
+<a name="l00179"></a>00179 } <span class="comment">// namespace ggl</span>
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 <span class="preprocessor">#endif // GGL_ALGORITHMS_LENGTH_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/num_points.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">std::size_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__access.html#g8d58faff2722b073b44c24f19577e267">ggl::num_points</a> (Geometry const &amp;geometry)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get number of points <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,202 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/num_points.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_ALGORITHMS_NUM_POINTS_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_NUM_POINTS_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;cstddef&gt;</span>
+<a name="l00013"></a>00013
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/range.hpp&gt;</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;boost/type_traits/remove_const.hpp&gt;</span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="is__linear_8hpp.html">ggl/core/is_linear.hpp</a>&gt;</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>ggl
+<a name="l00022"></a>00022 {
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a> {
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range&gt;
+<a name="l00029"></a>00029 <span class="keyword">struct </span>range_count
+<a name="l00030"></a>00030 {
+<a name="l00031"></a>00031 <span class="keyword">static</span> <span class="keyword">inline</span> std::size_t apply(Range <span class="keyword">const</span>&amp; range)
+<a name="l00032"></a>00032 {
+<a name="l00033"></a>00033 <span class="keywordflow">return</span> boost::size(range);
+<a name="l00034"></a>00034 }
+<a name="l00035"></a>00035 };
+<a name="l00036"></a>00036
+<a name="l00037"></a>00037 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, std::<span class="keywordtype">size_t</span> D&gt;
+<a name="l00038"></a>00038 <span class="keyword">struct </span>other_count
+<a name="l00039"></a>00039 {
+<a name="l00040"></a>00040 <span class="keyword">static</span> <span class="keyword">inline</span> std::size_t apply(Geometry <span class="keyword">const</span>&amp; geometry)
+<a name="l00041"></a>00041 {
+<a name="l00042"></a>00042 <span class="keywordflow">return</span> D;
+<a name="l00043"></a>00043 }
+<a name="l00044"></a>00044 };
+<a name="l00045"></a>00045
+<a name="l00046"></a>00046 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon&gt;
+<a name="l00047"></a>00047 <span class="keyword">struct </span>polygon_count
+<a name="l00048"></a>00048 {
+<a name="l00049"></a>00049 <span class="keyword">static</span> <span class="keyword">inline</span> std::size_t apply(Polygon <span class="keyword">const</span>&amp; poly)
+<a name="l00050"></a>00050 {
+<a name="l00051"></a>00051 std::size_t n = boost::size(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly));
+<a name="l00052"></a>00052 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00053"></a>00053 &lt;
+<a name="l00054"></a>00054 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type
+<a name="l00055"></a>00055 &gt;::type iterator;
+<a name="l00056"></a>00056
+<a name="l00057"></a>00057 <span class="keywordflow">for</span> (iterator it = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00058"></a>00058 it != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00059"></a>00059 ++it)
+<a name="l00060"></a>00060 {
+<a name="l00061"></a>00061 n += boost::size(*it);
+<a name="l00062"></a>00062 }
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="keywordflow">return</span> n;
+<a name="l00065"></a>00065 }
+<a name="l00066"></a>00066 };
+<a name="l00067"></a>00067
+<a name="l00068"></a>00068 }} <span class="comment">// namespace detail::num_points</span>
+<a name="l00069"></a>00069 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00070"></a>00070 <span class="preprocessor"></span>
+<a name="l00071"></a>00071
+<a name="l00072"></a>00072 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00073"></a>00073 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00074"></a>00074 {
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> GeometryTag, <span class="keywordtype">bool</span> Linear, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00077"></a>00077 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>
+<a name="l00078"></a>00078 {
+<a name="l00079"></a>00079 };
+<a name="l00080"></a>00080
+<a name="l00081"></a>00081 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> GeometryTag, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00082"></a>00082 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;GeometryTag, true, Geometry&gt;
+<a name="l00083"></a>00083 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::range_count&lt;Geometry&gt;
+<a name="l00084"></a>00084 {
+<a name="l00085"></a>00085 };
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00088"></a>00088 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;point_tag, false, Geometry&gt;
+<a name="l00089"></a>00089 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count&lt;Geometry, 1&gt;
+<a name="l00090"></a>00090 {
+<a name="l00091"></a>00091 };
+<a name="l00092"></a>00092
+<a name="l00093"></a>00093 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00094"></a>00094 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;box_tag, false, Geometry&gt;
+<a name="l00095"></a>00095 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count&lt;Geometry, 4&gt;
+<a name="l00096"></a>00096 {
+<a name="l00097"></a>00097 };
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00100"></a>00100 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;segment_tag, false, Geometry&gt;
+<a name="l00101"></a>00101 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count&lt;Geometry, 2&gt;
+<a name="l00102"></a>00102 {
+<a name="l00103"></a>00103 };
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00106"></a>00106 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;nsphere_tag, false, Geometry&gt;
+<a name="l00107"></a>00107 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count&lt;Geometry, 1&gt;
+<a name="l00108"></a>00108 {
+<a name="l00109"></a>00109 };
+<a name="l00110"></a>00110
+<a name="l00111"></a>00111 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00112"></a>00112 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;polygon_tag, false, Geometry&gt;
+<a name="l00113"></a>00113 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::polygon_count&lt;Geometry&gt;
+<a name="l00114"></a>00114 {
+<a name="l00115"></a>00115 };
+<a name="l00116"></a>00116
+<a name="l00117"></a>00117 } <span class="comment">// namespace dispatch</span>
+<a name="l00118"></a>00118 <span class="preprocessor">#endif</span>
+<a name="l00119"></a>00119 <span class="preprocessor"></span>
+<a name="l00120"></a>00120
+<a name="l00131"></a>00131 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00132"></a><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267">00132</a> <span class="keyword">inline</span> std::size_t <a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>(Geometry <span class="keyword">const</span>&amp; geometry)
+<a name="l00133"></a>00133 {
+<a name="l00134"></a>00134 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;Geometry&gt;::type ncg_type;
+<a name="l00135"></a>00135
+<a name="l00136"></a>00136 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">dispatch::num_points</a>
+<a name="l00137"></a>00137 &lt;
+<a name="l00138"></a>00138 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00139"></a>00139 <a class="code" href="structggl_1_1is__linear.html" title="Meta-function defining &amp;quot;true&amp;quot; for linear types (linestring,ring), &amp;quot;false&amp;quot;...">is_linear&lt;ncg_type&gt;::value</a>,
+<a name="l00140"></a>00140 ncg_type
+<a name="l00141"></a>00141 &gt;::apply(geometry);
+<a name="l00142"></a>00142 }
+<a name="l00143"></a>00143
+<a name="l00144"></a>00144 }
+<a name="l00145"></a>00145
+<a name="l00146"></a>00146
+<a name="l00147"></a>00147 <span class="preprocessor">#endif // GGL_ALGORITHMS_NUM_POINTS_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/perimeter.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , typename Strategy &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__perimeter.html#g840995936a96075829b48a29a4a33b19">ggl::perimeter</a> (Geometry const &amp;geometry, Strategy const &amp;strategy)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate perimeter of a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba">ggl::perimeter</a> (Geometry const &amp;geometry)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate perimeter of a geometry. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,186 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/perimeter.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_ALGORITHMS_PERIMETER_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_PERIMETER_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;cmath&gt;</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;iterator&gt;</span>
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="algorithms_2length_8hpp.html">ggl/algorithms/length.hpp</a>&gt;</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>&gt;</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
+<a name="l00022"></a>00022
+<a name="l00028"></a>00028 <span class="keyword">namespace </span>ggl
+<a name="l00029"></a>00029 {
+<a name="l00030"></a>00030
+<a name="l00031"></a>00031 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba" title="Calculate perimeter of a geometry.">perimeter</a> {
+<a name="l00033"></a>00033
+<a name="l00034"></a>00034 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> S&gt;
+<a name="l00035"></a>00035 <span class="keyword">struct </span>range_perimeter : detail::<a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">length</a>::range_length&lt;R, S&gt;
+<a name="l00036"></a>00036 {
+<a name="l00037"></a>00037 };
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 <span class="comment">// might be merged with "range_area" with policy to sum/subtract interior rings</span>
+<a name="l00040"></a>00040 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> S&gt;
+<a name="l00041"></a>00041 <span class="keyword">struct </span>polygon_perimeter
+<a name="l00042"></a>00042 {
+<a name="l00043"></a>00043 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">double</span> apply(Polygon <span class="keyword">const</span>&amp; poly, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00044"></a>00044 {
+<a name="l00045"></a>00045 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type&lt;Polygon&gt;::type ring_type;
+<a name="l00046"></a>00046 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00047"></a>00047 &lt;
+<a name="l00048"></a>00048 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type
+<a name="l00049"></a>00049 &gt;::type iterator_type;
+<a name="l00050"></a>00050
+<a name="l00051"></a>00051 <span class="keywordtype">double</span> sum = std::abs(range_perimeter&lt;ring_type, S&gt;::apply(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), strategy));
+<a name="l00052"></a>00052
+<a name="l00053"></a>00053 <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="l00054"></a>00054 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="l00055"></a>00055 {
+<a name="l00056"></a>00056 sum += std::abs(range_perimeter&lt;ring_type, S&gt;::apply(*it, strategy));
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058 <span class="keywordflow">return</span> sum;
+<a name="l00059"></a>00059 }
+<a name="l00060"></a>00060 };
+<a name="l00061"></a>00061
+<a name="l00062"></a>00062 }} <span class="comment">// namespace detail:;perimeter</span>
+<a name="l00063"></a>00063 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00064"></a>00064 <span class="preprocessor"></span>
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00067"></a>00067 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00068"></a>00068 {
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070 <span class="comment">// Default perimeter is 0.0, specializations implement calculated values</span>
+<a name="l00071"></a>00071 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00072"></a>00072 <span class="keyword">struct </span><a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba" title="Calculate perimeter of a geometry.">perimeter</a> : detail::calculate_null&lt;double, Geometry, Strategy&gt;
+<a name="l00073"></a>00073 {};
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00076"></a>00076 <span class="keyword">struct </span><a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba" title="Calculate perimeter of a geometry.">perimeter</a>&lt;ring_tag, Geometry, Strategy&gt;
+<a name="l00077"></a>00077 : detail::<a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba" title="Calculate perimeter of a geometry.">perimeter</a>::range_perimeter&lt;Geometry, Strategy&gt;
+<a name="l00078"></a>00078 {};
+<a name="l00079"></a>00079
+<a name="l00080"></a>00080 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00081"></a>00081 <span class="keyword">struct </span><a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba" title="Calculate perimeter of a geometry.">perimeter</a>&lt;polygon_tag, Geometry, Strategy&gt;
+<a name="l00082"></a>00082 : detail::<a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba" title="Calculate perimeter of a geometry.">perimeter</a>::polygon_perimeter&lt;Geometry, Strategy&gt;
+<a name="l00083"></a>00083 {};
+<a name="l00084"></a>00084
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 <span class="comment">// box,n-sphere: to be implemented</span>
+<a name="l00087"></a>00087
+<a name="l00088"></a>00088 } <span class="comment">// namespace dispatch</span>
+<a name="l00089"></a>00089 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00090"></a>00090 <span class="preprocessor"></span>
+<a name="l00091"></a>00091
+<a name="l00099"></a>00099 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00100"></a><a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba">00100</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba" title="Calculate perimeter of a geometry.">perimeter</a>(Geometry <span class="keyword">const</span>&amp; geometry)
+<a name="l00101"></a>00101 {
+<a name="l00102"></a>00102 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type&lt;Geometry&gt;::type</a> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+<a name="l00103"></a>00103 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag&lt;point_type&gt;::type</a> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag</a>;
+<a name="l00104"></a>00104 <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="l00105"></a>00105 &lt;
+<a name="l00106"></a>00106 cs_tag,
+<a name="l00107"></a>00107 cs_tag,
+<a name="l00108"></a>00108 point_type,
+<a name="l00109"></a>00109 point_type
+<a name="l00110"></a>00110 &gt;::type strategy_type;
+<a name="l00111"></a>00111
+<a name="l00112"></a>00112 <span class="keywordflow">return</span> <a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba" title="Calculate perimeter of a geometry.">dispatch::perimeter</a>
+<a name="l00113"></a>00113 &lt;
+<a name="l00114"></a>00114 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00115"></a>00115 Geometry,
+<a name="l00116"></a>00116 strategy_type
+<a name="l00117"></a>00117 &gt;::apply(geometry, strategy_type());
+<a name="l00118"></a>00118 }
+<a name="l00119"></a>00119
+<a name="l00128"></a>00128 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00129"></a><a class="code" href="group__perimeter.html#g840995936a96075829b48a29a4a33b19">00129</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba" title="Calculate perimeter of a geometry.">perimeter</a>(Geometry <span class="keyword">const</span>&amp; geometry, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00130"></a>00130 {
+<a name="l00131"></a>00131 <span class="keywordflow">return</span> <a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba" title="Calculate perimeter of a geometry.">dispatch::perimeter</a>
+<a name="l00132"></a>00132 &lt;
+<a name="l00133"></a>00133 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00134"></a>00134 Geometry,
+<a name="l00135"></a>00135 Strategy
+<a name="l00136"></a>00136 &gt;::apply(geometry, strategy);
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139 } <span class="comment">// namespace ggl</span>
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141 <span class="preprocessor">#endif // GGL_ALGORITHMS_PERIMETER_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,87 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/sectionalize.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">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1section.html">ggl::section&lt; Box, DimensionCount &gt;</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Structure containing <a class="el" href="structggl_1_1section.html" title="Structure containing section information.">section</a> information. More...<br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1sections.html">ggl::sections&lt; Box, DimensionCount &gt;</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Structure containing a collection of <a class="el" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a>. More...<br></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , typename Sections &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1">ggl::sectionalize</a> (Geometry const &amp;geometry, Sections &amp;sections)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Split a geometry into monotonic <a class="el" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a>. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

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

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,92 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/simplify.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G , typename S &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__simplify.html#g00b5a49a676c29d790764ad67e9fdfbc">ggl::simplify</a> (const G &amp;geometry, G &amp;out, double max_distance, S const &amp;strategy)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simplify a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__simplify.html#g44130eb01685933927c05207a01a84f1">ggl::simplify</a> (const G &amp;geometry, G &amp;out, double max_distance)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simplify a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G , typename O , typename S &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__simplify.html#gfac2ab8188c31cf7fab43e423884e0ed">ggl::simplify</a> (const G &amp;geometry, O out, double max_distance, S const &amp;strategy)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simplify a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G , typename O &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb">ggl::simplify</a> (const G &amp;geometry, O out, double max_distance)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simplify a geometry. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,330 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/simplify.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_ALGORITHMS_SIMPLIFY_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_SIMPLIFY_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;<a class="code" href="algorithms_2distance_8hpp.html">ggl/algorithms/distance.hpp</a>&gt;</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>&gt;</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="agn__simplify_8hpp.html">ggl/strategies/agnostic/agn_simplify.hpp</a>&gt;</span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022
+<a name="l00046"></a>00046 <span class="keyword">namespace </span>ggl
+<a name="l00047"></a>00047 {
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00050"></a>00050 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a> {
+<a name="l00051"></a>00051
+<a name="l00052"></a>00052 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> S&gt;
+<a name="l00053"></a>00053 <span class="keyword">inline</span> <span class="keywordtype">void</span> simplify_range_strategy(R <span class="keyword">const</span>&amp; range, OutputIterator out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00054"></a>00054 {
+<a name="l00055"></a>00055 <span class="keywordflow">if</span> (boost::begin(range) == boost::end(range) || max_distance &lt; 0)
+<a name="l00056"></a>00056 {
+<a name="l00057"></a>00057 std::copy(boost::begin(range), boost::end(range), out);
+<a name="l00058"></a>00058 }
+<a name="l00059"></a>00059 <span class="keywordflow">else</span>
+<a name="l00060"></a>00060 {
+<a name="l00061"></a>00061 <span class="keyword">typename</span> boost::range_const_iterator&lt;R&gt;::type it = boost::begin(range) + 1;
+<a name="l00062"></a>00062 <span class="keywordflow">if</span> (it == boost::end(range) || it + 1 == boost::end(range))
+<a name="l00063"></a>00063 {
+<a name="l00064"></a>00064 std::copy(boost::begin(range), boost::end(range), out);
+<a name="l00065"></a>00065 }
+<a name="l00066"></a>00066 <span class="keywordflow">else</span>
+<a name="l00067"></a>00067 {
+<a name="l00068"></a>00068 strategy.simplify(range, out, max_distance);
+<a name="l00069"></a>00069 }
+<a name="l00070"></a>00070 }
+<a name="l00071"></a>00071 }
+<a name="l00072"></a>00072
+<a name="l00073"></a>00073 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00074"></a>00074 <span class="keyword">inline</span> <span class="keywordtype">void</span> simplify_range(R <span class="keyword">const</span>&amp; range, OutputIterator out, <span class="keywordtype">double</span> max_distance)
+<a name="l00075"></a>00075 {
+<a name="l00076"></a>00076 <span class="comment">// Define default strategy</span>
+<a name="l00077"></a>00077 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;R&gt;::type point_type;
+<a name="l00078"></a>00078 <span class="keyword">typedef</span> <span class="keyword">typename</span> cs_tag&lt;point_type&gt;::type cs_tag;
+<a name="l00079"></a>00079 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_distance_segment
+<a name="l00080"></a>00080 &lt;
+<a name="l00081"></a>00081 cs_tag,
+<a name="l00082"></a>00082 cs_tag,
+<a name="l00083"></a>00083 point_type,
+<a name="l00084"></a>00084 segment&lt;const point_type&gt;
+<a name="l00085"></a>00085 &gt;::type strategy_type;
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 strategy::simplify::douglas_peucker&lt;R, OutputIterator, strategy_type&gt; douglas;
+<a name="l00088"></a>00088
+<a name="l00089"></a>00089 simplify_range_strategy(range, out, max_distance, douglas);
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091
+<a name="l00092"></a>00092 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> S&gt;
+<a name="l00093"></a>00093 <span class="keyword">inline</span> <span class="keywordtype">void</span> simplify_ring(R <span class="keyword">const</span>&amp; r_in, OutputIterator out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00094"></a>00094 {
+<a name="l00095"></a>00095 <span class="comment">// Call do_container for a ring</span>
+<a name="l00096"></a>00096
+<a name="l00097"></a>00097 <span class="comment">// The first/last point (the closing point of the ring) should maybe be excluded because it</span>
+<a name="l00098"></a>00098 <span class="comment">// lies on a line with second/one but last. Here it is never excluded.</span>
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100 <span class="comment">// Note also that, especially if max_distance is too large, the output ring might be self intersecting</span>
+<a name="l00101"></a>00101 <span class="comment">// while the input ring is not, although chances are low in normal polygons</span>
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 <span class="comment">// Finally the inputring might have 4 points (=correct), the output &lt; 4(=wrong)</span>
+<a name="l00104"></a>00104 <span class="keywordflow">if</span> (boost::size(r_in) &lt;= 4 || max_distance &lt; 0)
+<a name="l00105"></a>00105 {
+<a name="l00106"></a>00106 std::copy(boost::begin(r_in), boost::end(r_in), out);
+<a name="l00107"></a>00107 }
+<a name="l00108"></a>00108 <span class="keywordflow">else</span>
+<a name="l00109"></a>00109 {
+<a name="l00110"></a>00110 simplify_range_strategy(r_in, out, max_distance, strategy);
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112 }
+<a name="l00113"></a>00113
+<a name="l00114"></a>00114 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Y, <span class="keyword">typename</span> S&gt;
+<a name="l00115"></a>00115 <span class="keyword">inline</span> <span class="keywordtype">void</span> simplify_polygon(Y <span class="keyword">const</span>&amp; poly_in, Y&amp; poly_out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator
+<a name="l00118"></a>00118 &lt;<span class="keyword">typename</span> interior_type&lt;Y&gt;::type&gt;::type iterator_type;
+<a name="l00119"></a>00119 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00120"></a>00120 &lt;<span class="keyword">typename</span> interior_type&lt;Y&gt;::type&gt;::type const_iterator_type;
+<a name="l00121"></a>00121
+<a name="l00122"></a>00122 poly_out.clear();
+<a name="l00123"></a>00123
+<a name="l00124"></a>00124 <span class="comment">// Note that if there are inner rings, and distance is too large, they might intersect with the</span>
+<a name="l00125"></a>00125 <span class="comment">// outer ring in the output, while it didn't in the input.</span>
+<a name="l00126"></a>00126 simplify_ring(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly_in), std::back_inserter(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly_out)),
+<a name="l00127"></a>00127 max_distance, strategy);
+<a name="l00128"></a>00128
+<a name="l00129"></a>00129 <a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_out).resize(boost::size(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_in)));
+<a name="l00130"></a>00130
+<a name="l00131"></a>00131 const_iterator_type it_in = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_in));
+<a name="l00132"></a>00132 iterator_type it_out = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_out));
+<a name="l00133"></a>00133
+<a name="l00134"></a>00134 <span class="keywordflow">for</span> (; it_in != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_in)); it_in++, it_out++)
+<a name="l00135"></a>00135 {
+<a name="l00136"></a>00136 simplify_ring(*it_in, std::back_inserter(*it_out), max_distance, strategy);
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139
+<a name="l00140"></a>00140 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Y&gt;
+<a name="l00141"></a>00141 <span class="keyword">inline</span> <span class="keywordtype">void</span> simplify_polygon(Y <span class="keyword">const</span>&amp; poly_in, Y&amp; poly_out, <span class="keywordtype">double</span> max_distance)
+<a name="l00142"></a>00142 {
+<a name="l00143"></a>00143 <span class="comment">// Define default strategy</span>
+<a name="l00144"></a>00144 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type&lt;Y&gt;::type ring_type;
+<a name="l00145"></a>00145 <span class="keyword">typedef</span> std::back_insert_iterator&lt;ring_type&gt; iterator_type;
+<a name="l00146"></a>00146
+<a name="l00147"></a>00147 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;Y&gt;::type point_type;
+<a name="l00148"></a>00148 <span class="keyword">typedef</span> <span class="keyword">typename</span> cs_tag&lt;point_type&gt;::type cs_tag;
+<a name="l00149"></a>00149 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_distance_segment
+<a name="l00150"></a>00150 &lt;
+<a name="l00151"></a>00151 cs_tag,
+<a name="l00152"></a>00152 cs_tag,
+<a name="l00153"></a>00153 point_type,
+<a name="l00154"></a>00154 segment&lt;const point_type&gt;
+<a name="l00155"></a>00155 &gt;::type strategy_type;
+<a name="l00156"></a>00156
+<a name="l00157"></a>00157 strategy::simplify::douglas_peucker&lt;ring_type, iterator_type, strategy_type&gt; douglas;
+<a name="l00158"></a>00158
+<a name="l00159"></a>00159 simplify_polygon(poly_in, poly_out, max_distance, douglas);
+<a name="l00160"></a>00160 }
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 }} <span class="comment">// namespace detail::simplify</span>
+<a name="l00163"></a>00163 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00164"></a>00164 <span class="preprocessor"></span>
+<a name="l00165"></a>00165
+<a name="l00166"></a>00166 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00167"></a>00167 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00168"></a>00168 {
+<a name="l00169"></a>00169
+<a name="l00170"></a>00170 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> G&gt;
+<a name="l00171"></a>00171 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>
+<a name="l00172"></a>00172 {
+<a name="l00173"></a>00173 };
+<a name="l00174"></a>00174
+<a name="l00175"></a>00175 <span class="comment">// Partial specializations</span>
+<a name="l00176"></a>00176 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R&gt;
+<a name="l00177"></a>00177 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>&lt;linestring_tag, R&gt;
+<a name="l00178"></a>00178 {
+<a name="l00179"></a>00179 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> S&gt;
+<a name="l00180"></a>00180 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(R <span class="keyword">const</span>&amp; range, OutputIterator out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00181"></a>00181 {
+<a name="l00182"></a>00182 strategy.simplify(range, out, max_distance);
+<a name="l00183"></a>00183 }
+<a name="l00184"></a>00184
+<a name="l00185"></a>00185 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00186"></a>00186 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(R <span class="keyword">const</span>&amp; range, OutputIterator out, <span class="keywordtype">double</span> max_distance)
+<a name="l00187"></a>00187 {
+<a name="l00188"></a>00188 <span class="comment">// Define default strategy</span>
+<a name="l00189"></a>00189 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;R&gt;::type point_type;
+<a name="l00190"></a>00190 <span class="keyword">typedef</span> <span class="keyword">typename</span> cs_tag&lt;point_type&gt;::type cs_tag;
+<a name="l00191"></a>00191 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_distance_segment
+<a name="l00192"></a>00192 &lt;
+<a name="l00193"></a>00193 cs_tag,
+<a name="l00194"></a>00194 cs_tag,
+<a name="l00195"></a>00195 point_type,
+<a name="l00196"></a>00196 segment&lt;const point_type&gt;
+<a name="l00197"></a>00197 &gt;::type strategy_type;
+<a name="l00198"></a>00198
+<a name="l00199"></a>00199 strategy::simplify::douglas_peucker&lt;R, OutputIterator, strategy_type&gt; douglas;
+<a name="l00200"></a>00200
+<a name="l00201"></a>00201 detail::simplify::simplify_range_strategy(range, out, max_distance, douglas);
+<a name="l00202"></a>00202 }
+<a name="l00203"></a>00203 };
+<a name="l00204"></a>00204
+<a name="l00205"></a>00205 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R&gt;
+<a name="l00206"></a>00206 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>&lt;ring_tag, R&gt;
+<a name="l00207"></a>00207 {
+<a name="l00209"></a>00209 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> S&gt;
+<a name="l00210"></a>00210 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(R <span class="keyword">const</span>&amp; ring_in, R&amp; ring_out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00211"></a>00211 {
+<a name="l00212"></a>00212 <span class="keyword">using</span> detail::simplify::simplify_ring;
+<a name="l00213"></a>00213 simplify_ring(ring_in, std::back_inserter(ring_out), max_distance, strategy);
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215
+<a name="l00217"></a>00217 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(R <span class="keyword">const</span>&amp; ring_in, R&amp; ring_out, <span class="keywordtype">double</span> max_distance)
+<a name="l00218"></a>00218 {
+<a name="l00219"></a>00219 <span class="comment">// Define default strategy</span>
+<a name="l00220"></a>00220 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;R&gt;::type point_type;
+<a name="l00221"></a>00221 <span class="keyword">typedef</span> <span class="keyword">typename</span> cs_tag&lt;point_type&gt;::type cs_tag;
+<a name="l00222"></a>00222 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_distance_segment
+<a name="l00223"></a>00223 &lt;
+<a name="l00224"></a>00224 cs_tag,
+<a name="l00225"></a>00225 cs_tag,
+<a name="l00226"></a>00226 point_type,
+<a name="l00227"></a>00227 segment&lt;const point_type&gt;
+<a name="l00228"></a>00228 &gt;::type strategy_type;
+<a name="l00229"></a>00229 <span class="keyword">typedef</span> std::back_insert_iterator&lt;R&gt; iterator_type;
+<a name="l00230"></a>00230
+<a name="l00231"></a>00231 strategy::simplify::douglas_peucker&lt;R, iterator_type, strategy_type&gt; douglas;
+<a name="l00232"></a>00232
+<a name="l00233"></a>00233 detail::simplify::simplify_ring(ring_in, std::back_inserter(ring_out), max_distance, douglas);
+<a name="l00234"></a>00234 }
+<a name="l00235"></a>00235 };
+<a name="l00236"></a>00236
+<a name="l00237"></a>00237 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P&gt;
+<a name="l00238"></a>00238 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>&lt;polygon_tag, P&gt;
+<a name="l00239"></a>00239 {
+<a name="l00241"></a>00241 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> S&gt;
+<a name="l00242"></a>00242 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(P <span class="keyword">const</span>&amp; poly_in, P&amp; poly_out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00243"></a>00243 {
+<a name="l00244"></a>00244 detail::simplify::simplify_polygon(poly_in, poly_out, max_distance, strategy);
+<a name="l00245"></a>00245 }
+<a name="l00246"></a>00246
+<a name="l00248"></a>00248 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(P <span class="keyword">const</span>&amp; poly_in, P&amp; poly_out, <span class="keywordtype">double</span> max_distance)
+<a name="l00249"></a>00249 {
+<a name="l00250"></a>00250 detail::simplify::simplify_polygon(poly_in, poly_out, max_distance);
+<a name="l00251"></a>00251 }
+<a name="l00252"></a>00252 };
+<a name="l00253"></a>00253
+<a name="l00254"></a>00254 } <span class="comment">// namespace dispatch</span>
+<a name="l00255"></a>00255 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00256"></a>00256 <span class="preprocessor"></span>
+<a name="l00257"></a>00257
+<a name="l00258"></a>00258 <span class="comment">// Model 1, using output iterator</span>
+<a name="l00259"></a>00259
+<a name="l00275"></a>00275 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> O&gt;
+<a name="l00276"></a><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb">00276</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>(<span class="keyword">const</span> G&amp; geometry, O out, <span class="keywordtype">double</span> max_distance)
+<a name="l00277"></a>00277 {
+<a name="l00278"></a>00278 <span class="keyword">typedef</span> dispatch::simplify&lt;typename tag&lt;G&gt;::type, G&gt; simplify_type;
+<a name="l00279"></a>00279 simplify_type::apply(geometry, out, max_distance);
+<a name="l00280"></a>00280 }
+<a name="l00281"></a>00281
+<a name="l00298"></a>00298 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> O, <span class="keyword">typename</span> S&gt;
+<a name="l00299"></a><a class="code" href="group__simplify.html#gfac2ab8188c31cf7fab43e423884e0ed">00299</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>(<span class="keyword">const</span> G&amp; geometry, O out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00300"></a>00300 {
+<a name="l00301"></a>00301 <span class="keyword">typedef</span> dispatch::simplify&lt;typename tag&lt;G&gt;::type, G&gt; simplify_type;
+<a name="l00302"></a>00302 simplify_type::apply(geometry, out, max_distance, strategy);
+<a name="l00303"></a>00303 }
+<a name="l00304"></a>00304
+<a name="l00305"></a>00305 <span class="comment">// Model 2, where output is same type as input</span>
+<a name="l00306"></a>00306
+<a name="l00316"></a>00316 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G&gt;
+<a name="l00317"></a><a class="code" href="group__simplify.html#g44130eb01685933927c05207a01a84f1">00317</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>(<span class="keyword">const</span> G&amp; geometry, G&amp; out, <span class="keywordtype">double</span> max_distance)
+<a name="l00318"></a>00318 {
+<a name="l00319"></a>00319 <span class="keyword">typedef</span> dispatch::simplify&lt;typename tag&lt;G&gt;::type, G&gt; simplify_type;
+<a name="l00320"></a>00320 simplify_type::apply(geometry, out, max_distance);
+<a name="l00321"></a>00321 }
+<a name="l00322"></a>00322
+<a name="l00333"></a>00333 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G, <span class="keyword">typename</span> S&gt;
+<a name="l00334"></a><a class="code" href="group__simplify.html#g00b5a49a676c29d790764ad67e9fdfbc">00334</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>(<span class="keyword">const</span> G&amp; geometry, G&amp; out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00335"></a>00335 {
+<a name="l00336"></a>00336 <span class="keyword">typedef</span> dispatch::simplify&lt;typename tag&lt;G&gt;::type, G&gt; simplify_type;
+<a name="l00337"></a>00337 simplify_type::apply(geometry, out, max_distance, strategy);
+<a name="l00338"></a>00338 }
+<a name="l00339"></a>00339
+<a name="l00340"></a>00340 } <span class="comment">// namespace ggl</span>
+<a name="l00341"></a>00341
+<a name="l00342"></a>00342 <span class="preprocessor">#endif // GGL_ALGORITHMS_SIMPLIFY_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/transform.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G1 , typename G2 &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transform.html#g9ec9c2e79900a57ce292dc2026b7ead9">ggl::transform</a> (G1 const &amp;geometry1, G2 &amp;geometry2)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transforms from one geometry to another geometry using a <a class="el" href="namespaceggl_1_1strategy.html">strategy</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G1 , typename G2 , typename S &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500">ggl::transform</a> (G1 const &amp;geometry1, G2 &amp;geometry2, S const &amp;strategy)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transforms from one geometry to another geometry using a <a class="el" href="namespaceggl_1_1strategy.html">strategy</a>. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,301 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/transform.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_ALGORITHMS_TRANSFORM_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_TRANSFORM_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;cmath&gt;</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;iterator&gt;</span>
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="clear_8hpp.html">ggl/algorithms/clear.hpp</a>&gt;</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026
+<a name="l00061"></a>00061 <span class="keyword">namespace </span>ggl
+<a name="l00062"></a>00062 {
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00065"></a>00065 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a> {
+<a name="l00066"></a>00066
+<a name="l00067"></a>00067 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2&gt;
+<a name="l00068"></a>00068 <span class="keyword">struct </span>transform_point
+<a name="l00069"></a>00069 {
+<a name="l00070"></a>00070 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> S&gt;
+<a name="l00071"></a>00071 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(P1 <span class="keyword">const</span>&amp; p1, P2&amp; p2, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00072"></a>00072 {
+<a name="l00073"></a>00073 <span class="keywordflow">return</span> strategy(p1, p2);
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075 };
+<a name="l00076"></a>00076
+<a name="l00077"></a>00077 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B1, <span class="keyword">typename</span> B2&gt;
+<a name="l00078"></a>00078 <span class="keyword">struct </span>transform_box
+<a name="l00079"></a>00079 {
+<a name="l00080"></a>00080 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> S&gt;
+<a name="l00081"></a>00081 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(B1 <span class="keyword">const</span>&amp; b1, B2&amp; b2, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00082"></a>00082 {
+<a name="l00083"></a>00083 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;B1&gt;::type point_type1;
+<a name="l00084"></a>00084 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;B2&gt;::type point_type2;
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 point_type1 lower_left, upper_right;
+<a name="l00087"></a>00087 assign_box_corner&lt;min_corner, min_corner&gt;(b1, lower_left);
+<a name="l00088"></a>00088 assign_box_corner&lt;max_corner, max_corner&gt;(b1, upper_right);
+<a name="l00089"></a>00089
+<a name="l00090"></a>00090 point_type2 p1, p2;
+<a name="l00091"></a>00091 <span class="keywordflow">if</span> (strategy(lower_left, p1) &amp;&amp; strategy(upper_right, p2))
+<a name="l00092"></a>00092 {
+<a name="l00093"></a>00093 <span class="comment">// Create a valid box and therefore swap if necessary</span>
+<a name="l00094"></a>00094 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;point_type2&gt;::type coordinate_type;
+<a name="l00095"></a>00095 coordinate_type x1 = ggl::get&lt;0&gt;(p1)
+<a name="l00096"></a>00096 , y1 = ggl::get&lt;1&gt;(p1)
+<a name="l00097"></a>00097 , x2 = ggl::get&lt;0&gt;(p2)
+<a name="l00098"></a>00098 , y2 = ggl::get&lt;1&gt;(p2);
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100 <span class="keywordflow">if</span> (x1 &gt; x2) { std::swap(x1, x2); }
+<a name="l00101"></a>00101 <span class="keywordflow">if</span> (y1 &gt; y2) { std::swap(y1, y2); }
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 set&lt;min_corner, 0&gt;(b2, x1);
+<a name="l00104"></a>00104 set&lt;min_corner, 1&gt;(b2, y1);
+<a name="l00105"></a>00105 set&lt;max_corner, 0&gt;(b2, x2);
+<a name="l00106"></a>00106 set&lt;max_corner, 1&gt;(b2, y2);
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00109"></a>00109 }
+<a name="l00110"></a>00110 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112 };
+<a name="l00113"></a>00113
+<a name="l00114"></a>00114 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> R, <span class="keyword">typename</span> S&gt;
+<a name="l00115"></a>00115 <span class="keyword">inline</span> <span class="keywordtype">bool</span> transform_range_out(R <span class="keyword">const</span>&amp; range, OutputIterator out, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 P point_out;
+<a name="l00118"></a>00118 <span class="keywordflow">for</span>(<span class="keyword">typename</span> boost::range_const_iterator&lt;R&gt;::type it = boost::begin(range);
+<a name="l00119"></a>00119 it != boost::end(range); ++it)
+<a name="l00120"></a>00120 {
+<a name="l00121"></a>00121 <span class="keywordflow">if</span> (! transform_point&lt;<span class="keyword">typename</span> point_type&lt;R&gt;::type, P&gt;::apply(*it, point_out, strategy))
+<a name="l00122"></a>00122 {
+<a name="l00123"></a>00123 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00124"></a>00124 }
+<a name="l00125"></a>00125 *out = point_out;
+<a name="l00126"></a>00126 ++out;
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130
+<a name="l00131"></a>00131 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2&gt;
+<a name="l00132"></a>00132 <span class="keyword">struct </span>transform_polygon
+<a name="l00133"></a>00133 {
+<a name="l00134"></a>00134 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> S&gt;
+<a name="l00135"></a>00135 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(<span class="keyword">const</span> P1&amp; poly1, P2&amp; poly2, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00136"></a>00136 {
+<a name="l00137"></a>00137 <span class="keyword">typedef</span> <span class="keyword">typename</span> interior_type&lt;P1&gt;::type interior1_type;
+<a name="l00138"></a>00138 <span class="keyword">typedef</span> <span class="keyword">typename</span> interior_type&lt;P2&gt;::type interior2_type;
+<a name="l00139"></a>00139 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type&lt;P1&gt;::type ring1_type;
+<a name="l00140"></a>00140 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type&lt;P2&gt;::type ring2_type;
+<a name="l00141"></a>00141 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;P2&gt;::type point2_type;
+<a name="l00142"></a>00142
+<a name="l00143"></a>00143 <a class="code" href="group__access.html#g280e2b0e4bada6eac7b7370a4ded705f" title="Clears a linestring, linear ring or polygon (exterior+interiors) or multi*.">ggl::clear</a>(poly2);
+<a name="l00144"></a>00144
+<a name="l00145"></a>00145 <span class="keywordflow">if</span> (!transform_range_out&lt;point2_type&gt;(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly1),
+<a name="l00146"></a>00146 std::back_inserter(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly2)), strategy))
+<a name="l00147"></a>00147 {
+<a name="l00148"></a>00148 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00149"></a>00149 }
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151 <a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly2).resize(boost::size(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly1)));
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator&lt;interior1_type&gt;::type iterator1_type;
+<a name="l00154"></a>00154 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator&lt;interior2_type&gt;::type iterator2_type;
+<a name="l00155"></a>00155
+<a name="l00156"></a>00156 iterator1_type it1 = 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>(poly1));
+<a name="l00157"></a>00157 iterator2_type it2 = 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>(poly2));
+<a name="l00158"></a>00158 <span class="keywordflow">for</span> ( ; it1 != 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>(poly1)); ++it1, ++it2)
+<a name="l00159"></a>00159 {
+<a name="l00160"></a>00160 <span class="keywordflow">if</span> (!transform_range_out&lt;point2_type&gt;(*it1, std::back_inserter(*it2), strategy))
+<a name="l00161"></a>00161 {
+<a name="l00162"></a>00162 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00163"></a>00163 }
+<a name="l00164"></a>00164 }
+<a name="l00165"></a>00165
+<a name="l00166"></a>00166 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<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> &lt;<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2&gt;
+<a name="l00172"></a>00172 <span class="keyword">struct </span>select_strategy
+<a name="l00173"></a>00173 {
+<a name="l00174"></a>00174 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_transform
+<a name="l00175"></a>00175 &lt;
+<a name="l00176"></a>00176 <span class="keyword">typename</span> cs_tag&lt;P1&gt;::type,
+<a name="l00177"></a>00177 <span class="keyword">typename</span> cs_tag&lt;P2&gt;::type,
+<a name="l00178"></a>00178 <span class="keyword">typename</span> coordinate_system&lt;P1&gt;::type,
+<a name="l00179"></a>00179 <span class="keyword">typename</span> coordinate_system&lt;P2&gt;::type,
+<a name="l00180"></a>00180 <a class="code" href="classcore__dispatch_1_1dimension.html">dimension&lt;P1&gt;::type::value</a>,
+<a name="l00181"></a>00181 <a class="code" href="classcore__dispatch_1_1dimension.html">dimension&lt;P2&gt;::type::value</a>,
+<a name="l00182"></a>00182 <span class="keyword">typename</span> point_type&lt;P1&gt;::type,
+<a name="l00183"></a>00183 <span class="keyword">typename</span> point_type&lt;P2&gt;::type
+<a name="l00184"></a>00184 &gt;::type type;
+<a name="l00185"></a>00185 };
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R1, <span class="keyword">typename</span> R2&gt;
+<a name="l00188"></a>00188 <span class="keyword">struct </span>transform_range
+<a name="l00189"></a>00189 {
+<a name="l00190"></a>00190 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> S&gt;
+<a name="l00191"></a>00191 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(R1 <span class="keyword">const</span>&amp; range1, R2&amp; range2, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00192"></a>00192 {
+<a name="l00193"></a>00193 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;R2&gt;::type point_type;
+<a name="l00194"></a>00194
+<a name="l00195"></a>00195 <a class="code" href="group__access.html#g280e2b0e4bada6eac7b7370a4ded705f" title="Clears a linestring, linear ring or polygon (exterior+interiors) or multi*.">ggl::clear</a>(range2);
+<a name="l00196"></a>00196 <span class="keywordflow">return</span> transform_range_out&lt;point_type&gt;(range1, std::back_inserter(range2), strategy);
+<a name="l00197"></a>00197 }
+<a name="l00198"></a>00198 };
+<a name="l00199"></a>00199
+<a name="l00200"></a>00200 }} <span class="comment">// namespace detail::transform</span>
+<a name="l00201"></a>00201 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00202"></a>00202 <span class="preprocessor"></span>
+<a name="l00203"></a>00203
+<a name="l00204"></a>00204 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00205"></a>00205 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00206"></a>00206 {
+<a name="l00207"></a>00207
+<a name="l00208"></a>00208 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag1, <span class="keyword">typename</span> Tag2, <span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2&gt;
+<a name="l00209"></a>00209 <span class="keyword">struct </span><a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a> {};
+<a name="l00210"></a>00210
+<a name="l00211"></a>00211 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2&gt;
+<a name="l00212"></a>00212 <span class="keyword">struct </span><a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>&lt;point_tag, point_tag, P1, P2&gt;
+<a name="l00213"></a>00213 : detail::<a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>::transform_point&lt;P1, P2&gt;
+<a name="l00214"></a>00214 {
+<a name="l00215"></a>00215 };
+<a name="l00216"></a>00216
+<a name="l00217"></a>00217
+<a name="l00218"></a>00218 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> L1, <span class="keyword">typename</span> L2&gt;
+<a name="l00219"></a>00219 <span class="keyword">struct </span><a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>&lt;linestring_tag, linestring_tag, L1, L2&gt;
+<a name="l00220"></a>00220 : detail::<a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>::transform_range&lt;L1, L2&gt;
+<a name="l00221"></a>00221 {
+<a name="l00222"></a>00222 };
+<a name="l00223"></a>00223
+<a name="l00224"></a>00224 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R1, <span class="keyword">typename</span> R2&gt;
+<a name="l00225"></a>00225 <span class="keyword">struct </span><a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>&lt;ring_tag, ring_tag, R1, R2&gt;
+<a name="l00226"></a>00226 : detail::<a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>::transform_range&lt;R1, R2&gt;
+<a name="l00227"></a>00227 {
+<a name="l00228"></a>00228 };
+<a name="l00229"></a>00229
+<a name="l00230"></a>00230 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2&gt;
+<a name="l00231"></a>00231 <span class="keyword">struct </span><a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>&lt;polygon_tag, polygon_tag, P1, P2&gt;
+<a name="l00232"></a>00232 : detail::<a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>::transform_polygon&lt;P1, P2&gt;
+<a name="l00233"></a>00233 {
+<a name="l00234"></a>00234 };
+<a name="l00235"></a>00235
+<a name="l00236"></a>00236 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B1, <span class="keyword">typename</span> B2&gt;
+<a name="l00237"></a>00237 <span class="keyword">struct </span><a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>&lt;box_tag, box_tag, B1, B2&gt;
+<a name="l00238"></a>00238 : detail::<a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>::transform_box&lt;B1, B2&gt;
+<a name="l00239"></a>00239 {
+<a name="l00240"></a>00240 };
+<a name="l00241"></a>00241
+<a name="l00242"></a>00242
+<a name="l00243"></a>00243 } <span class="comment">// namespace dispatch</span>
+<a name="l00244"></a>00244 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00245"></a>00245 <span class="preprocessor"></span>
+<a name="l00246"></a>00246
+<a name="l00257"></a>00257 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2, <span class="keyword">typename</span> S&gt;
+<a name="l00258"></a><a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500">00258</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>(G1 <span class="keyword">const</span>&amp; geometry1, G2&amp; geometry2, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00259"></a>00259 {
+<a name="l00260"></a>00260 <span class="keyword">typedef</span> <a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">dispatch::transform</a>
+<a name="l00261"></a>00261 &lt;
+<a name="l00262"></a>00262 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G1&gt;::type</a>,
+<a name="l00263"></a>00263 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G2&gt;::type</a>,
+<a name="l00264"></a>00264 G1,
+<a name="l00265"></a>00265 G2
+<a name="l00266"></a>00266 &gt; transform_type;
+<a name="l00267"></a>00267
+<a name="l00268"></a>00268 <span class="keywordflow">return</span> transform_type::apply(geometry1, geometry2, strategy);
+<a name="l00269"></a>00269 }
+<a name="l00270"></a>00270
+<a name="l00280"></a>00280 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2&gt;
+<a name="l00281"></a><a class="code" href="group__transform.html#g9ec9c2e79900a57ce292dc2026b7ead9">00281</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>(G1 <span class="keyword">const</span>&amp; geometry1, G2&amp; geometry2)
+<a name="l00282"></a>00282 {
+<a name="l00283"></a>00283 <span class="keyword">typename</span> detail::transform::select_strategy&lt;G1, G2&gt;::type strategy;
+<a name="l00284"></a>00284 <span class="keywordflow">return</span> <a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>(geometry1, geometry2, strategy);
+<a name="l00285"></a>00285 }
+<a name="l00286"></a>00286
+<a name="l00287"></a>00287 } <span class="comment">// namespace ggl</span>
+<a name="l00288"></a>00288
+<a name="l00289"></a>00289 <span class="preprocessor">#endif // GGL_ALGORITHMS_TRANSFORM_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2within_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2within_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/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>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G1 , typename G2 , typename S &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__boolean__relations.html#g3051574eadb5ef8ae92ef210665a7332">ggl::within</a> (G1 const &amp;geometry1, G2 const &amp;geometry2, S const &amp;strategy)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Within check using a <a class="el" href="namespaceggl_1_1strategy.html">strategy</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename G1 , typename G2 &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc">ggl::within</a> (G1 const &amp;geometry1, G2 const &amp;geometry2)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Within check. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2within_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2within_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,443 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/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_ALGORITHMS_WITHIN_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_WITHIN_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;boost/concept/requires.hpp&gt;</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;<a class="code" href="algorithms_2distance_8hpp.html">ggl/algorithms/distance.hpp</a>&gt;</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="make_8hpp.html">ggl/algorithms/make.hpp</a>&gt;</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="access_8hpp.html">ggl/core/access.hpp</a>&gt;</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="nsphere__concept_8hpp.html">ggl/core/concepts/nsphere_concept.hpp</a>&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>&gt;</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="loop_8hpp.html">ggl/util/loop.hpp</a>&gt;</span>
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028
+<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="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a> {
+<a name="l00035"></a>00035
+<a name="l00036"></a>00036
+<a name="l00037"></a>00037 <span class="comment">//-------------------------------------------------------------------------------------------------------</span>
+<a name="l00038"></a>00038 <span class="comment">// Implementation for boxes. Supports boxes in 2 or 3 dimensions, in Euclidian system</span>
+<a name="l00039"></a>00039 <span class="comment">// Todo: implement as strategy</span>
+<a name="l00040"></a>00040 <span class="comment">//-------------------------------------------------------------------------------------------------------</span>
+<a name="l00041"></a>00041 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> B, <span class="keywordtype">size_t</span> D, <span class="keywordtype">size_t</span> N&gt;
+<a name="l00042"></a>00042 <span class="keyword">struct </span>point_in_box
+<a name="l00043"></a>00043 {
+<a name="l00044"></a>00044 <span class="keyword">static</span> <span class="keywordtype">bool</span> inside(P <span class="keyword">const</span>&amp; p, B <span class="keyword">const</span>&amp; b)
+<a name="l00045"></a>00045 {
+<a name="l00046"></a>00046 <span class="keywordflow">if</span> (get&lt;D&gt;(p) &lt;= get&lt;min_corner, D&gt;(b)
+<a name="l00047"></a>00047 || get&lt;D&gt;(p) &gt;= get&lt;max_corner, D&gt;(b))
+<a name="l00048"></a>00048 {
+<a name="l00049"></a>00049 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00050"></a>00050 }
+<a name="l00051"></a>00051
+<a name="l00052"></a>00052 <span class="keywordflow">return</span> point_in_box&lt;P, B, D + 1, N&gt;::inside(p, b);
+<a name="l00053"></a>00053 }
+<a name="l00054"></a>00054 };
+<a name="l00055"></a>00055
+<a name="l00056"></a>00056 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> B, <span class="keywordtype">size_t</span> N&gt;
+<a name="l00057"></a>00057 <span class="keyword">struct </span>point_in_box&lt;P, B, N, N&gt;
+<a name="l00058"></a>00058 {
+<a name="l00059"></a>00059 <span class="keyword">static</span> <span class="keywordtype">bool</span> inside(P <span class="keyword">const</span>&amp; p, B <span class="keyword">const</span>&amp; b)
+<a name="l00060"></a>00060 {
+<a name="l00061"></a>00061 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00062"></a>00062 }
+<a name="l00063"></a>00063 };
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065 <span class="comment">//-------------------------------------------------------------------------------------------------------</span>
+<a name="l00066"></a>00066 <span class="comment">// Box-in-box, for 2/3 dimensions</span>
+<a name="l00067"></a>00067 <span class="comment">//-------------------------------------------------------------------------------------------------------</span>
+<a name="l00068"></a>00068 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B1, <span class="keyword">typename</span> B2, <span class="keywordtype">size_t</span> D, <span class="keywordtype">size_t</span> N&gt;
+<a name="l00069"></a>00069 <span class="keyword">struct </span>box_in_box
+<a name="l00070"></a>00070 {
+<a name="l00071"></a>00071 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> inside(B1 <span class="keyword">const</span>&amp; b1, B2 <span class="keyword">const</span>&amp; b2)
+<a name="l00072"></a>00072 {
+<a name="l00073"></a>00073 <span class="keywordflow">if</span> (get&lt;min_corner, D&gt;(b1) &lt;= get&lt;min_corner, D&gt;(b2)
+<a name="l00074"></a>00074 || get&lt;max_corner, D&gt;(b1) &gt;= get&lt;max_corner, D&gt;(b2))
+<a name="l00075"></a>00075 {
+<a name="l00076"></a>00076 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00077"></a>00077 }
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 <span class="keywordflow">return</span> box_in_box&lt;B1, B2, D + 1, N&gt;::inside(b1, b2);
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081 };
+<a name="l00082"></a>00082
+<a name="l00083"></a>00083 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B1, <span class="keyword">typename</span> B2, <span class="keywordtype">size_t</span> N&gt;
+<a name="l00084"></a>00084 <span class="keyword">struct </span>box_in_box&lt;B1, B2, N, N&gt;
+<a name="l00085"></a>00085 {
+<a name="l00086"></a>00086 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> inside(B1 <span class="keyword">const</span>&amp; b1, B2 <span class="keyword">const</span>&amp; b2)
+<a name="l00087"></a>00087 {
+<a name="l00088"></a>00088 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 };
+<a name="l00091"></a>00091
+<a name="l00092"></a>00092
+<a name="l00093"></a>00093 <span class="comment">//-------------------------------------------------------------------------------------------------------</span>
+<a name="l00094"></a>00094 <span class="comment">// Implementation for n-spheres. Supports circles or spheres, in 2 or 3 dimensions, in Euclidian system</span>
+<a name="l00095"></a>00095 <span class="comment">// Circle center might be of other point-type as geometry</span>
+<a name="l00096"></a>00096 <span class="comment">// Todo: implement as strategy</span>
+<a name="l00097"></a>00097 <span class="comment">//-------------------------------------------------------------------------------------------------------</span>
+<a name="l00098"></a>00098 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> C&gt;
+<a name="l00099"></a>00099 <span class="keyword">inline</span> <span class="keywordtype">bool</span> point_in_circle(P <span class="keyword">const</span>&amp; p, C <span class="keyword">const</span>&amp; c)
+<a name="l00100"></a>00100 {
+<a name="l00101"></a>00101 assert_dimension&lt;C, 2&gt;();
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;C&gt;::type point_type;
+<a name="l00104"></a>00104 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_distance
+<a name="l00105"></a>00105 &lt;
+<a name="l00106"></a>00106 <span class="keyword">typename</span> cs_tag&lt;P&gt;::type,
+<a name="l00107"></a>00107 <span class="keyword">typename</span> cs_tag&lt;point_type&gt;::type,
+<a name="l00108"></a>00108 P,
+<a name="l00109"></a>00109 point_type
+<a name="l00110"></a>00110 &gt;::type strategy_type;
+<a name="l00111"></a>00111 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_type::return_type return_type;
+<a name="l00112"></a>00112
+<a name="l00113"></a>00113 P <span class="keyword">const</span> center = ggl::make&lt;P&gt;(get&lt;0&gt;(c), get&lt;1&gt;(c));
+<a name="l00114"></a>00114 strategy_type <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>;
+<a name="l00115"></a>00115 return_type <span class="keyword">const</span> r = <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>(p, center);
+<a name="l00116"></a>00116 return_type <span class="keyword">const</span> rad = make_distance_result&lt;return_type&gt;(get_radius&lt;0&gt;(c));
+<a name="l00117"></a>00117
+<a name="l00118"></a>00118 <span class="keywordflow">return</span> r &lt; rad;
+<a name="l00119"></a>00119 }
+<a name="l00121"></a>00121 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> C&gt;
+<a name="l00122"></a>00122 <span class="keyword">inline</span> <span class="keywordtype">bool</span> point_in_circle(<span class="keyword">const</span> T&amp; c1, <span class="keyword">const</span> T&amp; c2, C <span class="keyword">const</span>&amp; c)
+<a name="l00123"></a>00123 {
+<a name="l00124"></a>00124 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;C&gt;::type point_type;
+<a name="l00125"></a>00125
+<a name="l00126"></a>00126 point_type p = ggl::make&lt;point_type&gt;(c1, c2);
+<a name="l00127"></a>00127 <span class="keywordflow">return</span> point_in_circle(p, c);
+<a name="l00128"></a>00128 }
+<a name="l00129"></a>00129
+<a name="l00130"></a>00130 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> C&gt;
+<a name="l00131"></a>00131 <span class="keyword">inline</span> <span class="keywordtype">bool</span> box_in_circle(B <span class="keyword">const</span>&amp; b, C <span class="keyword">const</span>&amp; c)
+<a name="l00132"></a>00132 {
+<a name="l00133"></a>00133 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;B&gt;::type point_type;
+<a name="l00134"></a>00134
+<a name="l00135"></a>00135 <span class="comment">// Currently only implemented for 2d geometries</span>
+<a name="l00136"></a>00136 assert_dimension&lt;point_type, 2&gt;();
+<a name="l00137"></a>00137 assert_dimension&lt;C, 2&gt;();
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139 <span class="comment">// Box: all four points must lie within circle</span>
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141 <span class="comment">// Check points lower-left and upper-right, then lower-right and upper-left</span>
+<a name="l00142"></a>00142 <span class="keywordflow">return</span> point_in_circle(get&lt;min_corner, 0&gt;(b), get&lt;min_corner, 1&gt;(b), c)
+<a name="l00143"></a>00143 &amp;&amp; point_in_circle(get&lt;max_corner, 0&gt;(b), get&lt;max_corner, 1&gt;(b), c)
+<a name="l00144"></a>00144 &amp;&amp; point_in_circle(get&lt;min_corner, 0&gt;(b), get&lt;max_corner, 1&gt;(b), c)
+<a name="l00145"></a>00145 &amp;&amp; point_in_circle(get&lt;max_corner, 0&gt;(b), get&lt;min_corner, 1&gt;(b), c);
+<a name="l00146"></a>00146 }
+<a name="l00147"></a>00147
+<a name="l00148"></a>00148 <span class="comment">// Generic "range-in-circle", true if all points within circle</span>
+<a name="l00149"></a>00149 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> C&gt;
+<a name="l00150"></a>00150 <span class="keyword">inline</span> <span class="keywordtype">bool</span> range_in_circle(R <span class="keyword">const</span>&amp; range, C <span class="keyword">const</span>&amp; c)
+<a name="l00151"></a>00151 {
+<a name="l00152"></a>00152 assert_dimension&lt;R, 2&gt;();
+<a name="l00153"></a>00153 assert_dimension&lt;C, 2&gt;();
+<a name="l00154"></a>00154
+<a name="l00155"></a>00155 <span class="keywordflow">for</span> (<span class="keyword">typename</span> boost::range_const_iterator&lt;R&gt;::type it = boost::begin(range);
+<a name="l00156"></a>00156 it != boost::end(range); ++it)
+<a name="l00157"></a>00157 {
+<a name="l00158"></a>00158 <span class="keywordflow">if</span> (! point_in_circle(*it, c))
+<a name="l00159"></a>00159 {
+<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
+<a name="l00164"></a>00164 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00165"></a>00165 }
+<a name="l00166"></a>00166
+<a name="l00167"></a>00167 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Y, <span class="keyword">typename</span> C&gt;
+<a name="l00168"></a>00168 <span class="keyword">inline</span> <span class="keywordtype">bool</span> polygon_in_circle(Y <span class="keyword">const</span>&amp; poly, C <span class="keyword">const</span>&amp; c)
+<a name="l00169"></a>00169 {
+<a name="l00170"></a>00170 <span class="keywordflow">return</span> range_in_circle(<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="l00171"></a>00171 }
+<a name="l00172"></a>00172
+<a name="l00173"></a>00173 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> R, <span class="keyword">typename</span> S&gt;
+<a name="l00174"></a>00174 <span class="keyword">inline</span> <span class="keywordtype">bool</span> point_in_ring(P <span class="keyword">const</span>&amp; p, R <span class="keyword">const</span>&amp; r, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00175"></a>00175 {
+<a name="l00176"></a>00176 <span class="keywordflow">if</span> (boost::size(r) &lt; 4)
+<a name="l00177"></a>00177 {
+<a name="l00178"></a>00178 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00179"></a>00179 }
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 <span class="keyword">typename</span> S::state_type state(p);
+<a name="l00182"></a>00182 <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>(r, strategy, state))
+<a name="l00183"></a>00183 {
+<a name="l00184"></a>00184 <span class="keywordflow">return</span> state.within();
+<a name="l00185"></a>00185 }
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00188"></a>00188 }
+<a name="l00189"></a>00189
+<a name="l00190"></a>00190 <span class="comment">// Polygon: in exterior ring, and if so, not within interior ring(s)</span>
+<a name="l00191"></a>00191 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> Y, <span class="keyword">typename</span> S&gt;
+<a name="l00192"></a>00192 <span class="keyword">inline</span> <span class="keywordtype">bool</span> point_in_polygon(P <span class="keyword">const</span>&amp; p, Y <span class="keyword">const</span>&amp; poly, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00193"></a>00193 {
+<a name="l00194"></a>00194 <span class="keywordflow">if</span> (point_in_ring(p, <a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), strategy))
+<a name="l00195"></a>00195 {
+<a name="l00196"></a>00196 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00197"></a>00197 &lt;<span class="keyword">typename</span> interior_type&lt;Y&gt;::type&gt;::type iterator_type;
+<a name="l00198"></a>00198
+<a name="l00199"></a>00199 <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="l00200"></a>00200 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="l00201"></a>00201 {
+<a name="l00202"></a>00202 <span class="keywordflow">if</span> (point_in_ring(p, *it, strategy))
+<a name="l00203"></a>00203 {
+<a name="l00204"></a>00204 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00205"></a>00205 }
+<a name="l00206"></a>00206 }
+<a name="l00207"></a>00207 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<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="comment">// namespace detail::within</span>
+<a name="l00213"></a>00213 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00214"></a>00214 <span class="preprocessor"></span>
+<a name="l00215"></a>00215
+<a name="l00216"></a>00216 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00217"></a>00217 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00218"></a>00218 {
+<a name="l00219"></a>00219
+<a name="l00220"></a>00220 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag1, <span class="keyword">typename</span> Tag2, <span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2&gt;
+<a name="l00221"></a>00221 <span class="keyword">struct </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a> {};
+<a name="l00222"></a>00222
+<a name="l00223"></a>00223 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> B&gt;
+<a name="l00224"></a>00224 <span class="keyword">struct </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>&lt;point_tag, box_tag, P, B&gt;
+<a name="l00225"></a>00225 {
+<a name="l00226"></a>00226 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(P <span class="keyword">const</span>&amp; p, B <span class="keyword">const</span>&amp; b)
+<a name="l00227"></a>00227 {
+<a name="l00228"></a>00228 assert_dimension_equal&lt;P, B&gt;();
+<a name="l00229"></a>00229
+<a name="l00230"></a>00230 <span class="keywordflow">return</span> detail::within::point_in_box
+<a name="l00231"></a>00231 &lt;
+<a name="l00232"></a>00232 P,
+<a name="l00233"></a>00233 B,
+<a name="l00234"></a>00234 0,
+<a name="l00235"></a>00235 <a class="code" href="classcore__dispatch_1_1dimension.html">dimension&lt;P&gt;::type::value</a>
+<a name="l00236"></a>00236 &gt;::inside(p, b);
+<a name="l00237"></a>00237 }
+<a name="l00238"></a>00238 };
+<a name="l00239"></a>00239
+<a name="l00240"></a>00240 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B1, <span class="keyword">typename</span> B2&gt;
+<a name="l00241"></a>00241 <span class="keyword">struct </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>&lt;box_tag, box_tag, B1, B2&gt;
+<a name="l00242"></a>00242 {
+<a name="l00243"></a>00243 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(B1 <span class="keyword">const</span>&amp; b1, B2 <span class="keyword">const</span>&amp; b2)
+<a name="l00244"></a>00244 {
+<a name="l00245"></a>00245 assert_dimension_equal&lt;B1, B2&gt;();
+<a name="l00246"></a>00246
+<a name="l00247"></a>00247 <span class="keywordflow">return</span> detail::within::box_in_box
+<a name="l00248"></a>00248 &lt;
+<a name="l00249"></a>00249 B1,
+<a name="l00250"></a>00250 B2,
+<a name="l00251"></a>00251 0,
+<a name="l00252"></a>00252 <a class="code" href="classcore__dispatch_1_1dimension.html">dimension&lt;B1&gt;::type::value</a>
+<a name="l00253"></a>00253 &gt;::inside(b1, b2);
+<a name="l00254"></a>00254 }
+<a name="l00255"></a>00255 };
+<a name="l00256"></a>00256
+<a name="l00257"></a>00257
+<a name="l00258"></a>00258 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> C&gt;
+<a name="l00259"></a>00259 <span class="keyword">struct </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>&lt;point_tag, nsphere_tag, P, C&gt;
+<a name="l00260"></a>00260 {
+<a name="l00261"></a>00261 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(P <span class="keyword">const</span>&amp; p, C <span class="keyword">const</span>&amp; c)
+<a name="l00262"></a>00262 {
+<a name="l00263"></a>00263 <span class="keywordflow">return</span> detail::within::point_in_circle(p, c);
+<a name="l00264"></a>00264 }
+<a name="l00265"></a>00265 };
+<a name="l00266"></a>00266
+<a name="l00267"></a>00267 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> C&gt;
+<a name="l00268"></a>00268 <span class="keyword">struct </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>&lt;box_tag, nsphere_tag, B, C&gt;
+<a name="l00269"></a>00269 {
+<a name="l00270"></a>00270 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(B <span class="keyword">const</span>&amp; b, C <span class="keyword">const</span>&amp; c)
+<a name="l00271"></a>00271 {
+<a name="l00272"></a>00272 <span class="keywordflow">return</span> detail::within::box_in_circle(b, c);
+<a name="l00273"></a>00273 }
+<a name="l00274"></a>00274 };
+<a name="l00275"></a>00275
+<a name="l00276"></a>00276 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> C&gt;
+<a name="l00277"></a>00277 <span class="keyword">struct </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>&lt;linestring_tag, nsphere_tag, R, C&gt;
+<a name="l00278"></a>00278 {
+<a name="l00279"></a>00279 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(R <span class="keyword">const</span>&amp; ln, C <span class="keyword">const</span>&amp; c)
+<a name="l00280"></a>00280 {
+<a name="l00281"></a>00281 <span class="keywordflow">return</span> detail::within::range_in_circle(ln, c);
+<a name="l00282"></a>00282 }
+<a name="l00283"></a>00283 };
+<a name="l00284"></a>00284
+<a name="l00285"></a>00285 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> C&gt;
+<a name="l00286"></a>00286 <span class="keyword">struct </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>&lt;ring_tag, nsphere_tag, R, C&gt;
+<a name="l00287"></a>00287 {
+<a name="l00288"></a>00288 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(R <span class="keyword">const</span>&amp; r, C <span class="keyword">const</span>&amp; c)
+<a name="l00289"></a>00289 {
+<a name="l00290"></a>00290 <span class="keywordflow">return</span> detail::within::range_in_circle(r, c);
+<a name="l00291"></a>00291 }
+<a name="l00292"></a>00292 };
+<a name="l00293"></a>00293
+<a name="l00294"></a>00294 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Y, <span class="keyword">typename</span> C&gt;
+<a name="l00295"></a>00295 <span class="keyword">struct </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>&lt;polygon_tag, nsphere_tag, Y, C&gt;
+<a name="l00296"></a>00296 {
+<a name="l00297"></a>00297 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(Y <span class="keyword">const</span>&amp; poly, C <span class="keyword">const</span>&amp; c)
+<a name="l00298"></a>00298 {
+<a name="l00299"></a>00299 <span class="keywordflow">return</span> detail::within::polygon_in_circle(poly, c);
+<a name="l00300"></a>00300 }
+<a name="l00301"></a>00301 };
+<a name="l00302"></a>00302
+<a name="l00303"></a>00303 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> R&gt;
+<a name="l00304"></a>00304 <span class="keyword">struct </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>&lt;point_tag, ring_tag, P, R&gt;
+<a name="l00305"></a>00305 {
+<a name="l00306"></a>00306 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(P <span class="keyword">const</span>&amp; p, R <span class="keyword">const</span>&amp; r)
+<a name="l00307"></a>00307 {
+<a name="l00308"></a>00308 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_value&lt;R&gt;::type point_type;
+<a name="l00309"></a>00309 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_within
+<a name="l00310"></a>00310 &lt;
+<a name="l00311"></a>00311 <span class="keyword">typename</span> cs_tag&lt;P&gt;::type,
+<a name="l00312"></a>00312 <span class="keyword">typename</span> cs_tag&lt;point_type&gt;::type,
+<a name="l00313"></a>00313 P,
+<a name="l00314"></a>00314 point_type
+<a name="l00315"></a>00315 &gt;::type strategy_type;
+<a name="l00316"></a>00316
+<a name="l00317"></a>00317 <span class="keywordflow">return</span> detail::within::point_in_ring(p, r, strategy_type());
+<a name="l00318"></a>00318 }
+<a name="l00319"></a>00319 };
+<a name="l00320"></a>00320
+<a name="l00321"></a>00321 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P, <span class="keyword">typename</span> Y&gt;
+<a name="l00322"></a>00322 <span class="keyword">struct </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>&lt;point_tag, polygon_tag, P, Y&gt;
+<a name="l00323"></a>00323 {
+<a name="l00324"></a>00324 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(P <span class="keyword">const</span>&amp; point, Y <span class="keyword">const</span>&amp; poly)
+<a name="l00325"></a>00325 {
+<a name="l00326"></a>00326 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;Y&gt;::type point_type;
+<a name="l00327"></a>00327 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_within
+<a name="l00328"></a>00328 &lt;
+<a name="l00329"></a>00329 <span class="keyword">typename</span> cs_tag&lt;P&gt;::type,
+<a name="l00330"></a>00330 <span class="keyword">typename</span> cs_tag&lt;point_type&gt;::type,
+<a name="l00331"></a>00331 P,
+<a name="l00332"></a>00332 point_type
+<a name="l00333"></a>00333 &gt;::type strategy_type;
+<a name="l00334"></a>00334
+<a name="l00335"></a>00335 <span class="keywordflow">return</span> detail::within::point_in_polygon(point, poly, strategy_type());
+<a name="l00336"></a>00336 }
+<a name="l00337"></a>00337
+<a name="l00338"></a>00338 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> S&gt;
+<a name="l00339"></a>00339 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(P <span class="keyword">const</span>&amp; point, Y <span class="keyword">const</span>&amp; poly, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00340"></a>00340 {
+<a name="l00341"></a>00341 <span class="keywordflow">return</span> detail::within::point_in_polygon(point, poly, strategy);
+<a name="l00342"></a>00342 }
+<a name="l00343"></a>00343 };
+<a name="l00344"></a>00344
+<a name="l00345"></a>00345 } <span class="comment">// namespace dispatch</span>
+<a name="l00346"></a>00346 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00347"></a>00347 <span class="preprocessor"></span>
+<a name="l00348"></a>00348
+<a name="l00376"></a>00376 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2&gt;
+<a name="l00377"></a><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc">00377</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>(G1 <span class="keyword">const</span>&amp; geometry1, G2 <span class="keyword">const</span>&amp; geometry2)
+<a name="l00378"></a>00378 {
+<a name="l00379"></a>00379 <span class="keyword">typedef</span> <a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">dispatch::within</a>
+<a name="l00380"></a>00380 &lt;
+<a name="l00381"></a>00381 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G1&gt;::type</a>,
+<a name="l00382"></a>00382 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G2&gt;::type</a>,
+<a name="l00383"></a>00383 G1,
+<a name="l00384"></a>00384 G2
+<a name="l00385"></a>00385 &gt; within_type;
+<a name="l00386"></a>00386
+<a name="l00387"></a>00387 <span class="keywordflow">return</span> within_type::apply(geometry1, geometry2);
+<a name="l00388"></a>00388 }
+<a name="l00389"></a>00389
+<a name="l00398"></a>00398 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2, <span class="keyword">typename</span> S&gt;
+<a name="l00399"></a><a class="code" href="group__boolean__relations.html#g3051574eadb5ef8ae92ef210665a7332">00399</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>(G1 <span class="keyword">const</span>&amp; geometry1, G2 <span class="keyword">const</span>&amp; geometry2, S <span class="keyword">const</span>&amp; strategy)
+<a name="l00400"></a>00400 {
+<a name="l00401"></a>00401 <span class="keyword">typedef</span> <a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">dispatch::within</a>
+<a name="l00402"></a>00402 &lt;
+<a name="l00403"></a>00403 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G1&gt;::type</a>,
+<a name="l00404"></a>00404 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;G2&gt;::type</a>,
+<a name="l00405"></a>00405 G1,
+<a name="l00406"></a>00406 G2
+<a name="l00407"></a>00407 &gt; within_type;
+<a name="l00408"></a>00408
+<a name="l00409"></a>00409 <span class="keywordflow">return</span> within_type::apply(geometry1, geometry2, strategy);
+<a name="l00410"></a>00410 }
+<a name="l00411"></a>00411
+<a name="l00412"></a>00412 } <span class="comment">// namespace ggl</span>
+<a name="l00413"></a>00413
+<a name="l00414"></a>00414 <span class="preprocessor">#endif // GGL_ALGORITHMS_WITHIN_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by&nbsp;Doxygen
+</small></address>
+</body>
+</html>

Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/annotated.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/annotated.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,243 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+&nbsp;&nbsp;
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src=