Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r57368 - sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html
From: barend.gehrels_at_[hidden]
Date: 2009-11-04 12:53:00


Author: barendgehrels
Date: 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
New Revision: 57368
URL: http://svn.boost.org/trac/boost/changeset/57368

Log:
Filled formal review tree (ggl/doxygen doc)
Added:
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/01__point__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/02__linestring__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/03__polygon__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/06__transformation__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/07__graph__route__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/07_graph_route_example_svg.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/07_graph_route_example_text.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/access_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/access_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/add__const__if__c_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/add__const__if__c_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2for__each_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2for__each_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2within_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2within_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/annotated.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/append_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/append_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/area__by__triangles_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/area__by__triangles_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/area__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/area__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/area__huiller_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/area__huiller_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/area__result_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/area__result_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/arithmetic_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/arithmetic_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/art09.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/as__range_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/as__range_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/assemble_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/assemble_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/assign_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/assign_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/base_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/base_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/boost__array__as__linestring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/boost__array__as__linestring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/boost__array__as__ring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/boost__array__as__ring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/box_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/box_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/box__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/box__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/c01__custom__point__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/c02__custom__box__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/c03__custom__linestring__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/c04__a__custom__triangle__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/c04__b__custom__triangle__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/c05__custom__point__pointer__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/c__array_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/c__array_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/c__array__cartesian_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/c__array__cartesian_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/calculate__null_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/calculate__null_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/calculate__sum_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/calculate__sum_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/cartesian2d_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/cartesian2d_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/cartesian3d_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/cartesian3d_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/centroid__bashein__detmer_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/centroid__bashein__detmer_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/centroid__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/centroid__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/centroid_polygon.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/centroid_ring.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/check__append_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/check__append_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/check__clear_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/check__clear_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/circular__iterator_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/circular__iterator_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/class_point_list.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classcore__dispatch_1_1dimension.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classes.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1box-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1box.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1centroid__exception-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1centroid__exception.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_area_strategy.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_box.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_centroid_strategy.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_box.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_linestring.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_multi_linestring.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_multi_point.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_multi_polygon.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_point.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_polygon.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_ring.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_const_segment.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_convex_hull_strategy.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_linestring.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_multi_linestring.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_multi_point.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_multi_polygon.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_point.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_polygon.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_ring.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_segment.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1concept_1_1_within_strategy.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1degree.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1linear__ring-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1linear__ring.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1linestring-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1linestring.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1point-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1point.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1point__xy-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1point__xy.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1polygon-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1polygon.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1radian.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1segment-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1segment.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1area_1_1by__triangles-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1area_1_1by__triangles.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1area_1_1huiller-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1area_1_1huiller.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1centroid___1_1bashein__detmer-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1centroid___1_1bashein__detmer.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1convex__hull_1_1graham__andrew-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1convex__hull_1_1graham__andrew.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1distance_1_1cross__track-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1distance_1_1cross__track.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1distance_1_1haversine-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1distance_1_1haversine.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1intersection_1_1liang__barsky-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1intersection_1_1liang__barsky.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1simplify_1_1douglas__peucker-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1transform_1_1ublas__transformer.html (contents, props changed)
   sandbox/ggl/formal_review/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/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/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/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/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1within_1_1crossings__multiply-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1within_1_1crossings__multiply.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1within_1_1franklin-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1within_1_1franklin.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1within_1_1winding-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1within_1_1winding.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1svg__manipulator-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/classggl_1_1svg__manipulator.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/clear_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/clear_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/clip__linestring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/clip__linestring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/clip_linestring.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/clip_polygon.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/combine_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/combine_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/combine_box_box.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/combine_box_point.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/compare__circular_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/compare__circular_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/compiling.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/convert_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/convert_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/convex__hull__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/convex__hull__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/coordinate__dimension_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/coordinate__dimension_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/coordinate__system_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/coordinate__system_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/coordinate__type_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/coordinate__type_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/copy_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/copy_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/copy__segments_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/copy__segments_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/core_2geometry__id_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/core_2geometry__id_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/core_2is__multi_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/core_2is__multi_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/core_2point__type_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/core_2point__type_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/core_2ring__type_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/core_2ring__type_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/core_2tags_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/core_2tags_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/core_2topological__dimension_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/core_2topological__dimension_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/cs_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/cs_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/design.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/detail_2disjoint_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/detail_2disjoint_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/direction_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/direction_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/disjoint_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/disjoint_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/distance__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/distance__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/distance__cross__track_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/distance__cross__track_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/distance__haversine_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/distance__haversine_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/distance__projected__point_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/distance__projected__point_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/distance__pythagoras_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/distance__pythagoras_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/distance__result_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/distance__result_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/dot__product_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/dot__product_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/download.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/doxygen.css (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/doxygen.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/doxygen__a__design__rationale_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/doxygen__a__design__rationale_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/doxygen__c__strategy__rationale_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/doxygen__c__strategy__rationale_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/doxygen__examples_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/doxygen__examples_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/doxygen__mainpage_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/doxygen__mainpage_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/doxygen__pages_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/doxygen__pages_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/doxygen__z__article09_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/doxygen__z__article09_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/dsv.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/enrich__intersection__points_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/enrich__intersection__points_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/envelope_polygon.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/equals_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/equals_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/ever__circling__iterator_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/ever__circling__iterator_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/examples.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/exception_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/exception_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/exterior__ring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/exterior__ring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/files.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/for__each__coordinate_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/for__each__coordinate_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/for__each__range_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/for__each__range_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_0x62.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_0x63.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_0x64.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_0x65.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_0x66.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_0x67.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_0x68.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_0x69.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_0x6d.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_0x6e.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_0x6f.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_0x70.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_0x72.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_0x73.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_0x74.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_0x75.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_0x76.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_0x77.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_0x78.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_0x79.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_func.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_rela.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_type.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/functions_vars.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/geometries_2concepts_2check_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/geometries_2concepts_2check_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/geometries_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/geometries_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/get__intersection__points_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/get__intersection__points_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/globals.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/globals_defs.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__access.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__area.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__arithmetic.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__centroid.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__combine.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__compare.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__concepts.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__convert.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__convex__hull.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__core.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__cs.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__disjoint.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__distance.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__envelope.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__equals.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__for__each.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__geometries.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__intersection.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__intersects.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__length.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__overlaps.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__overlay.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__perimeter.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__sectionalize.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__simplify.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__svg.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__traits.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__transform.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__union.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__utility.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/group__within.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/hierarchy.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/hull__graham__andrew_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/hull__graham__andrew_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/index.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/interior__rings_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/interior__rings_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/intersection__point_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/intersection__point_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/intersection__points_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/intersection__points_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/intersection__result_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/intersection__result_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/intersects_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/intersects_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/inverse__transformer_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/inverse__transformer_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/is__linear_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/is__linear_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/iterators_2range__type_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/iterators_2range__type_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/length__result_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/length__result_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/linear__ring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/linear__ring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/linestring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/linestring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/linestring__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/linestring__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/make_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/make_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/map__transformer_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/map__transformer_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/math_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/math_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/matrix__transformers_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/matrix__transformers_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/merge__intersection__points_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/merge__intersection__points_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/modify__with__predicate_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/modify__with__predicate_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/modules.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2area_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2area_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2centroid_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2centroid_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2convex__hull_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2convex__hull_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2correct_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2correct_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2distance_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2distance_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2envelope_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2envelope_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2for__each_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2for__each_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2get__section_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2get__section_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2intersection_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2intersection_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2length_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2length_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2num__points_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2num__points_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2perimeter_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2perimeter_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2sectionalize_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2sectionalize_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2simplify_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2simplify_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2transform_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2transform_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2within_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2within_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2core_2geometry__id_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2core_2geometry__id_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2core_2is__multi_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2core_2is__multi_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2core_2point__type_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2core_2point__type_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2core_2ring__type_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2core_2ring__type_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2core_2tags_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2core_2tags_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2core_2topological__dimension_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2core_2topological__dimension_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2geometries_2concepts_2check_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2geometries_2concepts_2check_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2iterators_2range__type_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi_2iterators_2range__type_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi__linestring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi__linestring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi__linestring__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi__linestring__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi__point_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi__point_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi__point__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi__point__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi__polygon_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi__polygon_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi__polygon__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi__polygon__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi__sum_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/multi__sum_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespaceggl.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1concept.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1cs.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1math.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1policies.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1policies_1_1relate.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1area.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1centroid__.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1compare.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1compare_1_1detail.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1convex__hull.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1distance.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1intersection.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1side.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1simplify.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1transform.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1within.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1traits.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespacemembers.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespacemembers_enum.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespacemembers_eval.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespacemembers_func.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespacemembers_type.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespacemembers_vars.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/namespaces.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/not_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/not_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/ogc.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/output_main.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/overlaps_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/overlaps_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/pages.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/parse_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/parse_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/performance.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/point_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/point_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/point__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/point__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/point__in__poly_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/point__in__poly_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/point__in__poly__crossings__multiply_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/point__in__poly__crossings__multiply_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/point__in__poly__franklin_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/point__in__poly__franklin_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/point__in__poly__winding_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/point__in__poly__winding_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/point__on__border_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/point__on__border_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/point__order_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/point__order_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/point__xy_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/point__xy_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/policies_2compare_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/policies_2compare_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/polygon_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/polygon_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/polygon__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/polygon__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/radian__access_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/radian__access_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/range__iterator__const__if__c_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/range__iterator__const__if__c_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/register_2box_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/register_2box_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/register_2linestring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/register_2linestring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/register_2point_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/register_2point_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/register_2segment_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/register_2segment_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/replace__point__type_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/replace__point__type_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/reverse__dispatch_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/reverse__dispatch_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/ring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/ring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/ring__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/ring__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/segment_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/segment_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/segment__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/segment__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/segment__identifier_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/segment__identifier_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/segment__iterator_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/segment__iterator_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/select__calculation__type_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/select__calculation__type_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/select__coordinate__type_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/select__coordinate__type_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/select__most__precise_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/select__most__precise_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/self__intersection__points_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/self__intersection__points_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/side_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/side_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/side__by__triangle_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/side__by__triangle_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/simplify__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/simplify__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/simplify__douglas__peucker_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/simplify__douglas__peucker_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/simplify_linestring.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/sort__interior__rings_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/sort__interior__rings_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/status.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/std__as__linestring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/std__as__linestring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/std__as__ring_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/std__as__ring_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/std__pair__as__segment_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/std__pair__as__segment_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/strategies_2area_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/strategies_2area_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/strategies_2centroid_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/strategies_2centroid_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/strategies_2compare_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/strategies_2compare_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/strategies_2convex__hull_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/strategies_2convex__hull_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/strategies_2distance_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/strategies_2distance_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/strategies_2tags_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/strategies_2tags_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/strategies_2transform_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/strategies_2transform_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/strategies_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/strategies_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/strategy.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/strategy__transform_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/strategy__transform_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1add__const__if__c-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1add__const__if__c.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1area__result-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1area__result.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1box__tag.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1cartesian__distance-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1cartesian__distance.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1cartesian__tag.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1circular__iterator-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1circular__iterator.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_point_distance_strategy.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_point_segment_distance_strategy.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_simplify_strategy.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1coordinate__system-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1coordinate__system.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1coordinate__type-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1coordinate__type.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1cartesian.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1geographic-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1geographic.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1polar-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1polar.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1spherical-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1spherical.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1cs__tag-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1cs__tag.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1de9im-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1de9im.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1de9im__segment-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1de9im__segment.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1dimension.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1distance__result-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1distance__result.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1equal__to.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1ever__circling__iterator-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1ever__circling__iterator.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1exception.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1geographic__tag.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1geometry__collection__tag.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1geometry__id.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1geometry__not__recognized__tag.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1greater.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1interior__type-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1interior__type.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1is__linear.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1is__multi.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1is__radian.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1length__result-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1length__result.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1less.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1linestring__tag.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__linestring-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__linestring.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__linestring__tag.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__point-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__point.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__point__tag.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__polygon-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__polygon.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__polygon__tag.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1point__order-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1point__order.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1point__tag.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1point__type-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1point__type.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1direction__type-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1direction__type.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__direction-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__direction.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__intersection__points-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__intersection__points.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__tupled-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__tupled.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1polygon__tag.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1range__iterator__const__if__c-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1range__iterator__const__if__c.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1range__type-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1range__type.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1replace__point__type.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1reverse__dispatch.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1ring__tag.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1ring__type-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1ring__type.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1section-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1section.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1sections-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1sections.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__identifier-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__identifier.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__intersection__points-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__intersection__points.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__iterator-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__iterator.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__tag.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1select__calculation__type-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1select__calculation__type.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1select__coordinate__type-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1select__coordinate__type.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1select__most__precise-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1select__most__precise.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1single__tag.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1spherical__tag.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1area_1_1huiller_1_1excess__sum-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1area_1_1huiller_1_1excess__sum.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1compare_1_1circular__comparator-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1compare_1_1circular__comparator.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1compare_1_1default__strategy.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1compare_1_1detail_1_1shift.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1compare_1_1detail_1_1shift_3_01degree_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1compare_1_1detail_1_1shift_3_01degree_01_4.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1compare_1_1detail_1_1shift_3_01radian_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1compare_1_1detail_1_1shift_3_01radian_01_4.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1distance_1_1pythagoras-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1distance_1_1pythagoras.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1distance_1_1xy__point__segment-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1distance_1_1xy__point__segment.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1not__implemented.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1side_1_1side__by__triangle-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1side_1_1side__by__triangle.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1copy__direct-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1copy__direct.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1copy__per__coordinate-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1copy__per__coordinate.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1degree__radian__vv-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1degree__radian__vv.html (contents, props changed)
   sandbox/ggl/formal_review/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/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1degree__radian__vv__3.html (contents, props changed)
   sandbox/ggl/formal_review/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/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/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/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/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/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/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/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/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1inverse__transformer-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1inverse__transformer.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1map__transformer-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1map__transformer.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1rotate__transformer-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1rotate__transformer.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1scale__transformer.html (contents, props changed)
   sandbox/ggl/formal_review/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/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/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/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/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1translate__transformer.html (contents, props changed)
   sandbox/ggl/formal_review/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/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/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/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/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/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/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__area-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__area.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__centroid-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__centroid.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__compare-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__compare.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__convex__hull-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__convex__hull.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__distance-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__distance.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__distance__segment-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__distance__segment.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__parse-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__parse.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__side-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__side.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1pythagoras_3_01_point1_00_01_point2_01_4_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1pythagoras_3_01_point1_00_01_point2_01_4_01_4.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1xy__point__segment_3_01_point_00_01_point1103f4e3589bce477179b9c8b5adc995.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1xy__point__segment_3_01_point_00_01_point44a0bc328e7ec9bd6c5d771967a8f024.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag__distance__point__point.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag__distance__point__segment.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag__unknown.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__transform-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__transform.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__within-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__within.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1tag-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1tag.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1topological__dimension.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1access.html (contents, props changed)
   sandbox/ggl/formal_review/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_00_01_dimension_01_4-members.html (contents, props changed)
   sandbox/ggl/formal_review/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_00_01_dimension_01_4.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1append__point.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1clear.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1coordinate__system.html (contents, props changed)
   sandbox/ggl/formal_review/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/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/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1coordinate__type.html (contents, props changed)
   sandbox/ggl/formal_review/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/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/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1cs__tag.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1dimension.html (contents, props changed)
   sandbox/ggl/formal_review/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/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1exterior__ring.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1indexed__access.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1interior__rings.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1interior__type.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1point__order-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1point__order.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1point__type.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1ring__type.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1tag-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1tag.html (contents, props changed)
   sandbox/ggl/formal_review/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/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/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1use__std-members.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1use__std.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/svg_convex_hull_cities.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/svg_convex_hull_country.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/svg_intersection_countries.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/svg_intersection_polygon_box.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/svg_intersection_polygon_ring.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/svg_intersection_ring_box.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/svg_intersection_ring_ring.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/svg_intersection_roads.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/svg_simplify_country.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/svg_simplify_road.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/svg_union_polygon_box.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/svg_union_polygon_ring.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/svg_union_ring_box.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/svg_union_ring_ring.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/tab_b.gif (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/tab_l.gif (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/tab_r.gif (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/tabs.css (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/tag_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/tag_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/traverse_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/traverse_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/tuple_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/tuple_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/tuple__cartesian_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/tuple__cartesian_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/tupled_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/tupled_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/union_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/union_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/within__concept_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/within__concept_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/within_polygon.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/within_ring.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/write__dsv_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/write__dsv_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/write__svg_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/write__svg_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/write__svg__multi_8hpp.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/write__svg__multi_8hpp_source.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/x01__qt__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/x01_qt_example_output.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/x02__numeric__adaptor__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/x02_numeric_adaptor_example_output.png (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/x03__a__soci__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/x03__b__soci__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/x03__c__soci__example_8cpp-example.html (contents, props changed)
   sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/x03__d__soci__example_8cpp-example.html (contents, props changed)

Added: sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/01__point__example_8cpp-example.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/01__point__example_8cpp-example.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,165 @@
+<!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>
+
+<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>Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>01_point_example.cpp</h1>In most cases the documentation gives small examples of how to use the algorithms or classes. The point example is a slightly larger example giving the an idea of how to use different algorithms from the library, related to points. It shows<ul>
+<li>the usage of include files</li><li>how to declare points, using different coordinate types</li><li>how to construct points, specifying coordinates, initializing to zero or to infinite</li><li>how to compare points to each other</li><li>how points can be streamed as OGC text</li><li>calculating the distance from point to point</li></ul>
+<p>
+<div class="fragment"><pre class="fragment"><span class="comment">// Generic Geometry Library</span>
+<span class="comment">//</span>
+<span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<span class="comment">//</span>
+<span class="comment">// Point Example - showing different type of points</span>
+
+<span class="preprocessor">#include &lt;iostream&gt;</span>
+
+<span class="preprocessor">#include &lt;ggl/ggl.hpp&gt;</span>
+<span class="preprocessor">#include &lt;<a class="code" href="tuple__cartesian_8hpp.html">ggl/geometries/adapted/tuple_cartesian.hpp</a>&gt;</span>
+<span class="preprocessor">#include &lt;<a class="code" href="c__array__cartesian_8hpp.html">ggl/geometries/adapted/c_array_cartesian.hpp</a>&gt;</span>
+<span class="preprocessor">#include &lt;<a class="code" href="cartesian2d_8hpp.html">ggl/geometries/cartesian2d.hpp</a>&gt;</span>
+
+
+<span class="keywordtype">int</span> main()
+{
+ <span class="keyword">using namespace </span>ggl;
+
+ <span class="comment">// GGL contains several point types:</span>
+ <span class="comment">// 1: it's own generic type</span>
+ <a name="_a0"></a><a class="code" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point&lt;double, 2, cs::cartesian&gt;</a> pt1;
+
+ <span class="comment">// 2: it's own type targetted to Cartesian (x,y) coordinates</span>
+ <a name="_a1"></a><a class="code" href="classggl_1_1point__xy.html" title="2D point in Cartesian coordinate system">point_2d</a> pt2;
+
+ <span class="comment">// 3: it supports Boost tuple's (by including the headerfile)</span>
+ boost::tuple&lt;double, double&gt; pt3;
+
+ <span class="comment">// 4: it supports normal arrays</span>
+ <span class="keywordtype">double</span> pt4[2];
+
+ <span class="comment">// 5: there are more variants, and you can create your own.</span>
+ <span class="comment">// (see therefore the custom_point example)</span>
+
+ <span class="comment">// All these types are handled the same way. We show here</span>
+ <span class="comment">// assigning them and calculating distances.</span>
+ <a name="a2"></a><a class="code" href="group__access.html#g8048129c97cd540dc75d9040d8d95c0e" title="assign two values to a 2D point">assign</a>(pt1, 1, 1);
+ <a class="code" href="group__access.html#g8048129c97cd540dc75d9040d8d95c0e" title="assign two values to a 2D point">assign</a>(pt2, 2, 2);
+ <a class="code" href="group__access.html#g8048129c97cd540dc75d9040d8d95c0e" title="assign two values to a 2D point">assign</a>(pt3, 3, 3);
+ <a class="code" href="group__access.html#g8048129c97cd540dc75d9040d8d95c0e" title="assign two values to a 2D point">assign</a>(pt4, 4, 4);
+
+ <span class="keywordtype">double</span> d1 = <a name="a3"></a><a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>(pt1, pt2);
+ <span class="keywordtype">double</span> d2 = <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>(pt3, pt4);
+ std::cout &lt;&lt; <span class="stringliteral">"Distances: "</span> &lt;&lt; d1 &lt;&lt; <span class="stringliteral">" and "</span> &lt;&lt; d2 &lt;&lt; std::endl;
+
+ <span class="comment">// (in case you didn't note, distances can be calculated</span>
+ <span class="comment">// from points with different point-types)</span>
+
+
+ <span class="comment">// Several ways of construction and setting point values</span>
+ <span class="comment">// 1: default, empty constructor, causing no initialization at all</span>
+ <a class="code" href="classggl_1_1point__xy.html" title="2D point in Cartesian coordinate system">point_2d</a> p1;
+
+ <span class="comment">// 2: as shown above, assign</span>
+ <a class="code" href="classggl_1_1point__xy.html" title="2D point in Cartesian coordinate system">point_2d</a> p2;
+ <a class="code" href="group__access.html#g8048129c97cd540dc75d9040d8d95c0e" title="assign two values to a 2D point">assign</a>(p2, 1, 1);
+
+ <span class="comment">// 3: using "set" function </span>
+ <span class="comment">// set uses the concepts behind, such that it can be applied for</span>
+ <span class="comment">// every point-type (like assign)</span>
+ <a class="code" href="classggl_1_1point__xy.html" title="2D point in Cartesian coordinate system">point_2d</a> p3;
+ set&lt;0&gt;(p3, 1);
+ set&lt;1&gt;(p3, 1);
+ <span class="comment">// set&lt;2&gt;(p3, 1); //will result in compile-error</span>
+
+
+ <span class="comment">// 3: for any point type, and other geometry objects: </span>
+ <span class="comment">// there is the "make" object generator</span>
+ <span class="comment">// (this one requires to specify the point-type). </span>
+ <a class="code" href="classggl_1_1point__xy.html" title="2D point in Cartesian coordinate system">point_2d</a> p4 = make&lt;point_2d&gt;(1,1);
+
+
+ <span class="comment">// 5: for the point_2d type only: constructor with two values</span>
+ <a class="code" href="classggl_1_1point__xy.html" title="2D point in Cartesian coordinate system">point_2d</a> p5(1,1);
+
+ <span class="comment">// 6: for boost tuples you can of course use make_tuple</span>
+
+
+ <span class="comment">// Some ways of getting point values</span>
+
+ <span class="comment">// 1: using the "get" function following the concepts behind</span>
+ std::cout &lt;&lt; get&lt;0&gt;(p2) &lt;&lt; <span class="stringliteral">","</span> &lt;&lt; get&lt;1&gt;(p2) &lt;&lt; std::endl;
+
+ <span class="comment">// 2: for point-2d only</span>
+ std::cout &lt;&lt; p2.<a name="a4"></a><a class="code" href="classggl_1_1point__xy.html#a7803d55e0758a659d618583b757b272" title="Get x-value.">x</a>() &lt;&lt; <span class="stringliteral">","</span> &lt;&lt; p2.<a name="a5"></a><a class="code" href="classggl_1_1point__xy.html#a83e59f4d401b1a4c6f037979c57260f" title="Get y-value.">y</a>() &lt;&lt; std::endl;
+
+ <span class="comment">// 3: using boost-tuples you of course can boost-tuple-methods</span>
+ std::cout &lt;&lt; pt3.get&lt;0&gt;() &lt;&lt; <span class="stringliteral">","</span> &lt;&lt; pt3.get&lt;1&gt;() &lt;&lt; std::endl;
+
+ <span class="comment">// 4: GGL supports various output formats, e.g. DSV</span>
+ <span class="comment">// (delimiter separated values)</span>
+ std::cout &lt;&lt; <a name="a6"></a><a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">dsv</a>(pt3) &lt;&lt; std::endl;
+
+
+ <span class="comment">// Other examples show other types of points, geometries and more algorithms</span>
+
+ <span class="keywordflow">return</span> 0;
+}
+</pre></div> </div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>November 5, 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/libs/ggl/doc/doxygen_output/html/02__linestring__example_8cpp-example.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/02__linestring__example_8cpp-example.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,268 @@
+<!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>
+
+<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>Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>02_linestring_example.cpp</h1>The linestring example shows how linestrings can be declared and used and shows some more algorithms. One of the important concepts of the Generic Geometry Library is that it is totally built upon the standard library, using the standard containers such as std::vector.<p>
+A linestring is, as explained elsewhere in this documentation, not much more than a vector of points. Most algorithms run on linestrings, but can also run on any iterator pair. And all algorithms on std::vector can be used on geometry::linestring.<p>
+The sample shows this, shows some algorithms:<ul>
+<li>geometry::envelope</li><li>geometry::length</li><li>geometry::distance</li><li>geometry::simplify</li><li>geometry::for_each</li><li>geometry::intersection</li></ul>
+<p>
+This documentation illustrates the simplify algorithm and the intersection algorithm with some pictures.<p>
+The simplify algorithm simplifies a linestring. Simplification means that the less important points are removed from the line and that the points that are most important for the shape of a line are kept. Simplification is done using the well known Douglas Peucker algorithm. The library user can specify the distance or tolerance, which indicates how much the linestring should be simplified.<p>
+The image below shows the original and simplified linestring: <div align="center">
+<img src="simplify_linestring.png" alt="simplify_linestring.png">
+</div>
+ The blue line is the original linestring; the red line is the simplified line which has one point less. In geographical applications simplification can reduce a linestring to its basic form containing only 10% of its original points.<p>
+The intersection algorithm intersects two geometries which each other, delivering a third geometry. In the case of the example a linestring is intersected with a box. Intersection with a box is often called a clip. The image below illustrates the intersection. <div align="center">
+<img src="clip_linestring.png" alt="clip_linestring.png">
+</div>
+ The yellow line is intersected with the blue box. The intersection result, painted in red, contains three linestrings.<p>
+<div class="fragment"><pre class="fragment"><span class="comment">// Generic Geometry Library</span>
+<span class="comment">//</span>
+<span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<span class="comment">//</span>
+<span class="comment">// Linestring Example</span>
+
+<span class="preprocessor">#include &lt;algorithm&gt;</span> <span class="comment">// for reverse, unique</span>
+<span class="preprocessor">#include &lt;iostream&gt;</span>
+<span class="preprocessor">#include &lt;iterator&gt;</span>
+<span class="preprocessor">#include &lt;utility&gt;</span>
+<span class="preprocessor">#include &lt;vector&gt;</span>
+
+<span class="preprocessor">#include &lt;ggl/ggl.hpp&gt;</span>
+<span class="preprocessor">#include &lt;<a class="code" href="cartesian2d_8hpp.html">ggl/geometries/cartesian2d.hpp</a>&gt;</span>
+<span class="comment">// Optional includes to handle c-arrays as points, std::vectors as linestrings</span>
+<span class="preprocessor">#include &lt;<a class="code" href="c__array__cartesian_8hpp.html">ggl/geometries/adapted/c_array_cartesian.hpp</a>&gt;</span>
+<span class="preprocessor">#include &lt;<a class="code" href="std__as__linestring_8hpp.html">ggl/geometries/adapted/std_as_linestring.hpp</a>&gt;</span>
+
+
+
+<span class="keyword">template</span>&lt;<span class="keyword">typename</span> P&gt;
+<span class="keyword">inline</span> <span class="keywordtype">void</span> translate_function(P&amp; p)
+{
+ p.x(p.x() + 100.0);
+}
+
+<span class="keyword">template</span>&lt;<span class="keyword">typename</span> P&gt;
+<span class="keyword">struct </span>scale_functor
+{
+ <span class="keyword">inline</span> <span class="keywordtype">void</span> operator()(P&amp; p)
+ {
+ p.x(p.x() * 1000.0);
+ p.y(p.y() * 1000.0);
+ }
+};
+
+<span class="keywordtype">int</span> main(<span class="keywordtype">void</span>)
+{
+ <span class="keyword">using namespace </span>ggl;
+
+ <span class="comment">// Define a linestring, which is a vector of points, and add some points</span>
+ <span class="comment">// (we add them deliberately in different ways)</span>
+ <a name="_a0"></a><a class="code" href="classggl_1_1linestring.html" title="A linestring (named so by OGC) is a collection (default a vector) of points.">linestring_2d</a> ls;
+
+ <span class="comment">// points can be created using "make" and added to a linestring using the std:: "push_back"</span>
+ ls.push_back(make&lt;point_2d&gt;(1.1, 1.1));
+
+ <span class="comment">// points can also be assigned using "assign" and added to a linestring using "append"</span>
+ <a name="_a1"></a><a class="code" href="classggl_1_1point__xy.html" title="2D point in Cartesian coordinate system">point_2d</a> lp;
+ <a name="a2"></a><a class="code" href="group__access.html#g8048129c97cd540dc75d9040d8d95c0e" title="assign two values to a 2D point">assign</a>(lp, 2.5, 2.1);
+ <a name="a3"></a><a class="code" href="group__access.html#ge6ff0cb391fb5a3c3a312defe15b4909" title="Appends one or more points to a linestring, ring, polygon, multi.">append</a>(ls, lp);
+
+ <span class="comment">// Lines can be streamed using DSV (delimiter separated values)</span>
+ std::cout &lt;&lt; <a name="a4"></a><a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(ls) &lt;&lt; std::endl;
+
+ <span class="comment">// The bounding box of linestrings can be calculated</span>
+ <a name="_a5"></a><a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box_2d</a> b;
+ <a name="a6"></a><a class="code" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67" title="Calculate envelope of a geometry.">envelope</a>(ls, b);
+ std::cout &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(b) &lt;&lt; std::endl;
+
+ <span class="comment">// The length of the line can be calulated</span>
+ std::cout &lt;&lt; <span class="stringliteral">"length: "</span> &lt;&lt; <a name="a7"></a><a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>(ls) &lt;&lt; std::endl;
+
+ <span class="comment">// All things from std::vector can be called, because a linestring is a vector</span>
+ std::cout &lt;&lt; <span class="stringliteral">"number of points 1: "</span> &lt;&lt; ls.size() &lt;&lt; std::endl;
+
+ <span class="comment">// All things from boost ranges can be called because a linestring is considered as a range</span>
+ std::cout &lt;&lt; <span class="stringliteral">"number of points 2: "</span> &lt;&lt; boost::size(ls) &lt;&lt; std::endl;
+
+ <span class="comment">// Generic function from geometry/OGC delivers the same value</span>
+ std::cout &lt;&lt; <span class="stringliteral">"number of points 3: "</span> &lt;&lt; <a name="a8"></a><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>(ls) &lt;&lt; std::endl;
+
+ <span class="comment">// The distance from a point to a linestring can be calculated</span>
+ <a class="code" href="classggl_1_1point__xy.html" title="2D point in Cartesian coordinate system">point_2d</a> p(1.9, 1.2);
+ std::cout &lt;&lt; <span class="stringliteral">"distance of "</span> &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(p)
+ &lt;&lt; <span class="stringliteral">" to line: "</span> &lt;&lt; <a name="a9"></a><a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>(p, ls) &lt;&lt; std::endl;
+
+ <span class="comment">// A linestring is a vector. However, some algorithms consider "segments",</span>
+ <span class="comment">// which are the line pieces between two points of a linestring.</span>
+ <span class="keywordtype">double</span> d = <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>(p, <a name="_a10"></a><a class="code" href="classggl_1_1segment.html" title="Class segment: small class containing two (templatized) point references.">segment&lt;point_2d &gt;</a>(ls.front(), ls.back()));
+ std::cout &lt;&lt; <span class="stringliteral">"distance: "</span> &lt;&lt; d &lt;&lt; std::endl;
+
+ <span class="comment">// Add some three points more, let's do it using a classic array.</span>
+ <span class="comment">// (See documentation for picture of this linestring)</span>
+ <span class="keyword">const</span> <span class="keywordtype">double</span> c[][2] = { {3.1, 3.1}, {4.9, 1.1}, {3.1, 1.9} };
+ <a class="code" href="group__access.html#ge6ff0cb391fb5a3c3a312defe15b4909" title="Appends one or more points to a linestring, ring, polygon, multi.">append</a>(ls, c);
+ std::cout &lt;&lt; <span class="stringliteral">"appended: "</span> &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(ls) &lt;&lt; std::endl;
+
+ <span class="comment">// Output as iterator-pair on a vector</span>
+ {
+ std::vector&lt;point_2d&gt; v;
+ std::copy(ls.begin(), ls.end(), std::back_inserter(v));
+
+ std::cout
+ &lt;&lt; <span class="stringliteral">"as vector: "</span>
+ &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(v)
+ &lt;&lt; std::endl;
+
+ std::cout
+ &lt;&lt; <span class="stringliteral">"as it-pair: "</span>
+ &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(std::make_pair(v.begin(), v.end()))
+ &lt;&lt; std::endl;
+ }
+
+ <span class="comment">// All algorithms from std can be used: a linestring is a vector</span>
+ std::reverse(ls.begin(), ls.end());
+ std::cout &lt;&lt; <span class="stringliteral">"reversed: "</span> &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(ls) &lt;&lt; std::endl;
+ std::reverse(boost::begin(ls), boost::end(ls));
+
+ <span class="comment">// The other way, using a vector instead of a linestring, is also possible</span>
+ std::vector&lt;point_2d&gt; pv(ls.begin(), ls.end());
+ std::cout &lt;&lt; <span class="stringliteral">"length: "</span> &lt;&lt; <a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>(pv) &lt;&lt; std::endl;
+
+ <span class="comment">// If there are double points in the line, you can use unique to remove them</span>
+ <span class="comment">// So we add the last point, print, make a unique copy and print</span>
+ ls.push_back(ls.back());
+ ls.insert(ls.begin(), ls.front());
+ std::cout &lt;&lt; <span class="stringliteral">"extra duplicate points: "</span> &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(ls) &lt;&lt; std::endl;
+
+ {
+ <a class="code" href="classggl_1_1linestring.html" title="A linestring (named so by OGC) is a collection (default a vector) of points.">linestring_2d</a> ls_copy;
+ std::unique_copy(ls.begin(), ls.end(), std::back_inserter(ls_copy),
+ <a name="_a11"></a><a class="code" href="structggl_1_1equal__to.html" title="Equal To functor, to compare if points are equal.">ggl::equal_to&lt;point_2d&gt;</a>());
+ ls = ls_copy;
+ std::cout &lt;&lt; <span class="stringliteral">"uniquecopy: "</span> &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(ls) &lt;&lt; std::endl;
+ }
+
+ <span class="comment">// Lines can be simplified. This removes points, but preserves the shape</span>
+ <a class="code" href="classggl_1_1linestring.html" title="A linestring (named so by OGC) is a collection (default a vector) of points.">linestring_2d</a> ls_simplified;
+ <a name="a12"></a><a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry using a specified strategy.">simplify</a>(ls, ls_simplified, 0.5);
+ std::cout &lt;&lt; <span class="stringliteral">"simplified: "</span> &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(ls_simplified) &lt;&lt; std::endl;
+
+
+ <span class="comment">// for_each:</span>
+ <span class="comment">// 1) Lines can be visited with std::for_each</span>
+ <span class="comment">// 2) for_each_point is also defined for all geometries</span>
+ <span class="comment">// 3) for_each_segment is defined for all geometries to all segments</span>
+ <span class="comment">// 4) loop is defined for geometries to visit segments</span>
+ <span class="comment">// with state apart, and to be able to break out (not shown here)</span>
+ {
+ <a class="code" href="classggl_1_1linestring.html" title="A linestring (named so by OGC) is a collection (default a vector) of points.">linestring_2d</a> lscopy = ls;
+ std::for_each(lscopy.begin(), lscopy.end(), translate_function&lt;point_2d&gt;);
+ <a name="a13"></a><a class="code" href="namespaceggl.html#0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a>(lscopy, scale_functor&lt;point_2d&gt;());
+ <a class="code" href="namespaceggl.html#0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a>(lscopy, translate_function&lt;point_2d&gt;);
+ std::cout &lt;&lt; <span class="stringliteral">"modified line: "</span> &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(lscopy) &lt;&lt; std::endl;
+ }
+
+ <span class="comment">// Lines can be clipped using a clipping box. Clipped lines are added to the output iterator</span>
+ <a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box_2d</a> cb(<a name="a14"></a><a class="code" href="namespaceggl.html#440bc7037bbf1ba7118d6952d71b8e00">point_2d</a>(1.5, 1.5), <a class="code" href="namespaceggl.html#440bc7037bbf1ba7118d6952d71b8e00">point_2d</a>(4.5, 2.5));
+
+ std::vector&lt;linestring_2d&gt; clipped;
+ intersection_inserter&lt;linestring_2d&gt; (cb, ls, std::back_inserter(clipped));
+
+ <span class="comment">// Also possible: clip-output to a vector of vectors</span>
+ std::vector&lt;std::vector&lt;point_2d&gt; &gt; vector_out;
+ intersection_inserter&lt;std::vector&lt;point_2d&gt; &gt;(cb, ls, std::back_inserter(vector_out));
+
+ std::cout &lt;&lt; <span class="stringliteral">"clipped output as vector:"</span> &lt;&lt; std::endl;
+ <span class="keywordflow">for</span> (std::vector&lt;std::vector&lt;point_2d&gt; &gt;::const_iterator it
+ = vector_out.begin(); it != vector_out.end(); ++it)
+ {
+ std::cout &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(*it) &lt;&lt; std::endl;
+ }
+
+ <span class="comment">// Calculate the convex hull of the linestring</span>
+ <a name="_a15"></a><a class="code" href="classggl_1_1polygon.html" title="The polygon contains an outer ring and zero or more inner rings.">polygon_2d</a> hull;
+ <a name="a16"></a><a class="code" href="namespaceggl.html#f0167b50b6c00d851aa7ef49cbd938b2">convex_hull</a>(ls, hull);
+ std::cout &lt;&lt; <span class="stringliteral">"Convex hull:"</span> &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(hull) &lt;&lt; std::endl;
+
+ <span class="comment">// All the above assumed 2D Cartesian linestrings. 3D is possible as well</span>
+ <span class="comment">// Let's define a 3D point ourselves, this time using 'float'</span>
+ <span class="keyword">typedef</span> <a name="_a17"></a><a class="code" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point&lt;float, 3, cs::cartesian&gt;</a> <a name="_a18"></a><a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+ <span class="keyword">typedef</span> <a class="code" href="classggl_1_1linestring.html" title="A linestring (named so by OGC) is a collection (default a vector) of points.">linestring&lt;point_type&gt;</a> line_type;
+ line_type line3d;
+ line3d.push_back(make&lt;point_type&gt;(1,2,3));
+ line3d.push_back(make&lt;point_type&gt;(4,5,6));
+ line3d.push_back(make&lt;point_type&gt;(7,8,9));
+
+ <span class="comment">// Not all algorithms work on 3d lines. For example convex hull does NOT.</span>
+ <span class="comment">// But, for example, length, distance, simplify, envelope and stream do.</span>
+ std::cout &lt;&lt; <span class="stringliteral">"3D: length: "</span> &lt;&lt; <a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>(line3d) &lt;&lt; <span class="stringliteral">" line: "</span> &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(line3d) &lt;&lt; std::endl;
+
+ <span class="comment">// With DSV you can also use other delimiters, e.g. JSON style</span>
+ std::cout &lt;&lt; <span class="stringliteral">"JSON: "</span>
+ &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(ls, <span class="stringliteral">", "</span>, <span class="stringliteral">"["</span>, <span class="stringliteral">"]"</span>, <span class="stringliteral">", "</span>, <span class="stringliteral">"[ "</span>, <span class="stringliteral">" ]"</span>)
+ &lt;&lt; std::endl;
+
+ <span class="keywordflow">return</span> 0;
+}
+</pre></div> </div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>November 5, 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/libs/ggl/doc/doxygen_output/html/03__polygon__example_8cpp-example.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/03__polygon__example_8cpp-example.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,200 @@
+<!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>
+
+<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>Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>03_polygon_example.cpp</h1>The polygon example shows some examples of what can be done with polygons in the Generic Geometry Library: the outer ring and the inner rings how to calculate the area of a polygon how to get the centroid, and how to get an often more interesting label point how to correct the polygon such that it is clockwise and closed within: the well-known point in polygon algorithm how to use polygons which use another container, or which use different containers for points and for inner rings how polygons can be intersected, or clipped, using a clipping box<p>
+The illustrations below show the usage of the within algorithm and the intersection algorithm.<p>
+The within algorithm results in true if a point lies completly within a polygon. If it lies exactly on a border it is not considered as within and if it is inside a hole it is also not within the polygon. This is illustrated below, where only the point in the middle is within the polygon.<p>
+<div align="center">
+<img src="within_polygon.png" alt="within_polygon.png">
+</div>
+<p>
+The clipping algorithm, called intersection, is illustrated below:<p>
+<div align="center">
+<img src="clip_polygon.png" alt="clip_polygon.png">
+</div>
+<p>
+The yellow polygon, containing a hole, is clipped with the blue rectangle, resulting in a multi_polygon of three polygons, drawn in red. The hole is vanished.<p>
+include polygon_example.cpp<p>
+<div class="fragment"><pre class="fragment"><span class="comment">// Generic Geometry Library</span>
+<span class="comment">//</span>
+<span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<span class="comment">//</span>
+<span class="comment">// Polygon Example</span>
+
+<span class="preprocessor">#include &lt;algorithm&gt;</span> <span class="comment">// for reverse, unique</span>
+<span class="preprocessor">#include &lt;iostream&gt;</span>
+<span class="preprocessor">#include &lt;string&gt;</span>
+
+<span class="preprocessor">#include &lt;ggl/ggl.hpp&gt;</span>
+<span class="preprocessor">#include &lt;<a class="code" href="cartesian2d_8hpp.html">ggl/geometries/cartesian2d.hpp</a>&gt;</span>
+<span class="preprocessor">#include &lt;<a class="code" href="c__array__cartesian_8hpp.html">ggl/geometries/adapted/c_array_cartesian.hpp</a>&gt;</span>
+<span class="preprocessor">#include &lt;<a class="code" href="std__as__linestring_8hpp.html">ggl/geometries/adapted/std_as_linestring.hpp</a>&gt;</span>
+
+std::string boolstr(<span class="keywordtype">bool</span> v)
+{
+ <span class="keywordflow">return</span> v ? <span class="stringliteral">"true"</span> : <span class="stringliteral">"false"</span>;
+}
+
+<span class="keywordtype">int</span> main(<span class="keywordtype">void</span>)
+{
+ <span class="keyword">using namespace </span>ggl;
+
+ <span class="comment">// Define a polygon and fill the outer ring.</span>
+ <span class="comment">// In most cases you will read it from a file or database</span>
+ <a name="_a0"></a><a class="code" href="classggl_1_1polygon.html" title="The polygon contains an outer ring and zero or more inner rings.">polygon_2d</a> poly;
+ {
+ <span class="keyword">const</span> <span class="keywordtype">double</span> coor[][2] = {
+ {2.0, 1.3}, {2.4, 1.7}, {2.8, 1.8}, {3.4, 1.2}, {3.7, 1.6},
+ {3.4, 2.0}, {4.1, 3.0}, {5.3, 2.6}, {5.4, 1.2}, {4.9, 0.8}, {2.9, 0.7},
+ {2.0, 1.3} <span class="comment">// closing point is opening point</span>
+ };
+ <a name="a1"></a><a class="code" href="group__access.html#g8048129c97cd540dc75d9040d8d95c0e" title="assign two values to a 2D point">assign</a>(poly, coor);
+ }
+
+ <span class="comment">// Polygons should be closed, and directed clockwise. If you're not sure if that is the case,</span>
+ <span class="comment">// call the correct algorithm</span>
+ <a name="a2"></a><a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>(poly);
+
+ <span class="comment">// Polygons can be streamed as text</span>
+ <span class="comment">// (or more precisely: as DSV (delimiter separated values))</span>
+ std::cout &lt;&lt; <a name="a3"></a><a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(poly) &lt;&lt; std::endl;
+
+ <span class="comment">// As with lines, bounding box of polygons can be calculated</span>
+ <a name="_a4"></a><a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box_2d</a> b;
+ <a name="a5"></a><a class="code" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67" title="Calculate envelope of a geometry.">envelope</a>(poly, b);
+ std::cout &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(b) &lt;&lt; std::endl;
+
+ <span class="comment">// The area of the polygon can be calulated</span>
+ std::cout &lt;&lt; <span class="stringliteral">"area: "</span> &lt;&lt; <a name="a6"></a><a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>(poly) &lt;&lt; std::endl;
+
+ <span class="comment">// And the centroid, which is the center of gravity</span>
+ <a name="_a7"></a><a class="code" href="classggl_1_1point__xy.html" title="2D point in Cartesian coordinate system">point_2d</a> cent;
+ <a name="a8"></a><a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>(poly, cent);
+ std::cout &lt;&lt; <span class="stringliteral">"centroid: "</span> &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(cent) &lt;&lt; std::endl;
+
+
+ <span class="comment">// The number of points have to called per ring separately</span>
+ std::cout &lt;&lt; <span class="stringliteral">"number of points in outer ring: "</span> &lt;&lt; poly.<a name="a9"></a><a class="code" href="classggl_1_1polygon.html#5faae375ec2c4b4547da615fa8864e74">outer</a>().size() &lt;&lt; std::endl;
+
+ <span class="comment">// Polygons can have one or more inner rings, also called holes, donuts, islands, interior rings.</span>
+ <span class="comment">// Let's add one</span>
+ {
+ poly.<a name="a10"></a><a class="code" href="classggl_1_1polygon.html#5a8564eeeaa4f244e6f70ab10395a63f">inners</a>().resize(1);
+ <a name="_a11"></a><a class="code" href="classggl_1_1linear__ring.html" title="A linear_ring (linear linear_ring) is a closed line which should not be selfintersecting...">linear_ring&lt;point_2d&gt;</a>&amp; inner = poly.<a class="code" href="classggl_1_1polygon.html#5a8564eeeaa4f244e6f70ab10395a63f">inners</a>().back();
+
+ <span class="keyword">const</span> <span class="keywordtype">double</span> coor[][2] = { {4.0, 2.0}, {4.2, 1.4}, {4.8, 1.9}, {4.4, 2.2}, {4.0, 2.0} };
+ <a class="code" href="group__access.html#g8048129c97cd540dc75d9040d8d95c0e" title="assign two values to a 2D point">assign</a>(inner, coor);
+ }
+
+ <a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>(poly);
+
+ std::cout &lt;&lt; <span class="stringliteral">"with inner ring:"</span> &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(poly) &lt;&lt; std::endl;
+ <span class="comment">// The area of the polygon is changed of course</span>
+ std::cout &lt;&lt; <span class="stringliteral">"new area of polygon: "</span> &lt;&lt; <a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>(poly) &lt;&lt; std::endl;
+ <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>(poly, cent);
+ std::cout &lt;&lt; <span class="stringliteral">"new centroid: "</span> &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(cent) &lt;&lt; std::endl;
+
+ <span class="comment">// You can test whether points are within a polygon</span>
+ std::cout &lt;&lt; <span class="stringliteral">"point in polygon:"</span>
+ &lt;&lt; <span class="stringliteral">" p1: "</span> &lt;&lt; boolstr(<a name="a12"></a><a class="code" href="group__within.html#g599c2aa76cf2037eb40514e449ace28d" title="Within, examine if a geometry is within another geometry.">within</a>(make&lt;point_2d&gt;(3.0, 2.0), poly))
+ &lt;&lt; <span class="stringliteral">" p2: "</span> &lt;&lt; boolstr(<a class="code" href="group__within.html#g599c2aa76cf2037eb40514e449ace28d" title="Within, examine if a geometry is within another geometry.">within</a>(make&lt;point_2d&gt;(3.7, 2.0), poly))
+ &lt;&lt; <span class="stringliteral">" p3: "</span> &lt;&lt; boolstr(<a class="code" href="group__within.html#g599c2aa76cf2037eb40514e449ace28d" title="Within, examine if a geometry is within another geometry.">within</a>(make&lt;point_2d&gt;(4.4, 2.0), poly))
+ &lt;&lt; std::endl;
+
+ <span class="comment">// As with linestrings and points, you can derive from polygon to add, for example,</span>
+ <span class="comment">// fill color and stroke color. Or SRID (spatial reference ID). Or Z-value. Or a property map.</span>
+ <span class="comment">// We don't show this here.</span>
+
+ <span class="comment">// Clip the polygon using a bounding box</span>
+ <a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box_2d</a> cb(make&lt;point_2d&gt;(1.5, 1.5), make&lt;point_2d&gt;(4.5, 2.5));
+ <span class="keyword">typedef</span> std::vector&lt;polygon_2d &gt; polygon_list;
+ polygon_list v;
+
+ intersection_inserter&lt;polygon_2d&gt;(cb, poly, std::back_inserter(v));
+ std::cout &lt;&lt; <span class="stringliteral">"Clipped output polygons"</span> &lt;&lt; std::endl;
+ <span class="keywordflow">for</span> (polygon_list::const_iterator it = v.begin(); it != v.end(); ++it)
+ {
+ std::cout &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(*it) &lt;&lt; std::endl;
+ }
+
+ <a class="code" href="classggl_1_1polygon.html" title="The polygon contains an outer ring and zero or more inner rings.">polygon_2d</a> hull;
+ <a name="a13"></a><a class="code" href="namespaceggl.html#f0167b50b6c00d851aa7ef49cbd938b2">convex_hull</a>(poly, hull);
+ std::cout &lt;&lt; <span class="stringliteral">"Convex hull:"</span> &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(hull) &lt;&lt; std::endl;
+
+ <span class="comment">// If you really want:</span>
+ <span class="comment">// You don't have to use a vector, you can define a polygon with a deque</span>
+ <span class="comment">// You can specify the container for the points and for the inner rings independantly</span>
+
+ <span class="keyword">typedef</span> <a class="code" href="classggl_1_1polygon.html" title="The polygon contains an outer ring and zero or more inner rings.">polygon&lt;point_2d, std::vector, std::deque&gt;</a> polygon_type;
+ polygon_type poly2;
+ <a name="_a14"></a><a class="code" href="structggl_1_1ring__type.html" title="Meta-function which defines ring type of (multi)polygon geometry.">ring_type&lt;polygon_type&gt;::type</a>&amp; ring = <a name="a15"></a><a class="code" href="group__access.html#g4dd59c8603683e869f1d74bd40045b8b" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly2);
+ <a name="a16"></a><a class="code" href="group__access.html#ge6ff0cb391fb5a3c3a312defe15b4909" title="Appends one or more points to a linestring, ring, polygon, multi.">append</a>(ring, make&lt;point_2d&gt;(2.8, 1.9));
+ <a class="code" href="group__access.html#ge6ff0cb391fb5a3c3a312defe15b4909" title="Appends one or more points to a linestring, ring, polygon, multi.">append</a>(ring, make&lt;point_2d&gt;(2.9, 2.4));
+ <a class="code" href="group__access.html#ge6ff0cb391fb5a3c3a312defe15b4909" title="Appends one or more points to a linestring, ring, polygon, multi.">append</a>(ring, make&lt;point_2d&gt;(3.3, 2.2));
+ <a class="code" href="group__access.html#ge6ff0cb391fb5a3c3a312defe15b4909" title="Appends one or more points to a linestring, ring, polygon, multi.">append</a>(ring, make&lt;point_2d&gt;(3.2, 1.8));
+ <a class="code" href="group__access.html#ge6ff0cb391fb5a3c3a312defe15b4909" title="Appends one or more points to a linestring, ring, polygon, multi.">append</a>(ring, make&lt;point_2d&gt;(2.8, 1.9));
+ std::cout &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(poly2) &lt;&lt; std::endl;
+
+ <span class="keywordflow">return</span> 0;
+}
+</pre></div> </div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>November 5, 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/libs/ggl/doc/doxygen_output/html/06__transformation__example_8cpp-example.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/06__transformation__example_8cpp-example.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,111 @@
+<!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>
+
+<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>Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>06_transformation_example.cpp</h1>This sample demonstrates the usage of transformations in the Generic Geometry Library. Behind the screens this is done using with the uBLAS matrix/vector library.<p>
+<div class="fragment"><pre class="fragment"><span class="comment">// Generic Geometry Library</span>
+<span class="comment">//</span>
+<span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<span class="comment">//</span>
+<span class="comment">// Transformation Example</span>
+
+<span class="preprocessor">#include &lt;iostream&gt;</span>
+
+<span class="preprocessor">#include &lt;ggl/ggl.hpp&gt;</span>
+<span class="preprocessor">#include &lt;<a class="code" href="cartesian2d_8hpp.html">ggl/geometries/cartesian2d.hpp</a>&gt;</span>
+<span class="preprocessor">#include &lt;<a class="code" href="c__array__cartesian_8hpp.html">ggl/geometries/adapted/c_array_cartesian.hpp</a>&gt;</span>
+<span class="preprocessor">#include &lt;<a class="code" href="std__as__linestring_8hpp.html">ggl/geometries/adapted/std_as_linestring.hpp</a>&gt;</span>
+
+<span class="keywordtype">int</span> main()
+{
+ <span class="keyword">using namespace </span>ggl;
+
+ <a name="_a0"></a><a class="code" href="classggl_1_1point__xy.html" title="2D point in Cartesian coordinate system">point_2d</a> p(1, 1);
+ <a class="code" href="classggl_1_1point__xy.html" title="2D point in Cartesian coordinate system">point_2d</a> p2;
+
+ <span class="comment">// Example: translate a point over (5,5)</span>
+ <a name="_a1"></a><a class="code" href="structggl_1_1strategy_1_1transform_1_1translate__transformer.html" title="Transformation strategy to translate in Cartesian system.">strategy::transform::translate_transformer&lt;point_2d, point_2d&gt;</a> translate(5, 5);
+
+ <a name="a2"></a><a class="code" href="group__transform.html#g69b7e7f328a6092efb8edc9d857504d1" title="Transforms from one geometry to another geometry using a strategy.">transform</a>(p, p2, translate);
+ std::cout &lt;&lt; <span class="stringliteral">"transformed point "</span> &lt;&lt; <a name="a3"></a><a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(p2) &lt;&lt; std::endl;
+
+ <span class="comment">// Transform a polygon</span>
+ <a name="_a4"></a><a class="code" href="classggl_1_1polygon.html" title="The polygon contains an outer ring and zero or more inner rings.">polygon_2d</a> poly, poly2;
+ <span class="keyword">const</span> <span class="keywordtype">double</span> coor[][2] = { {0, 0}, {0, 7}, {2, 2}, {2, 0}, {0, 0} };
+ <span class="comment">// note that for this syntax you have to include the two</span>
+ <span class="comment">// include files above (c_array_cartesian.hpp, std_as_linestring.hpp)</span>
+ <a name="a5"></a><a class="code" href="group__access.html#g8048129c97cd540dc75d9040d8d95c0e" title="assign two values to a 2D point">assign</a>(poly, coor);
+ <span class="comment">//read_wkt("POLYGON((0 0,0 7,4 2,2 0,0 0))", poly);</span>
+ <a class="code" href="group__transform.html#g69b7e7f328a6092efb8edc9d857504d1" title="Transforms from one geometry to another geometry using a strategy.">transform</a>(poly, poly2, translate);
+
+ std::cout &lt;&lt; <span class="stringliteral">"source polygon "</span> &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(poly) &lt;&lt; std::endl;
+ std::cout &lt;&lt; <span class="stringliteral">"transformed polygon "</span> &lt;&lt; <a class="code" href="group__utility.html#g9419e5dd6f98468153ca14a35763bfd7" title="Main DSV-streaming function.">ggl::dsv</a>(poly2) &lt;&lt; std::endl;
+
+ <span class="comment">// Many more transformations are possible:</span>
+ <span class="comment">// - from Cartesian to Spherical coordinate systems and back</span>
+ <span class="comment">// - from Cartesian to Cartesian (mapping, affine transformations) and back (inverse)</span>
+ <span class="comment">// - Map Projections</span>
+ <span class="comment">// - from Degree to Radian and back in spherical or geographic coordinate systems</span>
+
+ <span class="keywordflow">return</span> 0;
+}
+</pre></div> </div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>November 5, 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/libs/ggl/doc/doxygen_output/html/07__graph__route__example_8cpp-example.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/07__graph__route__example_8cpp-example.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,474 @@
+<!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>
+
+<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>Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>07_graph_route_example.cpp</h1>The graph route example shows how GGL can be combined with Boost.Graph. The sample does the following things:<ul>
+<li>it reads roads (included in the distribution, stored on disk in the form of a text file containing geometries and names)</li><li>it reads cities</li><li>it creates a graph from the roads</li><li>it connects each city to the nearest vertex in the graph</li><li>it calculates the shortest route between each pair of cities</li><li>it outputs the distance over the road, and also of the air</li><li>it creates an SVG image with the roads, the cities, and the first calculated route</li></ul>
+<p>
+Note that this example is useful, but it is only an example. It could be built in many different ways. For example:<ul>
+<li>the roads/cities could be read from a database using SOCI, or from a shapefile using shapelib</li><li>it could support oneway roads and roads on different levels (disconnected bridges)</li><li>it currently uses tuples but that could be anything</li><li>etc</li></ul>
+<p>
+The SVG looks like: <div align="center">
+<img src="07_graph_route_example_svg.png" alt="07_graph_route_example_svg.png">
+</div>
+<p>
+The output screen looks like: <div align="center">
+<img src="07_graph_route_example_text.png" alt="07_graph_route_example_text.png">
+</div>
+<p>
+<div class="fragment"><pre class="fragment"><span class="comment">// Generic Geometry Library</span>
+<span class="comment">//</span>
+<span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<span class="comment">//</span>
+<span class="comment">// Example showing GGL combined with Boost.Graph, calculating shortest routes</span>
+<span class="comment">// input: two WKT's, provided in subfolder data</span>
+<span class="comment">// output: text, + an SVG, displayable in e.g. Firefox)</span>
+
+<span class="preprocessor">#include &lt;iostream&gt;</span>
+<span class="preprocessor">#include &lt;fstream&gt;</span>
+<span class="preprocessor">#include &lt;iomanip&gt;</span>
+<span class="preprocessor">#include &lt;limits&gt;</span>
+
+<span class="preprocessor">#include &lt;boost/tuple/tuple.hpp&gt;</span>
+<span class="preprocessor">#include &lt;boost/foreach.hpp&gt;</span>
+
+<span class="preprocessor">#include &lt;boost/graph/adjacency_list.hpp&gt;</span>
+<span class="preprocessor">#include &lt;boost/graph/dijkstra_shortest_paths.hpp&gt;</span>
+
+<span class="preprocessor">#include &lt;ggl/ggl.hpp&gt;</span>
+<span class="preprocessor">#include &lt;<a class="code" href="cartesian2d_8hpp.html">ggl/geometries/cartesian2d.hpp</a>&gt;</span>
+
+
+<span class="comment">// Yes, this example currently uses some extensions:</span>
+
+ <span class="comment">// For input:</span>
+<span class="preprocessor"> #include &lt;ggl/extensions/gis/io/wkt/read_wkt.hpp&gt;</span>
+
+ <span class="comment">// For output:</span>
+<span class="preprocessor"> #include &lt;<a class="code" href="write__svg_8hpp.html">ggl/extensions/io/svg/write_svg.hpp</a>&gt;</span>
+
+ <span class="comment">// For distance-calculations over the Earth:</span>
+<span class="preprocessor"> #include &lt;ggl/extensions/gis/geographic/strategies/andoyer.hpp&gt;</span>
+
+
+
+<span class="comment">// Read an ASCII file containing WKT's, fill a vector of tuples</span>
+<span class="comment">// The tuples consist of at least &lt;0&gt; a geometry and &lt;1&gt; an identifying string</span>
+<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Tuple, <span class="keyword">typename</span> Box&gt;
+<span class="keywordtype">void</span> read_wkt(std::string <span class="keyword">const</span>&amp; filename, std::vector&lt;Tuple&gt;&amp; tuples, Box&amp; box)
+{
+ std::ifstream cpp_file(filename.c_str());
+ <span class="keywordflow">if</span> (cpp_file.is_open())
+ {
+ <span class="keywordflow">while</span> (! cpp_file.eof() )
+ {
+ std::string line;
+ std::getline(cpp_file, line);
+ Geometry geometry;
+ boost::trim(line);
+ <span class="keywordflow">if</span> (! line.empty() &amp;&amp; ! boost::starts_with(line, <span class="stringliteral">"#"</span>))
+ {
+ std::string name;
+
+ <span class="comment">// Split at ';', if any</span>
+ std::string::size_type pos = line.find(<span class="stringliteral">";"</span>);
+ <span class="keywordflow">if</span> (pos != std::string::npos)
+ {
+ name = line.substr(pos + 1);
+ line.erase(pos);
+
+ boost::trim(line);
+ boost::trim(name);
+ }
+
+ Geometry geometry;
+ ggl::read_wkt(line, geometry);
+
+ Tuple tuple(geometry, name);
+
+ tuples.push_back(tuple);
+ <a name="a0"></a><a class="code" href="group__combine.html#gf2336ad085ad8b79cde5a759ab229199" title="Combines a box with another geometry (box, point).">ggl::combine</a>(box, ggl::make_envelope&lt;Box&gt;(geometry));
+ }
+ }
+ }
+}
+
+<span class="comment">// Boilerplate code to initialize the SVG XML.</span>
+<span class="comment">// Note that this is (on purpose) not part of the library but of this sample.</span>
+<span class="comment">// GGL itself only streams small pieces of SVG, in any coordinate system</span>
+<span class="keywordtype">void</span> svg_header(std::ofstream&amp; stream)
+{
+ stream &lt;&lt; <span class="stringliteral">"&lt;?xml version=\"1.0\" standalone=\"no\"?&gt;"</span> &lt;&lt; std::endl;
+ stream &lt;&lt; <span class="stringliteral">"&lt;!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\""</span> &lt;&lt; std::endl;
+ stream &lt;&lt; <span class="stringliteral">"\"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"&gt;"</span> &lt;&lt; std::endl;
+
+ stream &lt;&lt; <span class="stringliteral">"&lt;svg width=\"100%\" height=\"100%\" version=\"1.1\""</span> &lt;&lt; std::endl;
+ stream &lt;&lt; <span class="stringliteral">"xmlns=\"http://www.w3.org/2000/svg\"&gt;"</span> &lt;&lt; std::endl;
+}
+
+
+<span class="comment">// Code to define properties for Boost Graph's</span>
+<span class="keyword">enum</span> vertex_ggl_property_t { vertex_ggl_property };
+<span class="keyword">enum</span> edge_ggl_property_t { edge_ggl_property };
+<span class="keyword">namespace </span>boost
+{
+ BOOST_INSTALL_PROPERTY(vertex, ggl_property);
+ BOOST_INSTALL_PROPERTY(edge, ggl_property);
+}
+
+<span class="comment">// Define properties for vertex</span>
+<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>&gt;
+<span class="keyword">struct </span>ggl_vertex_property
+{
+ ggl_vertex_property()
+ {
+ <a name="a1"></a><a class="code" href="group__access.html#g3b95c5faaa108785681e58099b48dc35" title="assign zero values to a box, point">ggl::assign_zero</a>(location);
+ }
+ ggl_vertex_property(Point <span class="keyword">const</span>&amp; loc)
+ {
+ location = loc;
+ }
+
+ Point location;
+};
+
+<span class="comment">// Define properties for edge</span>
+<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Line<span class="keywordtype">string</span>&gt;
+<span class="keyword">struct </span>ggl_edge_property
+{
+ ggl_edge_property(Linestring <span class="keyword">const</span>&amp; line)
+ : m_line(line)
+ {
+ m_length = <a name="a2"></a><a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">ggl::length</a>(line);
+ }
+
+ <span class="keyword">inline</span> operator double()<span class="keyword"> const</span>
+<span class="keyword"> </span>{
+ <span class="keywordflow">return</span> m_length;
+ }
+
+ <span class="keyword">inline</span> Linestring <span class="keyword">const</span>&amp; line()<span class="keyword"> const</span>
+<span class="keyword"> </span>{
+ <span class="keywordflow">return</span> m_line;
+ }
+
+<span class="keyword">private</span> :
+ <span class="keywordtype">double</span> m_length;
+ Linestring m_line;
+};
+
+<span class="comment">// Utility function to add a vertex to a graph. It might exist already. Then do not insert,</span>
+<span class="comment">// but return vertex descriptor back. It might not exist. Then add it (and return).</span>
+<span class="comment">// To efficiently handle this, a std::map is used.</span>
+<span class="keyword">template</span> &lt;<span class="keyword">typename</span> M, <span class="keyword">typename</span> K, <span class="keyword">typename</span> G&gt;
+<span class="keyword">inline</span> <span class="keyword">typename</span> boost::graph_traits&lt;G&gt;::vertex_descriptor find_or_insert(M&amp; map, K <span class="keyword">const</span>&amp; key, G&amp; graph)
+{
+ <span class="keyword">typename</span> M::const_iterator it = map.find(key);
+ <span class="keywordflow">if</span> (it == map.end())
+ {
+ <span class="comment">// Add a vertex to the graph</span>
+ <span class="keyword">typename</span> boost::graph_traits&lt;G&gt;::vertex_descriptor new_vertex
+ = boost::add_vertex(graph);
+
+ <span class="comment">// Set the property (= location)</span>
+ boost::put(<a name="a3"></a><a class="code" href="group__access.html#gce53c5555841f90ccf60767c26e20499" title="get coordinate value of a Point ( / Sphere)">boost::get</a>(vertex_ggl_property, graph), new_vertex,
+ ggl_vertex_property&lt;typename M::key_type&gt;(key));
+
+ <span class="comment">// Add to the map, using POINT as key</span>
+ map[key] = new_vertex;
+ <span class="keywordflow">return</span> new_vertex;
+ }
+ <span class="keywordflow">return</span> it-&gt;second;
+}
+
+<span class="keyword">template</span>
+&lt;
+ <span class="keyword">typename</span> Line,
+ <span class="keyword">typename</span> Graph,
+ <span class="keyword">typename</span> RoadTupleVector,
+ <span class="keyword">typename</span> CityTupleVector
+&gt;
+<span class="keywordtype">void</span> add_roads_and_connect_cities(Graph&amp; graph,
+ RoadTupleVector <span class="keyword">const</span>&amp; roads,
+ CityTupleVector&amp; cities)
+{
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <a name="_a4"></a><a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">ggl::point_type&lt;Line&gt;::type</a> point_type;
+
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::graph_traits&lt;Graph&gt;::vertex_descriptor vertex_type;
+
+ <span class="comment">// Define a map to be used during graph filling</span>
+ <span class="comment">// Maps from point to vertex-id's</span>
+ <span class="keyword">typedef</span> std::map&lt;point_type, vertex_type, ggl::less&lt;point_type&gt; &gt; map_type;
+ map_type map;
+
+
+ <span class="comment">// Fill the graph</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_value&lt;RoadTupleVector&gt;::type road_type;
+ BOOST_FOREACH(road_type <span class="keyword">const</span>&amp; road, roads)
+ {
+ <span class="comment">// Find or add begin/end point of these line</span>
+ vertex_type from = find_or_insert(map, road.get&lt;0&gt;().front(), graph);
+ vertex_type to = find_or_insert(map, road.get&lt;0&gt;().back(), graph);
+ boost::add_edge(from, to, ggl_edge_property&lt;Line&gt;(road.get&lt;0&gt;()), graph);
+ }
+
+ <span class="comment">// Find nearest graph vertex for each city, using the map</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_value&lt;CityTupleVector&gt;::type city_type;
+ BOOST_FOREACH(city_type&amp; city, cities)
+ {
+ <span class="keywordtype">double</span> min_distance = 1e300;
+ <span class="keywordflow">for</span>(<span class="keyword">typename</span> map_type::const_iterator it = map.begin(); it != map.end(); ++it)
+ {
+ <span class="keywordtype">double</span> dist = <a name="a5"></a><a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">ggl::distance</a>(it-&gt;first, city.get&lt;0&gt;());
+ <span class="keywordflow">if</span> (dist &lt; min_distance)
+ {
+ min_distance = dist;
+ <span class="comment">// Set the vertex</span>
+ city.get&lt;2&gt;() = it-&gt;second;
+ }
+ }
+ }
+}
+
+<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Graph, <span class="keyword">typename</span> Route&gt;
+<span class="keyword">inline</span> <span class="keywordtype">void</span> add_edge_to_route(Graph <span class="keyword">const</span>&amp; graph,
+ <span class="keyword">typename</span> boost::graph_traits&lt;Graph&gt;::vertex_descriptor vertex1,
+ <span class="keyword">typename</span> boost::graph_traits&lt;Graph&gt;::vertex_descriptor vertex2,
+ Route&amp; route)
+{
+ std::pair
+ &lt;
+ <span class="keyword">typename</span> boost::graph_traits&lt;Graph&gt;::edge_descriptor,
+ <span class="keywordtype">bool</span>
+ &gt; opt_edge = boost::edge(vertex1, vertex2, graph);
+ <span class="keywordflow">if</span> (opt_edge.second)
+ {
+ <span class="comment">// Get properties of edge and of vertex</span>
+ ggl_edge_property&lt;Route&gt; <span class="keyword">const</span>&amp; edge_prop =
+ <a class="code" href="group__access.html#gce53c5555841f90ccf60767c26e20499" title="get coordinate value of a Point ( / Sphere)">boost::get</a>(<a class="code" href="group__access.html#gce53c5555841f90ccf60767c26e20499" title="get coordinate value of a Point ( / Sphere)">boost::get</a>(edge_ggl_property, graph), opt_edge.first);
+
+ ggl_vertex_property&lt;typename ggl::point_type&lt;Route&gt;::type&gt; <span class="keyword">const</span>&amp; vertex_prop =
+ <a class="code" href="group__access.html#gce53c5555841f90ccf60767c26e20499" title="get coordinate value of a Point ( / Sphere)">boost::get</a>(<a class="code" href="group__access.html#gce53c5555841f90ccf60767c26e20499" title="get coordinate value of a Point ( / Sphere)">boost::get</a>(vertex_ggl_property, graph), vertex2);
+
+ <span class="comment">// Depending on how edge connects to vertex, copy it forward or backward</span>
+ <span class="keywordflow">if</span> (<a name="a6"></a><a class="code" href="group__equals.html#g122b1fd835cee0742da7c97dfdda94c5" title="Detect if two geometries are spatially equal.">ggl::equals</a>(edge_prop.line().front(), vertex_prop.location))
+ {
+ std::copy(edge_prop.line().begin(), edge_prop.line().end(),
+ std::back_inserter(route));
+ }
+ <span class="keywordflow">else</span>
+ {
+ std::reverse_copy(edge_prop.line().begin(), edge_prop.line().end(),
+ std::back_inserter(route));
+ }
+ }
+}
+
+
+<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Graph, <span class="keyword">typename</span> Route&gt;
+<span class="keyword">inline</span> <span class="keywordtype">void</span> build_route(Graph <span class="keyword">const</span>&amp; graph,
+ std::vector&lt;<span class="keyword">typename</span> boost::graph_traits&lt;Graph&gt;::vertex_descriptor&gt; <span class="keyword">const</span>&amp; predecessors,
+ <span class="keyword">typename</span> boost::graph_traits&lt;Graph&gt;::vertex_descriptor vertex1,
+ <span class="keyword">typename</span> boost::graph_traits&lt;Graph&gt;::vertex_descriptor vertex2,
+ Route&amp; route)
+{
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::graph_traits&lt;Graph&gt;::vertex_descriptor vertex_type;
+ vertex_type pred = predecessors[vertex2];
+
+ add_edge_to_route(graph, vertex2, pred, route);
+ <span class="keywordflow">while</span> (pred != vertex1)
+ {
+ add_edge_to_route(graph, predecessors[pred], pred, route);
+ pred = predecessors[pred];
+ }
+}
+
+
+<span class="keywordtype">int</span> main()
+{
+ <span class="comment">// Define a point in the Geographic coordinate system</span>
+ <span class="keyword">typedef</span> <a name="_a7"></a><a class="code" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">ggl::point&lt;double, 2, ggl::cs::geographic&lt;ggl::degree&gt;</a> &gt; point_type;
+
+ <span class="keyword">typedef</span> <a name="_a8"></a><a class="code" href="classggl_1_1linestring.html" title="A linestring (named so by OGC) is a collection (default a vector) of points.">ggl::linestring&lt;point_type&gt;</a> line_type;
+
+ <span class="comment">// Define the graph, lateron containing the road network</span>
+ <span class="keyword">typedef</span> boost::adjacency_list
+ &lt;
+ boost::vecS, boost::vecS, boost::undirectedS
+ , boost::property&lt;vertex_ggl_property_t, ggl_vertex_property&lt;point_type&gt; &gt;
+ , boost::property&lt;edge_ggl_property_t, ggl_edge_property&lt;line_type&gt; &gt;
+ &gt; graph_type;
+
+ <span class="keyword">typedef</span> boost::graph_traits&lt;graph_type&gt;::vertex_descriptor vertex_type;
+
+
+ <span class="comment">// Init a bounding box, lateron used to define SVG map</span>
+ <a name="_a9"></a><a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">ggl::box_2d</a> box;
+ <a name="a10"></a><a class="code" href="group__access.html#g490821bd25a63cc584be1319375794f0" title="assign to a box inverse infinite">ggl::assign_inverse</a>(box);
+
+ <span class="comment">// Read the cities</span>
+ <span class="keyword">typedef</span> boost::tuple&lt;point_type, std::string, vertex_type&gt; city_type;
+ std::vector&lt;city_type&gt; cities;
+ read_wkt&lt;point_type&gt;(<span class="stringliteral">"data/cities.wkt"</span>, cities, box);
+
+ <span class="comment">// Read the road network</span>
+ <span class="keyword">typedef</span> boost::tuple&lt;line_type, std::string&gt; road_type;
+ std::vector&lt;road_type&gt; roads;
+ read_wkt&lt;line_type&gt;(<span class="stringliteral">"data/roads.wkt"</span>, roads, box);
+
+
+ graph_type graph;
+
+ <span class="comment">// Add roads and connect cities</span>
+ add_roads_and_connect_cities&lt;line_type&gt;(graph, roads, cities);
+
+ <span class="keywordtype">double</span> <span class="keyword">const</span> km = 1000.0;
+ std::cout &lt;&lt; <span class="stringliteral">"distances, all in KM"</span> &lt;&lt; std::endl
+ &lt;&lt; std::fixed &lt;&lt; std::setprecision(0);
+
+ <span class="comment">// Main functionality: calculate shortest routes from/to all cities</span>
+
+ <span class="comment">// For the first one, the complete route is stored as a linestring</span>
+ <span class="keywordtype">bool</span> first = <span class="keyword">true</span>;
+ line_type route;
+
+ <span class="keywordtype">int</span> <span class="keyword">const</span> n = boost::num_vertices(graph);
+ BOOST_FOREACH(city_type <span class="keyword">const</span>&amp; city1, cities)
+ {
+ std::vector&lt;vertex_type&gt; predecessors(n);
+ std::vector&lt;double&gt; costs(n);
+
+ <span class="comment">// Call Dijkstra (without named-parameter to be compatible with all VC)</span>
+ boost::dijkstra_shortest_paths(graph, city1.get&lt;2&gt;(),
+ &amp;predecessors[0], &amp;costs[0],
+ <a class="code" href="group__access.html#gce53c5555841f90ccf60767c26e20499" title="get coordinate value of a Point ( / Sphere)">boost::get</a>(edge_ggl_property, graph),
+ <a class="code" href="group__access.html#gce53c5555841f90ccf60767c26e20499" title="get coordinate value of a Point ( / Sphere)">boost::get</a>(boost::vertex_index, graph),
+ std::less&lt;double&gt;(), std::plus&lt;double&gt;(),
+ (std::numeric_limits&lt;double&gt;::max)(), <span class="keywordtype">double</span>(),
+ boost::dijkstra_visitor&lt;boost::null_visitor&gt;());
+
+ BOOST_FOREACH(city_type <span class="keyword">const</span>&amp; city2, cities)
+ {
+ <span class="keywordflow">if</span> (! <a class="code" href="group__equals.html#g122b1fd835cee0742da7c97dfdda94c5" title="Detect if two geometries are spatially equal.">boost::equals</a>(city1.get&lt;1&gt;(), city2.get&lt;1&gt;()))
+ {
+ <span class="keywordtype">double</span> <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a> = costs[city2.get&lt;2&gt;()] / km;
+ <span class="keywordtype">double</span> acof = <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">ggl::distance</a>(city1.get&lt;0&gt;(), city2.get&lt;0&gt;()) / km;
+
+ std::cout
+ &lt;&lt; std::setiosflags (std::ios_base::left) &lt;&lt; std::setw(15)
+ &lt;&lt; city1.get&lt;1&gt;() &lt;&lt; <span class="stringliteral">" - "</span>
+ &lt;&lt; std::setiosflags (std::ios_base::left) &lt;&lt; std::setw(15)
+ &lt;&lt; city2.get&lt;1&gt;()
+ &lt;&lt; <span class="stringliteral">" -&gt; through the air: "</span> &lt;&lt; std::setw(4) &lt;&lt; acof
+ &lt;&lt; <span class="stringliteral">" , over the road: "</span> &lt;&lt; std::setw(4) &lt;&lt; distance
+ &lt;&lt; std::endl;
+
+ <span class="keywordflow">if</span> (first)
+ {
+ build_route(graph, predecessors,
+ city1.get&lt;2&gt;(), city2.get&lt;2&gt;(),
+ route);
+ first = <span class="keyword">false</span>;
+ }
+ }
+ }
+ }
+
+ <span class="comment">// Create the SVG</span>
+ <span class="keyword">typedef</span> <a name="_a11"></a><a class="code" href="classggl_1_1point__xy.html" title="2D point in Cartesian coordinate system">ggl::point_xy&lt;int&gt;</a> svg_point_type;
+ std::ofstream stream(<span class="stringliteral">"routes.svg"</span>);
+ svg_header(stream);
+
+ <a name="_a12"></a><a class="code" href="structggl_1_1strategy_1_1transform_1_1map__transformer.html" title="Transformation strategy to do map from one to another Cartesian system.">ggl::strategy::transform::map_transformer</a>
+ &lt;
+ point_type,
+ svg_point_type, <span class="keyword">true</span>, <span class="keyword">true</span>
+ &gt; matrix(box, 1000, 800);
+
+ <span class="comment">// Map roads</span>
+ BOOST_FOREACH(road_type <span class="keyword">const</span>&amp; road, roads)
+ {
+ <a class="code" href="classggl_1_1linestring.html" title="A linestring (named so by OGC) is a collection (default a vector) of points.">ggl::linestring&lt;svg_point_type&gt;</a> line;
+ <a name="a13"></a><a class="code" href="group__transform.html#g69b7e7f328a6092efb8edc9d857504d1" title="Transforms from one geometry to another geometry using a strategy.">ggl::transform</a>(road.get&lt;0&gt;(), line, matrix);
+ stream &lt;&lt; <a name="a14"></a><a class="code" href="group__svg.html#g98ba8f58eaff68c96c23f9d9a90bc4fd" title="Main svg function to stream geometries as SVG.">ggl::svg</a>(line, <span class="stringliteral">"stroke:rgb(128,128,128);stroke-width:1"</span>) &lt;&lt; std::endl;
+ }
+
+ <span class="comment">// Map the calculated route as thicker green transparent markation</span>
+ {
+ <a class="code" href="classggl_1_1linestring.html" title="A linestring (named so by OGC) is a collection (default a vector) of points.">ggl::linestring&lt;svg_point_type&gt;</a> line;
+ <a class="code" href="group__transform.html#g69b7e7f328a6092efb8edc9d857504d1" title="Transforms from one geometry to another geometry using a strategy.">ggl::transform</a>(route, line, matrix);
+ stream &lt;&lt; <a class="code" href="group__svg.html#g98ba8f58eaff68c96c23f9d9a90bc4fd" title="Main svg function to stream geometries as SVG.">ggl::svg</a>(line, <span class="stringliteral">"stroke:rgb(0, 255, 0);stroke-width:6;opacity:0.5"</span>) &lt;&lt; std::endl;
+ }
+
+ <span class="comment">// Map cities</span>
+ BOOST_FOREACH(city_type <span class="keyword">const</span>&amp; city, cities)
+ {
+ svg_point_type point;
+ <a class="code" href="group__transform.html#g69b7e7f328a6092efb8edc9d857504d1" title="Transforms from one geometry to another geometry using a strategy.">ggl::transform</a>(city.get&lt;0&gt;(), point, matrix);
+ stream &lt;&lt; <a class="code" href="group__svg.html#g98ba8f58eaff68c96c23f9d9a90bc4fd" title="Main svg function to stream geometries as SVG.">ggl::svg</a>(point, <span class="stringliteral">"fill:rgb(255,255,0);stroke:rgb(0,0,0);stroke-width:1"</span>) &lt;&lt; std::endl;
+ }
+
+ stream &lt;&lt; <span class="stringliteral">"&lt;/svg&gt;"</span> &lt;&lt; std::endl;
+
+ <span class="keywordflow">return</span> 0;
+}
+</pre></div> </div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>November 5, 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/libs/ggl/doc/doxygen_output/html/07_graph_route_example_svg.png
==============================================================================
Binary file. No diff available.

Added: sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/07_graph_route_example_text.png
==============================================================================
Binary file. No diff available.

Added: sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/access_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/access_8hpp.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,110 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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; Geometry, Dimension &gt;</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Traits class which gives <a class="el" href="structggl_1_1traits_1_1access.html" title="Traits class which gives access (get,set) to points.">access</a> (get,set) to points. More...<br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1traits_1_1append__point.html">ggl::traits::append_point&lt; Geometry, Point &gt;</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Traits class, optional, might be implemented to append a <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a>. More...<br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1traits_1_1clear.html">ggl::traits::clear&lt; Geometry &gt;</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Traits class, optional, might be implemented to <a class="el" href="structggl_1_1traits_1_1clear.html" title="Traits class, optional, might be implemented to clear a geometry.">clear</a> a geometry. More...<br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1traits_1_1indexed__access.html">ggl::traits::indexed_access&lt; Geometry, Index, Dimension &gt;</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Traits class defining "get" and "set" to get and set <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> coordinate values. More...<br></td></tr>
+<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; Geometry &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 Dimension, typename Geometry &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">coordinate_type&lt; Geometry &gt;::type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__access.html#gce53c5555841f90ccf60767c26e20499">ggl::get</a> (Geometry const &amp;geometry)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><ul>
+<li>get coordinate value of a Point ( / Sphere) </li></ul>
+ <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;std::size_t Dimension, typename Geometry &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__access.html#gca27eb28ef9bc6c55932dcf3a5266da3">ggl::set</a> (Geometry &amp;geometry, typename coordinate_type&lt; Geometry &gt;::type const &amp;value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><ul>
+<li>set coordinate value of a Point ( / Sphere) </li></ul>
+ <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>November 5, 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/libs/ggl/doc/doxygen_output/html/access_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/access_8hpp_source.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,324 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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
+<a name="l00013"></a>00013
+<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;cstddef&gt;</span>
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;boost/type_traits/remove_const.hpp&gt;</span>
+<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;boost/concept_check.hpp&gt;</span>
+<a name="l00041"></a>00041
+<a name="l00042"></a>00042 <span class="preprocessor">#include &lt;<a class="code" href="coordinate__type_8hpp.html">ggl/core/coordinate_type.hpp</a>&gt;</span>
+<a name="l00043"></a>00043 <span class="preprocessor">#include &lt;<a class="code" href="core_2point__type_8hpp.html">ggl/core/point_type.hpp</a>&gt;</span>
+<a name="l00044"></a>00044 <span class="preprocessor">#include &lt;<a class="code" href="tag_8hpp.html">ggl/core/tag.hpp</a>&gt;</span>
+<a name="l00045"></a>00045
+<a name="l00046"></a>00046
+<a name="l00047"></a><a class="code" href="namespaceggl.html">00047</a> <span class="keyword">namespace </span>ggl
+<a name="l00048"></a>00048 {
+<a name="l00049"></a>00049
+<a name="l00050"></a><a class="code" href="namespaceggl.html#1ce1f1fae9b689b692d623ee76d20857">00050</a> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespaceggl.html#1ce1f1fae9b689b692d623ee76d20857">min_corner</a> = 0;
+<a name="l00051"></a><a class="code" href="namespaceggl.html#0df0bc9b23e7d20e4596c25071039f0a">00051</a> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespaceggl.html#0df0bc9b23e7d20e4596c25071039f0a">max_corner</a> = 1;
+<a name="l00052"></a>00052
+<a name="l00053"></a><a class="code" href="namespaceggl_1_1traits.html">00053</a> <span class="keyword">namespace </span>traits
+<a name="l00054"></a>00054 {
+<a name="l00055"></a>00055
+<a name="l00067"></a>00067 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, std::<span class="keywordtype">size_t</span> Dimension&gt;
+<a name="l00068"></a><a class="code" href="structggl_1_1traits_1_1access.html">00068</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="l00069"></a>00069
+<a name="l00070"></a>00070
+<a name="l00085"></a>00085 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, std::<span class="keywordtype">size_t</span> Index, std::<span class="keywordtype">size_t</span> Dimension&gt;
+<a name="l00086"></a><a class="code" href="structggl_1_1traits_1_1indexed__access.html">00086</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="l00087"></a>00087
+<a name="l00088"></a>00088
+<a name="l00102"></a>00102 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00103"></a><a class="code" href="structggl_1_1traits_1_1use__std.html">00103</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="l00104"></a>00104 {
+<a name="l00105"></a><a class="code" href="structggl_1_1traits_1_1use__std.html#53e09180303edd2ec2735f749db2305d">00105</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="structggl_1_1traits_1_1use__std.html#53e09180303edd2ec2735f749db2305d">value</a> = <span class="keyword">true</span>;
+<a name="l00106"></a>00106 };
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108
+<a name="l00121"></a>00121 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00122"></a><a class="code" href="structggl_1_1traits_1_1clear.html">00122</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1traits_1_1clear.html" title="Traits class, optional, might be implemented to clear a geometry.">clear</a>
+<a name="l00123"></a>00123 {};
+<a name="l00124"></a>00124
+<a name="l00125"></a>00125
+<a name="l00138"></a>00138 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>&gt;
+<a name="l00139"></a><a class="code" href="structggl_1_1traits_1_1append__point.html">00139</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1traits_1_1append__point.html" title="Traits class, optional, might be implemented to append a point.">append_point</a>
+<a name="l00140"></a>00140 {};
+<a name="l00141"></a>00141
+<a name="l00142"></a>00142
+<a name="l00143"></a>00143 } <span class="comment">// namespace traits</span>
+<a name="l00144"></a>00144
+<a name="l00145"></a>00145
+<a name="l00146"></a>00146 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00147"></a>00147 <span class="preprocessor"></span><span class="keyword">namespace </span>core_dispatch
+<a name="l00148"></a>00148 {
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 <span class="keyword">template</span>
+<a name="l00151"></a>00151 &lt;
+<a name="l00152"></a>00152 <span class="keyword">typename</span> Tag,
+<a name="l00153"></a>00153 <span class="keyword">typename</span> Geometry,
+<a name="l00154"></a>00154 <span class="keyword">typename</span>
+<a name="l00155"></a>00155 CoordinateType, std::size_t Dimension
+<a name="l00156"></a>00156 &gt;
+<a name="l00157"></a>00157 <span class="keyword">struct </span>access
+<a name="l00158"></a>00158 {
+<a name="l00159"></a>00159 <span class="comment">//static inline T get(const G&amp; ) {}</span>
+<a name="l00160"></a>00160 <span class="comment">//static inline void set(G&amp; g, T const&amp; value) {}</span>
+<a name="l00161"></a>00161 };
+<a name="l00162"></a>00162
+<a name="l00163"></a>00163 <span class="keyword">template</span>
+<a name="l00164"></a>00164 &lt;
+<a name="l00165"></a>00165 <span class="keyword">typename</span> Tag,
+<a name="l00166"></a>00166 <span class="keyword">typename</span> Geometry,
+<a name="l00167"></a>00167 <span class="keyword">typename</span> CoordinateType,
+<a name="l00168"></a>00168 std::size_t Index,
+<a name="l00169"></a>00169 std::size_t Dimension
+<a name="l00170"></a>00170 &gt;
+<a name="l00171"></a>00171 <span class="keyword">struct </span>indexed_access
+<a name="l00172"></a>00172 {
+<a name="l00173"></a>00173 <span class="comment">//static inline T get(const G&amp; ) {}</span>
+<a name="l00174"></a>00174 <span class="comment">//static inline void set(G&amp; g, T const&amp; value) {}</span>
+<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> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> CoordinateType, std::<span class="keywordtype">size_t</span> Dimension&gt;
+<a name="l00178"></a>00178 <span class="keyword">struct </span>access&lt;point_tag, Point, CoordinateType, Dimension&gt;
+<a name="l00179"></a>00179 {
+<a name="l00180"></a>00180 <span class="keyword">static</span> <span class="keyword">inline</span> CoordinateType <span class="keyword">get</span>(Point <span class="keyword">const</span>&amp; point)
+<a name="l00181"></a>00181 {
+<a name="l00182"></a>00182 <span class="keywordflow">return</span> <a class="code" href="group__access.html#gce53c5555841f90ccf60767c26e20499" title="get coordinate value of a Point ( / Sphere)">traits::access&lt;Point, Dimension&gt;::get</a>(point);
+<a name="l00183"></a>00183 }
+<a name="l00184"></a>00184 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(Point&amp; p, CoordinateType <span class="keyword">const</span>&amp; value)
+<a name="l00185"></a>00185 {
+<a name="l00186"></a>00186 <a class="code" href="group__access.html#gca27eb28ef9bc6c55932dcf3a5266da3" title="set coordinate value of a Point ( / Sphere)">traits::access&lt;Point, Dimension&gt;::set</a>(p, value);
+<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>
+<a name="l00191"></a>00191 &lt;
+<a name="l00192"></a>00192 <span class="keyword">typename</span> Box,
+<a name="l00193"></a>00193 <span class="keyword">typename</span> CoordinateType,
+<a name="l00194"></a>00194 std::size_t Index,
+<a name="l00195"></a>00195 std::size_t Dimension
+<a name="l00196"></a>00196 &gt;
+<a name="l00197"></a>00197 <span class="keyword">struct </span>indexed_access&lt;box_tag, Box, CoordinateType, Index, Dimension&gt;
+<a name="l00198"></a>00198 {
+<a name="l00199"></a>00199 <span class="keyword">static</span> <span class="keyword">inline</span> CoordinateType <span class="keyword">get</span>(Box <span class="keyword">const</span>&amp; box)
+<a name="l00200"></a>00200 {
+<a name="l00201"></a>00201 <span class="keywordflow">return</span> <a class="code" href="group__access.html#gce53c5555841f90ccf60767c26e20499" title="get coordinate value of a Point ( / Sphere)">traits::indexed_access&lt;Box, Index, Dimension&gt;::get</a>(box);
+<a name="l00202"></a>00202 }
+<a name="l00203"></a>00203 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(Box&amp; b, CoordinateType <span class="keyword">const</span>&amp; value)
+<a name="l00204"></a>00204 {
+<a name="l00205"></a>00205 <a class="code" href="group__access.html#gca27eb28ef9bc6c55932dcf3a5266da3" title="set coordinate value of a Point ( / Sphere)">traits::indexed_access&lt;Box, Index, Dimension&gt;::set</a>(b, value);
+<a name="l00206"></a>00206 }
+<a name="l00207"></a>00207 };
+<a name="l00208"></a>00208
+<a name="l00209"></a>00209 <span class="keyword">template</span>
+<a name="l00210"></a>00210 &lt;
+<a name="l00211"></a>00211 <span class="keyword">typename</span> Segment,
+<a name="l00212"></a>00212 <span class="keyword">typename</span> CoordinateType,
+<a name="l00213"></a>00213 std::size_t Index,
+<a name="l00214"></a>00214 std::size_t Dimension
+<a name="l00215"></a>00215 &gt;
+<a name="l00216"></a>00216 <span class="keyword">struct </span>indexed_access&lt;segment_tag, Segment, CoordinateType, Index, Dimension&gt;
+<a name="l00217"></a>00217 {
+<a name="l00218"></a>00218 <span class="keyword">static</span> <span class="keyword">inline</span> CoordinateType <span class="keyword">get</span>(Segment <span class="keyword">const</span>&amp; segment)
+<a name="l00219"></a>00219 {
+<a name="l00220"></a>00220 <span class="keywordflow">return</span> <a class="code" href="group__access.html#gce53c5555841f90ccf60767c26e20499" title="get coordinate value of a Point ( / Sphere)">traits::indexed_access&lt;Segment, Index, Dimension&gt;::get</a>(segment);
+<a name="l00221"></a>00221 }
+<a name="l00222"></a>00222 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(Segment&amp; segment, CoordinateType <span class="keyword">const</span>&amp; value)
+<a name="l00223"></a>00223 {
+<a name="l00224"></a>00224 <a class="code" href="group__access.html#gca27eb28ef9bc6c55932dcf3a5266da3" title="set coordinate value of a Point ( / Sphere)">traits::indexed_access&lt;Segment, Index, Dimension&gt;::set</a>(segment, value);
+<a name="l00225"></a>00225 }
+<a name="l00226"></a>00226 };
+<a name="l00227"></a>00227
+<a name="l00228"></a>00228 } <span class="comment">// namespace core_dispatch</span>
+<a name="l00229"></a>00229 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00230"></a>00230 <span class="preprocessor"></span>
+<a name="l00231"></a>00231
+<a name="l00232"></a>00232 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00233"></a>00233 <span class="preprocessor"></span><span class="keyword">namespace </span>detail
+<a name="l00234"></a>00234 {
+<a name="l00235"></a>00235
+<a name="l00236"></a>00236 <span class="comment">// Two dummy tags to distinguish get/set variants below.</span>
+<a name="l00237"></a>00237 <span class="comment">// They don't have to be specified by the user. The functions are distinguished</span>
+<a name="l00238"></a>00238 <span class="comment">// by template signature also, but for e.g. GCC this is not enough. So give them</span>
+<a name="l00239"></a>00239 <span class="comment">// a different signature.</span>
+<a name="l00240"></a>00240 <span class="keyword">struct </span>signature_getset_dimension {};
+<a name="l00241"></a>00241 <span class="keyword">struct </span>signature_getset_index_dimension {};
+<a name="l00242"></a>00242
+<a name="l00243"></a>00243 } <span class="comment">// namespace detail</span>
+<a name="l00244"></a>00244 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00245"></a>00245 <span class="preprocessor"></span>
+<a name="l00246"></a>00246
+<a name="l00247"></a>00247 <span class="comment">// Note the comments below tell Doxygen to create one function with doc for both</span>
+<a name="l00248"></a>00248
+<a name="l00262"></a>00262 <span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> Dimension, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00263"></a><a class="code" href="group__access.html#gce53c5555841f90ccf60767c26e20499">00263</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;Geometry&gt;::type</a> <span class="keyword">get</span>(Geometry <span class="keyword">const</span>&amp; geometry
+<a name="l00264"></a>00264 <span class="preprocessor">#ifndef DOXYGEN_SHOULD_SKIP_THIS</span>
+<a name="l00265"></a>00265 <span class="preprocessor"></span> , detail::signature_getset_dimension* dummy = 0
+<a name="l00266"></a>00266 <span class="preprocessor">#endif</span>
+<a name="l00267"></a>00267 <span class="preprocessor"></span> )
+<a name="l00268"></a>00268 {
+<a name="l00269"></a>00269 boost::ignore_unused_variable_warning(dummy);
+<a name="l00270"></a>00270
+<a name="l00271"></a>00271 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;Geometry&gt;::type ncg_type;
+<a name="l00272"></a>00272
+<a name="l00273"></a>00273 <span class="keyword">typedef</span> core_dispatch::access
+<a name="l00274"></a>00274 &lt;
+<a name="l00275"></a>00275 <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="l00276"></a>00276 ncg_type,
+<a name="l00277"></a>00277 <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="l00278"></a>00278 Dimension
+<a name="l00279"></a>00279 &gt; coord_access_type;
+<a name="l00280"></a>00280
+<a name="l00281"></a>00281 <span class="keywordflow">return</span> <a class="code" href="group__access.html#gce53c5555841f90ccf60767c26e20499" title="get coordinate value of a Point ( / Sphere)">coord_access_type::get</a>(geometry);
+<a name="l00282"></a>00282 }
+<a name="l00283"></a>00283
+<a name="l00284"></a>00284
+<a name="l00298"></a>00298 <span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> Dimension, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00299"></a><a class="code" href="group__access.html#gca27eb28ef9bc6c55932dcf3a5266da3">00299</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(Geometry&amp; geometry
+<a name="l00300"></a>00300 , <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;Geometry&gt;::type</a> <span class="keyword">const</span>&amp; value
+<a name="l00301"></a>00301 <span class="preprocessor">#ifndef DOXYGEN_SHOULD_SKIP_THIS</span>
+<a name="l00302"></a>00302 <span class="preprocessor"></span> , detail::signature_getset_dimension* dummy = 0
+<a name="l00303"></a>00303 <span class="preprocessor">#endif</span>
+<a name="l00304"></a>00304 <span class="preprocessor"></span> )
+<a name="l00305"></a>00305 {
+<a name="l00306"></a>00306 boost::ignore_unused_variable_warning(dummy);
+<a name="l00307"></a>00307
+<a name="l00308"></a>00308 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;Geometry&gt;::type ncg_type;
+<a name="l00309"></a>00309
+<a name="l00310"></a>00310 <span class="keyword">typedef</span> core_dispatch::access
+<a name="l00311"></a>00311 &lt;
+<a name="l00312"></a>00312 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00313"></a>00313 ncg_type,
+<a name="l00314"></a>00314 <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="l00315"></a>00315 Dimension
+<a name="l00316"></a>00316 &gt; coord_access_type;
+<a name="l00317"></a>00317
+<a name="l00318"></a>00318 <a class="code" href="group__access.html#gca27eb28ef9bc6c55932dcf3a5266da3" title="set coordinate value of a Point ( / Sphere)">coord_access_type::set</a>(geometry, value);
+<a name="l00319"></a>00319 }
+<a name="l00320"></a>00320
+<a name="l00321"></a>00321 <span class="comment">// Note: doxygen needs a construct to distinguish get/set (like the gcc compiler)</span>
+<a name="l00322"></a>00322
+<a name="l00328"></a>00328 <span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> Index, std::<span class="keywordtype">size_t</span> Dimension, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00329"></a>00329 <span class="keyword">inline</span> <span class="keyword">typename</span> coordinate_type&lt;Geometry&gt;::type <span class="keyword">get</span>(Geometry <span class="keyword">const</span>&amp; geometry
+<a name="l00330"></a>00330 <span class="preprocessor">#ifndef DOXYGEN_SHOULD_SKIP_THIS</span>
+<a name="l00331"></a>00331 <span class="preprocessor"></span> , detail::signature_getset_index_dimension* dummy = 0
+<a name="l00332"></a>00332 <span class="preprocessor">#endif</span>
+<a name="l00333"></a>00333 <span class="preprocessor"></span> )
+<a name="l00334"></a>00334 {
+<a name="l00335"></a>00335 boost::ignore_unused_variable_warning(dummy);
+<a name="l00336"></a>00336
+<a name="l00337"></a>00337 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;Geometry&gt;::type ncg_type;
+<a name="l00338"></a>00338
+<a name="l00339"></a>00339 <span class="keyword">typedef</span> core_dispatch::indexed_access
+<a name="l00340"></a>00340 &lt;
+<a name="l00341"></a>00341 <span class="keyword">typename</span> tag&lt;Geometry&gt;::type,
+<a name="l00342"></a>00342 ncg_type,
+<a name="l00343"></a>00343 <span class="keyword">typename</span> coordinate_type&lt;ncg_type&gt;::type,
+<a name="l00344"></a>00344 Index,
+<a name="l00345"></a>00345 Dimension
+<a name="l00346"></a>00346 &gt; coord_access_type;
+<a name="l00347"></a>00347
+<a name="l00348"></a>00348 <span class="keywordflow">return</span> <a class="code" href="group__access.html#gce53c5555841f90ccf60767c26e20499" title="get coordinate value of a Point ( / Sphere)">coord_access_type::get</a>(geometry);
+<a name="l00349"></a>00349 }
+<a name="l00350"></a>00350
+<a name="l00356"></a>00356 <span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> Index, std::<span class="keywordtype">size_t</span> Dimension, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00357"></a>00357 <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(Geometry&amp; geometry
+<a name="l00358"></a>00358 , <span class="keyword">typename</span> coordinate_type&lt;Geometry&gt;::type <span class="keyword">const</span>&amp; value
+<a name="l00359"></a>00359 <span class="preprocessor">#ifndef DOXYGEN_SHOULD_SKIP_THIS</span>
+<a name="l00360"></a>00360 <span class="preprocessor"></span> , detail::signature_getset_index_dimension* dummy = 0
+<a name="l00361"></a>00361 <span class="preprocessor">#endif</span>
+<a name="l00362"></a>00362 <span class="preprocessor"></span> )
+<a name="l00363"></a>00363 {
+<a name="l00364"></a>00364 boost::ignore_unused_variable_warning(dummy);
+<a name="l00365"></a>00365
+<a name="l00366"></a>00366 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;Geometry&gt;::type ncg_type;
+<a name="l00367"></a>00367
+<a name="l00368"></a>00368 <span class="keyword">typedef</span> core_dispatch::indexed_access
+<a name="l00369"></a>00369 &lt;
+<a name="l00370"></a>00370 <span class="keyword">typename</span> tag&lt;Geometry&gt;::type, ncg_type,
+<a name="l00371"></a>00371 <span class="keyword">typename</span> coordinate_type&lt;ncg_type&gt;::type,
+<a name="l00372"></a>00372 Index,
+<a name="l00373"></a>00373 Dimension
+<a name="l00374"></a>00374 &gt; coord_access_type;
+<a name="l00375"></a>00375
+<a name="l00376"></a>00376 <a class="code" href="group__access.html#gca27eb28ef9bc6c55932dcf3a5266da3" title="set coordinate value of a Point ( / Sphere)">coord_access_type::set</a>(geometry, value);
+<a name="l00377"></a>00377 }
+<a name="l00378"></a>00378
+<a name="l00379"></a>00379 } <span class="comment">// namespace ggl</span>
+<a name="l00380"></a>00380
+<a name="l00381"></a>00381 <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>November 5, 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/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,78 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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>November 5, 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/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp_source.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,613 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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_ALGORITHMS_OVERLAY_ADAPT_TURNS_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_OVERLAY_ADAPT_TURNS_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;algorithm&gt;</span>
+<a name="l00013"></a>00013
+<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="side_8hpp.html">ggl/strategies/side.hpp</a>&gt;</span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="equals_8hpp.html">ggl/algorithms/equals.hpp</a>&gt;</span>
+<a name="l00024"></a>00024
+<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
+<a name="l00029"></a>00029
+<a name="l00030"></a>00030 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span>intersection {
+<a name="l00032"></a>00032
+<a name="l00033"></a>00033
+<a name="l00034"></a>00034 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00035"></a>00035 <span class="keyword">inline</span> <span class="keywordtype">void</span> join_adapt(T&amp; info, <span class="keywordtype">int</span> direction)
+<a name="l00036"></a>00036 {
+<a name="l00037"></a>00037 info.first-&gt;direction = direction;
+<a name="l00038"></a>00038 info.second-&gt;direction = direction;
+<a name="l00039"></a>00039 }
+<a name="l00040"></a>00040
+<a name="l00041"></a>00041
+<a name="l00042"></a>00042 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00043"></a>00043 <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="l00044"></a>00044 {
+<a name="l00045"></a>00045 <span class="comment">// Comments are for "both Left"</span>
+<a name="l00046"></a>00046 <span class="keywordflow">if</span> (dir_q == direction) <span class="comment">// If (Qw left-of Qu)</span>
+<a name="l00047"></a>00047 {
+<a name="l00048"></a>00048 <span class="keywordflow">if</span> (dir_p == -direction) <span class="comment">// if (Pk right-of Pi)</span>
+<a name="l00049"></a>00049 {
+<a name="l00050"></a>00050 <span class="comment">// make Pk Right, Qw Left</span>
+<a name="l00051"></a>00051 join_adapt(pk, -direction);
+<a name="l00052"></a>00052 join_adapt(qw, direction);
+<a name="l00053"></a>00053 }
+<a name="l00054"></a>00054 <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="l00055"></a>00055 {
+<a name="l00056"></a>00056 <span class="comment">// make both Right</span>
+<a name="l00057"></a>00057 join_adapt(pk, -direction);
+<a name="l00058"></a>00058 join_adapt(qw, -direction);
+<a name="l00059"></a>00059 }
+<a name="l00060"></a>00060 }
+<a name="l00061"></a>00061 <span class="keywordflow">else</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 || pk.first-&gt;direction == direction) <span class="comment">// || Pk left-of Qu)</span>
+<a name="l00065"></a>00065 {
+<a name="l00066"></a>00066 <span class="comment">// make both Left</span>
+<a name="l00067"></a>00067 join_adapt(pk, direction);
+<a name="l00068"></a>00068 join_adapt(qw, direction);
+<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
+<a name="l00074"></a>00074 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00075"></a>00075 <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="l00076"></a>00076 {
+<a name="l00077"></a>00077 <span class="keywordflow">if</span> (dir_p == direction) <span class="comment">// If (Pk left-of Pi)</span>
+<a name="l00078"></a>00078 {
+<a name="l00079"></a>00079 <span class="keywordflow">if</span> (pk.first-&gt;direction == -direction) <span class="comment">// if (Pk right-of Qu)</span>
+<a name="l00080"></a>00080 {
+<a name="l00081"></a>00081 <span class="comment">// make both Right</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 <span class="keywordflow">else</span>
+<a name="l00086"></a>00086 {
+<a name="l00087"></a>00087 <span class="comment">// make Pk Left, Qw Right</span>
+<a name="l00088"></a>00088 join_adapt(pk, direction);
+<a name="l00089"></a>00089 join_adapt(qw, -direction);
+<a name="l00090"></a>00090 }
+<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 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00096"></a>00096 <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="l00097"></a>00097 {
+<a name="l00098"></a>00098 <span class="keywordflow">if</span> (dir_p == direction <span class="comment">// If (Pk left-of Pi</span>
+<a name="l00099"></a>00099 &amp;&amp; dir_q == direction <span class="comment">// &amp;&amp; Qw left-of Qu</span>
+<a name="l00100"></a>00100 &amp;&amp; pk.first-&gt;direction == -direction) <span class="comment">// &amp;&amp; Pk right-of Qu</span>
+<a name="l00101"></a>00101 {
+<a name="l00102"></a>00102 <span class="comment">// make both Right</span>
+<a name="l00103"></a>00103 join_adapt(pk, -direction);
+<a name="l00104"></a>00104 join_adapt(qw, -direction);
+<a name="l00105"></a>00105 }
+<a name="l00106"></a>00106 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dir_p == -direction <span class="comment">// If (Pk right-of Pi</span>
+<a name="l00107"></a>00107 &amp;&amp; dir_q == -direction) <span class="comment">// &amp;&amp; Qw right-of Qu</span>
+<a name="l00108"></a>00108 {
+<a name="l00109"></a>00109 <span class="comment">// make both Left</span>
+<a name="l00110"></a>00110 join_adapt(pk, direction);
+<a name="l00111"></a>00111 join_adapt(qw, direction);
+<a name="l00112"></a>00112 }
+<a name="l00113"></a>00113
+<a name="l00114"></a>00114 }
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116
+<a name="l00117"></a>00117 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> P&gt;
+<a name="l00118"></a>00118 <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="l00119"></a>00119 {
+<a name="l00120"></a>00120 <span class="keywordflow">if</span> (info.seg_id.source_index == 0)
+<a name="l00121"></a>00121 {
+<a name="l00122"></a>00122 <span class="keywordflow">if</span> (info.arrival == 1)
+<a name="l00123"></a>00123 {
+<a name="l00124"></a>00124 p.first = info.other_point;
+<a name="l00125"></a>00125 }
+<a name="l00126"></a>00126 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (info.arrival == -1)
+<a name="l00127"></a>00127 {
+<a name="l00128"></a>00128 p.second = info.other_point;
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131 <span class="keywordflow">else</span>
+<a name="l00132"></a>00132 {
+<a name="l00133"></a>00133 <span class="keywordflow">if</span> (info.arrival == 1)
+<a name="l00134"></a>00134 {
+<a name="l00135"></a>00135 q.first = info.other_point;
+<a name="l00136"></a>00136 }
+<a name="l00137"></a>00137 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (info.arrival == -1)
+<a name="l00138"></a>00138 {
+<a name="l00139"></a>00139 q.second = info.other_point;
+<a name="l00140"></a>00140 }
+<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">template</span> &lt;<span class="keyword">typename</span> Info, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>&gt;
+<a name="l00146"></a>00146 <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="l00147"></a>00147 {
+<a name="l00148"></a>00148 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator&lt;Info&gt;::type iterator;
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 <span class="comment">// Determine which is Q, and assign points</span>
+<a name="l00151"></a>00151 iterator qu, qw, p;
+<a name="l00152"></a>00152 <span class="keywordtype">int</span> count = 0;
+<a name="l00153"></a>00153
+<a name="l00154"></a>00154 <span class="comment">// Find out which one is arriving/departing from the middle</span>
+<a name="l00155"></a>00155 <span class="keywordflow">for</span> (iterator it = boost::begin(info);
+<a name="l00156"></a>00156 it != boost::end(info);
+<a name="l00157"></a>00157 ++it)
+<a name="l00158"></a>00158 {
+<a name="l00159"></a>00159 <span class="comment">// One arrives AND departs in the middle of the other.</span>
+<a name="l00160"></a>00160 <span class="keywordflow">if</span>(it-&gt;how == <span class="charliteral">'m'</span> &amp;&amp; it-&gt;arrival == 1)
+<a name="l00161"></a>00161 {
+<a name="l00162"></a>00162 qu = it;
+<a name="l00163"></a>00163 count |= 1;
+<a name="l00164"></a>00164 }
+<a name="l00165"></a>00165 <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="l00166"></a>00166 {
+<a name="l00167"></a>00167 qw = it;
+<a name="l00168"></a>00168 count |= 2;
+<a name="l00169"></a>00169 }
+<a name="l00170"></a>00170 <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="l00171"></a>00171 {
+<a name="l00172"></a>00172 p = it;
+<a name="l00173"></a>00173 count |= 4;
+<a name="l00174"></a>00174 }
+<a name="l00175"></a>00175
+<a name="l00176"></a>00176 }
+<a name="l00177"></a>00177 <span class="comment">// Adapt it</span>
+<a name="l00178"></a>00178 <span class="keywordflow">if</span> (count == 7
+<a name="l00179"></a>00179 &amp;&amp; qu-&gt;direction == qw-&gt;direction
+<a name="l00180"></a>00180 &amp;&amp; qu-&gt;seg_id.source_index == qw-&gt;seg_id.source_index)
+<a name="l00181"></a>00181 {
+<a name="l00182"></a>00182 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_side
+<a name="l00183"></a>00183 &lt;
+<a name="l00184"></a>00184 <span class="keyword">typename</span> cs_tag&lt;Point&gt;::type
+<a name="l00185"></a>00185 &gt;::type side;
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187
+<a name="l00188"></a>00188 <span class="keywordtype">int</span> dir_q = side::apply(qu-&gt;other_point, point, qw-&gt;other_point);
+<a name="l00189"></a>00189
+<a name="l00190"></a>00190 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00191"></a>00191 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Both "</span>
+<a name="l00192"></a>00192 &lt;&lt; (qu-&gt;direction == 1 ? <span class="stringliteral">"Left"</span> : <span class="stringliteral">"Right"</span>)
+<a name="l00193"></a>00193 &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="l00194"></a>00194 &lt;&lt; std::endl;
+<a name="l00195"></a>00195 <span class="preprocessor">#endif</span>
+<a name="l00196"></a>00196 <span class="preprocessor"></span>
+<a name="l00197"></a>00197 <span class="comment">// Let P also be starting</span>
+<a name="l00198"></a>00198 p-&gt;arrival = -1;
+<a name="l00199"></a>00199
+<a name="l00200"></a>00200 <span class="comment">// This is also symmetric. See slides:</span>
+<a name="l00201"></a>00201 <span class="comment">// Qu left-of P &amp;&amp; Qw left-of P</span>
+<a name="l00202"></a>00202 <span class="keywordflow">if</span> (qu-&gt;direction == 1 &amp;&amp; dir_q == -1)
+<a name="l00203"></a>00203 {
+<a name="l00204"></a>00204 <span class="comment">// make both Left</span>
+<a name="l00205"></a>00205 p-&gt;direction = 1;
+<a name="l00206"></a>00206 qw-&gt;direction = 1;
+<a name="l00207"></a>00207 }
+<a name="l00208"></a>00208 <span class="comment">// else, symmetric version</span>
+<a name="l00209"></a>00209 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (qu-&gt;direction == -1 &amp;&amp; dir_q == 1)
+<a name="l00210"></a>00210 {
+<a name="l00211"></a>00211 p-&gt;direction = -1;
+<a name="l00212"></a>00212 qw-&gt;direction = -1;
+<a name="l00213"></a>00213 }
+<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> Info&gt;
+<a name="l00219"></a>00219 <span class="keyword">inline</span> <span class="keywordtype">void</span> arrive_in_the_middle(Info&amp; info)
+<a name="l00220"></a>00220 {
+<a name="l00221"></a>00221 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator&lt;Info&gt;::type iterator;
+<a name="l00222"></a>00222
+<a name="l00223"></a>00223 <span class="comment">// Find out which one is NOT arriving in the middle,</span>
+<a name="l00224"></a>00224 <span class="comment">// and the direction of the one arriving in the middle</span>
+<a name="l00225"></a>00225 <span class="keywordtype">int</span> departing = -1;
+<a name="l00226"></a>00226 <span class="keywordtype">int</span> direction = 0;
+<a name="l00227"></a>00227 <span class="keywordflow">for</span> (iterator it = boost::begin(info);
+<a name="l00228"></a>00228 it != boost::end(info);
+<a name="l00229"></a>00229 ++it)
+<a name="l00230"></a>00230 {
+<a name="l00231"></a>00231 <span class="keywordflow">if</span>(it-&gt;how == <span class="charliteral">'m'</span>)
+<a name="l00232"></a>00232 {
+<a name="l00233"></a>00233 <span class="keywordflow">switch</span>(it-&gt;arrival)
+<a name="l00234"></a>00234 {
+<a name="l00235"></a>00235 <span class="keywordflow">case</span> 1 : direction = it-&gt;direction; <span class="keywordflow">break</span>;
+<a name="l00236"></a>00236 <span class="keywordflow">default</span> : departing = it-&gt;seg_id.source_index;
+<a name="l00237"></a>00237 }
+<a name="l00238"></a>00238 }
+<a name="l00239"></a>00239 }
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241 <span class="comment">// Make this the departing one, following collinear in opposite segment,</span>
+<a name="l00242"></a>00242 <span class="comment">// same direction as established above</span>
+<a name="l00243"></a>00243 <span class="keywordflow">for</span> (iterator it = boost::begin(info);
+<a name="l00244"></a>00244 it != boost::end(info);
+<a name="l00245"></a>00245 ++it)
+<a name="l00246"></a>00246 {
+<a name="l00247"></a>00247 <span class="keywordflow">if</span> (it-&gt;how == <span class="charliteral">'c'</span> &amp;&amp; it-&gt;seg_id.source_index == departing)
+<a name="l00248"></a>00248 {
+<a name="l00249"></a>00249 it-&gt;arrival = -1;
+<a name="l00250"></a>00250 it-&gt;direction = direction;
+<a name="l00251"></a>00251 }
+<a name="l00252"></a>00252 }
+<a name="l00253"></a>00253 }
+<a name="l00254"></a>00254
+<a name="l00255"></a>00255
+<a name="l00256"></a>00256 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Info&gt;
+<a name="l00257"></a>00257 <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="l00258"></a>00258 {
+<a name="l00259"></a>00259 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator&lt;Info&gt;::type iterator;
+<a name="l00260"></a>00260
+<a name="l00261"></a>00261 <span class="keywordflow">for</span> (iterator it = boost::begin(info);
+<a name="l00262"></a>00262 it != boost::end(info);
+<a name="l00263"></a>00263 ++it)
+<a name="l00264"></a>00264 {
+<a name="l00265"></a>00265 <span class="keywordflow">if</span>(it-&gt;how == <span class="charliteral">'s'</span>)
+<a name="l00266"></a>00266 {
+<a name="l00267"></a>00267 <span class="keywordflow">if</span> (! opposite)
+<a name="l00268"></a>00268 {
+<a name="l00269"></a>00269 <span class="comment">// Not opposite, all "start" traversals can also be made "departing"</span>
+<a name="l00270"></a>00270 it-&gt;arrival = -1;
+<a name="l00271"></a>00271 }
+<a name="l00272"></a>00272 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (opposite &amp;&amp; it-&gt;arrival == 0)
+<a name="l00273"></a>00273 {
+<a name="l00274"></a>00274 <span class="comment">// Prevent the collinear the "start" from "departing",</span>
+<a name="l00275"></a>00275 <span class="comment">// if it is in opposite direction</span>
+<a name="l00276"></a>00276 it-&gt;arrival = 1;
+<a name="l00277"></a>00277 it-&gt;direction = 0;
+<a name="l00278"></a>00278 it-&gt;flagged = <span class="keyword">true</span>; <span class="comment">// might be deleted</span>
+<a name="l00279"></a>00279 }
+<a name="l00280"></a>00280 }
+<a name="l00281"></a>00281 }
+<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> V&gt;
+<a name="l00286"></a>00286 <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="l00287"></a>00287 {
+<a name="l00288"></a>00288 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator&lt;V&gt;::type iterator_type;
+<a name="l00289"></a>00289 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_value&lt;V&gt;::type ip_type;
+<a name="l00290"></a>00290 <span class="keyword">typedef</span> <span class="keyword">typename</span> ip_type::traversal_type info_type;
+<a name="l00291"></a>00291
+<a name="l00292"></a>00292 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_value&lt;V&gt;::type::traversal_vector vector_type;
+<a name="l00293"></a>00293 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator&lt;vector_type&gt;::type tvit_type;
+<a name="l00294"></a>00294
+<a name="l00295"></a>00295 <span class="keywordflow">for</span> (iterator_type it = boost::begin(intersection_points);
+<a name="l00296"></a>00296 it != boost::end(intersection_points);
+<a name="l00297"></a>00297 ++it)
+<a name="l00298"></a>00298 {
+<a name="l00299"></a>00299 <span class="keywordflow">if</span> (! it-&gt;trivial)
+<a name="l00300"></a>00300 {
+<a name="l00301"></a>00301 <span class="keywordflow">if</span> (boost::size(it-&gt;info) == 4)
+<a name="l00302"></a>00302 {
+<a name="l00303"></a>00303 <span class="comment">/*</span>
+<a name="l00304"></a>00304 <span class="comment"> can be ARRIVE/START from the middle (#11)</span>
+<a name="l00305"></a>00305 <span class="comment"> src 0 seg 1 (// 1.0) how m[A R] p // qu</span>
+<a name="l00306"></a>00306 <span class="comment"> src 0 seg 1 (// 1.1) how s[D L] p // qw</span>
+<a name="l00307"></a>00307 <span class="comment"> src 1 seg 0 (// 0.1) how m[A R] qu / p</span>
+<a name="l00308"></a>00308 <span class="comment"> src 1 seg 1 (// 0.1) how s[D R] qw / p</span>
+<a name="l00309"></a>00309 <span class="comment"></span>
+<a name="l00310"></a>00310 <span class="comment"> or can be ARRIVE at COLLINEARITY (#8, #13)</span>
+<a name="l00311"></a>00311 <span class="comment"> src 0 seg 1 (// 1.1) how m[A L] p // qu</span>
+<a name="l00312"></a>00312 <span class="comment"> src 0 seg 1 (// 1.2) how c[- -] p // qw</span>
+<a name="l00313"></a>00313 <span class="comment"> src 1 seg 1 (// 0.1) how m[A L] qu // p</span>
+<a name="l00314"></a>00314 <span class="comment"> src 1 seg 2 (// 0.1) how c[- -] qw // p</span>
+<a name="l00315"></a>00315 <span class="comment"></span>
+<a name="l00316"></a>00316 <span class="comment"> or can be START from COLLINEARITY (#8, #13)</span>
+<a name="l00317"></a>00317 <span class="comment"> src 0 seg 1 (// 1.2) how c[- -] p // qu</span>
+<a name="l00318"></a>00318 <span class="comment"> src 0 seg 1 (// 1.0) how s[D R] p // qw</span>
+<a name="l00319"></a>00319 <span class="comment"> src 1 seg 2 (// 0.1) how c[- -] qu // p</span>
+<a name="l00320"></a>00320 <span class="comment"> src 1 seg 0 (// 0.1) how s[D L] qw // p</span>
+<a name="l00321"></a>00321 <span class="comment"> */</span>
+<a name="l00322"></a>00322
+<a name="l00323"></a>00323 <span class="comment">// First detect the case and if it is opposite</span>
+<a name="l00324"></a>00324 <span class="keywordtype">int</span> count_m = 0, count_s = 0, count_c = 0;
+<a name="l00325"></a>00325
+<a name="l00326"></a>00326 <span class="keywordtype">bool</span> opposite = <span class="keyword">false</span>;
+<a name="l00327"></a>00327 <span class="keywordflow">for</span> (tvit_type tvit = boost::begin(it-&gt;info);
+<a name="l00328"></a>00328 tvit != boost::end(it-&gt;info);
+<a name="l00329"></a>00329 ++tvit)
+<a name="l00330"></a>00330 {
+<a name="l00331"></a>00331 <span class="keywordflow">switch</span>(tvit-&gt;how)
+<a name="l00332"></a>00332 {
+<a name="l00333"></a>00333 <span class="keywordflow">case</span> <span class="charliteral">'m'</span> : count_m++; <span class="keywordflow">break</span>;
+<a name="l00334"></a>00334 <span class="keywordflow">case</span> <span class="charliteral">'s'</span> : count_s++; <span class="keywordflow">break</span>;
+<a name="l00335"></a>00335 <span class="keywordflow">case</span> <span class="charliteral">'c'</span> : count_c++; <span class="keywordflow">break</span>;
+<a name="l00336"></a>00336 }
+<a name="l00337"></a>00337 <span class="keywordflow">if</span> (tvit-&gt;opposite)
+<a name="l00338"></a>00338 {
+<a name="l00339"></a>00339 opposite = <span class="keyword">true</span>;
+<a name="l00340"></a>00340 }
+<a name="l00341"></a>00341 }
+<a name="l00342"></a>00342
+<a name="l00343"></a>00343 <span class="keywordflow">if</span> (count_m == 2 &amp;&amp; count_s == 2)
+<a name="l00344"></a>00344 {
+<a name="l00345"></a>00345 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00346"></a>00346 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Touching the middle "</span> &lt;&lt; std::endl;
+<a name="l00347"></a>00347 <span class="preprocessor">#endif</span>
+<a name="l00348"></a>00348 <span class="preprocessor"></span>
+<a name="l00349"></a>00349 touch_in_the_middle(it-&gt;info, it-&gt;point);
+<a name="l00350"></a>00350 }
+<a name="l00351"></a>00351 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (count_m == 2 &amp;&amp; count_c == 2 &amp;&amp; opposite)
+<a name="l00352"></a>00352 {
+<a name="l00353"></a>00353 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00354"></a>00354 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Arriving the middle/collinearity, opposite"</span> &lt;&lt; std::endl;
+<a name="l00355"></a>00355 <span class="preprocessor">#endif</span>
+<a name="l00356"></a>00356 <span class="preprocessor"></span>
+<a name="l00357"></a>00357 arrive_in_the_middle(it-&gt;info);
+<a name="l00358"></a>00358 }
+<a name="l00359"></a>00359 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (count_s == 2 &amp;&amp; count_c == 2)
+<a name="l00360"></a>00360 {
+<a name="l00361"></a>00361 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00362"></a>00362 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Starting from middle/collinearity"</span>
+<a name="l00363"></a>00363 &lt;&lt; (opposite ? <span class="stringliteral">" , opposite"</span> : <span class="stringliteral">""</span>)
+<a name="l00364"></a>00364 &lt;&lt; std::endl;
+<a name="l00365"></a>00365 <span class="preprocessor">#endif</span>
+<a name="l00366"></a>00366 <span class="preprocessor"></span>
+<a name="l00367"></a>00367 start_in_the_middle(it-&gt;info, opposite);
+<a name="l00368"></a>00368 }
+<a name="l00369"></a>00369 }
+<a name="l00370"></a>00370
+<a name="l00371"></a>00371 <span class="keywordflow">if</span> (boost::size(it-&gt;info) == 8)
+<a name="l00372"></a>00372 {
+<a name="l00373"></a>00373 <span class="comment">/*</span>
+<a name="l00374"></a>00374 <span class="comment"> src 0 seg 1 (// 1.0) how t[A R] pi // qu pi.first</span>
+<a name="l00375"></a>00375 <span class="comment"> src 0 seg 1 (// 1.1) how a[A R] pi // qw pi.second</span>
+<a name="l00376"></a>00376 <span class="comment"> src 0 seg 2 (// 1.0) how a[D R] pk // qu pk.first</span>
+<a name="l00377"></a>00377 <span class="comment"> src 0 seg 2 (// 1.1) how f[D L] pk // qw pk.second</span>
+<a name="l00378"></a>00378 <span class="comment"></span>
+<a name="l00379"></a>00379 <span class="comment"> src 1 seg 0 (// 0.1) how t[A L] qu // pi</span>
+<a name="l00380"></a>00380 <span class="comment"> src 1 seg 0 (// 0.2) how a[A R] qu // pk</span>
+<a name="l00381"></a>00381 <span class="comment"> src 1 seg 1 (// 0.1) how a[D R] qw // pi</span>
+<a name="l00382"></a>00382 <span class="comment"> src 1 seg 1 (// 0.2) how f[D R] qw // pk</span>
+<a name="l00383"></a>00383 <span class="comment"> */</span>
+<a name="l00384"></a>00384
+<a name="l00385"></a>00385 std::pair&lt;tvit_type, tvit_type&gt; pi, pk, qu, qw;
+<a name="l00386"></a>00386 std::pair&lt;typename info_type::point_type, typename info_type::point_type&gt; p, q;
+<a name="l00387"></a>00387
+<a name="l00388"></a>00388
+<a name="l00389"></a>00389 <span class="comment">// Find out which is which</span>
+<a name="l00390"></a>00390 <span class="keywordflow">for</span> (tvit_type tvit = boost::begin(it-&gt;info);
+<a name="l00391"></a>00391 tvit != boost::end(it-&gt;info);
+<a name="l00392"></a>00392 ++tvit)
+<a name="l00393"></a>00393 {
+<a name="l00394"></a>00394 assign_pq(*tvit, p, q);
+<a name="l00395"></a>00395 <span class="keywordflow">if</span> (tvit-&gt;seg_id.source_index == 0)
+<a name="l00396"></a>00396 {
+<a name="l00397"></a>00397 <span class="keywordflow">if</span> (tvit-&gt;arrival == 1)
+<a name="l00398"></a>00398 {
+<a name="l00399"></a>00399 <span class="keywordflow">if</span>(tvit-&gt;how != <span class="charliteral">'a'</span>)
+<a name="l00400"></a>00400 {
+<a name="l00401"></a>00401 pi.first = tvit;
+<a name="l00402"></a>00402 }
+<a name="l00403"></a>00403 <span class="keywordflow">else</span>
+<a name="l00404"></a>00404 {
+<a name="l00405"></a>00405 pi.second = tvit;
+<a name="l00406"></a>00406 }
+<a name="l00407"></a>00407
+<a name="l00408"></a>00408 }
+<a name="l00409"></a>00409 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tvit-&gt;arrival == -1)
+<a name="l00410"></a>00410 {
+<a name="l00411"></a>00411 <span class="keywordflow">if</span> (tvit-&gt;how == <span class="charliteral">'a'</span>)
+<a name="l00412"></a>00412 {
+<a name="l00413"></a>00413 pk.first = tvit;
+<a name="l00414"></a>00414 }
+<a name="l00415"></a>00415 <span class="keywordflow">else</span>
+<a name="l00416"></a>00416 {
+<a name="l00417"></a>00417 pk.second = tvit;
+<a name="l00418"></a>00418 }
+<a name="l00419"></a>00419 }
+<a name="l00420"></a>00420 }
+<a name="l00421"></a>00421 <span class="keywordflow">else</span>
+<a name="l00422"></a>00422 {
+<a name="l00423"></a>00423 <span class="keywordflow">if</span> (tvit-&gt;arrival == 1)
+<a name="l00424"></a>00424 {
+<a name="l00425"></a>00425 <span class="keywordflow">if</span>(tvit-&gt;how != <span class="charliteral">'a'</span>)
+<a name="l00426"></a>00426 {
+<a name="l00427"></a>00427 qu.first = tvit;
+<a name="l00428"></a>00428 }
+<a name="l00429"></a>00429 <span class="keywordflow">else</span>
+<a name="l00430"></a>00430 {
+<a name="l00431"></a>00431 qu.second = tvit;
+<a name="l00432"></a>00432 }
+<a name="l00433"></a>00433 }
+<a name="l00434"></a>00434 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tvit-&gt;arrival == -1)
+<a name="l00435"></a>00435 {
+<a name="l00436"></a>00436 <span class="keywordflow">if</span> (tvit-&gt;how == <span class="charliteral">'a'</span>)
+<a name="l00437"></a>00437 {
+<a name="l00438"></a>00438 qw.first = tvit;
+<a name="l00439"></a>00439 }
+<a name="l00440"></a>00440 <span class="keywordflow">else</span>
+<a name="l00441"></a>00441 {
+<a name="l00442"></a>00442 qw.second = tvit;
+<a name="l00443"></a>00443 }
+<a name="l00444"></a>00444 }
+<a name="l00445"></a>00445 }
+<a name="l00446"></a>00446 }
+<a name="l00447"></a>00447
+<a name="l00448"></a>00448 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_side
+<a name="l00449"></a>00449 &lt;
+<a name="l00450"></a>00450 <span class="keyword">typename</span> cs_tag&lt;ip_type&gt;::type
+<a name="l00451"></a>00451 &gt;::type side;
+<a name="l00452"></a>00452
+<a name="l00453"></a>00453
+<a name="l00454"></a>00454 <span class="keywordtype">int</span> dir_p = side::apply(p.first, it-&gt;point, p.second);
+<a name="l00455"></a>00455 <span class="keywordtype">int</span> dir_q = side::apply(q.first, it-&gt;point, q.second);
+<a name="l00456"></a>00456
+<a name="l00457"></a>00457 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00458"></a>00458 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Pi//Qu : "</span> &lt;&lt; *pi.first &lt;&lt; std::endl;
+<a name="l00459"></a>00459 std::cout &lt;&lt; <span class="stringliteral">"Pi//Qw : "</span> &lt;&lt; *pi.second &lt;&lt; std::endl;
+<a name="l00460"></a>00460 std::cout &lt;&lt; <span class="stringliteral">"Pk//Qu : "</span> &lt;&lt; *pk.first &lt;&lt; std::endl;
+<a name="l00461"></a>00461 std::cout &lt;&lt; <span class="stringliteral">"Pk//Qw : "</span> &lt;&lt; *pk.second &lt;&lt; std::endl;
+<a name="l00462"></a>00462 std::cout &lt;&lt; <span class="stringliteral">"Qu//Pi : "</span> &lt;&lt; *qu.first &lt;&lt; std::endl;
+<a name="l00463"></a>00463 std::cout &lt;&lt; <span class="stringliteral">"Qu//Pk : "</span> &lt;&lt; *qu.second &lt;&lt; std::endl;
+<a name="l00464"></a>00464 std::cout &lt;&lt; <span class="stringliteral">"Qw//Pi : "</span> &lt;&lt; *qw.first &lt;&lt; std::endl;
+<a name="l00465"></a>00465 std::cout &lt;&lt; <span class="stringliteral">"Qw//Pk : "</span> &lt;&lt; *qw.second &lt;&lt; std::endl;
+<a name="l00466"></a>00466 <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="l00467"></a>00467 <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="l00468"></a>00468 <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="l00469"></a>00469 <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="l00470"></a>00470 <span class="preprocessor">#endif</span>
+<a name="l00471"></a>00471 <span class="preprocessor"></span>
+<a name="l00472"></a>00472 <span class="keywordflow">if</span> (qu.first-&gt;direction == qw.first-&gt;direction)
+<a name="l00473"></a>00473 {
+<a name="l00474"></a>00474 <span class="comment">// Both Right or Both Left</span>
+<a name="l00475"></a>00475 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00476"></a>00476 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Both "</span>
+<a name="l00477"></a>00477 &lt;&lt; (qu.first-&gt;direction == 1 ? <span class="stringliteral">"Left"</span> : <span class="stringliteral">"Right"</span>)
+<a name="l00478"></a>00478 &lt;&lt; std::endl;
+<a name="l00479"></a>00479 <span class="preprocessor">#endif</span>
+<a name="l00480"></a>00480 <span class="preprocessor"></span>
+<a name="l00481"></a>00481 both_same(pi, pk, qu, qw, dir_p, dir_q, qu.first-&gt;direction);
+<a name="l00482"></a>00482 }
+<a name="l00483"></a>00483 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (qu.first-&gt;direction == -qw.first-&gt;direction)
+<a name="l00484"></a>00484 {
+<a name="l00485"></a>00485 <span class="comment">// From Left to Right, or from Right to Left</span>
+<a name="l00486"></a>00486 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00487"></a>00487 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Left to/from Right"</span> &lt;&lt; std::endl;
+<a name="l00488"></a>00488 <span class="preprocessor">#endif</span>
+<a name="l00489"></a>00489 <span class="preprocessor"></span> crossing(pi, pk, qu, qw, dir_p, dir_q, qu.first-&gt;direction);
+<a name="l00490"></a>00490 }
+<a name="l00491"></a>00491 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (qw.first-&gt;direction == 1 || qu.first-&gt;direction == 1)
+<a name="l00492"></a>00492 {
+<a name="l00493"></a>00493 <span class="comment">// Collinear left</span>
+<a name="l00494"></a>00494 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00495"></a>00495 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Collinear left"</span> &lt;&lt; std::endl;
+<a name="l00496"></a>00496 <span class="preprocessor">#endif</span>
+<a name="l00497"></a>00497 <span class="preprocessor"></span> collinear(pi, pk, qu, qw, dir_p, dir_q, 1);
+<a name="l00498"></a>00498 }
+<a name="l00499"></a>00499 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (qw.first-&gt;direction == -1 || qu.first-&gt;direction == -1)
+<a name="l00500"></a>00500 {
+<a name="l00501"></a>00501 <span class="comment">// Collinear right</span>
+<a name="l00502"></a>00502 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00503"></a>00503 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Collinear right"</span> &lt;&lt; std::endl;
+<a name="l00504"></a>00504 <span class="preprocessor">#endif</span>
+<a name="l00505"></a>00505 <span class="preprocessor"></span> collinear(pi, pk, qu, qw, dir_p, dir_q, -1);
+<a name="l00506"></a>00506 }
+<a name="l00507"></a>00507
+<a name="l00508"></a>00508
+<a name="l00509"></a>00509 <span class="keywordflow">for</span> (tvit_type tvit = boost::begin(it-&gt;info);
+<a name="l00510"></a>00510 tvit != boost::end(it-&gt;info);
+<a name="l00511"></a>00511 ++tvit)
+<a name="l00512"></a>00512 {
+<a name="l00513"></a>00513 <span class="keywordflow">if</span> (tvit-&gt;how == <span class="charliteral">'a'</span>)
+<a name="l00514"></a>00514 {
+<a name="l00515"></a>00515 tvit-&gt;direction = 0;
+<a name="l00516"></a>00516 }
+<a name="l00517"></a>00517 }
+<a name="l00518"></a>00518 }
+<a name="l00519"></a>00519 }
+<a name="l00520"></a>00520 }
+<a name="l00521"></a>00521
+<a name="l00522"></a>00522 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00523"></a>00523 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Adapted turns: "</span> &lt;&lt; std::endl;
+<a name="l00524"></a>00524 report_ip(intersection_points);
+<a name="l00525"></a>00525 <span class="preprocessor">#endif</span>
+<a name="l00526"></a>00526 <span class="preprocessor"></span>}
+<a name="l00527"></a>00527
+<a name="l00528"></a>00528
+<a name="l00529"></a>00529 }} <span class="comment">// namespace detail::intersection</span>
+<a name="l00530"></a>00530 <span class="preprocessor">#endif //DOXYGEN_NO_DETAIL</span>
+<a name="l00531"></a>00531 <span class="preprocessor"></span>
+<a name="l00532"></a>00532
+<a name="l00533"></a>00533 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> V&gt;
+<a name="l00534"></a><a class="code" href="namespaceggl.html#a8f29c6cbf3f88d5926a127c76976027">00534</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="l00535"></a>00535 {
+<a name="l00536"></a>00536 <span class="comment">// If there are merges, there might be merged IP's which have right turns</span>
+<a name="l00537"></a>00537 <a class="code" href="namespaceggl.html#a8f29c6cbf3f88d5926a127c76976027">detail::intersection::adapt_turns</a>(intersection_points);
+<a name="l00538"></a>00538
+<a name="l00539"></a>00539 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00540"></a>00540 <span class="preprocessor"></span> std::cout &lt;&lt; <span class="stringliteral">"Merged (2): "</span> &lt;&lt; std::endl;
+<a name="l00541"></a>00541 report_ip(intersection_points);
+<a name="l00542"></a>00542 <span class="preprocessor">#endif</span>
+<a name="l00543"></a>00543 <span class="preprocessor"></span>
+<a name="l00544"></a>00544 }
+<a name="l00545"></a>00545
+<a name="l00546"></a>00546
+<a name="l00547"></a>00547 } <span class="comment">// namespace ggl</span>
+<a name="l00548"></a>00548
+<a name="l00549"></a>00549 <span class="preprocessor">#endif // GGL_ALGORITHMS_OVERLAY_ADAPT_TURNS_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>November 5, 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/libs/ggl/doc/doxygen_output/html/add__const__if__c_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/add__const__if__c_8hpp.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,78 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/ggl/util/add_const_if_c.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_1add__const__if__c.html">ggl::add_const_if_c&lt; IsConst, Type &gt;</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Meta-function to define a const or non const type. 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>
+
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>November 5, 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/libs/ggl/doc/doxygen_output/html/add__const__if__c_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/add__const__if__c_8hpp_source.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,99 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/ggl/util/add_const_if_c.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">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00005"></a>00005 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00006"></a>00006 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="preprocessor">#ifndef GGL_UTIL_ADD_CONST_IF_C_HPP</span>
+<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define GGL_UTIL_ADD_CONST_IF_C_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span>
+<a name="l00011"></a>00011
+<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;boost/mpl/if.hpp&gt;</span>
+<a name="l00013"></a>00013
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="keyword">namespace </span>ggl
+<a name="l00016"></a>00016 {
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018
+<a name="l00034"></a>00034 <span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> IsConst, <span class="keyword">typename</span> Type&gt;
+<a name="l00035"></a><a class="code" href="structggl_1_1add__const__if__c.html">00035</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1add__const__if__c.html" title="Meta-function to define a const or non const type.">add_const_if_c</a>
+<a name="l00036"></a>00036 {
+<a name="l00037"></a>00037 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_c
+<a name="l00038"></a>00038 &lt;
+<a name="l00039"></a>00039 IsConst,
+<a name="l00040"></a>00040 <span class="keyword">const</span> Type,
+<a name="l00041"></a>00041 Type
+<a name="l00042"></a><a class="code" href="structggl_1_1add__const__if__c.html#78c46b047bc63015014efa1a2cd18dc1">00042</a> &gt;<a class="code" href="structggl_1_1add__const__if__c.html#78c46b047bc63015014efa1a2cd18dc1">::type</a> <a class="code" href="structggl_1_1add__const__if__c.html#78c46b047bc63015014efa1a2cd18dc1">type</a>;
+<a name="l00043"></a>00043 };
+<a name="l00044"></a>00044
+<a name="l00045"></a>00045
+<a name="l00046"></a>00046
+<a name="l00047"></a>00047 } <span class="comment">// namespace ggl</span>
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049
+<a name="l00050"></a>00050 <span class="preprocessor">#endif // GGL_UTIL_ADD_CONST_IF_C_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 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>
+
+<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>c:/svn/ggl/formal_review/boost/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>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 specified <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;::type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d">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>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp_source.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 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>
+
+<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>c:/svn/ggl/formal_review/boost/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/mpl/if.hpp&gt;</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="point__order_8hpp.html">ggl/core/point_order.hpp</a>&gt;</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>&gt;</span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="geometries_2concepts_2check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="calculate__null_8hpp.html">ggl/algorithms/detail/calculate_null.hpp</a>&gt;</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="calculate__sum_8hpp.html">ggl/algorithms/detail/calculate_sum.hpp</a>&gt;</span>
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;<a class="code" href="strategies_2area_8hpp.html">ggl/strategies/area.hpp</a>&gt;</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;<a class="code" href="area__result_8hpp.html">ggl/strategies/area_result.hpp</a>&gt;</span>
+<a name="l00029"></a>00029
+<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;<a class="code" href="area__concept_8hpp.html">ggl/strategies/concepts/area_concept.hpp</a>&gt;</span>
+<a name="l00031"></a>00031
+<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;<a class="code" href="math_8hpp.html">ggl/util/math.hpp</a>&gt;</span>
+<a name="l00033"></a>00033
+<a name="l00059"></a>00059 <span class="keyword">namespace </span>ggl
+<a name="l00060"></a>00060 {
+<a name="l00061"></a>00061
+<a name="l00062"></a>00062 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00063"></a>00063 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a> {
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00066"></a>00066 <span class="keyword">struct </span>box_area
+<a name="l00067"></a>00067 {
+<a name="l00068"></a>00068 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;Box&gt;::type return_type;
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070 <span class="keyword">static</span> <span class="keyword">inline</span> return_type apply(Box <span class="keyword">const</span>&amp; box, Strategy <span class="keyword">const</span>&amp;)
+<a name="l00071"></a>00071 {
+<a name="l00072"></a>00072 <span class="comment">// Currently only works for 2D Cartesian boxes</span>
+<a name="l00073"></a>00073 assert_dimension&lt;Box, 2&gt;();
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 return_type <span class="keyword">const</span> dx = get&lt;max_corner, 0&gt;(box)
+<a name="l00076"></a>00076 - get&lt;min_corner, 0&gt;(box);
+<a name="l00077"></a>00077 return_type <span class="keyword">const</span> dy = get&lt;max_corner, 1&gt;(box)
+<a name="l00078"></a>00078 - get&lt;min_corner, 1&gt;(box);
+<a name="l00079"></a>00079
+<a name="l00080"></a>00080 <span class="keywordflow">return</span> dx * dy;
+<a name="l00081"></a>00081 }
+<a name="l00082"></a>00082 };
+<a name="l00083"></a>00083
+<a name="l00084"></a>00084
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086
+<a name="l00090"></a>00090 <span class="keyword">template</span>
+<a name="l00091"></a>00091 &lt;
+<a name="l00092"></a>00092 <span class="keyword">typename</span> Ring,
+<a name="l00093"></a>00093 <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d">order_selector</a> Order,
+<a name="l00094"></a>00094 <span class="comment">// closing_selector Closed -- for now assuming CLOSED, p(0) == p(n-1)</span>
+<a name="l00095"></a>00095 <span class="keyword">typename</span> Strategy
+<a name="l00096"></a>00096 &gt;
+<a name="l00097"></a>00097 <span class="keyword">struct </span>ring_area
+<a name="l00098"></a>00098 {};
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00102"></a>00102 <span class="keyword">struct </span>ring_area&lt;Ring, <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d55fe53c1821ca13eb0eacb9084cb1d1c">clockwise</a>, Strategy&gt;
+<a name="l00103"></a>00103 {
+<a name="l00104"></a>00104 BOOST_CONCEPT_ASSERT( (<a class="code" href="classggl_1_1concept_1_1_area_strategy.html" title="Checks strategy for area.">ggl::concept::AreaStrategy&lt;Strategy&gt;</a>) );
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 <span class="keyword">typedef</span> <span class="keyword">typename</span> Strategy::return_type type;
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108 <span class="keyword">static</span> <span class="keyword">inline</span> type apply(Ring <span class="keyword">const</span>&amp; ring, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00109"></a>00109 {
+<a name="l00110"></a>00110 assert_dimension&lt;Ring, 2&gt;();
+<a name="l00111"></a>00111
+<a name="l00112"></a>00112 <span class="comment">// A closed linear_ring has at least four points,</span>
+<a name="l00113"></a>00113 <span class="comment">// if not, there is no (zero) area</span>
+<a name="l00114"></a>00114 <span class="keywordflow">if</span> (boost::size(ring) &lt; 4)
+<a name="l00115"></a>00115 {
+<a name="l00116"></a>00116 <span class="keywordflow">return</span> type();
+<a name="l00117"></a>00117 }
+<a name="l00118"></a>00118
+<a name="l00119"></a>00119 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator&lt;Ring&gt;::type iterator_type;
+<a name="l00120"></a>00120
+<a name="l00121"></a>00121 <span class="keyword">typename</span> Strategy::state_type state;
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123 iterator_type it = boost::begin(ring);
+<a name="l00124"></a>00124 <span class="keywordflow">for</span> (iterator_type previous = it++;
+<a name="l00125"></a>00125 it != boost::end(ring);
+<a name="l00126"></a>00126 previous = it++)
+<a name="l00127"></a>00127 {
+<a name="l00128"></a>00128 strategy.apply(*previous, *it, state);
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130 <span class="keywordflow">return</span> strategy.result(state);
+<a name="l00131"></a>00131
+<a name="l00132"></a>00132 }
+<a name="l00133"></a>00133 };
+<a name="l00134"></a>00134
+<a name="l00135"></a>00135 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00136"></a>00136 <span class="keyword">struct </span>ring_area&lt;Ring, <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d7242f3377ee5283786ecb2bc2d90015a">counterclockwise</a>, Strategy&gt;
+<a name="l00137"></a>00137 {
+<a name="l00138"></a>00138 <span class="keyword">typedef</span> <span class="keyword">typename</span> Strategy::return_type type;
+<a name="l00139"></a>00139 <span class="keyword">static</span> <span class="keyword">inline</span> type apply(Ring <span class="keyword">const</span>&amp; ring, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00140"></a>00140 {
+<a name="l00141"></a>00141 <span class="comment">// Counter clockwise rings negate the area result</span>
+<a name="l00142"></a>00142 <span class="keywordflow">return</span> -ring_area&lt;Ring, clockwise, Strategy&gt;::apply(ring, strategy);
+<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="comment">// namespace detail::area</span>
+<a name="l00148"></a>00148
+<a name="l00149"></a>00149 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00150"></a>00150 <span class="preprocessor"></span>
+<a name="l00151"></a>00151
+<a name="l00152"></a>00152 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00153"></a>00153 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch {
+<a name="l00154"></a>00154
+<a name="l00155"></a>00155 <span class="keyword">template</span>
+<a name="l00156"></a>00156 &lt;
+<a name="l00157"></a>00157 <span class="keyword">typename</span> Tag,
+<a name="l00158"></a>00158 <span class="keyword">typename</span> Geometry,
+<a name="l00159"></a>00159 <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d">order_selector</a> Order,
+<a name="l00160"></a>00160 <span class="keyword">typename</span> Strategy
+<a name="l00161"></a>00161 &gt;
+<a name="l00162"></a>00162 <span class="keyword">struct </span><a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>
+<a name="l00163"></a>00163 : detail::calculate_null
+<a name="l00164"></a>00164 &lt;
+<a name="l00165"></a>00165 typename Strategy::return_type,
+<a name="l00166"></a>00166 Geometry,
+<a name="l00167"></a>00167 Strategy
+<a name="l00168"></a>00168 &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> Geometry, order_selector Order, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00172"></a>00172 <span class="keyword">struct </span><a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>&lt;box_tag, Geometry, Order, Strategy&gt;
+<a name="l00173"></a>00173 : detail::<a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>::box_area&lt;Geometry, Strategy&gt;
+<a name="l00174"></a>00174 {};
+<a name="l00175"></a>00175
+<a name="l00176"></a>00176
+<a name="l00177"></a>00177 <span class="comment">// Area of ring currently returns area of closed rings but it might be argued</span>
+<a name="l00178"></a>00178 <span class="comment">// that it is 0.0, because a ring is just a line.</span>
+<a name="l00179"></a>00179 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, order_selector Order, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00180"></a>00180 <span class="keyword">struct </span><a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>&lt;ring_tag, Geometry, Order, Strategy&gt;
+<a name="l00181"></a>00181 : detail::<a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>::ring_area&lt;Geometry, Order, Strategy&gt;
+<a name="l00182"></a>00182 {};
+<a name="l00183"></a>00183
+<a name="l00184"></a>00184 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, order_selector Order, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00185"></a>00185 <span class="keyword">struct </span><a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>&lt;polygon_tag, Polygon, Order, Strategy&gt;
+<a name="l00186"></a>00186 : detail::calculate_polygon_sum
+<a name="l00187"></a>00187 &lt;
+<a name="l00188"></a>00188 typename Strategy::return_type,
+<a name="l00189"></a>00189 Polygon,
+<a name="l00190"></a>00190 Strategy,
+<a name="l00191"></a>00191 detail::area::ring_area
+<a name="l00192"></a>00192 &lt;
+<a name="l00193"></a>00193 typename ring_type&lt;Polygon&gt;::type,
+<a name="l00194"></a>00194 Order,
+<a name="l00195"></a>00195 Strategy
+<a name="l00196"></a>00196 &gt;
+<a name="l00197"></a>00197 &gt;
+<a name="l00198"></a>00198 {};
+<a name="l00199"></a>00199
+<a name="l00200"></a>00200
+<a name="l00201"></a>00201 } <span class="comment">// namespace dispatch</span>
+<a name="l00202"></a>00202 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00203"></a>00203 <span class="preprocessor"></span>
+<a name="l00204"></a>00204
+<a name="l00205"></a>00205
+<a name="l00217"></a>00217 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00218"></a><a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d">00218</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1area__result.html" title="Meta-function defining return type of area function.">area_result&lt;Geometry&gt;::type</a> <a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>(Geometry <span class="keyword">const</span>&amp; geometry)
+<a name="l00219"></a>00219 {
+<a name="l00220"></a>00220 concept::check&lt;const Geometry&gt;();
+<a name="l00221"></a>00221
+<a name="l00222"></a>00222 <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="l00223"></a>00223
+<a name="l00224"></a>00224 <span class="keywordflow">return</span> <a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">dispatch::area</a>
+<a name="l00225"></a>00225 &lt;
+<a name="l00226"></a>00226 <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="l00227"></a>00227 Geometry,
+<a name="l00228"></a>00228 <a class="code" href="structggl_1_1point__order.html" title="Meta-function which defines point type of any geometry.">ggl::point_order&lt;Geometry&gt;::value</a>,
+<a name="l00229"></a>00229 strategy_type
+<a name="l00230"></a>00230 &gt;::apply(geometry, strategy_type());
+<a name="l00231"></a>00231 }
+<a name="l00232"></a>00232
+<a name="l00242"></a>00242 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00243"></a><a class="code" href="group__area.html#g7e0783c73b5f561707c50b445a01b833">00243</a> <span class="keyword">inline</span> <span class="keyword">typename</span> Strategy::return_type <a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">area</a>(
+<a name="l00244"></a>00244 Geometry <span class="keyword">const</span>&amp; geometry, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00245"></a>00245 {
+<a name="l00246"></a>00246 concept::check&lt;const Geometry&gt;();
+<a name="l00247"></a>00247
+<a name="l00248"></a>00248 <span class="keywordflow">return</span> <a class="code" href="group__area.html#gaffb471f2ef6dd4842563e533094fa0d" title="Calculate area of a geometry.">dispatch::area</a>
+<a name="l00249"></a>00249 &lt;
+<a name="l00250"></a>00250 <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="l00251"></a>00251 Geometry,
+<a name="l00252"></a>00252 <a class="code" href="structggl_1_1point__order.html" title="Meta-function which defines point type of any geometry.">ggl::point_order&lt;Geometry&gt;::value</a>,
+<a name="l00253"></a>00253 Strategy
+<a name="l00254"></a>00254 &gt;::apply(geometry, strategy);
+<a name="l00255"></a>00255 }
+<a name="l00256"></a>00256
+<a name="l00257"></a>00257 } <span class="comment">// namespace ggl</span>
+<a name="l00258"></a>00258
+<a name="l00259"></a>00259 <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>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,94 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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 Geometry , typename Point &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#gc7e9651663cd19868cae40c20c72afdc">ggl::centroid</a> (Geometry const &amp;geometry, Point &amp;c)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate centroid. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , typename Point , typename Strategy &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2">ggl::centroid</a> (Geometry const &amp;geometry, Point &amp;c, Strategy const &amp;strategy)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate centroid using a specified <a class="el" href="namespaceggl_1_1strategy.html">strategy</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Point , typename Geometry , typename Strategy &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Point&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#gb077a07483ee2fdd17d66e63b237aaa6">ggl::make_centroid</a> (Geometry const &amp;geometry, Strategy const &amp;strategy)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate and return centroid, using a specified <a class="el" href="namespaceggl_1_1strategy.html">strategy</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Point , typename Geometry &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Point&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#ga7146045002e56e5471f8da7dd30609c">ggl::make_centroid</a> (Geometry const &amp;geometry)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate and return centroid. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp_source.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,459 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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">// Copyright (c) 2009 Mateusz Loskot &lt;mateusz_at_[hidden]&gt;</span>
+<a name="l00006"></a>00006 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00007"></a>00007 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00008"></a>00008 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00009"></a>00009
+<a name="l00010"></a>00010 <span class="preprocessor">#ifndef GGL_ALGORITHMS_CENTROID_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_CENTROID_HPP</span>
+<a name="l00012"></a>00012 <span class="preprocessor"></span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;cstddef&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_2distance_8hpp.html">ggl/algorithms/distance.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="coordinate__dimension_8hpp.html">ggl/core/coordinate_dimension.hpp</a>&gt;</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="exception_8hpp.html">ggl/core/exception.hpp</a>&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="geometries_2concepts_2check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="segment__iterator_8hpp.html">ggl/iterators/segment_iterator.hpp</a>&gt;</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;<a class="code" href="strategies_2centroid_8hpp.html">ggl/strategies/centroid.hpp</a>&gt;</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;<a class="code" href="centroid__concept_8hpp.html">ggl/strategies/concepts/centroid_concept.hpp</a>&gt;</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;<a class="code" href="copy_8hpp.html">ggl/util/copy.hpp</a>&gt;</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;<a class="code" href="for__each__coordinate_8hpp.html">ggl/util/for_each_coordinate.hpp</a>&gt;</span>
+<a name="l00030"></a>00030
+<a name="l00031"></a>00031
+<a name="l00068"></a>00068 <span class="keyword">namespace </span>ggl
+<a name="l00069"></a>00069 {
+<a name="l00070"></a>00070
+<a name="l00071"></a><a class="code" href="classggl_1_1centroid__exception.html">00071</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="l00072"></a>00072 {
+<a name="l00073"></a>00073 <span class="keyword">public</span>:
+<a name="l00074"></a>00074
+<a name="l00075"></a><a class="code" href="classggl_1_1centroid__exception.html#60598437eea82fd35bffdbcac8d4b839">00075</a> <span class="keyword">inline</span> <a class="code" href="classggl_1_1centroid__exception.html#60598437eea82fd35bffdbcac8d4b839">centroid_exception</a>() {}
+<a name="l00076"></a>00076
+<a name="l00077"></a><a class="code" href="classggl_1_1centroid__exception.html#bff3b7df94389d48e50390a95dbbde7f">00077</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="l00078"></a>00078 {
+<a name="l00079"></a>00079 <span class="keywordflow">return</span> <span class="stringliteral">"GGL Centroid calculation exception"</span>;
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081 };
+<a name="l00082"></a>00082
+<a name="l00083"></a>00083 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00084"></a>00084 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a> {
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>Centro<span class="keywordtype">id</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00087"></a>00087 <span class="keyword">struct </span>centroid_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(Point <span class="keyword">const</span>&amp; point, PointCentroid&amp; <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>,
+<a name="l00090"></a>00090 Strategy <span class="keyword">const</span>&amp;)
+<a name="l00091"></a>00091 {
+<a name="l00092"></a>00092 <a class="code" href="namespaceggl.html#f8cee6dd577bebfd1dbbe4cc503304d4" title="Copies coordinates from source to destination point.">copy_coordinates</a>(point, centroid);
+<a name="l00093"></a>00093 }
+<a name="l00094"></a>00094 };
+<a name="l00095"></a>00095
+<a name="l00096"></a>00096 <span class="keyword">template</span>
+<a name="l00097"></a>00097 &lt;
+<a name="l00098"></a>00098 <span class="keyword">typename</span> Box,
+<a name="l00099"></a>00099 <span class="keyword">typename</span> Point,
+<a name="l00100"></a>00100 std::size_t Dimension,
+<a name="l00101"></a>00101 std::size_t DimensionCount
+<a name="l00102"></a>00102 &gt;
+<a name="l00103"></a>00103 <span class="keyword">struct </span>centroid_box_calculator
+<a name="l00104"></a>00104 {
+<a name="l00105"></a>00105 <span class="keyword">typedef</span> <span class="keyword">typename</span> select_coordinate_type
+<a name="l00106"></a>00106 &lt;
+<a name="l00107"></a>00107 Box, Point
+<a name="l00108"></a>00108 &gt;::type coordinate_type;
+<a name="l00109"></a>00109 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box <span class="keyword">const</span>&amp; box, Point&amp; <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>)
+<a name="l00110"></a>00110 {
+<a name="l00111"></a>00111 coordinate_type <span class="keyword">const</span> c1 = get&lt;min_corner, Dimension&gt;(box);
+<a name="l00112"></a>00112 coordinate_type <span class="keyword">const</span> c2 = get&lt;max_corner, Dimension&gt;(box);
+<a name="l00113"></a>00113 coordinate_type m = c1 + c2;
+<a name="l00114"></a>00114 m /= 2.0;
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116 set&lt;Dimension&gt;(centroid, m);
+<a name="l00117"></a>00117
+<a name="l00118"></a>00118 centroid_box_calculator
+<a name="l00119"></a>00119 &lt;
+<a name="l00120"></a>00120 Box, Point,
+<a name="l00121"></a>00121 Dimension + 1, DimensionCount
+<a name="l00122"></a>00122 &gt;::apply(box, centroid);
+<a name="l00123"></a>00123 }
+<a name="l00124"></a>00124 };
+<a name="l00125"></a>00125
+<a name="l00126"></a>00126 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00127"></a>00127 <span class="keyword">struct </span>centroid_box_calculator&lt;Box, Point, DimensionCount, DimensionCount&gt;
+<a name="l00128"></a>00128 {
+<a name="l00129"></a>00129 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box <span class="keyword">const</span>&amp; , Point&amp; )
+<a name="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="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="l00135"></a>00135 <span class="keyword">struct </span>centroid_box
+<a name="l00136"></a>00136 {
+<a name="l00137"></a>00137 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box <span class="keyword">const</span>&amp; box, Point&amp; <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>,
+<a name="l00138"></a>00138 Strategy <span class="keyword">const</span>&amp;)
+<a name="l00139"></a>00139 {
+<a name="l00140"></a>00140 centroid_box_calculator
+<a name="l00141"></a>00141 &lt;
+<a name="l00142"></a>00142 Box, Point,
+<a name="l00143"></a>00143 0, <a class="code" href="classcore__dispatch_1_1dimension.html">dimension&lt;Box&gt;::type::value</a>
+<a name="l00144"></a>00144 &gt;::apply(box, centroid);
+<a name="l00145"></a>00145 }
+<a name="l00146"></a>00146 };
+<a name="l00147"></a>00147
+<a name="l00148"></a>00148 <span class="comment">// There is one thing where centroid is different from e.g. within.</span>
+<a name="l00149"></a>00149 <span class="comment">// If the ring has only one point, it might make sense that</span>
+<a name="l00150"></a>00150 <span class="comment">// that point is the centroid.</span>
+<a name="l00151"></a>00151 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Range&gt;
+<a name="l00152"></a>00152 <span class="keyword">inline</span> <span class="keywordtype">bool</span> range_ok(Range <span class="keyword">const</span>&amp; range, Point&amp; <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>)
+<a name="l00153"></a>00153 {
+<a name="l00154"></a>00154 std::size_t <span class="keyword">const</span> n = boost::size(range);
+<a name="l00155"></a>00155 <span class="keywordflow">if</span> (n &gt; 1)
+<a name="l00156"></a>00156 {
+<a name="l00157"></a>00157 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00158"></a>00158 }
+<a name="l00159"></a>00159 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n &lt;= 0)
+<a name="l00160"></a>00160 {
+<a name="l00161"></a>00161 <span class="preprocessor">#if defined(CENTROID_WITH_CATCH)</span>
+<a name="l00162"></a>00162 <span class="preprocessor"></span> <span class="keywordflow">throw</span> centroid_exception();
+<a name="l00163"></a>00163 <span class="preprocessor">#endif</span>
+<a name="l00164"></a>00164 <span class="preprocessor"></span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00165"></a>00165 }
+<a name="l00166"></a>00166 <span class="keywordflow">else</span> <span class="comment">// if (n == 1)</span>
+<a name="l00167"></a>00167 {
+<a name="l00168"></a>00168 <span class="comment">// Take over the first point in a "coordinate neutral way"</span>
+<a name="l00169"></a>00169 <a class="code" href="namespaceggl.html#f8cee6dd577bebfd1dbbe4cc503304d4" title="Copies coordinates from source to destination point.">copy_coordinates</a>(range.front(), centroid);
+<a name="l00170"></a>00170 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00171"></a>00171 }
+<a name="l00172"></a>00172 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00173"></a>00173 }
+<a name="l00174"></a>00174
+<a name="l00175"></a>00175
+<a name="l00179"></a>00179 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00180"></a>00180 <span class="keyword">struct </span>centroid_ring_state
+<a name="l00181"></a>00181 {
+<a name="l00182"></a>00182 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Ring <span class="keyword">const</span>&amp; ring,
+<a name="l00183"></a>00183 Strategy <span class="keyword">const</span>&amp; strategy, <span class="keyword">typename</span> Strategy::state_type&amp; state)
+<a name="l00184"></a>00184 {
+<a name="l00185"></a>00185 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator&lt;Ring&gt;::type iterator_type;
+<a name="l00186"></a>00186 iterator_type it = boost::begin(ring);
+<a name="l00187"></a>00187 <span class="keywordflow">for</span> (iterator_type previous = it++;
+<a name="l00188"></a>00188 it != boost::end(ring);
+<a name="l00189"></a>00189 previous = it++)
+<a name="l00190"></a>00190 {
+<a name="l00191"></a>00191 Strategy::apply(*previous, *it, state);
+<a name="l00192"></a>00192 }
+<a name="l00193"></a>00193
+<a name="l00194"></a>00194 <span class="comment">/* using segment_iterator: nice, well looking, but much slower...</span>
+<a name="l00195"></a>00195 <span class="comment"> normal iterator: 0.156 s</span>
+<a name="l00196"></a>00196 <span class="comment"> segment iterator: 1.985 s...</span>
+<a name="l00197"></a>00197 <span class="comment"> typedef segment_iterator</span>
+<a name="l00198"></a>00198 <span class="comment"> &lt;</span>
+<a name="l00199"></a>00199 <span class="comment"> typename boost::range_const_iterator&lt;Ring&gt;::type,</span>
+<a name="l00200"></a>00200 <span class="comment"> typename point_type&lt;Ring&gt;::type</span>
+<a name="l00201"></a>00201 <span class="comment"> &gt; iterator_type;</span>
+<a name="l00202"></a>00202 <span class="comment"></span>
+<a name="l00203"></a>00203 <span class="comment"> iterator_type it(boost::begin(ring), boost::end(ring));</span>
+<a name="l00204"></a>00204 <span class="comment"> iterator_type end(boost::end(ring));</span>
+<a name="l00205"></a>00205 <span class="comment"> for(; it != end; ++it)</span>
+<a name="l00206"></a>00206 <span class="comment"> {</span>
+<a name="l00207"></a>00207 <span class="comment"> Strategy::apply(it-&gt;first, it-&gt;second, state);</span>
+<a name="l00208"></a>00208 <span class="comment"> }</span>
+<a name="l00209"></a>00209 <span class="comment"> */</span>
+<a name="l00210"></a>00210 }
+<a name="l00211"></a>00211 };
+<a name="l00212"></a>00212
+<a name="l00213"></a>00213 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00214"></a>00214 <span class="keyword">struct </span>centroid_ring
+<a name="l00215"></a>00215 {
+<a name="l00216"></a>00216 <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; centroid,
+<a name="l00217"></a>00217 Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00218"></a>00218 {
+<a name="l00219"></a>00219 <span class="keywordflow">if</span> (range_ok(ring, centroid))
+<a name="l00220"></a>00220 {
+<a name="l00221"></a>00221 <span class="keyword">typename</span> Strategy::state_type state;
+<a name="l00222"></a>00222 centroid_ring_state
+<a name="l00223"></a>00223 &lt;
+<a name="l00224"></a>00224 Ring,
+<a name="l00225"></a>00225 Strategy
+<a name="l00226"></a>00226 &gt;::apply(ring, strategy, state);
+<a name="l00227"></a>00227 Strategy::result(state, centroid);
+<a name="l00228"></a>00228 }
+<a name="l00229"></a>00229 }
+<a name="l00230"></a>00230 };
+<a name="l00231"></a>00231
+<a name="l00235"></a>00235 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00236"></a>00236 <span class="keyword">struct </span>centroid_linestring
+<a name="l00237"></a>00237 {
+<a name="l00238"></a>00238 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Linestring <span class="keyword">const</span>&amp; line, Point&amp; centroid,
+<a name="l00239"></a>00239 Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00240"></a>00240 {
+<a name="l00241"></a>00241 <span class="comment">// First version, should</span>
+<a name="l00242"></a>00242 <span class="comment">// - be moved to a strategy</span>
+<a name="l00243"></a>00243 <span class="comment">// - be made dim-agnostic</span>
+<a name="l00244"></a>00244
+<a name="l00245"></a>00245 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;Linestring&gt;::type point_type;
+<a name="l00246"></a>00246 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator&lt;Linestring&gt;::type point_iterator_type;
+<a name="l00247"></a>00247 <span class="keyword">typedef</span> segment_iterator&lt;point_iterator_type, point_type&gt; segment_iterator;
+<a name="l00248"></a>00248
+<a name="l00249"></a>00249 <span class="keywordtype">double</span> <a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a> = double();
+<a name="l00250"></a>00250 std::pair&lt;double, double&gt; average_sum;
+<a name="l00251"></a>00251
+<a name="l00252"></a>00252 segment_iterator it(boost::begin(line), boost::end(line));
+<a name="l00253"></a>00253 segment_iterator end(boost::end(line));
+<a name="l00254"></a>00254 <span class="keywordflow">while</span> (it != end)
+<a name="l00255"></a>00255 {
+<a name="l00256"></a>00256 <span class="keywordtype">double</span> <span class="keyword">const</span> d = <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">ggl::distance</a>(it-&gt;first, it-&gt;second);
+<a name="l00257"></a>00257 length += d;
+<a name="l00258"></a>00258
+<a name="l00259"></a>00259 <span class="keywordtype">double</span> <span class="keyword">const</span> mx = (get&lt;0&gt;(it-&gt;first) + get&lt;0&gt;(it-&gt;second)) / 2;
+<a name="l00260"></a>00260 <span class="keywordtype">double</span> <span class="keyword">const</span> my = (get&lt;1&gt;(it-&gt;first) + get&lt;1&gt;(it-&gt;second)) / 2;
+<a name="l00261"></a>00261 average_sum.first += d * mx;
+<a name="l00262"></a>00262 average_sum.second += d * my;
+<a name="l00263"></a>00263 ++it;
+<a name="l00264"></a>00264 }
+<a name="l00265"></a>00265
+<a name="l00266"></a>00266 set&lt;0&gt;(centroid, average_sum.first / length );
+<a name="l00267"></a>00267 set&lt;1&gt;(centroid, average_sum.second / length );
+<a name="l00268"></a>00268 }
+<a name="l00269"></a>00269 };
+<a name="l00270"></a>00270
+<a name="l00276"></a>00276 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00277"></a>00277 <span class="keyword">struct </span>centroid_polygon_state
+<a name="l00278"></a>00278 {
+<a name="l00279"></a>00279 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Polygon <span class="keyword">const</span>&amp; poly,
+<a name="l00280"></a>00280 Strategy <span class="keyword">const</span>&amp; strategy, <span class="keyword">typename</span> Strategy::state_type&amp; state)
+<a name="l00281"></a>00281 {
+<a name="l00282"></a>00282 <span class="keyword">typedef</span> centroid_ring_state
+<a name="l00283"></a>00283 &lt;
+<a name="l00284"></a>00284 <span class="keyword">typename</span> ring_type&lt;Polygon&gt;::type,
+<a name="l00285"></a>00285 Strategy
+<a name="l00286"></a>00286 &gt; per_ring;
+<a name="l00287"></a>00287
+<a name="l00288"></a>00288 per_ring::apply(<a class="code" href="group__access.html#g4dd59c8603683e869f1d74bd40045b8b" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), strategy, state);
+<a name="l00289"></a>00289
+<a name="l00290"></a>00290 <span class="keywordflow">for</span> (<span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00291"></a>00291 &lt;
+<a name="l00292"></a>00292 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type
+<a name="l00293"></a>00293 &gt;::type it = boost::begin(<a class="code" href="group__access.html#gaee58ea9a166a2ca07597daf34433d7f" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00294"></a>00294 it != boost::end(<a class="code" href="group__access.html#gaee58ea9a166a2ca07597daf34433d7f" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00295"></a>00295 ++it)
+<a name="l00296"></a>00296 {
+<a name="l00297"></a>00297 per_ring::apply(*it, strategy, state);
+<a name="l00298"></a>00298 }
+<a name="l00299"></a>00299 }
+<a name="l00300"></a>00300 };
+<a name="l00301"></a>00301
+<a name="l00302"></a>00302 <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="l00303"></a>00303 <span class="keyword">struct </span>centroid_polygon
+<a name="l00304"></a>00304 {
+<a name="l00305"></a>00305 <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; centroid,
+<a name="l00306"></a>00306 Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00307"></a>00307 {
+<a name="l00308"></a>00308 <span class="keywordflow">if</span> (range_ok(<a class="code" href="group__access.html#g4dd59c8603683e869f1d74bd40045b8b" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), centroid))
+<a name="l00309"></a>00309 {
+<a name="l00310"></a>00310 <span class="keyword">typename</span> Strategy::state_type state;
+<a name="l00311"></a>00311 centroid_polygon_state
+<a name="l00312"></a>00312 &lt;
+<a name="l00313"></a>00313 Polygon,
+<a name="l00314"></a>00314 Strategy
+<a name="l00315"></a>00315 &gt;::apply(poly, strategy, state);
+<a name="l00316"></a>00316 Strategy::result(state, centroid);
+<a name="l00317"></a>00317 }
+<a name="l00318"></a>00318 }
+<a name="l00319"></a>00319 };
+<a name="l00320"></a>00320
+<a name="l00321"></a>00321
+<a name="l00322"></a>00322 }} <span class="comment">// namespace detail::centroid</span>
+<a name="l00323"></a>00323 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00324"></a>00324 <span class="preprocessor"></span>
+<a name="l00325"></a>00325
+<a name="l00326"></a>00326 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00327"></a>00327 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00328"></a>00328 {
+<a name="l00329"></a>00329
+<a name="l00330"></a>00330 <span class="keyword">template</span>
+<a name="l00331"></a>00331 &lt;
+<a name="l00332"></a>00332 <span class="keyword">typename</span> Tag,
+<a name="l00333"></a>00333 <span class="keyword">typename</span> Geometry,
+<a name="l00334"></a>00334 <span class="keyword">typename</span> Point,
+<a name="l00335"></a>00335 <span class="keyword">typename</span> Strategy
+<a name="l00336"></a>00336 &gt;
+<a name="l00337"></a>00337 <span class="keyword">struct </span>centroid {};
+<a name="l00338"></a>00338
+<a name="l00339"></a>00339 <span class="keyword">template</span>
+<a name="l00340"></a>00340 &lt;
+<a name="l00341"></a>00341 <span class="keyword">typename</span> Geometry,
+<a name="l00342"></a>00342 <span class="keyword">typename</span> Point,
+<a name="l00343"></a>00343 <span class="keyword">typename</span> Strategy
+<a name="l00344"></a>00344 &gt;
+<a name="l00345"></a>00345 <span class="keyword">struct </span>centroid&lt;point_tag, Geometry, Point, Strategy&gt;
+<a name="l00346"></a>00346 : detail::centroid::centroid_point&lt;Geometry, Point, Strategy&gt;
+<a name="l00347"></a>00347 {};
+<a name="l00348"></a>00348
+<a name="l00349"></a>00349 <span class="keyword">template</span>
+<a name="l00350"></a>00350 &lt;
+<a name="l00351"></a>00351 <span class="keyword">typename</span> Box,
+<a name="l00352"></a>00352 <span class="keyword">typename</span> Point,
+<a name="l00353"></a>00353 <span class="keyword">typename</span> Strategy
+<a name="l00354"></a>00354 &gt;
+<a name="l00355"></a>00355 <span class="keyword">struct </span>centroid&lt;box_tag, Box, Point, Strategy&gt;
+<a name="l00356"></a>00356 : detail::centroid::centroid_box&lt;Box, Point, Strategy&gt;
+<a name="l00357"></a>00357 {};
+<a name="l00358"></a>00358
+<a name="l00359"></a>00359 <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="l00360"></a>00360 <span class="keyword">struct </span>centroid&lt;ring_tag, Ring, Point, Strategy&gt;
+<a name="l00361"></a>00361 : detail::centroid::centroid_ring&lt;Ring, Point, Strategy&gt;
+<a name="l00362"></a>00362 {};
+<a name="l00363"></a>00363
+<a name="l00364"></a>00364 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00365"></a>00365 <span class="keyword">struct </span>centroid&lt;linestring_tag, Linestring, Point, Strategy&gt;
+<a name="l00366"></a>00366 : detail::centroid::centroid_linestring&lt;Linestring, Point, Strategy&gt;
+<a name="l00367"></a>00367 {};
+<a name="l00368"></a>00368
+<a name="l00369"></a>00369 <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="l00370"></a>00370 <span class="keyword">struct </span>centroid&lt;polygon_tag, Polygon, Point, Strategy&gt;
+<a name="l00371"></a>00371 : detail::centroid::centroid_polygon&lt;Polygon, Point, Strategy&gt;
+<a name="l00372"></a>00372 {};
+<a name="l00373"></a>00373
+<a name="l00374"></a>00374 } <span class="comment">// namespace dispatch</span>
+<a name="l00375"></a>00375 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00376"></a>00376 <span class="preprocessor"></span>
+<a name="l00377"></a>00377
+<a name="l00385"></a>00385 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00386"></a><a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2">00386</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>(Geometry <span class="keyword">const</span>&amp; geometry, Point&amp; c,
+<a name="l00387"></a>00387 Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00388"></a>00388 {
+<a name="l00389"></a>00389 <span class="comment">//BOOST_CONCEPT_ASSERT( (ggl::concept::CentroidStrategy&lt;Strategy&gt;) );</span>
+<a name="l00390"></a>00390
+<a name="l00391"></a>00391 concept::check_concepts_and_equal_dimensions&lt;Point, const Geometry&gt;();
+<a name="l00392"></a>00392
+<a name="l00393"></a>00393 <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> point_type;
+<a name="l00394"></a>00394
+<a name="l00395"></a>00395 <span class="comment">// Call dispatch apply method. That one returns true if centroid</span>
+<a name="l00396"></a>00396 <span class="comment">// should be taken from state.</span>
+<a name="l00397"></a>00397 <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">dispatch::centroid</a>
+<a name="l00398"></a>00398 &lt;
+<a name="l00399"></a>00399 <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="l00400"></a>00400 Geometry,
+<a name="l00401"></a>00401 Point,
+<a name="l00402"></a>00402 Strategy
+<a name="l00403"></a>00403 &gt;::apply(geometry, c, strategy);
+<a name="l00404"></a>00404 }
+<a name="l00405"></a>00405
+<a name="l00406"></a>00406
+<a name="l00413"></a>00413 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>&gt;
+<a name="l00414"></a><a class="code" href="group__centroid.html#gc7e9651663cd19868cae40c20c72afdc">00414</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>(Geometry <span class="keyword">const</span>&amp; geometry, Point&amp; c)
+<a name="l00415"></a>00415 {
+<a name="l00416"></a>00416 concept::check_concepts_and_equal_dimensions&lt;Point, const Geometry&gt;();
+<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_1strategy__centroid.html" title="Traits class binding a centroid calculation strategy to a coordinate system.">strategy_centroid</a>
+<a name="l00419"></a>00419 &lt;
+<a name="l00420"></a>00420 <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;Geometry&gt;::type</a>,
+<a name="l00421"></a>00421 <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="l00422"></a>00422 <a class="code" href="structggl_1_1dimension.html" title="Meta-function which defines coordinate dimensions, i.e. the number of axes of any...">dimension&lt;Geometry&gt;::type::value</a>,
+<a name="l00423"></a>00423 Point,
+<a name="l00424"></a>00424 Geometry
+<a name="l00425"></a>00425 &gt;::type strategy_type;
+<a name="l00426"></a>00426
+<a name="l00427"></a>00427 <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>(geometry, c, strategy_type());
+<a name="l00428"></a>00428 }
+<a name="l00429"></a>00429
+<a name="l00430"></a>00430
+<a name="l00437"></a>00437 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00438"></a><a class="code" href="group__centroid.html#ga7146045002e56e5471f8da7dd30609c">00438</a> <span class="keyword">inline</span> Point <a class="code" href="group__centroid.html#ga7146045002e56e5471f8da7dd30609c" title="Calculate and return centroid.">make_centroid</a>(Geometry <span class="keyword">const</span>&amp; geometry)
+<a name="l00439"></a>00439 {
+<a name="l00440"></a>00440 concept::check_concepts_and_equal_dimensions&lt;Point, const Geometry&gt;();
+<a name="l00441"></a>00441
+<a name="l00442"></a>00442 Point c;
+<a name="l00443"></a>00443 <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>(geometry, c);
+<a name="l00444"></a>00444 <span class="keywordflow">return</span> c;
+<a name="l00445"></a>00445 }
+<a name="l00446"></a>00446
+<a name="l00454"></a>00454 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00455"></a><a class="code" href="group__centroid.html#gb077a07483ee2fdd17d66e63b237aaa6">00455</a> <span class="keyword">inline</span> Point <a class="code" href="group__centroid.html#ga7146045002e56e5471f8da7dd30609c" title="Calculate and return centroid.">make_centroid</a>(Geometry <span class="keyword">const</span>&amp; geometry, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00456"></a>00456 {
+<a name="l00457"></a>00457 <span class="comment">//BOOST_CONCEPT_ASSERT( (ggl::concept::CentroidStrategy&lt;Strategy&gt;) );</span>
+<a name="l00458"></a>00458
+<a name="l00459"></a>00459 concept::check_concepts_and_equal_dimensions&lt;Point, const Geometry&gt;();
+<a name="l00460"></a>00460
+<a name="l00461"></a>00461 Point c;
+<a name="l00462"></a>00462 <a class="code" href="group__centroid.html#gba3c6357cc1112519a4909cdbb4733e2" title="Calculate centroid using a specified strategy.">centroid</a>(geometry, c, strategy);
+<a name="l00463"></a>00463 <span class="keywordflow">return</span> c;
+<a name="l00464"></a>00464 }
+<a name="l00465"></a>00465
+<a name="l00466"></a>00466 } <span class="comment">// namespace ggl</span>
+<a name="l00467"></a>00467
+<a name="l00468"></a>00468 <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>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,89 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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 Geometry1 , typename Geometry2 &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7">ggl::convex_hull</a> (Geometry1 const &amp;geometry, Geometry2 &amp;out)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the convex hull of a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry1 , typename Geometry2 , typename Strategy &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceggl.html#f0167b50b6c00d851aa7ef49cbd938b2">ggl::convex_hull</a> (Geometry1 const &amp;geometry, Geometry2 &amp;out, Strategy const &amp;strategy)</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#g33e400e40f14217ab0239d33fa6def72">ggl::convex_hull_inserter</a> (Geometry const &amp;geometry, OutputIterator out)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the convex hull of a geometry, output-iterator version. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , typename OutputIterator , typename Strategy &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">OutputIterator&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceggl.html#0a67d55bd204163377ee3634fe834e53">ggl::convex_hull_inserter</a> (Geometry const &amp;geometry, OutputIterator out, Strategy const &amp;strategy)</td></tr>
+
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp_source.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,279 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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/type_traits/remove_const.hpp&gt;</span>
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;<a class="code" href="core_2is__multi_8hpp.html">ggl/core/is_multi.hpp</a>&gt;</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="point__order_8hpp.html">ggl/core/point_order.hpp</a>&gt;</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="geometries_2concepts_2check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="iterators_2range__type_8hpp.html">ggl/iterators/range_type.hpp</a>&gt;</span>
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="strategies_2convex__hull_8hpp.html">ggl/strategies/convex_hull.hpp</a>&gt;</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="convex__hull__concept_8hpp.html">ggl/strategies/concepts/convex_hull_concept.hpp</a>&gt;</span>
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;<a class="code" href="as__range_8hpp.html">ggl/util/as_range.hpp</a>&gt;</span>
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029
+<a name="l00073"></a>00073 <span class="keyword">namespace </span>ggl {
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00076"></a>00076 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="namespaceggl.html#f0167b50b6c00d851aa7ef49cbd938b2">convex_hull</a> {
+<a name="l00077"></a>00077
+<a name="l00078"></a>00078 <span class="keyword">template</span>
+<a name="l00079"></a>00079 &lt;
+<a name="l00080"></a>00080 <span class="keyword">typename</span> Geometry,
+<a name="l00081"></a>00081 <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d">order_selector</a> Order,
+<a name="l00082"></a>00082 <span class="keyword">typename</span> Strategy
+<a name="l00083"></a>00083 &gt;
+<a name="l00084"></a>00084 <span class="keyword">struct </span>hull_inserter
+<a name="l00085"></a>00085 {
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 <span class="comment">// Member template function, to avoid inconvenient declaration</span>
+<a name="l00088"></a>00088 <span class="comment">// of output-iterator-type, from hull_to_geometry</span>
+<a name="l00089"></a>00089 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00090"></a>00090 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Geometry <span class="keyword">const</span>&amp; geometry,
+<a name="l00091"></a>00091 OutputIterator out, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00092"></a>00092 {
+<a name="l00093"></a>00093 <span class="keyword">typename</span> Strategy::state_type state;
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095 strategy.apply(geometry, state);
+<a name="l00096"></a>00096 strategy.result(state, out, Order == <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d55fe53c1821ca13eb0eacb9084cb1d1c">clockwise</a>);
+<a name="l00097"></a>00097 <span class="keywordflow">return</span> out;
+<a name="l00098"></a>00098 }
+<a name="l00099"></a>00099 };
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <span class="keyword">template</span>
+<a name="l00102"></a>00102 &lt;
+<a name="l00103"></a>00103 <span class="keyword">typename</span> Geometry,
+<a name="l00104"></a>00104 <span class="keyword">typename</span> OutputGeometry,
+<a name="l00105"></a>00105 <span class="keyword">typename</span> Strategy
+<a name="l00106"></a>00106 &gt;
+<a name="l00107"></a>00107 <span class="keyword">struct </span>hull_to_geometry
+<a name="l00108"></a>00108 {
+<a name="l00109"></a>00109 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Geometry <span class="keyword">const</span>&amp; geometry, OutputGeometry&amp; out,
+<a name="l00110"></a>00110 Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00111"></a>00111 {
+<a name="l00112"></a>00112 hull_inserter
+<a name="l00113"></a>00113 &lt;
+<a name="l00114"></a>00114 Geometry,
+<a name="l00115"></a>00115 <a class="code" href="structggl_1_1point__order.html" title="Meta-function which defines point type of any geometry.">ggl::point_order&lt;OutputGeometry&gt;::value</a>,
+<a name="l00116"></a>00116 Strategy
+<a name="l00117"></a>00117 &gt;::apply(geometry,
+<a name="l00118"></a>00118 std::back_inserter(
+<a name="l00119"></a>00119 <span class="comment">// Handle both ring and polygon the same:</span>
+<a name="l00120"></a>00120 <a class="code" href="group__utility.html#g99e0a8eac282cd44fbdb1a47666ea084" title="Function getting either the range (ring, linestring) itself or the outer ring (polygon)...">ggl::as_range</a>
+<a name="l00121"></a>00121 &lt;
+<a name="l00122"></a>00122 <span class="keyword">typename</span> <a class="code" href="structggl_1_1range__type.html" title="Meta-function defining a type which is a boost-range.">ggl::range_type&lt;OutputGeometry&gt;::type</a>
+<a name="l00123"></a>00123 &gt;(out)), strategy);
+<a name="l00124"></a>00124 }
+<a name="l00125"></a>00125 };
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127
+<a name="l00128"></a>00128 }} <span class="comment">// namespace detail::convex_hull</span>
+<a name="l00129"></a>00129 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00130"></a>00130 <span class="preprocessor"></span>
+<a name="l00131"></a>00131
+<a name="l00132"></a>00132 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00133"></a>00133 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00134"></a>00134 {
+<a name="l00135"></a>00135
+<a name="l00136"></a>00136
+<a name="l00137"></a>00137 <span class="keyword">template</span>
+<a name="l00138"></a>00138 &lt;
+<a name="l00139"></a>00139 <span class="keyword">typename</span> Tag1,
+<a name="l00140"></a>00140 <span class="keywordtype">bool</span> IsMulti,
+<a name="l00141"></a>00141 <span class="keyword">typename</span> Geometry,
+<a name="l00142"></a>00142 <span class="keyword">typename</span> Output,
+<a name="l00143"></a>00143 <span class="keyword">typename</span> Strategy
+<a name="l00144"></a>00144 &gt;
+<a name="l00145"></a>00145 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#f0167b50b6c00d851aa7ef49cbd938b2">convex_hull</a>
+<a name="l00146"></a>00146 : detail::<a class="code" href="namespaceggl.html#f0167b50b6c00d851aa7ef49cbd938b2">convex_hull</a>::hull_to_geometry&lt;Geometry, Output, Strategy&gt;
+<a name="l00147"></a>00147 {};
+<a name="l00148"></a>00148
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 <span class="keyword">template</span>
+<a name="l00151"></a>00151 &lt;
+<a name="l00152"></a>00152 <span class="keyword">typename</span> GeometryTag,
+<a name="l00153"></a>00153 <a class="code" href="namespaceggl.html#9a0f9a02ea40ca3ceab32afc4b08bf4d">order_selector</a> Order,
+<a name="l00154"></a>00154 <span class="keywordtype">bool</span> IsMulti,
+<a name="l00155"></a>00155 <span class="keyword">typename</span> GeometryIn, <span class="keyword">typename</span> Strategy
+<a name="l00156"></a>00156 &gt;
+<a name="l00157"></a>00157 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#0a67d55bd204163377ee3634fe834e53">convex_hull_inserter</a>
+<a name="l00158"></a>00158 : detail::<a class="code" href="namespaceggl.html#f0167b50b6c00d851aa7ef49cbd938b2">convex_hull</a>::hull_inserter&lt;GeometryIn, Order, Strategy&gt;
+<a name="l00159"></a>00159 {};
+<a name="l00160"></a>00160
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 } <span class="comment">// namespace dispatch</span>
+<a name="l00163"></a>00163 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00164"></a>00164 <span class="preprocessor"></span>
+<a name="l00165"></a>00165
+<a name="l00166"></a>00166 <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="l00167"></a><a class="code" href="namespaceggl.html#f0167b50b6c00d851aa7ef49cbd938b2">00167</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceggl.html#f0167b50b6c00d851aa7ef49cbd938b2">convex_hull</a>(Geometry1 <span class="keyword">const</span>&amp; geometry,
+<a name="l00168"></a>00168 Geometry2&amp; out, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00169"></a>00169 {
+<a name="l00170"></a>00170 <a class="code" href="group__concepts.html#g3913efc5e63c4c6d355cda06a3422470" title="Checks, in compile-time, the concept of two geometries, and if they have equal dimensions...">concept::check_concepts_and_equal_dimensions</a>
+<a name="l00171"></a>00171 &lt;
+<a name="l00172"></a>00172 <span class="keyword">const</span> Geometry1,
+<a name="l00173"></a>00173 Geometry2
+<a name="l00174"></a>00174 &gt;();
+<a name="l00175"></a>00175
+<a name="l00176"></a>00176 BOOST_CONCEPT_ASSERT( (<a class="code" href="classggl_1_1concept_1_1_convex_hull_strategy.html" title="Checks strategy for convex_hull.">ggl::concept::ConvexHullStrategy&lt;Strategy&gt;</a>) );
+<a name="l00177"></a>00177
+<a name="l00178"></a>00178
+<a name="l00179"></a>00179 <a class="code" href="namespaceggl.html#f0167b50b6c00d851aa7ef49cbd938b2">dispatch::convex_hull</a>
+<a name="l00180"></a>00180 &lt;
+<a name="l00181"></a>00181 <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="l00182"></a>00182 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &amp;quot;true&amp;quot; for multi geometries (multi_point, etc).">is_multi&lt;Geometry1&gt;::type::value</a>,
+<a name="l00183"></a>00183 Geometry1,
+<a name="l00184"></a>00184 Geometry2,
+<a name="l00185"></a>00185 Strategy
+<a name="l00186"></a>00186 &gt;::apply(geometry, out, strategy);
+<a name="l00187"></a>00187 }
+<a name="l00188"></a>00188
+<a name="l00189"></a>00189
+<a name="l00198"></a>00198 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry1, <span class="keyword">typename</span> Geometry2&gt;
+<a name="l00199"></a><a class="code" href="group__convex__hull.html#g2adc5b825bd5feadc7a723c040c36cb7">00199</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceggl.html#f0167b50b6c00d851aa7ef49cbd938b2">convex_hull</a>(Geometry1 <span class="keyword">const</span>&amp; geometry,
+<a name="l00200"></a>00200 Geometry2&amp; out)
+<a name="l00201"></a>00201 {
+<a name="l00202"></a>00202 <a class="code" href="group__concepts.html#g3913efc5e63c4c6d355cda06a3422470" title="Checks, in compile-time, the concept of two geometries, and if they have equal dimensions...">concept::check_concepts_and_equal_dimensions</a>
+<a name="l00203"></a>00203 &lt;
+<a name="l00204"></a>00204 <span class="keyword">const</span> Geometry1,
+<a name="l00205"></a>00205 Geometry2
+<a name="l00206"></a>00206 &gt;();
+<a name="l00207"></a>00207
+<a name="l00208"></a>00208 <span class="comment">//typedef typename range_type&lt;Geometry1&gt;::type range_type;</span>
+<a name="l00209"></a>00209 <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> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+<a name="l00210"></a>00210
+<a name="l00211"></a>00211 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__convex__hull.html" title="Traits class binding a convex hull calculation strategy to a coordinate system.">strategy_convex_hull</a>
+<a name="l00212"></a>00212 &lt;
+<a name="l00213"></a>00213 <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="l00214"></a>00214 Geometry1,
+<a name="l00215"></a>00215 point_type
+<a name="l00216"></a>00216 &gt;::type strategy_type;
+<a name="l00217"></a>00217
+<a name="l00218"></a>00218 <a class="code" href="namespaceggl.html#f0167b50b6c00d851aa7ef49cbd938b2">convex_hull</a>(geometry, out, strategy_type());
+<a name="l00219"></a>00219 }
+<a name="l00220"></a>00220
+<a name="l00221"></a>00221
+<a name="l00222"></a>00222 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00223"></a><a class="code" href="namespaceggl.html#0a67d55bd204163377ee3634fe834e53">00223</a> <span class="keyword">inline</span> OutputIterator <a class="code" href="namespaceggl.html#0a67d55bd204163377ee3634fe834e53">convex_hull_inserter</a>(Geometry <span class="keyword">const</span>&amp; geometry,
+<a name="l00224"></a>00224 OutputIterator out, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00225"></a>00225 {
+<a name="l00226"></a>00226 <span class="comment">// Concept: output point type = point type of input geometry</span>
+<a name="l00227"></a>00227 concept::check&lt;const Geometry&gt;();
+<a name="l00228"></a>00228 concept::check&lt;typename point_type&lt;Geometry&gt;::type&gt;();
+<a name="l00229"></a>00229
+<a name="l00230"></a>00230 BOOST_CONCEPT_ASSERT( (<a class="code" href="classggl_1_1concept_1_1_convex_hull_strategy.html" title="Checks strategy for convex_hull.">ggl::concept::ConvexHullStrategy&lt;Strategy&gt;</a>) );
+<a name="l00231"></a>00231
+<a name="l00232"></a>00232 <span class="keywordflow">return</span> <a class="code" href="namespaceggl.html#0a67d55bd204163377ee3634fe834e53">dispatch::convex_hull_inserter</a>
+<a name="l00233"></a>00233 &lt;
+<a name="l00234"></a>00234 <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="l00235"></a>00235 <a class="code" href="structggl_1_1point__order.html" title="Meta-function which defines point type of any geometry.">ggl::point_order&lt;Geometry&gt;::value</a>,
+<a name="l00236"></a>00236 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &amp;quot;true&amp;quot; for multi geometries (multi_point, etc).">is_multi&lt;Geometry&gt;::type::value</a>,
+<a name="l00237"></a>00237 Geometry, Strategy
+<a name="l00238"></a>00238 &gt;::apply(geometry, out, strategy);
+<a name="l00239"></a>00239 }
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241
+<a name="l00255"></a>00255 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00256"></a><a class="code" href="group__convex__hull.html#g33e400e40f14217ab0239d33fa6def72">00256</a> <span class="keyword">inline</span> OutputIterator <a class="code" href="namespaceggl.html#0a67d55bd204163377ee3634fe834e53">convex_hull_inserter</a>(Geometry <span class="keyword">const</span>&amp; geometry,
+<a name="l00257"></a>00257 OutputIterator out)
+<a name="l00258"></a>00258 {
+<a name="l00259"></a>00259 <span class="comment">// Concept: output point type = point type of input geometry</span>
+<a name="l00260"></a>00260 concept::check&lt;const Geometry&gt;();
+<a name="l00261"></a>00261 concept::check&lt;typename point_type&lt;Geometry&gt;::type&gt;();
+<a name="l00262"></a>00262
+<a name="l00263"></a>00263 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1range__type.html" title="Meta-function defining a type which is a boost-range.">range_type&lt;Geometry&gt;::type</a> <a class="code" href="structggl_1_1range__type.html" title="Meta-function defining a type which is a boost-range.">range_type</a>;
+<a name="l00264"></a>00264 <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="l00265"></a>00265
+<a name="l00266"></a>00266 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__convex__hull.html" title="Traits class binding a convex hull calculation strategy to a coordinate system.">strategy_convex_hull</a>
+<a name="l00267"></a>00267 &lt;
+<a name="l00268"></a>00268 <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="l00269"></a>00269 Geometry,
+<a name="l00270"></a>00270 point_type
+<a name="l00271"></a>00271 &gt;::type strategy_type;
+<a name="l00272"></a>00272
+<a name="l00273"></a>00273 <span class="keywordflow">return</span> <a class="code" href="namespaceggl.html#0a67d55bd204163377ee3634fe834e53">convex_hull_inserter</a>(geometry, out, strategy_type());
+<a name="l00274"></a>00274 }
+<a name="l00275"></a>00275
+<a name="l00276"></a>00276
+<a name="l00277"></a>00277 } <span class="comment">// namespace ggl</span>
+<a name="l00278"></a>00278
+<a name="l00279"></a>00279 <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>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,78 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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 Geometry &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">ggl::correct</a> (Geometry &amp;geometry)</td></tr>
+
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp_source.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,256 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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;cstddef&gt;</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;algorithm&gt;</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;functional&gt;</span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;boost/range/functions.hpp&gt;</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
+<a name="l00018"></a>00018
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>&gt;</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="geometries_2concepts_2check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;<a class="code" href="algorithms_2area_8hpp.html">ggl/algorithms/area.hpp</a>&gt;</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;<a class="code" href="disjoint_8hpp.html">ggl/algorithms/disjoint.hpp</a>&gt;</span>
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029
+<a name="l00030"></a>00030 <span class="keyword">namespace </span>ggl
+<a name="l00031"></a>00031 {
+<a name="l00032"></a>00032
+<a name="l00033"></a>00033 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a> {
+<a name="l00035"></a>00035
+<a name="l00036"></a>00036
+<a name="l00037"></a>00037 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00038"></a>00038 <span class="keyword">struct </span>correct_box_loop
+<a name="l00039"></a>00039 {
+<a name="l00040"></a>00040 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type&lt;Box&gt;::type coordinate_type;
+<a name="l00041"></a>00041
+<a name="l00042"></a>00042 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box&amp; box)
+<a name="l00043"></a>00043 {
+<a name="l00044"></a>00044 <span class="keywordflow">if</span> (get&lt;min_corner, Dimension&gt;(box) &gt; get&lt;max_corner, Dimension&gt;(box))
+<a name="l00045"></a>00045 {
+<a name="l00046"></a>00046 <span class="comment">// Swap the coordinates</span>
+<a name="l00047"></a>00047 coordinate_type max_value = get&lt;min_corner, Dimension&gt;(box);
+<a name="l00048"></a>00048 coordinate_type min_value = get&lt;max_corner, Dimension&gt;(box);
+<a name="l00049"></a>00049 set&lt;min_corner, Dimension&gt;(box, min_value);
+<a name="l00050"></a>00050 set&lt;max_corner, Dimension&gt;(box, max_value);
+<a name="l00051"></a>00051 }
+<a name="l00052"></a>00052
+<a name="l00053"></a>00053 correct_box_loop
+<a name="l00054"></a>00054 &lt;
+<a name="l00055"></a>00055 Box, Dimension + 1, DimensionCount
+<a name="l00056"></a>00056 &gt;::apply(box);
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058 };
+<a name="l00059"></a>00059
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061
+<a name="l00062"></a>00062 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00063"></a>00063 <span class="keyword">struct </span>correct_box_loop&lt;Box, DimensionCount, DimensionCount&gt;
+<a name="l00064"></a>00064 {
+<a name="l00065"></a>00065 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box&amp; box)
+<a name="l00066"></a>00066 {}
+<a name="l00067"></a>00067
+<a name="l00068"></a>00068 };
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071 <span class="comment">// correct an box: make min/max are correct</span>
+<a name="l00072"></a>00072 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box&gt;
+<a name="l00073"></a>00073 <span class="keyword">struct </span>correct_box
+<a name="l00074"></a>00074 {
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box&amp; box)
+<a name="l00077"></a>00077 {
+<a name="l00078"></a>00078 <span class="comment">// Currently only for Cartesian coordinates</span>
+<a name="l00079"></a>00079 <span class="comment">// TODO: adapt using strategies</span>
+<a name="l00080"></a>00080 correct_box_loop
+<a name="l00081"></a>00081 &lt;
+<a name="l00082"></a>00082 Box, 0, <a class="code" href="classcore__dispatch_1_1dimension.html">dimension&lt;Box&gt;::type::value</a>
+<a name="l00083"></a>00083 &gt;::apply(box);
+<a name="l00084"></a>00084 }
+<a name="l00085"></a>00085 };
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087
+<a name="l00088"></a>00088 <span class="comment">// close a linear_ring, if not closed</span>
+<a name="l00089"></a>00089 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Predicate&gt;
+<a name="l00090"></a>00090 <span class="keyword">struct </span>correct_ring
+<a name="l00091"></a>00091 {
+<a name="l00092"></a>00092 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;Ring&gt;::type point_type;
+<a name="l00093"></a>00093
+<a name="l00094"></a>00094 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_area
+<a name="l00095"></a>00095 &lt;
+<a name="l00096"></a>00096 <span class="keyword">typename</span> cs_tag&lt;point_type&gt;::type,
+<a name="l00097"></a>00097 point_type
+<a name="l00098"></a>00098 &gt;::type strategy_type;
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100 <span class="keyword">typedef</span> detail::area::ring_area
+<a name="l00101"></a>00101 &lt;
+<a name="l00102"></a>00102 Ring,
+<a name="l00103"></a>00103 <a class="code" href="structggl_1_1point__order.html" title="Meta-function which defines point type of any geometry.">ggl::point_order&lt;Ring&gt;::value</a>,
+<a name="l00104"></a>00104 strategy_type
+<a name="l00105"></a>00105 &gt; ring_area_type;
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Ring&amp; r)
+<a name="l00109"></a>00109 {
+<a name="l00110"></a>00110 <span class="comment">// Check close-ness</span>
+<a name="l00111"></a>00111 <span class="keywordflow">if</span> (boost::size(r) &gt; 2)
+<a name="l00112"></a>00112 {
+<a name="l00113"></a>00113 <span class="comment">// check if closed, if not, close it</span>
+<a name="l00114"></a>00114 <span class="keywordflow">if</span> (<a class="code" href="group__disjoint.html#g6d772a2eb8ad083e056bdbf0ec7ae8a1" title="Calculate if two geometries are disjoint.">ggl::disjoint</a>(r.front(), r.back()))
+<a name="l00115"></a>00115 {
+<a name="l00116"></a>00116 r.push_back(r.front());
+<a name="l00117"></a>00117 }
+<a name="l00118"></a>00118 }
+<a name="l00119"></a>00119 <span class="comment">// Check area</span>
+<a name="l00120"></a>00120 Predicate predicate;
+<a name="l00121"></a>00121 <span class="keywordflow">if</span> (predicate(ring_area_type::apply(r, strategy_type()), 0))
+<a name="l00122"></a>00122 {
+<a name="l00123"></a>00123 std::reverse(boost::begin(r), boost::end(r));
+<a name="l00124"></a>00124 }
+<a name="l00125"></a>00125 }
+<a name="l00126"></a>00126 };
+<a name="l00127"></a>00127
+<a name="l00128"></a>00128 <span class="comment">// correct a polygon: normalizes all rings, sets outer linear_ring clockwise, sets all</span>
+<a name="l00129"></a>00129 <span class="comment">// inner rings counter clockwise</span>
+<a name="l00130"></a>00130 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon&gt;
+<a name="l00131"></a>00131 <span class="keyword">struct </span>correct_polygon
+<a name="l00132"></a>00132 {
+<a name="l00133"></a>00133 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type&lt;Polygon&gt;::type ring_type;
+<a name="l00134"></a>00134
+<a name="l00135"></a>00135 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Polygon&amp; poly)
+<a name="l00136"></a>00136 {
+<a name="l00137"></a>00137 correct_ring&lt;ring_type, std::less&lt;double&gt; &gt;::apply(<a class="code" href="group__access.html#g4dd59c8603683e869f1d74bd40045b8b" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly));
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator
+<a name="l00140"></a>00140 &lt;
+<a name="l00141"></a>00141 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type
+<a name="l00142"></a>00142 &gt;::type iterator_type;
+<a name="l00143"></a>00143
+<a name="l00144"></a>00144 <span class="keywordflow">for</span> (iterator_type it = boost::begin(<a class="code" href="group__access.html#gaee58ea9a166a2ca07597daf34433d7f" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00145"></a>00145 it != boost::end(<a class="code" href="group__access.html#gaee58ea9a166a2ca07597daf34433d7f" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly)); ++it)
+<a name="l00146"></a>00146 {
+<a name="l00147"></a>00147 correct_ring&lt;ring_type, std::greater&lt;double&gt; &gt;::apply(*it);
+<a name="l00148"></a>00148 }
+<a name="l00149"></a>00149 }
+<a name="l00150"></a>00150 };
+<a name="l00151"></a>00151
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 }} <span class="comment">// namespace detail::correct</span>
+<a name="l00154"></a>00154 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00155"></a>00155 <span class="preprocessor"></span>
+<a name="l00156"></a>00156 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00157"></a>00157 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00158"></a>00158 {
+<a name="l00159"></a>00159
+<a name="l00160"></a>00160 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00161"></a>00161 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a> {};
+<a name="l00162"></a>00162
+<a name="l00163"></a>00163 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box&gt;
+<a name="l00164"></a>00164 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>&lt;box_tag, Box&gt;
+<a name="l00165"></a>00165 : detail::<a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>::correct_box&lt;Box&gt;
+<a name="l00166"></a>00166 {};
+<a name="l00167"></a>00167
+<a name="l00168"></a>00168 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ring&gt;
+<a name="l00169"></a>00169 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>&lt;ring_tag, Ring&gt;
+<a name="l00170"></a>00170 : detail::<a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>::correct_ring&lt;Ring, std::less&lt;double&gt; &gt;
+<a name="l00171"></a>00171 {};
+<a name="l00172"></a>00172
+<a name="l00173"></a>00173 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon&gt;
+<a name="l00174"></a>00174 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>&lt;polygon_tag, Polygon&gt;
+<a name="l00175"></a>00175 : detail::<a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>::correct_polygon&lt;Polygon&gt;
+<a name="l00176"></a>00176 {};
+<a name="l00177"></a>00177
+<a name="l00178"></a>00178
+<a name="l00179"></a>00179 } <span class="comment">// namespace dispatch</span>
+<a name="l00180"></a>00180 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00181"></a>00181 <span class="preprocessor"></span>
+<a name="l00182"></a>00182 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00183"></a><a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">00183</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceggl.html#f5be8c0fed6b4db5244f20aaf6e97763">correct</a>(Geometry&amp; geometry)
+<a name="l00184"></a>00184 {
+<a name="l00185"></a>00185 concept::check&lt;const Geometry&gt;();
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 dispatch::correct&lt;typename tag&lt;Geometry&gt;::type, Geometry&gt;::apply(geometry);
+<a name="l00188"></a>00188 }
+<a name="l00189"></a>00189
+<a name="l00190"></a>00190 } <span class="comment">// namespace ggl</span>
+<a name="l00191"></a>00191
+<a name="l00192"></a>00192 <span class="preprocessor">#endif // GGL_ALGORITHMS_CORRECT_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 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>
+
+<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>c:/svn/ggl/formal_review/boost/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>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp_source.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,368 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="geometries_2concepts_2check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="strategies_2distance_8hpp.html">ggl/strategies/distance.hpp</a>&gt;</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="distance__result_8hpp.html">ggl/strategies/distance_result.hpp</a>&gt;</span>
+<a name="l00026"></a>00026
+<a name="l00058"></a>00058 <span class="keyword">namespace </span>ggl
+<a name="l00059"></a>00059 {
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00062"></a>00062 <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="l00063"></a>00063
+<a name="l00064"></a>00064 <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="l00065"></a>00065 <span class="keyword">struct </span>point_to_point
+<a name="l00066"></a>00066 {
+<a name="l00067"></a>00067 <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="l00068"></a>00068 P2 <span class="keyword">const</span>&amp; p2, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00069"></a>00069 {
+<a name="l00070"></a>00070 <span class="keywordflow">return</span> strategy.apply(p1, p2);
+<a name="l00071"></a>00071 }
+<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="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Segment, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00076"></a>00076 <span class="keyword">struct </span>point_to_segment
+<a name="l00077"></a>00077 {
+<a name="l00078"></a>00078 <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="l00079"></a>00079 Segment <span class="keyword">const</span>&amp; segment, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00080"></a>00080 {
+<a name="l00081"></a>00081 <span class="keyword">typename</span> strategy_distance_segment
+<a name="l00082"></a>00082 &lt;
+<a name="l00083"></a>00083 <span class="keyword">typename</span> cs_tag&lt;Point&gt;::type,
+<a name="l00084"></a>00084 <span class="keyword">typename</span> cs_tag&lt;Segment&gt;::type,
+<a name="l00085"></a>00085 Point,
+<a name="l00086"></a>00086 <span class="keyword">typename</span> point_type&lt;Segment&gt;::type
+<a name="l00087"></a>00087 &gt;::type segment_strategy;
+<a name="l00088"></a>00088
+<a name="l00089"></a>00089 <span class="keywordflow">return</span> segment_strategy.apply(point, segment.first, segment.second);
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091 };
+<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> P, <span class="keyword">typename</span> L, <span class="keyword">typename</span> PPStrategy, <span class="keyword">typename</span> PSStrategy&gt;
+<a name="l00095"></a>00095 <span class="keyword">struct </span>point_to_linestring
+<a name="l00096"></a>00096 {
+<a name="l00097"></a>00097 <span class="keyword">typedef</span> <span class="keyword">typename</span> PPStrategy::return_type return_type;
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <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="l00100"></a>00100 PPStrategy <span class="keyword">const</span>&amp; pp_strategy, PSStrategy <span class="keyword">const</span>&amp; ps_strategy)
+<a name="l00101"></a>00101 {
+<a name="l00102"></a>00102 <span class="keyword">typedef</span> segment&lt;const typename point_type&lt;L&gt;::type&gt; segment_type;
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104 <span class="keywordflow">if</span> (boost::begin(linestring) == boost::end(linestring))
+<a name="l00105"></a>00105 {
+<a name="l00106"></a>00106 <span class="keywordflow">return</span> return_type(0);
+<a name="l00107"></a>00107 }
+<a name="l00108"></a>00108
+<a name="l00109"></a>00109 <span class="comment">// line of one point: return point square_distance</span>
+<a name="l00110"></a>00110 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator&lt;L&gt;::type iterator_type;
+<a name="l00111"></a>00111 iterator_type it = boost::begin(linestring);
+<a name="l00112"></a>00112 iterator_type prev = it++;
+<a name="l00113"></a>00113 <span class="keywordflow">if</span> (it == boost::end(linestring))
+<a name="l00114"></a>00114 {
+<a name="l00115"></a>00115 <span class="keywordflow">return</span> pp_strategy.apply(point, *boost::begin(linestring));
+<a name="l00116"></a>00116 }
+<a name="l00117"></a>00117
+<a name="l00118"></a>00118
+<a name="l00119"></a>00119 <span class="comment">// start with first segment distance</span>
+<a name="l00120"></a>00120 return_type d = ps_strategy.apply(point, *prev, *it);
+<a name="l00121"></a>00121
+<a name="l00122"></a>00122 <span class="comment">// check if other segments are closer</span>
+<a name="l00123"></a>00123 prev = it++;
+<a name="l00124"></a>00124 <span class="keywordflow">while</span>(it != boost::end(linestring))
+<a name="l00125"></a>00125 {
+<a name="l00126"></a>00126 return_type ds = ps_strategy.apply(point, *prev, *it);
+<a name="l00127"></a>00127 <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="l00128"></a>00128 {
+<a name="l00129"></a>00129 <span class="keywordflow">return</span> return_type(0);
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ds &lt; d)
+<a name="l00132"></a>00132 {
+<a name="l00133"></a>00133 d = ds;
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135 prev = it++;
+<a name="l00136"></a>00136 }
+<a name="l00137"></a>00137
+<a name="l00138"></a>00138 <span class="keywordflow">return</span> d;
+<a name="l00139"></a>00139 }
+<a name="l00140"></a>00140 };
+<a name="l00141"></a>00141
+<a name="l00142"></a>00142
+<a name="l00143"></a>00143
+<a name="l00144"></a>00144 }} <span class="comment">// namespace detail::distance</span>
+<a name="l00145"></a>00145 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00146"></a>00146 <span class="preprocessor"></span>
+<a name="l00147"></a>00147
+<a name="l00148"></a>00148 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00149"></a>00149 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00150"></a>00150 {
+<a name="l00151"></a>00151
+<a name="l00152"></a>00152 <span class="keyword">template</span>
+<a name="l00153"></a>00153 &lt;
+<a name="l00154"></a>00154 <span class="keyword">typename</span> GeometryTag1, <span class="keyword">typename</span> GeometryTag2,
+<a name="l00155"></a>00155 <span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2,
+<a name="l00156"></a>00156 <span class="keyword">typename</span> StrategyTag, <span class="keyword">typename</span> Strategy,
+<a name="l00157"></a>00157 <span class="keywordtype">bool</span> IsMulti1, <span class="keywordtype">bool</span> IsMulti2
+<a name="l00158"></a>00158 &gt;
+<a name="l00159"></a>00159 <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="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> P1, <span class="keyword">typename</span> P2, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00164"></a>00164 <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="l00165"></a>00165 &lt;
+<a name="l00166"></a>00166 point_tag, point_tag,
+<a name="l00167"></a>00167 P1, P2,
+<a name="l00168"></a>00168 strategy_tag_distance_point_point, Strategy,
+<a name="l00169"></a>00169 false, false
+<a name="l00170"></a>00170 &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="l00171"></a>00171 {};
+<a name="l00172"></a>00172
+<a name="l00174"></a>00174 <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="l00175"></a>00175 <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="l00176"></a>00176 &lt;
+<a name="l00177"></a>00177 point_tag, linestring_tag,
+<a name="l00178"></a>00178 Point, Linestring,
+<a name="l00179"></a>00179 strategy_tag_distance_point_point, Strategy,
+<a name="l00180"></a>00180 false, false
+<a name="l00181"></a>00181 &gt;
+<a name="l00182"></a>00182 {
+<a name="l00183"></a>00183
+<a name="l00184"></a>00184 <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="l00185"></a>00185 Linestring <span class="keyword">const</span>&amp; linestring,
+<a name="l00186"></a>00186 Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00187"></a>00187 {
+<a name="l00188"></a>00188 <span class="comment">//typedef segment&lt;const &gt; segment_type;</span>
+<a name="l00189"></a>00189 <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="l00190"></a>00190 &lt;
+<a name="l00191"></a>00191 <span class="keyword">typename</span> cs_tag&lt;Point&gt;::type,
+<a name="l00192"></a>00192 <span class="keyword">typename</span> cs_tag&lt;Linestring&gt;::type,
+<a name="l00193"></a>00193 Point,
+<a name="l00194"></a>00194 <span class="keyword">typename</span> point_type&lt;Linestring&gt;::type
+<a name="l00195"></a>00195 &gt;::type ps_strategy_type;
+<a name="l00196"></a>00196
+<a name="l00197"></a>00197 <span class="keywordflow">return</span> detail::distance::point_to_linestring
+<a name="l00198"></a>00198 &lt;
+<a name="l00199"></a>00199 Point, Linestring, Strategy, ps_strategy_type
+<a name="l00200"></a>00200 &gt;::apply(point, linestring, strategy, ps_strategy_type());
+<a name="l00201"></a>00201 }
+<a name="l00202"></a>00202 };
+<a name="l00203"></a>00203
+<a name="l00204"></a>00204
+<a name="l00206"></a>00206 <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="l00207"></a>00207 <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="l00208"></a>00208 &lt;
+<a name="l00209"></a>00209 point_tag, linestring_tag,
+<a name="l00210"></a>00210 Point, Linestring,
+<a name="l00211"></a>00211 strategy_tag_distance_point_segment, Strategy,
+<a name="l00212"></a>00212 false, false
+<a name="l00213"></a>00213 &gt;
+<a name="l00214"></a>00214 {
+<a name="l00215"></a>00215 <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="l00216"></a>00216 Linestring <span class="keyword">const</span>&amp; linestring,
+<a name="l00217"></a>00217 Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00218"></a>00218 {
+<a name="l00219"></a>00219 <span class="keyword">typedef</span> <span class="keyword">typename</span> Strategy::point_strategy_type pp_strategy_type;
+<a name="l00220"></a>00220 <span class="keywordflow">return</span> detail::distance::point_to_linestring
+<a name="l00221"></a>00221 &lt;
+<a name="l00222"></a>00222 Point, Linestring, pp_strategy_type, Strategy
+<a name="l00223"></a>00223 &gt;::apply(point, linestring, pp_strategy_type(), strategy);
+<a name="l00224"></a>00224 }
+<a name="l00225"></a>00225 };
+<a name="l00226"></a>00226
+<a name="l00227"></a>00227
+<a name="l00228"></a>00228 <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="l00229"></a>00229 <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="l00230"></a>00230 &lt;
+<a name="l00231"></a>00231 point_tag, segment_tag,
+<a name="l00232"></a>00232 Point, Segment,
+<a name="l00233"></a>00233 strategy_tag_distance_point_point, Strategy,
+<a name="l00234"></a>00234 false, false
+<a name="l00235"></a>00235 &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="l00236"></a>00236 {};
+<a name="l00237"></a>00237
+<a name="l00238"></a>00238
+<a name="l00239"></a>00239 <span class="comment">// Strictly spoken this might be in namespace &lt;impl&gt; again</span>
+<a name="l00240"></a>00240 <span class="keyword">template</span>
+<a name="l00241"></a>00241 &lt;
+<a name="l00242"></a>00242 <span class="keyword">typename</span> GeometryTag1, <span class="keyword">typename</span> GeometryTag2,
+<a name="l00243"></a>00243 <span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2,
+<a name="l00244"></a>00244 <span class="keyword">typename</span> StrategyTag, <span class="keyword">typename</span> Strategy,
+<a name="l00245"></a>00245 <span class="keywordtype">bool</span> IsMulti1, <span class="keywordtype">bool</span> IsMulti2
+<a name="l00246"></a>00246 &gt;
+<a name="l00247"></a>00247 <span class="keyword">struct </span>distance_reversed
+<a name="l00248"></a>00248 {
+<a name="l00249"></a>00249 <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="l00250"></a>00250 G2 <span class="keyword">const</span>&amp; g2, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00251"></a>00251 {
+<a name="l00252"></a>00252 <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="l00253"></a>00253 &lt;
+<a name="l00254"></a>00254 GeometryTag2, GeometryTag1,
+<a name="l00255"></a>00255 G2, G1,
+<a name="l00256"></a>00256 StrategyTag, Strategy,
+<a name="l00257"></a>00257 IsMulti2, IsMulti1
+<a name="l00258"></a>00258 &gt;::apply(g2, g1, strategy);
+<a name="l00259"></a>00259 }
+<a name="l00260"></a>00260 };
+<a name="l00261"></a>00261
+<a name="l00262"></a>00262 } <span class="comment">// namespace dispatch</span>
+<a name="l00263"></a>00263 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00264"></a>00264 <span class="preprocessor"></span>
+<a name="l00284"></a>00284 <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="l00285"></a><a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b">00285</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="l00286"></a>00286 Geometry2 <span class="keyword">const</span>&amp; geometry2, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00287"></a>00287 {
+<a name="l00288"></a>00288 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;Geometry1&gt;::type ncg1_type;
+<a name="l00289"></a>00289 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;Geometry2&gt;::type ncg2_type;
+<a name="l00290"></a>00290
+<a name="l00291"></a>00291 <span class="keywordflow">return</span> boost::mpl::if_c
+<a name="l00292"></a>00292 &lt;
+<a name="l00293"></a>00293 <a class="code" href="structggl_1_1reverse__dispatch.html">ggl::reverse_dispatch&lt;Geometry1, Geometry2&gt;::type::value</a>,
+<a name="l00294"></a>00294 dispatch::distance_reversed
+<a name="l00295"></a>00295 &lt;
+<a name="l00296"></a>00296 <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="l00297"></a>00297 <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="l00298"></a>00298 ncg1_type,
+<a name="l00299"></a>00299 ncg2_type,
+<a name="l00300"></a>00300 <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__tag__unknown.html">strategy_tag&lt;Strategy&gt;::type</a>,
+<a name="l00301"></a>00301 Strategy,
+<a name="l00302"></a>00302 <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="l00303"></a>00303 <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="l00304"></a>00304 &gt;,
+<a name="l00305"></a>00305 <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">dispatch::distance</a>
+<a name="l00306"></a>00306 &lt;
+<a name="l00307"></a>00307 <span class="keyword">typename</span> tag&lt;ncg1_type&gt;::type,
+<a name="l00308"></a>00308 <span class="keyword">typename</span> tag&lt;ncg2_type&gt;::type,
+<a name="l00309"></a>00309 ncg1_type,
+<a name="l00310"></a>00310 ncg2_type,
+<a name="l00311"></a>00311 <span class="keyword">typename</span> strategy_tag&lt;Strategy&gt;::type,
+<a name="l00312"></a>00312 Strategy,
+<a name="l00313"></a>00313 is_multi&lt;ncg1_type&gt;::value,
+<a name="l00314"></a>00314 is_multi&lt;ncg2_type&gt;::value
+<a name="l00315"></a>00315 &gt;
+<a name="l00316"></a>00316 &gt;::type::apply(geometry1, geometry2, strategy);
+<a name="l00317"></a>00317 }
+<a name="l00318"></a>00318
+<a name="l00319"></a>00319
+<a name="l00330"></a>00330 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry1, <span class="keyword">typename</span> Geometry2&gt;
+<a name="l00331"></a><a class="code" href="group__distance.html#gd122aa78e960f37b9d61bb02c6913f55">00331</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="l00332"></a>00332 Geometry1 <span class="keyword">const</span>&amp; geometry1, Geometry2 <span class="keyword">const</span>&amp; geometry2)
+<a name="l00333"></a>00333 {
+<a name="l00334"></a>00334 concept::check&lt;const Geometry1&gt;();
+<a name="l00335"></a>00335 concept::check&lt;const Geometry2&gt;();
+<a name="l00336"></a>00336
+<a name="l00337"></a>00337 <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="l00338"></a>00338 <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="l00339"></a>00339
+<a name="l00340"></a>00340 <span class="comment">// Define a point-point-distance-strategy</span>
+<a name="l00341"></a>00341 <span class="comment">// for either the normal case, either the reversed case</span>
+<a name="l00342"></a>00342 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_c
+<a name="l00343"></a>00343 &lt;
+<a name="l00344"></a>00344 <a class="code" href="structggl_1_1reverse__dispatch.html">ggl::reverse_dispatch&lt;Geometry1, Geometry2&gt;::type::value</a>,
+<a name="l00345"></a>00345 <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="l00346"></a>00346 &lt;
+<a name="l00347"></a>00347 <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="l00348"></a>00348 <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="l00349"></a>00349 point2_type,
+<a name="l00350"></a>00350 point1_type
+<a name="l00351"></a>00351 &gt;::type,
+<a name="l00352"></a>00352 <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="l00353"></a>00353 &lt;
+<a name="l00354"></a>00354 <span class="keyword">typename</span> cs_tag&lt;point1_type&gt;::type,
+<a name="l00355"></a>00355 <span class="keyword">typename</span> cs_tag&lt;point2_type&gt;::type,
+<a name="l00356"></a>00356 point1_type,
+<a name="l00357"></a>00357 point2_type
+<a name="l00358"></a>00358 &gt;::type
+<a name="l00359"></a>00359 &gt;::type strategy;
+<a name="l00360"></a>00360
+<a name="l00361"></a>00361 <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="l00362"></a>00362 }
+<a name="l00363"></a>00363
+<a name="l00364"></a>00364 } <span class="comment">// namespace ggl</span>
+<a name="l00365"></a>00365
+<a name="l00366"></a>00366 <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>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 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>
+
+<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>c:/svn/ggl/formal_review/boost/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 Geometry , typename Box &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67">ggl::envelope</a> (Geometry const &amp;geometry, Box &amp;mbr)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate envelope of a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Box , typename Geometry &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Box&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#gb8343582b49458d16bca165b493f678d">ggl::make_envelope</a> (Geometry const &amp;geometry)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate and return envelope of a geometry. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp_source.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,288 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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/range/functions.hpp&gt;</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/numeric/conversion/cast.hpp&gt;</span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;<a class="code" href="combine_8hpp.html">ggl/algorithms/combine.hpp</a>&gt;</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="convert_8hpp.html">ggl/algorithms/convert.hpp</a>&gt;</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="geometries_2concepts_2check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00021"></a>00021
+<a name="l00059"></a>00059 <span class="keyword">namespace </span>ggl
+<a name="l00060"></a>00060 {
+<a name="l00061"></a>00061
+<a name="l00062"></a>00062 <span class="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__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67" title="Calculate envelope of a geometry.">envelope</a> {
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065
+<a name="l00067"></a>00067 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Box&gt;
+<a name="l00068"></a>00068 <span class="keyword">struct </span>envelope_combine_one
+<a name="l00069"></a>00069 {
+<a name="l00070"></a>00070 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Geometry <span class="keyword">const</span>&amp; geometry, Box&amp; mbr)
+<a name="l00071"></a>00071 {
+<a name="l00072"></a>00072 <a class="code" href="group__access.html#g490821bd25a63cc584be1319375794f0" title="assign to a box inverse infinite">assign_inverse</a>(mbr);
+<a name="l00073"></a>00073 <a class="code" href="group__combine.html#gf2336ad085ad8b79cde5a759ab229199" title="Combines a box with another geometry (box, point).">ggl::combine</a>(mbr, geometry);
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075 };
+<a name="l00076"></a>00076
+<a name="l00077"></a>00077
+<a name="l00079"></a>00079 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Box&gt;
+<a name="l00080"></a>00080 <span class="keyword">inline</span> <span class="keywordtype">void</span> envelope_range_additional(Range <span class="keyword">const</span>&amp; range, Box&amp; mbr)
+<a name="l00081"></a>00081 {
+<a name="l00082"></a>00082 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator&lt;Range&gt;::type iterator_type;
+<a name="l00083"></a>00083
+<a name="l00084"></a>00084 <span class="keywordflow">for</span> (iterator_type it = boost::begin(range);
+<a name="l00085"></a>00085 it != boost::end(range);
+<a name="l00086"></a>00086 ++it)
+<a name="l00087"></a>00087 {
+<a name="l00088"></a>00088 <a class="code" href="group__combine.html#gf2336ad085ad8b79cde5a759ab229199" title="Combines a box with another geometry (box, point).">ggl::combine</a>(mbr, *it);
+<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
+<a name="l00095"></a>00095 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Box&gt;
+<a name="l00096"></a>00096 <span class="keyword">struct </span>envelope_range
+<a name="l00097"></a>00097 {
+<a name="l00099"></a>00099 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Range <span class="keyword">const</span>&amp; range, Box&amp; mbr)
+<a name="l00100"></a>00100 {
+<a name="l00101"></a>00101 <a class="code" href="group__access.html#g490821bd25a63cc584be1319375794f0" title="assign to a box inverse infinite">assign_inverse</a>(mbr);
+<a name="l00102"></a>00102 envelope_range_additional(range, mbr);
+<a name="l00103"></a>00103 }
+<a name="l00104"></a>00104 };
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 }} <span class="comment">// namespace detail::envelope</span>
+<a name="l00107"></a>00107 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00108"></a>00108 <span class="preprocessor"></span>
+<a name="l00109"></a>00109 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00110"></a>00110 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00111"></a>00111 {
+<a name="l00112"></a>00112
+<a name="l00113"></a>00113
+<a name="l00114"></a>00114 <span class="comment">// Note, the strategy is for future use (less/greater -&gt; compare spherical</span>
+<a name="l00115"></a>00115 <span class="comment">// using other methods), defaults are OK for now.</span>
+<a name="l00116"></a>00116 <span class="comment">// However, they are already in the template methods</span>
+<a name="l00117"></a>00117
+<a name="l00118"></a>00118 <span class="keyword">template</span>
+<a name="l00119"></a>00119 &lt;
+<a name="l00120"></a>00120 <span class="keyword">typename</span> Tag1, <span class="keyword">typename</span> Tag2,
+<a name="l00121"></a>00121 <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Box,
+<a name="l00122"></a>00122 <span class="keyword">typename</span> StrategyLess, <span class="keyword">typename</span> StrategyGreater
+<a name="l00123"></a>00123 &gt;
+<a name="l00124"></a>00124 <span class="keyword">struct </span><a class="code" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67" title="Calculate envelope of a geometry.">envelope</a> {};
+<a name="l00125"></a>00125
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127 <span class="keyword">template</span>
+<a name="l00128"></a>00128 &lt;
+<a name="l00129"></a>00129 <span class="keyword">typename</span> Point, <span class="keyword">typename</span> Box,
+<a name="l00130"></a>00130 <span class="keyword">typename</span> StrategyLess, <span class="keyword">typename</span> StrategyGreater
+<a name="l00131"></a>00131 &gt;
+<a name="l00132"></a>00132 <span class="keyword">struct </span><a class="code" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67" title="Calculate envelope of a geometry.">envelope</a>
+<a name="l00133"></a>00133 &lt;
+<a name="l00134"></a>00134 point_tag, box_tag,
+<a name="l00135"></a>00135 Point, Box,
+<a name="l00136"></a>00136 StrategyLess, StrategyGreater
+<a name="l00137"></a>00137 &gt;
+<a name="l00138"></a>00138 : detail::<a class="code" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67" title="Calculate envelope of a geometry.">envelope</a>::envelope_combine_one&lt;Point, Box&gt;
+<a name="l00139"></a>00139 {};
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141
+<a name="l00142"></a>00142 <span class="keyword">template</span>
+<a name="l00143"></a>00143 &lt;
+<a name="l00144"></a>00144 <span class="keyword">typename</span> BoxIn, <span class="keyword">typename</span> BoxOut,
+<a name="l00145"></a>00145 <span class="keyword">typename</span> StrategyLess, <span class="keyword">typename</span> StrategyGreater
+<a name="l00146"></a>00146 &gt;
+<a name="l00147"></a>00147 <span class="keyword">struct </span><a class="code" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67" title="Calculate envelope of a geometry.">envelope</a>
+<a name="l00148"></a>00148 &lt;
+<a name="l00149"></a>00149 box_tag, box_tag,
+<a name="l00150"></a>00150 BoxIn, BoxOut,
+<a name="l00151"></a>00151 StrategyLess, StrategyGreater
+<a name="l00152"></a>00152 &gt;
+<a name="l00153"></a>00153 : detail::<a class="code" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67" title="Calculate envelope of a geometry.">envelope</a>::envelope_combine_one&lt;BoxIn, BoxOut&gt;
+<a name="l00154"></a>00154 {};
+<a name="l00155"></a>00155
+<a name="l00156"></a>00156
+<a name="l00157"></a>00157 <span class="keyword">template</span>
+<a name="l00158"></a>00158 &lt;
+<a name="l00159"></a>00159 <span class="keyword">typename</span> Segment, <span class="keyword">typename</span> Box,
+<a name="l00160"></a>00160 <span class="keyword">typename</span> StrategyLess, <span class="keyword">typename</span> StrategyGreater
+<a name="l00161"></a>00161 &gt;
+<a name="l00162"></a>00162 <span class="keyword">struct </span><a class="code" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67" title="Calculate envelope of a geometry.">envelope</a>
+<a name="l00163"></a>00163 &lt;
+<a name="l00164"></a>00164 segment_tag, box_tag,
+<a name="l00165"></a>00165 Segment, Box,
+<a name="l00166"></a>00166 StrategyLess, StrategyGreater
+<a name="l00167"></a>00167 &gt;
+<a name="l00168"></a>00168 : detail::<a class="code" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67" title="Calculate envelope of a geometry.">envelope</a>::envelope_combine_one&lt;Segment, Box&gt;
+<a name="l00169"></a>00169 {};
+<a name="l00170"></a>00170
+<a name="l00171"></a>00171
+<a name="l00172"></a>00172 <span class="keyword">template</span>
+<a name="l00173"></a>00173 &lt;
+<a name="l00174"></a>00174 <span class="keyword">typename</span> Linestring, <span class="keyword">typename</span> Box,
+<a name="l00175"></a>00175 <span class="keyword">typename</span> StrategyLess, <span class="keyword">typename</span> StrategyGreater
+<a name="l00176"></a>00176 &gt;
+<a name="l00177"></a>00177 <span class="keyword">struct </span><a class="code" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67" title="Calculate envelope of a geometry.">envelope</a>
+<a name="l00178"></a>00178 &lt;
+<a name="l00179"></a>00179 linestring_tag, box_tag,
+<a name="l00180"></a>00180 Linestring, Box,
+<a name="l00181"></a>00181 StrategyLess, StrategyGreater
+<a name="l00182"></a>00182 &gt;
+<a name="l00183"></a>00183 : detail::<a class="code" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67" title="Calculate envelope of a geometry.">envelope</a>::envelope_range&lt;Linestring, Box&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>
+<a name="l00188"></a>00188 &lt;
+<a name="l00189"></a>00189 <span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Box,
+<a name="l00190"></a>00190 <span class="keyword">typename</span> StrategyLess, <span class="keyword">typename</span> StrategyGreater
+<a name="l00191"></a>00191 &gt;
+<a name="l00192"></a>00192 <span class="keyword">struct </span><a class="code" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67" title="Calculate envelope of a geometry.">envelope</a>
+<a name="l00193"></a>00193 &lt;
+<a name="l00194"></a>00194 ring_tag, box_tag,
+<a name="l00195"></a>00195 Ring, Box,
+<a name="l00196"></a>00196 StrategyLess, StrategyGreater
+<a name="l00197"></a>00197 &gt;
+<a name="l00198"></a>00198 : detail::<a class="code" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67" title="Calculate envelope of a geometry.">envelope</a>::envelope_range&lt;Ring, Box&gt;
+<a name="l00199"></a>00199 {};
+<a name="l00200"></a>00200
+<a name="l00201"></a>00201
+<a name="l00202"></a>00202 <span class="keyword">template</span>
+<a name="l00203"></a>00203 &lt;
+<a name="l00204"></a>00204 <span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Box,
+<a name="l00205"></a>00205 <span class="keyword">typename</span> StrategyLess, <span class="keyword">typename</span> StrategyGreater
+<a name="l00206"></a>00206 &gt;
+<a name="l00207"></a>00207 <span class="keyword">struct </span><a class="code" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67" title="Calculate envelope of a geometry.">envelope</a>
+<a name="l00208"></a>00208 &lt;
+<a name="l00209"></a>00209 polygon_tag, box_tag,
+<a name="l00210"></a>00210 Polygon, Box,
+<a name="l00211"></a>00211 StrategyLess, StrategyGreater
+<a name="l00212"></a>00212 &gt;
+<a name="l00213"></a>00213 {
+<a name="l00214"></a>00214 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Polygon <span class="keyword">const</span>&amp; poly, Box&amp; mbr)
+<a name="l00215"></a>00215 {
+<a name="l00216"></a>00216 <span class="comment">// For polygon, inspecting outer ring is sufficient</span>
+<a name="l00217"></a>00217
+<a name="l00218"></a>00218 detail::envelope::envelope_range
+<a name="l00219"></a>00219 &lt;
+<a name="l00220"></a>00220 <span class="keyword">typename</span> ring_type&lt;Polygon&gt;::type,
+<a name="l00221"></a>00221 Box
+<a name="l00222"></a>00222 &gt;::apply(<a class="code" href="group__access.html#g4dd59c8603683e869f1d74bd40045b8b" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), mbr);
+<a name="l00223"></a>00223 }
+<a name="l00224"></a>00224
+<a name="l00225"></a>00225 };
+<a name="l00226"></a>00226
+<a name="l00227"></a>00227
+<a name="l00228"></a>00228 } <span class="comment">// namespace dispatch</span>
+<a name="l00229"></a>00229 <span class="preprocessor">#endif</span>
+<a name="l00230"></a>00230 <span class="preprocessor"></span>
+<a name="l00231"></a>00231
+<a name="l00244"></a>00244 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Box&gt;
+<a name="l00245"></a><a class="code" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67">00245</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67" title="Calculate envelope of a geometry.">envelope</a>(Geometry <span class="keyword">const</span>&amp; geometry, Box&amp; mbr)
+<a name="l00246"></a>00246 {
+<a name="l00247"></a>00247 concept::check&lt;const Geometry&gt;();
+<a name="l00248"></a>00248 concept::check&lt;Box&gt;();
+<a name="l00249"></a>00249
+<a name="l00250"></a>00250 <a class="code" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67" title="Calculate envelope of a geometry.">dispatch::envelope</a>
+<a name="l00251"></a>00251 &lt;
+<a name="l00252"></a>00252 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>, <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Box&gt;::type</a>,
+<a name="l00253"></a>00253 Geometry, Box,
+<a name="l00254"></a>00254 void, <span class="keywordtype">void</span>
+<a name="l00255"></a>00255 &gt;::apply(geometry, mbr);
+<a name="l00256"></a>00256 }
+<a name="l00257"></a>00257
+<a name="l00258"></a>00258
+<a name="l00264"></a>00264 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00265"></a><a class="code" href="group__envelope.html#gb8343582b49458d16bca165b493f678d">00265</a> <span class="keyword">inline</span> Box <a class="code" href="group__envelope.html#gb8343582b49458d16bca165b493f678d" title="Calculate and return envelope of a geometry.">make_envelope</a>(Geometry <span class="keyword">const</span>&amp; geometry)
+<a name="l00266"></a>00266 {
+<a name="l00267"></a>00267 concept::check&lt;const Geometry&gt;();
+<a name="l00268"></a>00268 concept::check&lt;Box&gt;();
+<a name="l00269"></a>00269
+<a name="l00270"></a>00270 Box mbr;
+<a name="l00271"></a>00271 <a class="code" href="group__envelope.html#gd12dc40a65c8b7d39e77d6f802d1cb67" title="Calculate envelope of a geometry.">dispatch::envelope</a>
+<a name="l00272"></a>00272 &lt;
+<a name="l00273"></a>00273 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>, <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Box&gt;::type</a>,
+<a name="l00274"></a>00274 Geometry, Box,
+<a name="l00275"></a>00275 void, <span class="keywordtype">void</span>
+<a name="l00276"></a>00276 &gt;::apply(geometry, mbr);
+<a name="l00277"></a>00277 <span class="keywordflow">return</span> mbr;
+<a name="l00278"></a>00278 }
+<a name="l00279"></a>00279
+<a name="l00280"></a>00280 } <span class="comment">// namespace ggl</span>
+<a name="l00281"></a>00281
+<a name="l00282"></a>00282 <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>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2for__each_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2for__each_8hpp.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,91 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/ggl/algorithms/for_each.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 Functor &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Functor&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceggl.html#66bf40f0ee4dc883d9d3b621aeb2e81d">ggl::for_each_point</a> (Geometry &amp;geometry, Functor f)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calls functor for geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , typename Functor &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Functor&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceggl.html#0cdb7f23bf7395ba3f385e9cf01a601f">ggl::for_each_point</a> (Geometry const &amp;geometry, Functor f)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calls functor for geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , typename Functor &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Functor&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceggl.html#529f5655aa7702e9f143263b484ff91b">ggl::for_each_segment</a> (Geometry &amp;geometry, Functor f)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calls functor for segments on linestrings, rings, polygons, ... <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , typename Functor &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Functor&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceggl.html#e8453eab0e9db146184d7ccef687a33e">ggl::for_each_segment</a> (Geometry const &amp;geometry, Functor f)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calls functor for segments on linestrings, rings, polygons, ... <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2for__each_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2for__each_8hpp_source.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,384 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/ggl/algorithms/for_each.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_FOR_EACH_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_FOR_EACH_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;algorithm&gt;</span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="core_2is__multi_8hpp.html">ggl/core/is_multi.hpp</a>&gt;</span>
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;<a class="code" href="geometries_2concepts_2check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>&gt;</span>
+<a name="l00030"></a>00030
+<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;<a class="code" href="add__const__if__c_8hpp.html">ggl/util/add_const_if_c.hpp</a>&gt;</span>
+<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;<a class="code" href="range__iterator__const__if__c_8hpp.html">ggl/util/range_iterator_const_if_c.hpp</a>&gt;</span>
+<a name="l00033"></a>00033
+<a name="l00034"></a>00034
+<a name="l00035"></a>00035 <span class="keyword">namespace </span>ggl
+<a name="l00036"></a>00036 {
+<a name="l00037"></a>00037
+<a name="l00038"></a>00038 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span>for_each {
+<a name="l00040"></a>00040
+<a name="l00041"></a>00041
+<a name="l00042"></a>00042 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00043"></a>00043 <span class="keyword">struct </span>fe_point_per_point
+<a name="l00044"></a>00044 {
+<a name="l00045"></a>00045 <span class="keyword">static</span> <span class="keyword">inline</span> Functor apply(
+<a name="l00046"></a>00046 <span class="keyword">typename</span> add_const_if_c&lt;IsConst, Point&gt;::type&amp; point, Functor f)
+<a name="l00047"></a>00047 {
+<a name="l00048"></a>00048 f(point);
+<a name="l00049"></a>00049 <span class="keywordflow">return</span> f;
+<a name="l00050"></a>00050 }
+<a name="l00051"></a>00051 };
+<a name="l00052"></a>00052
+<a name="l00053"></a>00053
+<a name="l00054"></a>00054 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00055"></a>00055 <span class="keyword">struct </span>fe_point_per_segment
+<a name="l00056"></a>00056 {
+<a name="l00057"></a>00057 <span class="keyword">static</span> <span class="keyword">inline</span> Functor apply(
+<a name="l00058"></a>00058 <span class="keyword">typename</span> add_const_if_c&lt;IsConst, Point&gt;::type&amp; point, Functor f)
+<a name="l00059"></a>00059 {
+<a name="l00060"></a>00060 <span class="keywordflow">return</span> f;
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062 };
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00066"></a>00066 <span class="keyword">struct </span>fe_range_per_point
+<a name="l00067"></a>00067 {
+<a name="l00068"></a>00068 <span class="keyword">static</span> <span class="keyword">inline</span> Functor apply(
+<a name="l00069"></a>00069 <span class="keyword">typename</span> add_const_if_c&lt;IsConst, Range&gt;::type&amp; range,
+<a name="l00070"></a>00070 Functor f)
+<a name="l00071"></a>00071 {
+<a name="l00072"></a>00072 <span class="keywordflow">return</span> (std::for_each(boost::begin(range), boost::end(range), f));
+<a name="l00073"></a>00073 }
+<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> Range, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00078"></a>00078 <span class="keyword">struct </span>fe_range_per_segment
+<a name="l00079"></a>00079 {
+<a name="l00080"></a>00080 <span class="keyword">static</span> <span class="keyword">inline</span> Functor apply(
+<a name="l00081"></a>00081 <span class="keyword">typename</span> add_const_if_c&lt;IsConst, Range&gt;::type&amp; range,
+<a name="l00082"></a>00082 Functor f)
+<a name="l00083"></a>00083 {
+<a name="l00084"></a>00084 <span class="keyword">typedef</span> <span class="keyword">typename</span> range_iterator_const_if_c
+<a name="l00085"></a>00085 &lt;
+<a name="l00086"></a>00086 IsConst,
+<a name="l00087"></a>00087 Range
+<a name="l00088"></a>00088 &gt;::type iterator_type;
+<a name="l00089"></a>00089
+<a name="l00090"></a>00090 <span class="keyword">typedef</span> <span class="keyword">typename</span> add_const_if_c
+<a name="l00091"></a>00091 &lt;
+<a name="l00092"></a>00092 IsConst,
+<a name="l00093"></a>00093 <span class="keyword">typename</span> point_type&lt;Range&gt;::type
+<a name="l00094"></a>00094 &gt;::type point_type;
+<a name="l00095"></a>00095
+<a name="l00096"></a>00096 iterator_type it = boost::begin(range);
+<a name="l00097"></a>00097 iterator_type previous = it++;
+<a name="l00098"></a>00098 <span class="keywordflow">while</span>(it != boost::end(range))
+<a name="l00099"></a>00099 {
+<a name="l00100"></a>00100 segment&lt;point_type&gt; s(*previous, *it);
+<a name="l00101"></a>00101 f(s);
+<a name="l00102"></a>00102 previous = it++;
+<a name="l00103"></a>00103 }
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105 <span class="keywordflow">return</span> f;
+<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> Polygon, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00111"></a>00111 <span class="keyword">struct </span>fe_polygon_per_point
+<a name="l00112"></a>00112 {
+<a name="l00113"></a>00113 <span class="keyword">static</span> <span class="keyword">inline</span> Functor apply(
+<a name="l00114"></a>00114 <span class="keyword">typename</span> add_const_if_c&lt;IsConst, Polygon&gt;::type&amp; poly,
+<a name="l00115"></a>00115 Functor f)
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 <span class="keyword">typedef</span> <span class="keyword">typename</span> range_iterator_const_if_c
+<a name="l00118"></a>00118 &lt;
+<a name="l00119"></a>00119 IsConst,
+<a name="l00120"></a>00120 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type
+<a name="l00121"></a>00121 &gt;::type iterator_type;
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123 <span class="keyword">typedef</span> fe_range_per_point
+<a name="l00124"></a>00124 &lt;
+<a name="l00125"></a>00125 <span class="keyword">typename</span> ring_type&lt;Polygon&gt;::type,
+<a name="l00126"></a>00126 Functor,
+<a name="l00127"></a>00127 IsConst
+<a name="l00128"></a>00128 &gt; per_ring;
+<a name="l00129"></a>00129
+<a name="l00130"></a>00130 f = per_ring::apply(<a class="code" href="group__access.html#g4dd59c8603683e869f1d74bd40045b8b" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), f);
+<a name="l00131"></a>00131
+<a name="l00132"></a>00132 <span class="keywordflow">for</span> (iterator_type it = boost::begin(<a class="code" href="group__access.html#gaee58ea9a166a2ca07597daf34433d7f" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00133"></a>00133 it != boost::end(<a class="code" href="group__access.html#gaee58ea9a166a2ca07597daf34433d7f" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00134"></a>00134 ++it)
+<a name="l00135"></a>00135 {
+<a name="l00136"></a>00136 f = per_ring::apply(*it, f);
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139 <span class="keywordflow">return</span> f;
+<a name="l00140"></a>00140 }
+<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">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00146"></a>00146 <span class="keyword">struct </span>fe_polygon_per_segment
+<a name="l00147"></a>00147 {
+<a name="l00148"></a>00148 <span class="keyword">static</span> <span class="keyword">inline</span> Functor apply(
+<a name="l00149"></a>00149 <span class="keyword">typename</span> add_const_if_c&lt;IsConst, Polygon&gt;::type&amp; poly,
+<a name="l00150"></a>00150 Functor f)
+<a name="l00151"></a>00151 {
+<a name="l00152"></a>00152 <span class="keyword">typedef</span> <span class="keyword">typename</span> range_iterator_const_if_c
+<a name="l00153"></a>00153 &lt;
+<a name="l00154"></a>00154 IsConst,
+<a name="l00155"></a>00155 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type
+<a name="l00156"></a>00156 &gt;::type iterator_type;
+<a name="l00157"></a>00157
+<a name="l00158"></a>00158 <span class="keyword">typedef</span> fe_range_per_segment
+<a name="l00159"></a>00159 &lt;
+<a name="l00160"></a>00160 <span class="keyword">typename</span> ring_type&lt;Polygon&gt;::type,
+<a name="l00161"></a>00161 Functor,
+<a name="l00162"></a>00162 IsConst
+<a name="l00163"></a>00163 &gt; per_ring;
+<a name="l00164"></a>00164
+<a name="l00165"></a>00165 f = per_ring::apply(<a class="code" href="group__access.html#g4dd59c8603683e869f1d74bd40045b8b" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), f);
+<a name="l00166"></a>00166
+<a name="l00167"></a>00167 <span class="keywordflow">for</span> (iterator_type it = boost::begin(<a class="code" href="group__access.html#gaee58ea9a166a2ca07597daf34433d7f" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00168"></a>00168 it != boost::end(<a class="code" href="group__access.html#gaee58ea9a166a2ca07597daf34433d7f" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00169"></a>00169 ++it)
+<a name="l00170"></a>00170 {
+<a name="l00171"></a>00171 f = per_ring::apply(*it, f);
+<a name="l00172"></a>00172 }
+<a name="l00173"></a>00173
+<a name="l00174"></a>00174 <span class="keywordflow">return</span> f;
+<a name="l00175"></a>00175 }
+<a name="l00176"></a>00176
+<a name="l00177"></a>00177 };
+<a name="l00178"></a>00178
+<a name="l00179"></a>00179
+<a name="l00180"></a>00180 }} <span class="comment">// namespace detail::for_each</span>
+<a name="l00181"></a>00181 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00182"></a>00182 <span class="preprocessor"></span>
+<a name="l00183"></a>00183
+<a name="l00184"></a>00184 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00185"></a>00185 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00186"></a>00186 {
+<a name="l00187"></a>00187
+<a name="l00188"></a>00188 <span class="keyword">template</span>
+<a name="l00189"></a>00189 &lt;
+<a name="l00190"></a>00190 <span class="keyword">typename</span> Tag,
+<a name="l00191"></a>00191 <span class="keywordtype">bool</span> IsMulti,
+<a name="l00192"></a>00192 <span class="keyword">typename</span> Geometry,
+<a name="l00193"></a>00193 <span class="keyword">typename</span> Functor,
+<a name="l00194"></a>00194 <span class="keywordtype">bool</span> IsConst
+<a name="l00195"></a>00195 &gt;
+<a name="l00196"></a>00196 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a> {};
+<a name="l00197"></a>00197
+<a name="l00198"></a>00198
+<a name="l00199"></a>00199 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00200"></a>00200 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a>&lt;point_tag, false, Point, Functor, IsConst&gt;
+<a name="l00201"></a>00201 : detail::for_each::fe_point_per_point&lt;Point, Functor, IsConst&gt;
+<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> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00206"></a>00206 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a>&lt;linestring_tag, false, Linestring, Functor, IsConst&gt;
+<a name="l00207"></a>00207 : detail::for_each::fe_range_per_point&lt;Linestring, Functor, IsConst&gt;
+<a name="l00208"></a>00208 {};
+<a name="l00209"></a>00209
+<a name="l00210"></a>00210
+<a name="l00211"></a>00211 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00212"></a>00212 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a>&lt;ring_tag, false, Ring, Functor, IsConst&gt;
+<a name="l00213"></a>00213 : detail::for_each::fe_range_per_point&lt;Ring, Functor, IsConst&gt;
+<a name="l00214"></a>00214 {};
+<a name="l00215"></a>00215
+<a name="l00216"></a>00216
+<a name="l00217"></a>00217 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00218"></a>00218 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a>&lt;polygon_tag, false, Polygon, Functor, IsConst&gt;
+<a name="l00219"></a>00219 : detail::for_each::fe_polygon_per_point&lt;Polygon, Functor, IsConst&gt;
+<a name="l00220"></a>00220 {};
+<a name="l00221"></a>00221
+<a name="l00222"></a>00222
+<a name="l00223"></a>00223 <span class="keyword">template</span>
+<a name="l00224"></a>00224 &lt;
+<a name="l00225"></a>00225 <span class="keyword">typename</span> Tag,
+<a name="l00226"></a>00226 <span class="keywordtype">bool</span> IsMulti,
+<a name="l00227"></a>00227 <span class="keyword">typename</span> Geometry,
+<a name="l00228"></a>00228 <span class="keyword">typename</span> Functor,
+<a name="l00229"></a>00229 <span class="keywordtype">bool</span> IsConst
+<a name="l00230"></a>00230 &gt;
+<a name="l00231"></a>00231 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#e8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a> {};
+<a name="l00232"></a>00232
+<a name="l00233"></a>00233 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00234"></a>00234 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#e8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a>&lt;point_tag, false, Point, Functor, IsConst&gt;
+<a name="l00235"></a>00235 : detail::for_each::fe_point_per_segment&lt;Point, Functor, IsConst&gt;
+<a name="l00236"></a>00236 {};
+<a name="l00237"></a>00237
+<a name="l00238"></a>00238
+<a name="l00239"></a>00239 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00240"></a>00240 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#e8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a>&lt;linestring_tag, false, Linestring, Functor, IsConst&gt;
+<a name="l00241"></a>00241 : detail::for_each::fe_range_per_segment&lt;Linestring, Functor, IsConst&gt;
+<a name="l00242"></a>00242 {};
+<a name="l00243"></a>00243
+<a name="l00244"></a>00244
+<a name="l00245"></a>00245 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00246"></a>00246 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#e8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a>&lt;ring_tag, false, Ring, Functor, IsConst&gt;
+<a name="l00247"></a>00247 : detail::for_each::fe_range_per_segment&lt;Ring, Functor, IsConst&gt;
+<a name="l00248"></a>00248 {};
+<a name="l00249"></a>00249
+<a name="l00250"></a>00250
+<a name="l00251"></a>00251 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Functor, <span class="keywordtype">bool</span> IsConst&gt;
+<a name="l00252"></a>00252 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#e8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a>&lt;polygon_tag, false, Polygon, Functor, IsConst&gt;
+<a name="l00253"></a>00253 : detail::for_each::fe_polygon_per_segment&lt;Polygon, Functor, IsConst&gt;
+<a name="l00254"></a>00254 {};
+<a name="l00255"></a>00255
+<a name="l00256"></a>00256
+<a name="l00257"></a>00257 } <span class="comment">// namespace dispatch</span>
+<a name="l00258"></a>00258 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00259"></a>00259 <span class="preprocessor"></span>
+<a name="l00260"></a>00260
+<a name="l00268"></a>00268 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Functor&gt;
+<a name="l00269"></a><a class="code" href="namespaceggl.html#0cdb7f23bf7395ba3f385e9cf01a601f">00269</a> <span class="keyword">inline</span> Functor <a class="code" href="namespaceggl.html#0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a>(Geometry <span class="keyword">const</span>&amp; geometry, Functor f)
+<a name="l00270"></a>00270 {
+<a name="l00271"></a>00271 concept::check&lt;const Geometry&gt;();
+<a name="l00272"></a>00272
+<a name="l00273"></a>00273 <span class="keywordflow">return</span> <a class="code" href="namespaceggl.html#0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">dispatch::for_each_point</a>
+<a name="l00274"></a>00274 &lt;
+<a name="l00275"></a>00275 <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="l00276"></a>00276 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &amp;quot;true&amp;quot; for multi geometries (multi_point, etc).">is_multi&lt;Geometry&gt;::type::value</a>,
+<a name="l00277"></a>00277 Geometry,
+<a name="l00278"></a>00278 Functor,
+<a name="l00279"></a>00279 <span class="keyword">true</span>
+<a name="l00280"></a>00280 &gt;::apply(geometry, f);
+<a name="l00281"></a>00281 }
+<a name="l00282"></a>00282
+<a name="l00283"></a>00283
+<a name="l00291"></a>00291 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Functor&gt;
+<a name="l00292"></a><a class="code" href="namespaceggl.html#66bf40f0ee4dc883d9d3b621aeb2e81d">00292</a> <span class="keyword">inline</span> Functor <a class="code" href="namespaceggl.html#0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">for_each_point</a>(Geometry&amp; geometry, Functor f)
+<a name="l00293"></a>00293 {
+<a name="l00294"></a>00294 concept::check&lt;Geometry&gt;();
+<a name="l00295"></a>00295
+<a name="l00296"></a>00296 <span class="keywordflow">return</span> <a class="code" href="namespaceggl.html#0cdb7f23bf7395ba3f385e9cf01a601f" title="Calls functor for geometry.">dispatch::for_each_point</a>
+<a name="l00297"></a>00297 &lt;
+<a name="l00298"></a>00298 <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="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;Geometry&gt;::type::value</a>,
+<a name="l00300"></a>00300 Geometry,
+<a name="l00301"></a>00301 Functor,
+<a name="l00302"></a>00302 <span class="keyword">false</span>
+<a name="l00303"></a>00303 &gt;::apply(geometry, f);
+<a name="l00304"></a>00304 }
+<a name="l00305"></a>00305
+<a name="l00306"></a>00306
+<a name="l00315"></a>00315 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Functor&gt;
+<a name="l00316"></a><a class="code" href="namespaceggl.html#e8453eab0e9db146184d7ccef687a33e">00316</a> <span class="keyword">inline</span> Functor <a class="code" href="namespaceggl.html#e8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a>(Geometry <span class="keyword">const</span>&amp; geometry, Functor f)
+<a name="l00317"></a>00317 {
+<a name="l00318"></a>00318 concept::check&lt;const Geometry&gt;();
+<a name="l00319"></a>00319
+<a name="l00320"></a>00320 <span class="keywordflow">return</span> <a class="code" href="namespaceggl.html#e8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">dispatch::for_each_segment</a>
+<a name="l00321"></a>00321 &lt;
+<a name="l00322"></a>00322 <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="l00323"></a>00323 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &amp;quot;true&amp;quot; for multi geometries (multi_point, etc).">is_multi&lt;Geometry&gt;::type::value</a>,
+<a name="l00324"></a>00324 Geometry,
+<a name="l00325"></a>00325 Functor,
+<a name="l00326"></a>00326 <span class="keyword">true</span>
+<a name="l00327"></a>00327 &gt;::apply(geometry, f);
+<a name="l00328"></a>00328 }
+<a name="l00329"></a>00329
+<a name="l00330"></a>00330
+<a name="l00338"></a>00338 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Functor&gt;
+<a name="l00339"></a><a class="code" href="namespaceggl.html#529f5655aa7702e9f143263b484ff91b">00339</a> <span class="keyword">inline</span> Functor <a class="code" href="namespaceggl.html#e8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">for_each_segment</a>(Geometry&amp; geometry, Functor f)
+<a name="l00340"></a>00340 {
+<a name="l00341"></a>00341 concept::check&lt;Geometry&gt;();
+<a name="l00342"></a>00342
+<a name="l00343"></a>00343 <span class="keywordflow">return</span> <a class="code" href="namespaceggl.html#e8453eab0e9db146184d7ccef687a33e" title="Calls functor for segments on linestrings, rings, polygons, ...">dispatch::for_each_segment</a>
+<a name="l00344"></a>00344 &lt;
+<a name="l00345"></a>00345 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00346"></a>00346 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &amp;quot;true&amp;quot; for multi geometries (multi_point, etc).">is_multi&lt;Geometry&gt;::type::value</a>,
+<a name="l00347"></a>00347 Geometry,
+<a name="l00348"></a>00348 Functor,
+<a name="l00349"></a>00349 <span class="keyword">false</span>
+<a name="l00350"></a>00350 &gt;::apply(geometry, f);
+<a name="l00351"></a>00351 }
+<a name="l00352"></a>00352
+<a name="l00353"></a>00353
+<a name="l00354"></a>00354 } <span class="comment">// namespace ggl</span>
+<a name="l00355"></a>00355
+<a name="l00356"></a>00356
+<a name="l00357"></a>00357 <span class="preprocessor">#endif // GGL_ALGORITHMS_FOR_EACH_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 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>
+
+<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>c:/svn/ggl/formal_review/boost/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#g8c12093b8b10102bd3458b0603c31df6">ggl::get_section</a> (Geometry const &amp;geometry, Section const &amp;section, typename boost::range_const_iterator&lt; typename <a class="el" href="structggl_1_1range__type.html">ggl::range_type</a>&lt; Geometry &gt;::type &gt;::type &amp;begin, typename boost::range_const_iterator&lt; typename <a class="el" href="structggl_1_1range__type.html">ggl::range_type</a>&lt; Geometry &gt;::type &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>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp_source.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,168 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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/range/functions.hpp&gt;</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;boost/range/metafunctions.hpp&gt;</span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="access_8hpp.html">ggl/core/access.hpp</a>&gt;</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="iterators_2range__type_8hpp.html">ggl/iterators/range_type.hpp</a>&gt;</span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>&gt;</span>
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 <span class="keyword">namespace </span>ggl
+<a name="l00028"></a>00028 {
+<a name="l00029"></a>00029
+<a name="l00030"></a>00030
+<a name="l00031"></a>00031 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00033"></a>00033 {
+<a name="l00034"></a>00034
+<a name="l00035"></a>00035 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Section&gt;
+<a name="l00036"></a>00036 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g8c12093b8b10102bd3458b0603c31df6" title="Get iterators for a specified section.">get_section</a>
+<a name="l00037"></a>00037 {
+<a name="l00038"></a>00038 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00039"></a>00039 &lt;
+<a name="l00040"></a>00040 <span class="keyword">typename</span> <a class="code" href="structggl_1_1range__type.html" title="Meta-function defining a type which is a boost-range.">ggl::range_type&lt;Geometry&gt;::type</a>
+<a name="l00041"></a>00041 &gt;::type iterator_type;
+<a name="l00042"></a>00042
+<a name="l00043"></a>00043 <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="l00044"></a>00044 iterator_type&amp; begin, iterator_type&amp; end)
+<a name="l00045"></a>00045 {
+<a name="l00046"></a>00046 begin = boost::begin(geometry) + section.begin_index;
+<a name="l00047"></a>00047 end = boost::begin(geometry) + section.end_index + 1;
+<a name="l00048"></a>00048 }
+<a name="l00049"></a>00049 };
+<a name="l00050"></a>00050
+<a name="l00051"></a>00051 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Section&gt;
+<a name="l00052"></a>00052 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g8c12093b8b10102bd3458b0603c31df6" title="Get iterators for a specified section.">get_section</a>&lt;polygon_tag, Polygon, Section&gt;
+<a name="l00053"></a>00053 {
+<a name="l00054"></a>00054 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00055"></a>00055 &lt;
+<a name="l00056"></a>00056 <span class="keyword">typename</span> <a class="code" href="structggl_1_1range__type.html" title="Meta-function defining a type which is a boost-range.">ggl::range_type&lt;Polygon&gt;::type</a>
+<a name="l00057"></a>00057 &gt;::type iterator_type;
+<a name="l00058"></a>00058
+<a name="l00059"></a>00059 <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="l00060"></a>00060 iterator_type&amp; begin, iterator_type&amp; end)
+<a name="l00061"></a>00061 {
+<a name="l00062"></a>00062 <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="l00063"></a>00063 ring_type <span class="keyword">const</span>&amp; ring = section.ring_index &lt; 0
+<a name="l00064"></a>00064 ? <a class="code" href="group__access.html#g4dd59c8603683e869f1d74bd40045b8b" title="Function to get the exterior_ring ring of a polygon.">ggl::exterior_ring</a>(polygon)
+<a name="l00065"></a>00065 : ggl::<a class="code" href="group__access.html#gaee58ea9a166a2ca07597daf34433d7f" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(polygon)[section.ring_index];
+<a name="l00066"></a>00066
+<a name="l00067"></a>00067 begin = boost::begin(ring) + section.begin_index;
+<a name="l00068"></a>00068 end = boost::begin(ring) + section.end_index + 1;
+<a name="l00069"></a>00069 }
+<a name="l00070"></a>00070 };
+<a name="l00071"></a>00071
+<a name="l00072"></a>00072 } <span class="comment">// namespace dispatch</span>
+<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
+<a name="l00077"></a>00077
+<a name="l00090"></a>00090 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Section&gt;
+<a name="l00091"></a><a class="code" href="group__sectionalize.html#g8c12093b8b10102bd3458b0603c31df6">00091</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__sectionalize.html#g8c12093b8b10102bd3458b0603c31df6" 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="l00092"></a>00092 <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00093"></a>00093 &lt;
+<a name="l00094"></a>00094 <span class="keyword">typename</span> <a class="code" href="structggl_1_1range__type.html" title="Meta-function defining a type which is a boost-range.">ggl::range_type&lt;Geometry&gt;::type</a>
+<a name="l00095"></a>00095 &gt;::type&amp; begin,
+<a name="l00096"></a>00096 <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00097"></a>00097 &lt;
+<a name="l00098"></a>00098 <span class="keyword">typename</span> <a class="code" href="structggl_1_1range__type.html" title="Meta-function defining a type which is a boost-range.">ggl::range_type&lt;Geometry&gt;::type</a>
+<a name="l00099"></a>00099 &gt;::type&amp; end)
+<a name="l00100"></a>00100 {
+<a name="l00101"></a>00101 concept::check&lt;const Geometry&gt;();
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 <a class="code" href="group__sectionalize.html#g8c12093b8b10102bd3458b0603c31df6" title="Get iterators for a specified section.">dispatch::get_section</a>
+<a name="l00104"></a>00104 &lt;
+<a name="l00105"></a>00105 <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="l00106"></a>00106 Geometry,
+<a name="l00107"></a>00107 Section
+<a name="l00108"></a>00108 &gt;::apply(geometry, section, begin, end);
+<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
+<a name="l00114"></a>00114 } <span class="comment">// namespace ggl</span>
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116 <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>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 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>
+
+<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>c:/svn/ggl/formal_review/boost/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__intersection.html#gebe4cbe7f224f01d9d92f604888002a1">ggl::intersection_inserter</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. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp_source.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,355 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;boost/mpl/if.hpp&gt;</span>
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;<a class="code" href="reverse__dispatch_8hpp.html">ggl/core/reverse_dispatch.hpp</a>&gt;</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;<a class="code" href="geometries_2concepts_2check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="clip__linestring_8hpp.html">ggl/algorithms/overlay/clip_linestring.hpp</a>&gt;</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="assemble_8hpp.html">ggl/algorithms/overlay/assemble.hpp</a>&gt;</span>
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021
+<a name="l00075"></a>00075 <span class="keyword">namespace </span>ggl
+<a name="l00076"></a>00076 {
+<a name="l00077"></a>00077
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00080"></a>00080 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span>overlay {
+<a name="l00081"></a>00081
+<a name="l00082"></a>00082
+<a name="l00083"></a>00083
+<a name="l00084"></a>00084 <span class="comment">// Specializations for "take_one" for intersection</span>
+<a name="l00085"></a>00085 <span class="comment">// "one" should be the inner one</span>
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 <span class="comment">// for ring and box</span>
+<a name="l00088"></a>00088 <span class="keyword">template</span>
+<a name="l00089"></a>00089 &lt;
+<a name="l00090"></a>00090 <span class="keyword">typename</span> Tag1, <span class="keyword">typename</span> Geometry1,
+<a name="l00091"></a>00091 <span class="keyword">typename</span> Tag2, <span class="keyword">typename</span> Geometry2,
+<a name="l00092"></a>00092 <span class="keyword">typename</span> GeometryOut
+<a name="l00093"></a>00093 &gt;
+<a name="l00094"></a>00094 <span class="keyword">struct </span>take_if_1_is_in_2&lt;Tag1, Geometry1, Tag2, Geometry2, GeometryOut, -1&gt;
+<a name="l00095"></a>00095 {
+<a name="l00096"></a>00096 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Geometry1 <span class="keyword">const</span>&amp; geometry1,
+<a name="l00097"></a>00097 Geometry2 <span class="keyword">const</span>&amp; geometry2,
+<a name="l00098"></a>00098 GeometryOut&amp; out
+<a name="l00099"></a>00099 )
+<a name="l00100"></a>00100 {
+<a name="l00101"></a>00101 <a class="code" href="group__convert.html#gbfc62905cd1defe17d9547c4d60e1347" title="Converts one geometry to another geometry.">ggl::convert</a>(geometry1, out);
+<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 <span class="keyword">template</span>
+<a name="l00107"></a>00107 &lt;
+<a name="l00108"></a>00108 <span class="keyword">typename</span> Geometry1,
+<a name="l00109"></a>00109 <span class="keyword">typename</span> Tag2, <span class="keyword">typename</span> Geometry2,
+<a name="l00110"></a>00110 <span class="keyword">typename</span> GeometryOut
+<a name="l00111"></a>00111 &gt;
+<a name="l00112"></a>00112 <span class="keyword">struct </span>take_if_1_is_in_2&lt;polygon_tag, Geometry1, Tag2, Geometry2, GeometryOut, -1&gt;
+<a name="l00113"></a>00113 {
+<a name="l00114"></a>00114 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Geometry1 <span class="keyword">const</span>&amp; geometry1,
+<a name="l00115"></a>00115 Geometry2 <span class="keyword">const</span>&amp; geometry2,
+<a name="l00116"></a>00116 GeometryOut&amp; out
+<a name="l00117"></a>00117 )
+<a name="l00118"></a>00118 {
+<a name="l00119"></a>00119 <a class="code" href="group__convert.html#gbfc62905cd1defe17d9547c4d60e1347" title="Converts one geometry to another geometry.">ggl::convert</a>(<a class="code" href="group__access.html#g4dd59c8603683e869f1d74bd40045b8b" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(geometry1), out);
+<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 <span class="keyword">template</span>
+<a name="l00125"></a>00125 &lt;
+<a name="l00126"></a>00126 <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> GeometryOut, <span class="keyword">typename</span> Container
+<a name="l00127"></a>00127 &gt;
+<a name="l00128"></a>00128 <span class="keyword">struct </span>add_holes&lt;polygon_tag, Geometry, GeometryOut, Container, -1&gt;
+<a name="l00129"></a>00129 {
+<a name="l00130"></a>00130
+<a name="l00131"></a>00131 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Geometry <span class="keyword">const</span>&amp; geometry,
+<a name="l00132"></a>00132 GeometryOut&amp; out,
+<a name="l00133"></a>00133 Container <span class="keyword">const</span>&amp; holes
+<a name="l00134"></a>00134 )
+<a name="l00135"></a>00135 {
+<a name="l00136"></a>00136 std::vector&lt;sortable&gt; v;
+<a name="l00137"></a>00137 sort_interior_rings(holes, v, -1);
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139 <span class="comment">// For an intersection, if a ring is containing an inner ring,</span>
+<a name="l00140"></a>00140 <span class="comment">// take the outer</span>
+<a name="l00141"></a>00141
+<a name="l00142"></a>00142 std::size_t <span class="keyword">const</span> n = boost::size(v);
+<a name="l00143"></a>00143
+<a name="l00144"></a>00144 <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; n; i++)
+<a name="l00145"></a>00145 {
+<a name="l00146"></a>00146 <span class="comment">// So, only if no inners:</span>
+<a name="l00147"></a>00147 <span class="keywordflow">if</span> (v[i].index_of_parent == -1)
+<a name="l00148"></a>00148 {
+<a name="l00149"></a>00149 <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;
+<a name="l00150"></a>00150 <a class="code" href="group__utility.html#ge415174744cad8935889144cc286a0fb" title="Take point on a border.">ggl::point_on_border</a>(holes[v[i].index], point);
+<a name="l00151"></a>00151 <span class="keywordflow">if</span> (<a class="code" href="group__within.html#g599c2aa76cf2037eb40514e449ace28d" title="Within, examine if a geometry is within another geometry.">ggl::within</a>(point, geometry))
+<a name="l00152"></a>00152 {
+<a name="l00153"></a>00153 <span class="keyword">typename</span> ring_type&lt;GeometryOut&gt;::type hole;
+<a name="l00154"></a>00154 <a class="code" href="group__convert.html#gbfc62905cd1defe17d9547c4d60e1347" title="Converts one geometry to another geometry.">ggl::convert</a>(holes[v[i].index], hole);
+<a name="l00155"></a>00155 <a class="code" href="group__access.html#gaee58ea9a166a2ca07597daf34433d7f" title="Function to get the interior rings of a polygon (non const version).">ggl::interior_rings</a>(out).push_back(hole);
+<a name="l00156"></a>00156 }
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158 }
+<a name="l00159"></a>00159 }
+<a name="l00160"></a>00160 };
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162
+<a name="l00163"></a>00163 }} <span class="comment">// namespace detail::overlay</span>
+<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
+<a name="l00167"></a>00167 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00168"></a>00168 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00169"></a>00169 {
+<a name="l00170"></a>00170
+<a name="l00171"></a>00171 <span class="keyword">template</span>
+<a name="l00172"></a>00172 &lt;
+<a name="l00173"></a>00173 <span class="keyword">typename</span> Tag1, <span class="keyword">typename</span> Tag2, <span class="keyword">typename</span> Tag3,
+<a name="l00174"></a>00174 <span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2,
+<a name="l00175"></a>00175 <span class="keyword">typename</span> OutputIterator,
+<a name="l00176"></a>00176 <span class="keyword">typename</span> GeometryOut
+<a name="l00177"></a>00177 &gt;
+<a name="l00178"></a>00178 <span class="keyword">struct </span><a class="code" href="group__intersection.html#gebe4cbe7f224f01d9d92f604888002a1" title="Intersects two geometries.">intersection_inserter</a> {};
+<a name="l00179"></a>00179
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 <span class="keyword">template</span>
+<a name="l00182"></a>00182 &lt;
+<a name="l00183"></a>00183 <span class="keyword">typename</span> Segment1, <span class="keyword">typename</span> Segment2,
+<a name="l00184"></a>00184 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
+<a name="l00185"></a>00185 &gt;
+<a name="l00186"></a>00186 <span class="keyword">struct </span><a class="code" href="group__intersection.html#gebe4cbe7f224f01d9d92f604888002a1" title="Intersects two geometries.">intersection_inserter</a>
+<a name="l00187"></a>00187 &lt;
+<a name="l00188"></a>00188 segment_tag, segment_tag, point_tag,
+<a name="l00189"></a>00189 Segment1, Segment2,
+<a name="l00190"></a>00190 OutputIterator, GeometryOut
+<a name="l00191"></a>00191 &gt;
+<a name="l00192"></a>00192 {
+<a name="l00193"></a>00193 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Segment1 <span class="keyword">const</span>&amp; segment1,
+<a name="l00194"></a>00194 Segment2 <span class="keyword">const</span>&amp; segment2, OutputIterator out)
+<a name="l00195"></a>00195 {
+<a name="l00196"></a>00196 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;GeometryOut&gt;::type point_type;
+<a name="l00197"></a>00197
+<a name="l00198"></a>00198 <span class="comment">// Get the intersection point (or two points)</span>
+<a name="l00199"></a>00199 segment_intersection_points&lt;point_type&gt; is
+<a name="l00200"></a>00200 = strategy::intersection::relate_cartesian_segments
+<a name="l00201"></a>00201 &lt;
+<a name="l00202"></a>00202 policies::relate::segments_intersection_points
+<a name="l00203"></a>00203 &lt;
+<a name="l00204"></a>00204 Segment1,
+<a name="l00205"></a>00205 Segment2,
+<a name="l00206"></a>00206 segment_intersection_points&lt;point_type&gt;
+<a name="l00207"></a>00207 &gt;
+<a name="l00208"></a>00208 &gt;::relate(segment1, segment2);
+<a name="l00209"></a>00209 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; is.count; i++)
+<a name="l00210"></a>00210 {
+<a name="l00211"></a>00211 GeometryOut p;
+<a name="l00212"></a>00212 <a class="code" href="namespaceggl.html#f8cee6dd577bebfd1dbbe4cc503304d4" title="Copies coordinates from source to destination point.">ggl::copy_coordinates</a>(is.intersections[i], p);
+<a name="l00213"></a>00213 *out = p;
+<a name="l00214"></a>00214 out++;
+<a name="l00215"></a>00215 }
+<a name="l00216"></a>00216 <span class="keywordflow">return</span> out;
+<a name="l00217"></a>00217 }
+<a name="l00218"></a>00218 };
+<a name="l00219"></a>00219
+<a name="l00220"></a>00220
+<a name="l00221"></a>00221 <span class="keyword">template</span>
+<a name="l00222"></a>00222 &lt;
+<a name="l00223"></a>00223 <span class="keyword">typename</span> Linestring, <span class="keyword">typename</span> Box,
+<a name="l00224"></a>00224 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
+<a name="l00225"></a>00225 &gt;
+<a name="l00226"></a>00226 <span class="keyword">struct </span><a class="code" href="group__intersection.html#gebe4cbe7f224f01d9d92f604888002a1" title="Intersects two geometries.">intersection_inserter</a>
+<a name="l00227"></a>00227 &lt;
+<a name="l00228"></a>00228 linestring_tag, box_tag, linestring_tag,
+<a name="l00229"></a>00229 Linestring, Box,
+<a name="l00230"></a>00230 OutputIterator, GeometryOut
+<a name="l00231"></a>00231 &gt;
+<a name="l00232"></a>00232 {
+<a name="l00233"></a>00233 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Linestring <span class="keyword">const</span>&amp; linestring,
+<a name="l00234"></a>00234 Box <span class="keyword">const</span>&amp; box, OutputIterator out)
+<a name="l00235"></a>00235 {
+<a name="l00236"></a>00236 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;GeometryOut&gt;::type point_type;
+<a name="l00237"></a>00237 strategy::intersection::liang_barsky&lt;Box, point_type&gt; strategy;
+<a name="l00238"></a>00238 <span class="keywordflow">return</span> detail::intersection::clip_linestring_with_box&lt;GeometryOut&gt;(box, linestring, out, strategy);
+<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="keyword">template</span>
+<a name="l00244"></a>00244 &lt;
+<a name="l00245"></a>00245 <span class="keyword">typename</span> Polygon1, <span class="keyword">typename</span> Polygon2,
+<a name="l00246"></a>00246 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
+<a name="l00247"></a>00247 &gt;
+<a name="l00248"></a>00248 <span class="keyword">struct </span><a class="code" href="group__intersection.html#gebe4cbe7f224f01d9d92f604888002a1" title="Intersects two geometries.">intersection_inserter</a>
+<a name="l00249"></a>00249 &lt;
+<a name="l00250"></a>00250 polygon_tag, polygon_tag, polygon_tag,
+<a name="l00251"></a>00251 Polygon1, Polygon2,
+<a name="l00252"></a>00252 OutputIterator, GeometryOut
+<a name="l00253"></a>00253 &gt;
+<a name="l00254"></a>00254 : detail::overlay::overlay_and_assemble
+<a name="l00255"></a>00255 &lt;Polygon1, Polygon2, OutputIterator, GeometryOut, -1&gt;
+<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 <span class="keyword">template</span>
+<a name="l00261"></a>00261 &lt;
+<a name="l00262"></a>00262 <span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Box,
+<a name="l00263"></a>00263 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
+<a name="l00264"></a>00264 &gt;
+<a name="l00265"></a>00265 <span class="keyword">struct </span><a class="code" href="group__intersection.html#gebe4cbe7f224f01d9d92f604888002a1" title="Intersects two geometries.">intersection_inserter</a>
+<a name="l00266"></a>00266 &lt;
+<a name="l00267"></a>00267 polygon_tag, box_tag, polygon_tag,
+<a name="l00268"></a>00268 Polygon, Box,
+<a name="l00269"></a>00269 OutputIterator, GeometryOut
+<a name="l00270"></a>00270 &gt;
+<a name="l00271"></a>00271 : detail::overlay::overlay_and_assemble
+<a name="l00272"></a>00272 &lt;Polygon, Box, OutputIterator, GeometryOut, -1&gt;
+<a name="l00273"></a>00273 {};
+<a name="l00274"></a>00274
+<a name="l00275"></a>00275
+<a name="l00276"></a>00276
+<a name="l00277"></a>00277 <span class="keyword">template</span>
+<a name="l00278"></a>00278 &lt;
+<a name="l00279"></a>00279 <span class="keyword">typename</span> GeometryTag1, <span class="keyword">typename</span> GeometryTag2, <span class="keyword">typename</span> GeometryTag3,
+<a name="l00280"></a>00280 <span class="keyword">typename</span> Geometry1, <span class="keyword">typename</span> Geometry2,
+<a name="l00281"></a>00281 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
+<a name="l00282"></a>00282 &gt;
+<a name="l00283"></a>00283 <span class="keyword">struct </span>intersection_inserter_reversed
+<a name="l00284"></a>00284 {
+<a name="l00285"></a>00285 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Geometry1 <span class="keyword">const</span>&amp; g1,
+<a name="l00286"></a>00286 Geometry2 <span class="keyword">const</span>&amp; g2, OutputIterator out)
+<a name="l00287"></a>00287 {
+<a name="l00288"></a>00288 <span class="keywordflow">return</span> <a class="code" href="group__intersection.html#gebe4cbe7f224f01d9d92f604888002a1" title="Intersects two geometries.">intersection_inserter</a>
+<a name="l00289"></a>00289 &lt;
+<a name="l00290"></a>00290 GeometryTag2, GeometryTag1, GeometryTag3,
+<a name="l00291"></a>00291 Geometry2, Geometry1,
+<a name="l00292"></a>00292 OutputIterator, GeometryOut
+<a name="l00293"></a>00293 &gt;::apply(g2, g1, out);
+<a name="l00294"></a>00294 }
+<a name="l00295"></a>00295 };
+<a name="l00296"></a>00296
+<a name="l00297"></a>00297
+<a name="l00298"></a>00298
+<a name="l00299"></a>00299 } <span class="comment">// namespace dispatch</span>
+<a name="l00300"></a>00300 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00301"></a>00301 <span class="preprocessor"></span>
+<a name="l00316"></a>00316 <span class="keyword">template</span>
+<a name="l00317"></a>00317 &lt;
+<a name="l00318"></a>00318 <span class="keyword">typename</span> GeometryOut,
+<a name="l00319"></a>00319 <span class="keyword">typename</span> Geometry1,
+<a name="l00320"></a>00320 <span class="keyword">typename</span> Geometry2,
+<a name="l00321"></a>00321 <span class="keyword">typename</span> OutputIterator
+<a name="l00322"></a>00322 &gt;
+<a name="l00323"></a><a class="code" href="group__intersection.html#gebe4cbe7f224f01d9d92f604888002a1">00323</a> <span class="keyword">inline</span> OutputIterator <a class="code" href="group__intersection.html#gebe4cbe7f224f01d9d92f604888002a1" title="Intersects two geometries.">intersection_inserter</a>(Geometry1 <span class="keyword">const</span>&amp; geometry1,
+<a name="l00324"></a>00324 Geometry2 <span class="keyword">const</span>&amp; geometry2,
+<a name="l00325"></a>00325 OutputIterator out)
+<a name="l00326"></a>00326 {
+<a name="l00327"></a>00327 concept::check&lt;const Geometry1&gt;();
+<a name="l00328"></a>00328 concept::check&lt;const Geometry2&gt;();
+<a name="l00329"></a>00329
+<a name="l00330"></a>00330 <span class="keywordflow">return</span> boost::mpl::if_c
+<a name="l00331"></a>00331 &lt;
+<a name="l00332"></a>00332 <a class="code" href="structggl_1_1reverse__dispatch.html">reverse_dispatch&lt;Geometry1, Geometry2&gt;::type::value</a>,
+<a name="l00333"></a>00333 dispatch::intersection_inserter_reversed
+<a name="l00334"></a>00334 &lt;
+<a name="l00335"></a>00335 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry1&gt;::type</a>,
+<a name="l00336"></a>00336 <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="l00337"></a>00337 <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="l00338"></a>00338 Geometry1,
+<a name="l00339"></a>00339 Geometry2,
+<a name="l00340"></a>00340 OutputIterator, GeometryOut
+<a name="l00341"></a>00341 &gt;,
+<a name="l00342"></a>00342 <a class="code" href="group__intersection.html#gebe4cbe7f224f01d9d92f604888002a1" title="Intersects two geometries.">dispatch::intersection_inserter</a>
+<a name="l00343"></a>00343 &lt;
+<a name="l00344"></a>00344 <span class="keyword">typename</span> tag&lt;Geometry1&gt;::type,
+<a name="l00345"></a>00345 <span class="keyword">typename</span> tag&lt;Geometry2&gt;::type,
+<a name="l00346"></a>00346 <span class="keyword">typename</span> tag&lt;GeometryOut&gt;::type,
+<a name="l00347"></a>00347 Geometry1,
+<a name="l00348"></a>00348 Geometry2,
+<a name="l00349"></a>00349 OutputIterator, GeometryOut
+<a name="l00350"></a>00350 &gt;
+<a name="l00351"></a>00351 &gt;::type::apply(geometry1, geometry2, out);
+<a name="l00352"></a>00352 }
+<a name="l00353"></a>00353
+<a name="l00354"></a>00354
+<a name="l00355"></a>00355 } <span class="comment">// ggl</span>
+<a name="l00356"></a>00356
+<a name="l00357"></a>00357
+<a name="l00358"></a>00358 <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>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 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>
+
+<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>c:/svn/ggl/formal_review/boost/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 Geometry , typename Strategy &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">length_result&lt; Geometry &gt;::type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__length.html#gc25f493cf56a02b9f0077e18a444bed8">ggl::length</a> (Geometry const &amp;geometry, Strategy 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 Geometry &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">length_result&lt; Geometry &gt;::type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf">ggl::length</a> (Geometry const &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>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp_source.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,225 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="geometries_2concepts_2check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;<a class="code" href="assign_8hpp.html">ggl/algorithms/assign.hpp</a>&gt;</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;<a class="code" href="calculate__null_8hpp.html">ggl/algorithms/detail/calculate_null.hpp</a>&gt;</span>
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;<a class="code" href="strategies_2distance_8hpp.html">ggl/strategies/distance.hpp</a>&gt;</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;<a class="code" href="length__result_8hpp.html">ggl/strategies/length_result.hpp</a>&gt;</span>
+<a name="l00030"></a>00030
+<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>00048
+<a name="l00049"></a>00049
+<a name="l00050"></a>00050 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00051"></a>00051 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a> {
+<a name="l00052"></a>00052
+<a name="l00053"></a>00053
+<a name="l00054"></a>00054 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Segment, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00055"></a>00055 <span class="keyword">struct </span>segment_length
+<a name="l00056"></a>00056 {
+<a name="l00057"></a>00057 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keyword">typename</span> length_result&lt;Segment&gt;::type apply(
+<a name="l00058"></a>00058 Segment <span class="keyword">const</span>&amp; segment, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00059"></a>00059 {
+<a name="l00060"></a>00060 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;Segment&gt;::type point_type;
+<a name="l00061"></a>00061 point_type p1, p2;
+<a name="l00062"></a>00062 assign_point_from_index&lt;0&gt;(segment, p1);
+<a name="l00063"></a>00063 assign_point_from_index&lt;1&gt;(segment, p2);
+<a name="l00064"></a>00064 <span class="keywordflow">return</span> strategy.apply(p1, p2);
+<a name="l00065"></a>00065 }
+<a name="l00066"></a>00066 };
+<a name="l00067"></a>00067
+<a name="l00074"></a>00074 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00075"></a>00075 <span class="keyword">struct </span>range_length
+<a name="l00076"></a>00076 {
+<a name="l00077"></a>00077 <span class="keyword">typedef</span> <span class="keyword">typename</span> length_result&lt;Range&gt;::type return_type;
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 <span class="keyword">static</span> <span class="keyword">inline</span> return_type apply(
+<a name="l00080"></a>00080 Range <span class="keyword">const</span>&amp; range, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00081"></a>00081 {
+<a name="l00082"></a>00082 return_type sum = return_type();
+<a name="l00083"></a>00083
+<a name="l00084"></a>00084 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator&lt;Range&gt;::type iterator_type;
+<a name="l00085"></a>00085 iterator_type it = boost::begin(range);
+<a name="l00086"></a>00086 <span class="keywordflow">if</span> (it != boost::end(range))
+<a name="l00087"></a>00087 {
+<a name="l00088"></a>00088 iterator_type previous = it++;
+<a name="l00089"></a>00089 <span class="keywordflow">while</span>(it != boost::end(range))
+<a name="l00090"></a>00090 {
+<a name="l00091"></a>00091 <span class="comment">// Add point-point distance using the return type belonging</span>
+<a name="l00092"></a>00092 <span class="comment">// to strategy</span>
+<a name="l00093"></a>00093 sum += strategy.apply(*previous, *it);
+<a name="l00094"></a>00094 previous = it++;
+<a name="l00095"></a>00095 }
+<a name="l00096"></a>00096 }
+<a name="l00097"></a>00097
+<a name="l00098"></a>00098 <span class="keywordflow">return</span> sum;
+<a name="l00099"></a>00099 }
+<a name="l00100"></a>00100 };
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 }} <span class="comment">// namespace detail::length</span>
+<a name="l00103"></a>00103 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00104"></a>00104 <span class="preprocessor"></span>
+<a name="l00105"></a>00105 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00106"></a>00106 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<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> Tag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00111"></a>00111 <span class="keyword">struct </span><a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a> : detail::calculate_null
+<a name="l00112"></a>00112 &lt;
+<a name="l00113"></a>00113 typename length_result&lt;Geometry&gt;::type,
+<a name="l00114"></a>00114 Geometry,
+<a name="l00115"></a>00115 Strategy
+<a name="l00116"></a>00116 &gt;
+<a name="l00117"></a>00117 {};
+<a name="l00118"></a>00118
+<a name="l00119"></a>00119
+<a name="l00120"></a>00120 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00121"></a>00121 <span class="keyword">struct </span><a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>&lt;linestring_tag, Geometry, Strategy&gt;
+<a name="l00122"></a>00122 : detail::<a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>::range_length&lt;Geometry, Strategy&gt;
+<a name="l00123"></a>00123 {};
+<a name="l00124"></a>00124
+<a name="l00125"></a>00125
+<a name="l00126"></a>00126 <span class="comment">// RING: length is currently 0; it might be argued that it is the "perimeter"</span>
+<a name="l00127"></a>00127
+<a name="l00128"></a>00128
+<a name="l00129"></a>00129 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00130"></a>00130 <span class="keyword">struct </span><a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>&lt;segment_tag, Geometry, Strategy&gt;
+<a name="l00131"></a>00131 : detail::<a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>::segment_length&lt;Geometry, Strategy&gt;
+<a name="l00132"></a>00132 {};
+<a name="l00133"></a>00133
+<a name="l00134"></a>00134
+<a name="l00135"></a>00135 } <span class="comment">// namespace dispatch</span>
+<a name="l00136"></a>00136 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00137"></a>00137 <span class="preprocessor"></span>
+<a name="l00138"></a>00138
+<a name="l00153"></a>00153 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00154"></a><a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf">00154</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1length__result.html" title="Meta-function defining return type of length function.">length_result&lt;Geometry&gt;::type</a> <a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>(
+<a name="l00155"></a>00155 Geometry <span class="keyword">const</span>&amp; geometry)
+<a name="l00156"></a>00156 {
+<a name="l00157"></a>00157 concept::check&lt;const Geometry&gt;();
+<a name="l00158"></a>00158
+<a name="l00159"></a>00159 <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="l00160"></a>00160 <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="l00161"></a>00161 <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="l00162"></a>00162 &lt;
+<a name="l00163"></a>00163 cs_tag,
+<a name="l00164"></a>00164 cs_tag,
+<a name="l00165"></a>00165 point_type,
+<a name="l00166"></a>00166 point_type
+<a name="l00167"></a>00167 &gt;::type strategy_type;
+<a name="l00168"></a>00168
+<a name="l00169"></a>00169 <span class="keywordflow">return</span> <a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">dispatch::length</a>
+<a name="l00170"></a>00170 &lt;
+<a name="l00171"></a>00171 <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="l00172"></a>00172 Geometry,
+<a name="l00173"></a>00173 strategy_type
+<a name="l00174"></a>00174 &gt;::apply(geometry, strategy_type());
+<a name="l00175"></a>00175 }
+<a name="l00176"></a>00176
+<a name="l00177"></a>00177
+<a name="l00195"></a>00195 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00196"></a><a class="code" href="group__length.html#gc25f493cf56a02b9f0077e18a444bed8">00196</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1length__result.html" title="Meta-function defining return type of length function.">length_result&lt;Geometry&gt;::type</a> <a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>(
+<a name="l00197"></a>00197 Geometry <span class="keyword">const</span>&amp; geometry, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00198"></a>00198 {
+<a name="l00199"></a>00199 concept::check&lt;const Geometry&gt;();
+<a name="l00200"></a>00200
+<a name="l00201"></a>00201 <span class="keywordflow">return</span> <a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">dispatch::length</a>
+<a name="l00202"></a>00202 &lt;
+<a name="l00203"></a>00203 <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="l00204"></a>00204 Geometry,
+<a name="l00205"></a>00205 Strategy
+<a name="l00206"></a>00206 &gt;::apply(geometry, strategy);
+<a name="l00207"></a>00207 }
+<a name="l00208"></a>00208
+<a name="l00209"></a>00209
+<a name="l00210"></a>00210 } <span class="comment">// namespace ggl</span>
+<a name="l00211"></a>00211
+<a name="l00212"></a>00212 <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>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 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>
+
+<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>c:/svn/ggl/formal_review/boost/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>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp_source.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,200 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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 <span class="preprocessor">#include &lt;<a class="code" href="geometries_2concepts_2check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>ggl
+<a name="l00024"></a>00024 {
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a> {
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029
+<a name="l00030"></a>00030 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Range&gt;
+<a name="l00031"></a>00031 <span class="keyword">struct </span>range_count
+<a name="l00032"></a>00032 {
+<a name="l00033"></a>00033 <span class="keyword">static</span> <span class="keyword">inline</span> std::size_t apply(Range <span class="keyword">const</span>&amp; range)
+<a name="l00034"></a>00034 {
+<a name="l00035"></a>00035 <span class="keywordflow">return</span> boost::size(range);
+<a name="l00036"></a>00036 }
+<a name="l00037"></a>00037 };
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, std::<span class="keywordtype">size_t</span> D&gt;
+<a name="l00040"></a>00040 <span class="keyword">struct </span>other_count
+<a name="l00041"></a>00041 {
+<a name="l00042"></a>00042 <span class="keyword">static</span> <span class="keyword">inline</span> std::size_t apply(Geometry <span class="keyword">const</span>&amp; geometry)
+<a name="l00043"></a>00043 {
+<a name="l00044"></a>00044 <span class="keywordflow">return</span> D;
+<a name="l00045"></a>00045 }
+<a name="l00046"></a>00046 };
+<a name="l00047"></a>00047
+<a name="l00048"></a>00048 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon&gt;
+<a name="l00049"></a>00049 <span class="keyword">struct </span>polygon_count
+<a name="l00050"></a>00050 {
+<a name="l00051"></a>00051 <span class="keyword">static</span> <span class="keyword">inline</span> std::size_t apply(Polygon <span class="keyword">const</span>&amp; poly)
+<a name="l00052"></a>00052 {
+<a name="l00053"></a>00053 std::size_t n = boost::size(<a class="code" href="group__access.html#g4dd59c8603683e869f1d74bd40045b8b" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly));
+<a name="l00054"></a>00054 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00055"></a>00055 &lt;
+<a name="l00056"></a>00056 <span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type
+<a name="l00057"></a>00057 &gt;::type iterator;
+<a name="l00058"></a>00058
+<a name="l00059"></a>00059 <span class="keywordflow">for</span> (iterator it = boost::begin(<a class="code" href="group__access.html#gaee58ea9a166a2ca07597daf34433d7f" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00060"></a>00060 it != boost::end(<a class="code" href="group__access.html#gaee58ea9a166a2ca07597daf34433d7f" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00061"></a>00061 ++it)
+<a name="l00062"></a>00062 {
+<a name="l00063"></a>00063 n += boost::size(*it);
+<a name="l00064"></a>00064 }
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066 <span class="keywordflow">return</span> n;
+<a name="l00067"></a>00067 }
+<a name="l00068"></a>00068 };
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070 }} <span class="comment">// namespace detail::num_points</span>
+<a name="l00071"></a>00071 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00072"></a>00072 <span class="preprocessor"></span>
+<a name="l00073"></a>00073
+<a name="l00074"></a>00074 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00075"></a>00075 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00076"></a>00076 {
+<a name="l00077"></a>00077
+<a name="l00078"></a>00078 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> GeometryTag, <span class="keywordtype">bool</span> Linear, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00079"></a>00079 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>
+<a name="l00080"></a>00080 {
+<a name="l00081"></a>00081 };
+<a name="l00082"></a>00082
+<a name="l00083"></a>00083 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> GeometryTag, <span class="keyword">typename</span> Geometry&gt;
+<a name="l00084"></a>00084 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;GeometryTag, true, Geometry&gt;
+<a name="l00085"></a>00085 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::range_count&lt;Geometry&gt;
+<a name="l00086"></a>00086 {
+<a name="l00087"></a>00087 };
+<a name="l00088"></a>00088
+<a name="l00089"></a>00089 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00090"></a>00090 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;point_tag, false, Geometry&gt;
+<a name="l00091"></a>00091 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count&lt;Geometry, 1&gt;
+<a name="l00092"></a>00092 {
+<a name="l00093"></a>00093 };
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00096"></a>00096 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;box_tag, false, Geometry&gt;
+<a name="l00097"></a>00097 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count&lt;Geometry, 4&gt;
+<a name="l00098"></a>00098 {
+<a name="l00099"></a>00099 };
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00102"></a>00102 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;segment_tag, false, Geometry&gt;
+<a name="l00103"></a>00103 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count&lt;Geometry, 2&gt;
+<a name="l00104"></a>00104 {
+<a name="l00105"></a>00105 };
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00109"></a>00109 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>&lt;polygon_tag, false, Geometry&gt;
+<a name="l00110"></a>00110 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::polygon_count&lt;Geometry&gt;
+<a name="l00111"></a>00111 {
+<a name="l00112"></a>00112 };
+<a name="l00113"></a>00113
+<a name="l00114"></a>00114 } <span class="comment">// namespace dispatch</span>
+<a name="l00115"></a>00115 <span class="preprocessor">#endif</span>
+<a name="l00116"></a>00116 <span class="preprocessor"></span>
+<a name="l00117"></a>00117
+<a name="l00128"></a>00128 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00129"></a><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267">00129</a> <span class="keyword">inline</span> std::size_t <a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>(Geometry <span class="keyword">const</span>&amp; geometry)
+<a name="l00130"></a>00130 {
+<a name="l00131"></a>00131 concept::check&lt;const Geometry&gt;();
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const&lt;Geometry&gt;::type ncg_type;
+<a name="l00134"></a>00134
+<a name="l00135"></a>00135 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">dispatch::num_points</a>
+<a name="l00136"></a>00136 &lt;
+<a name="l00137"></a>00137 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00138"></a>00138 <a class="code" href="structggl_1_1is__linear.html" title="Meta-function defining &amp;quot;true&amp;quot; for linear types (linestring,ring), &amp;quot;false&amp;quot;...">is_linear&lt;ncg_type&gt;::value</a>,
+<a name="l00139"></a>00139 ncg_type
+<a name="l00140"></a>00140 &gt;::apply(geometry);
+<a name="l00141"></a>00141 }
+<a name="l00142"></a>00142
+<a name="l00143"></a>00143 }
+<a name="l00144"></a>00144
+<a name="l00145"></a>00145
+<a name="l00146"></a>00146 <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>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 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>
+
+<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>c:/svn/ggl/formal_review/boost/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">length_result&lt; Geometry &gt;::type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__perimeter.html#g78c3f8a2c3eed80533521425079cdf55">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">length_result&lt; Geometry &gt;::type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9">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>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp_source.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,173 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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
+<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;<a class="code" href="geometries_2concepts_2check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="length__result_8hpp.html">ggl/strategies/length_result.hpp</a>&gt;</span>
+<a name="l00018"></a>00018
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="algorithms_2length_8hpp.html">ggl/algorithms/length.hpp</a>&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;<a class="code" href="calculate__null_8hpp.html">ggl/algorithms/detail/calculate_null.hpp</a>&gt;</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="calculate__sum_8hpp.html">ggl/algorithms/detail/calculate_sum.hpp</a>&gt;</span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023
+<a name="l00033"></a>00033 <span class="keyword">namespace </span>ggl
+<a name="l00034"></a>00034 {
+<a name="l00035"></a>00035
+<a name="l00036"></a>00036 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00038"></a>00038 {
+<a name="l00039"></a>00039
+<a name="l00040"></a>00040 <span class="comment">// Default perimeter is 0.0, specializations implement calculated values</span>
+<a name="l00041"></a>00041 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00042"></a>00042 <span class="keyword">struct </span><a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9" title="Calculate perimeter of a geometry.">perimeter</a> : detail::calculate_null
+<a name="l00043"></a>00043 &lt;
+<a name="l00044"></a>00044 typename length_result&lt;Geometry&gt;::type,
+<a name="l00045"></a>00045 Geometry,
+<a name="l00046"></a>00046 Strategy
+<a name="l00047"></a>00047 &gt;
+<a name="l00048"></a>00048 {};
+<a name="l00049"></a>00049
+<a name="l00050"></a>00050 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00051"></a>00051 <span class="keyword">struct </span><a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9" title="Calculate perimeter of a geometry.">perimeter</a>&lt;ring_tag, Geometry, Strategy&gt;
+<a name="l00052"></a>00052 : detail::<a class="code" href="group__length.html#g3ff05ea6b83363ce847770d3abe156bf" title="Calculate length of a geometry.">length</a>::range_length&lt;Geometry, Strategy&gt;
+<a name="l00053"></a>00053 {};
+<a name="l00054"></a>00054
+<a name="l00055"></a>00055 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00056"></a>00056 <span class="keyword">struct </span><a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9" title="Calculate perimeter of a geometry.">perimeter</a>&lt;polygon_tag, Polygon, Strategy&gt;
+<a name="l00057"></a>00057 : detail::calculate_polygon_sum
+<a name="l00058"></a>00058 &lt;
+<a name="l00059"></a>00059 typename length_result&lt;Polygon&gt;::type,
+<a name="l00060"></a>00060 Polygon,
+<a name="l00061"></a>00061 Strategy,
+<a name="l00062"></a>00062 detail::length::range_length
+<a name="l00063"></a>00063 &lt;
+<a name="l00064"></a>00064 typename ring_type&lt;Polygon&gt;::type,
+<a name="l00065"></a>00065 Strategy
+<a name="l00066"></a>00066 &gt;
+<a name="l00067"></a>00067 &gt;
+<a name="l00068"></a>00068 {};
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071 <span class="comment">// box,n-sphere: to be implemented</span>
+<a name="l00072"></a>00072
+<a name="l00073"></a>00073 } <span class="comment">// namespace dispatch</span>
+<a name="l00074"></a>00074 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00075"></a>00075 <span class="preprocessor"></span>
+<a name="l00076"></a>00076
+<a name="l00086"></a>00086 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00087"></a><a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9">00087</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1length__result.html" title="Meta-function defining return type of length function.">length_result&lt;Geometry&gt;::type</a> <a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9" title="Calculate perimeter of a geometry.">perimeter</a>(
+<a name="l00088"></a>00088 Geometry <span class="keyword">const</span>&amp; geometry)
+<a name="l00089"></a>00089 {
+<a name="l00090"></a>00090 concept::check&lt;const Geometry&gt;();
+<a name="l00091"></a>00091
+<a name="l00092"></a>00092 <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="l00093"></a>00093 <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="l00094"></a>00094 <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="l00095"></a>00095 &lt;
+<a name="l00096"></a>00096 cs_tag,
+<a name="l00097"></a>00097 cs_tag,
+<a name="l00098"></a>00098 point_type,
+<a name="l00099"></a>00099 point_type
+<a name="l00100"></a>00100 &gt;::type strategy_type;
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 <span class="keywordflow">return</span> <a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9" title="Calculate perimeter of a geometry.">dispatch::perimeter</a>
+<a name="l00103"></a>00103 &lt;
+<a name="l00104"></a>00104 <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="l00105"></a>00105 Geometry,
+<a name="l00106"></a>00106 strategy_type
+<a name="l00107"></a>00107 &gt;::apply(geometry, strategy_type());
+<a name="l00108"></a>00108 }
+<a name="l00109"></a>00109
+<a name="l00120"></a>00120 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00121"></a><a class="code" href="group__perimeter.html#g78c3f8a2c3eed80533521425079cdf55">00121</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1length__result.html" title="Meta-function defining return type of length function.">length_result&lt;Geometry&gt;::type</a> <a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9" title="Calculate perimeter of a geometry.">perimeter</a>(
+<a name="l00122"></a>00122 Geometry <span class="keyword">const</span>&amp; geometry, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00123"></a>00123 {
+<a name="l00124"></a>00124 concept::check&lt;const Geometry&gt;();
+<a name="l00125"></a>00125
+<a name="l00126"></a>00126 <span class="keywordflow">return</span> <a class="code" href="group__perimeter.html#g02588697f4c401400c3007d3ff091df9" title="Calculate perimeter of a geometry.">dispatch::perimeter</a>
+<a name="l00127"></a>00127 &lt;
+<a name="l00128"></a>00128 <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="l00129"></a>00129 Geometry,
+<a name="l00130"></a>00130 Strategy
+<a name="l00131"></a>00131 &gt;::apply(geometry, strategy);
+<a name="l00132"></a>00132 }
+<a name="l00133"></a>00133
+<a name="l00134"></a>00134 } <span class="comment">// namespace ggl</span>
+<a name="l00135"></a>00135
+<a name="l00136"></a>00136 <span class="preprocessor">#endif // GGL_ALGORITHMS_PERIMETER_HPP</span>
+<a name="l00137"></a>00137 <span class="preprocessor"></span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,86 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp_source.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,608 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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
+<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="geometries_2concepts_2check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;<a class="code" href="math_8hpp.html">ggl/util/math.hpp</a>&gt;</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>&gt;</span>
+<a name="l00031"></a>00031
+<a name="l00032"></a>00032
+<a name="l00044"></a>00044 <span class="keyword">namespace </span>ggl
+<a name="l00045"></a>00045 {
+<a name="l00046"></a>00046
+<a name="l00047"></a>00047
+<a name="l00059"></a>00059 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00060"></a><a class="code" href="structggl_1_1section.html">00060</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1section.html" title="Structure containing section information.">section</a>
+<a name="l00061"></a>00061 {
+<a name="l00062"></a><a class="code" href="structggl_1_1section.html#da71a242258d79119fb6df06d290095e">00062</a> <span class="keyword">typedef</span> Box <a class="code" href="structggl_1_1section.html#da71a242258d79119fb6df06d290095e">box_type</a>;
+<a name="l00063"></a>00063
+<a name="l00064"></a><a class="code" href="structggl_1_1section.html#685294c3e7107f87fcb7def9e2a6f430">00064</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#685294c3e7107f87fcb7def9e2a6f430">directions</a>[DimensionCount];
+<a name="l00065"></a><a class="code" href="structggl_1_1section.html#fe6e8096e811d4248d64a0a4a9817edc">00065</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#fe6e8096e811d4248d64a0a4a9817edc">ring_index</a>;
+<a name="l00066"></a><a class="code" href="structggl_1_1section.html#0403b41208359f079cf29876de56d182">00066</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#0403b41208359f079cf29876de56d182">multi_index</a>;
+<a name="l00067"></a><a class="code" href="structggl_1_1section.html#dbdec35a5e0878ecc3ac31d28dd12f6f">00067</a> Box <a class="code" href="structggl_1_1section.html#dbdec35a5e0878ecc3ac31d28dd12f6f">bounding_box</a>;
+<a name="l00068"></a>00068
+<a name="l00069"></a><a class="code" href="structggl_1_1section.html#fcde79e0f07f3744382e8ecbb6ceeaa3">00069</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#fcde79e0f07f3744382e8ecbb6ceeaa3">begin_index</a>;
+<a name="l00070"></a><a class="code" href="structggl_1_1section.html#22897e4894f0d4dcaa80f0ab30376c68">00070</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#22897e4894f0d4dcaa80f0ab30376c68">end_index</a>;
+<a name="l00071"></a><a class="code" href="structggl_1_1section.html#c53669933d966cf7c9c19b8376b5b731">00071</a> std::size_t <a class="code" href="structggl_1_1section.html#c53669933d966cf7c9c19b8376b5b731">count</a>;
+<a name="l00072"></a><a class="code" href="structggl_1_1section.html#e8630665af85810bc73eaabbe8b8d1b5">00072</a> std::size_t <a class="code" href="structggl_1_1section.html#e8630665af85810bc73eaabbe8b8d1b5">range_count</a>;
+<a name="l00073"></a><a class="code" href="structggl_1_1section.html#ef8836af463d9d92f0c2fc6bc4668f54">00073</a> <span class="keywordtype">bool</span> <a class="code" href="structggl_1_1section.html#ef8836af463d9d92f0c2fc6bc4668f54">duplicate</a>;
+<a name="l00074"></a><a class="code" href="structggl_1_1section.html#0d442355c8be6a391319da7699ba4055">00074</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#0d442355c8be6a391319da7699ba4055">non_duplicate_index</a>;
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076
+<a name="l00077"></a><a class="code" href="structggl_1_1section.html#6b36770260c6a2c89a9a63fc641064c4">00077</a> <span class="keyword">inline</span> <a class="code" href="structggl_1_1section.html#6b36770260c6a2c89a9a63fc641064c4">section</a>()
+<a name="l00078"></a>00078 : <a class="code" href="structggl_1_1section.html#fe6e8096e811d4248d64a0a4a9817edc">ring_index</a>(-99)
+<a name="l00079"></a>00079 , <a class="code" href="structggl_1_1section.html#0403b41208359f079cf29876de56d182">multi_index</a>(-99)
+<a name="l00080"></a>00080 , <a class="code" href="structggl_1_1section.html#fcde79e0f07f3744382e8ecbb6ceeaa3">begin_index</a>(-1)
+<a name="l00081"></a>00081 , <a class="code" href="structggl_1_1section.html#22897e4894f0d4dcaa80f0ab30376c68">end_index</a>(-1)
+<a name="l00082"></a>00082 , <a class="code" href="structggl_1_1section.html#c53669933d966cf7c9c19b8376b5b731">count</a>(0)
+<a name="l00083"></a>00083 , <a class="code" href="structggl_1_1section.html#e8630665af85810bc73eaabbe8b8d1b5">range_count</a>(0)
+<a name="l00084"></a>00084 , <a class="code" href="structggl_1_1section.html#ef8836af463d9d92f0c2fc6bc4668f54">duplicate</a>(false)
+<a name="l00085"></a>00085 , <a class="code" href="structggl_1_1section.html#0d442355c8be6a391319da7699ba4055">non_duplicate_index</a>(-1)
+<a name="l00086"></a>00086 {
+<a name="l00087"></a>00087 <a class="code" href="group__access.html#g490821bd25a63cc584be1319375794f0" title="assign to a box inverse infinite">assign_inverse</a>(<a class="code" href="structggl_1_1section.html#dbdec35a5e0878ecc3ac31d28dd12f6f">bounding_box</a>);
+<a name="l00088"></a>00088 <span class="keywordflow">for</span> (<span class="keyword">register</span> std::size_t i = 0; i &lt; DimensionCount; i++)
+<a name="l00089"></a>00089 {
+<a name="l00090"></a>00090 <a class="code" href="structggl_1_1section.html#685294c3e7107f87fcb7def9e2a6f430">directions</a>[i] = 0;
+<a name="l00091"></a>00091 }
+<a name="l00092"></a>00092 }
+<a name="l00093"></a>00093 };
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095
+<a name="l00102"></a>00102 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Box, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00103"></a><a class="code" href="structggl_1_1sections.html">00103</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a> : std::vector&lt;section&lt;Box, DimensionCount&gt; &gt;
+<a name="l00104"></a>00104 {
+<a name="l00105"></a><a class="code" href="structggl_1_1sections.html#9ad75a29e07d632e85847e4f206715ba">00105</a> <span class="keyword">typedef</span> Box <a class="code" href="structggl_1_1sections.html#9ad75a29e07d632e85847e4f206715ba">box_type</a>;
+<a name="l00106"></a><a class="code" href="structggl_1_1sections.html#1c9f89074b8fa60cc7c6e11ff323093e">00106</a> <span class="keyword">static</span> <span class="keyword">const</span> std::size_t <a class="code" href="structggl_1_1sections.html#1c9f89074b8fa60cc7c6e11ff323093e">value</a> = DimensionCount;
+<a name="l00107"></a>00107 };
+<a name="l00108"></a>00108
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110 <span class="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="group__utility.html#gd90ba94c2d65876e9485b2bbd10def34" title="returns true if both arguments are equal.">ggl::math::equals</a>(diff, 0))
+<a name="l00208"></a>00208 {
+<a name="l00209"></a>00209 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00210"></a>00210 }
+<a name="l00211"></a>00211
+<a name="l00212"></a>00212 <span class="keywordflow">return</span> check_duplicate_loop
+<a name="l00213"></a>00213 &lt;
+<a name="l00214"></a>00214 Segment, Dimension + 1, DimensionCount
+<a name="l00215"></a>00215 &gt;::apply(seg);
+<a name="l00216"></a>00216 }
+<a name="l00217"></a>00217 };
+<a name="l00218"></a>00218
+<a name="l00219"></a>00219 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00220"></a>00220 <span class="keyword">struct </span>check_duplicate_loop&lt;Segment, DimensionCount, DimensionCount&gt;
+<a name="l00221"></a>00221 {
+<a name="l00222"></a>00222 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(Segment <span class="keyword">const</span>&amp;)
+<a name="l00223"></a>00223 {
+<a name="l00224"></a>00224 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00225"></a>00225 }
+<a name="l00226"></a>00226 };
+<a name="l00227"></a>00227
+<a name="l00228"></a>00228 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00229"></a>00229 <span class="keyword">struct </span>assign_loop
+<a name="l00230"></a>00230 {
+<a name="l00231"></a>00231 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(T dims[DimensionCount], <span class="keywordtype">int</span> <span class="keyword">const</span> value)
+<a name="l00232"></a>00232 {
+<a name="l00233"></a>00233 dims[Dimension] = value;
+<a name="l00234"></a>00234 assign_loop&lt;T, Dimension + 1, DimensionCount&gt;::apply(dims, value);
+<a name="l00235"></a>00235 }
+<a name="l00236"></a>00236 };
+<a name="l00237"></a>00237
+<a name="l00238"></a>00238 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> DimensionCount&gt;
+<a name="l00239"></a>00239 <span class="keyword">struct </span>assign_loop&lt;T, DimensionCount, DimensionCount&gt;
+<a name="l00240"></a>00240 {
+<a name="l00241"></a>00241 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(T dims[DimensionCount], <span class="keywordtype">int</span> <span class="keyword">const</span>)
+<a name="l00242"></a>00242 {
+<a name="l00243"></a>00243 boost::ignore_unused_variable_warning(dims);
+<a name="l00244"></a>00244 }
+<a name="l00245"></a>00245 };
+<a name="l00246"></a>00246
+<a name="l00247"></a>00247
+<a name="l00248"></a>00248 <span class="keyword">template</span>
+<a name="l00249"></a>00249 &lt;
+<a name="l00250"></a>00250 <span class="keyword">typename</span> Range,
+<a name="l00251"></a>00251 <span class="keyword">typename</span> Point,
+<a name="l00252"></a>00252 <span class="keyword">typename</span> Sections,
+<a name="l00253"></a>00253 std::size_t DimensionCount,
+<a name="l00254"></a>00254 std::size_t MaxCount
+<a name="l00255"></a>00255 &gt;
+<a name="l00256"></a>00256 <span class="keyword">struct </span>sectionalize_range
+<a name="l00257"></a>00257 {
+<a name="l00258"></a>00258 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Range <span class="keyword">const</span>&amp; range, Sections&amp; <a class="code" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a>,
+<a name="l00259"></a>00259 <span class="keywordtype">int</span> ring_index = -1, <span class="keywordtype">int</span> multi_index = -1)
+<a name="l00260"></a>00260 {
+<a name="l00261"></a>00261 <span class="keyword">typedef</span> <a class="code" href="classggl_1_1segment.html" title="Class segment: small class containing two (templatized) point references.">segment&lt;const Point&gt;</a> segment_type;
+<a name="l00262"></a>00262
+<a name="l00263"></a>00263 std::size_t <span class="keyword">const</span> n = boost::size(range);
+<a name="l00264"></a>00264 <span class="keywordflow">if</span> (n == 0)
+<a name="l00265"></a>00265 {
+<a name="l00266"></a>00266 <span class="comment">// Zero points, no section</span>
+<a name="l00267"></a>00267 <span class="keywordflow">return</span>;
+<a name="l00268"></a>00268 }
+<a name="l00269"></a>00269
+<a name="l00270"></a>00270 <span class="keywordflow">if</span> (n == 1)
+<a name="l00271"></a>00271 {
+<a name="l00272"></a>00272 <span class="comment">// Line with one point ==&gt; no sections</span>
+<a name="l00273"></a>00273 <span class="keywordflow">return</span>;
+<a name="l00274"></a>00274 }
+<a name="l00275"></a>00275
+<a name="l00276"></a>00276 <span class="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#g4dd59c8603683e869f1d74bd40045b8b" 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#gaee58ea9a166a2ca07597daf34433d7f" 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#gaee58ea9a166a2ca07597daf34433d7f" 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="group__access.html#g9ddc8c5f7803a48d3ce186f89072c9ed" title="Assign the 4 points of a 2D box.">assign_box_corners</a>(box, ll, lr, ul, ur);
+<a name="l00430"></a>00430
+<a name="l00431"></a>00431 std::vector&lt;point_type&gt; points;
+<a name="l00432"></a>00432 points.push_back(ll);
+<a name="l00433"></a>00433 points.push_back(ul);
+<a name="l00434"></a>00434 points.push_back(ur);
+<a name="l00435"></a>00435 points.push_back(lr);
+<a name="l00436"></a>00436 points.push_back(ll);
+<a name="l00437"></a>00437
+<a name="l00438"></a>00438 sectionalize_range
+<a name="l00439"></a>00439 &lt;
+<a name="l00440"></a>00440 std::vector&lt;point_type&gt;,
+<a name="l00441"></a>00441 point_type,
+<a name="l00442"></a>00442 Sections,
+<a name="l00443"></a>00443 DimensionCount,
+<a name="l00444"></a>00444 MaxCount
+<a name="l00445"></a>00445 &gt;::apply(points, sections);
+<a name="l00446"></a>00446 }
+<a name="l00447"></a>00447 };
+<a name="l00448"></a>00448
+<a name="l00449"></a>00449 }} <span class="comment">// namespace detail::sectionalize</span>
+<a name="l00450"></a>00450 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00451"></a>00451 <span class="preprocessor"></span>
+<a name="l00452"></a>00452
+<a name="l00453"></a>00453 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00454"></a>00454 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00455"></a>00455 {
+<a name="l00456"></a>00456
+<a name="l00457"></a>00457 <span class="keyword">template</span>
+<a name="l00458"></a>00458 &lt;
+<a name="l00459"></a>00459 <span class="keyword">typename</span> Tag,
+<a name="l00460"></a>00460 <span class="keyword">typename</span> Geometry,
+<a name="l00461"></a>00461 <span class="keyword">typename</span> Sections,
+<a name="l00462"></a>00462 std::size_t DimensionCount,
+<a name="l00463"></a>00463 std::size_t MaxCount
+<a name="l00464"></a>00464 &gt;
+<a name="l00465"></a>00465 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>
+<a name="l00466"></a>00466 {};
+<a name="l00467"></a>00467
+<a name="l00468"></a>00468 <span class="keyword">template</span>
+<a name="l00469"></a>00469 &lt;
+<a name="l00470"></a>00470 <span class="keyword">typename</span> Box,
+<a name="l00471"></a>00471 <span class="keyword">typename</span> Sections,
+<a name="l00472"></a>00472 std::size_t DimensionCount,
+<a name="l00473"></a>00473 std::size_t MaxCount
+<a name="l00474"></a>00474 &gt;
+<a name="l00475"></a>00475 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>&lt;box_tag, Box, Sections, DimensionCount, MaxCount&gt;
+<a name="l00476"></a>00476 : detail::<a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>::sectionalize_box
+<a name="l00477"></a>00477 &lt;
+<a name="l00478"></a>00478 Box,
+<a name="l00479"></a>00479 Sections,
+<a name="l00480"></a>00480 DimensionCount,
+<a name="l00481"></a>00481 MaxCount
+<a name="l00482"></a>00482 &gt;
+<a name="l00483"></a>00483 {};
+<a name="l00484"></a>00484
+<a name="l00485"></a>00485 <span class="keyword">template</span>
+<a name="l00486"></a>00486 &lt;
+<a name="l00487"></a>00487 <span class="keyword">typename</span> LineString, <span class="keyword">typename</span>
+<a name="l00488"></a>00488 Sections,
+<a name="l00489"></a>00489 std::size_t DimensionCount,
+<a name="l00490"></a>00490 std::size_t MaxCount
+<a name="l00491"></a>00491 &gt;
+<a name="l00492"></a>00492 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>
+<a name="l00493"></a>00493 &lt;
+<a name="l00494"></a>00494 linestring_tag,
+<a name="l00495"></a>00495 LineString,
+<a name="l00496"></a>00496 Sections,
+<a name="l00497"></a>00497 DimensionCount,
+<a name="l00498"></a>00498 MaxCount
+<a name="l00499"></a>00499 &gt;
+<a name="l00500"></a>00500 : detail::<a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>::sectionalize_range
+<a name="l00501"></a>00501 &lt;
+<a name="l00502"></a>00502 LineString,
+<a name="l00503"></a>00503 typename point_type&lt;LineString&gt;::type,
+<a name="l00504"></a>00504 Sections,
+<a name="l00505"></a>00505 DimensionCount,
+<a name="l00506"></a>00506 MaxCount
+<a name="l00507"></a>00507 &gt;
+<a name="l00508"></a>00508 {};
+<a name="l00509"></a>00509
+<a name="l00510"></a>00510 <span class="keyword">template</span>
+<a name="l00511"></a>00511 &lt;
+<a name="l00512"></a>00512 <span class="keyword">typename</span> Range,
+<a name="l00513"></a>00513 <span class="keyword">typename</span> Sections,
+<a name="l00514"></a>00514 std::size_t DimensionCount,
+<a name="l00515"></a>00515 std::size_t MaxCount
+<a name="l00516"></a>00516 &gt;
+<a name="l00517"></a>00517 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>&lt;ring_tag, Range, Sections, DimensionCount, MaxCount&gt;
+<a name="l00518"></a>00518 : detail::<a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>::sectionalize_range
+<a name="l00519"></a>00519 &lt;
+<a name="l00520"></a>00520 Range,
+<a name="l00521"></a>00521 typename point_type&lt;Range&gt;::type,
+<a name="l00522"></a>00522 Sections,
+<a name="l00523"></a>00523 DimensionCount,
+<a name="l00524"></a>00524 MaxCount
+<a name="l00525"></a>00525 &gt;
+<a name="l00526"></a>00526 {};
+<a name="l00527"></a>00527
+<a name="l00528"></a>00528 <span class="keyword">template</span>
+<a name="l00529"></a>00529 &lt;
+<a name="l00530"></a>00530 <span class="keyword">typename</span> Polygon,
+<a name="l00531"></a>00531 <span class="keyword">typename</span> Sections,
+<a name="l00532"></a>00532 std::size_t DimensionCount,
+<a name="l00533"></a>00533 std::size_t MaxCount
+<a name="l00534"></a>00534 &gt;
+<a name="l00535"></a>00535 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>&lt;polygon_tag, Polygon, Sections, DimensionCount, MaxCount&gt;
+<a name="l00536"></a>00536 : detail::<a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>::sectionalize_polygon
+<a name="l00537"></a>00537 &lt;
+<a name="l00538"></a>00538 Polygon, Sections, DimensionCount, MaxCount
+<a name="l00539"></a>00539 &gt;
+<a name="l00540"></a>00540 {};
+<a name="l00541"></a>00541
+<a name="l00542"></a>00542 } <span class="comment">// namespace dispatch</span>
+<a name="l00543"></a>00543 <span class="preprocessor">#endif</span>
+<a name="l00544"></a>00544 <span class="preprocessor"></span>
+<a name="l00545"></a>00545
+<a name="l00555"></a>00555 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Sections&gt;
+<a name="l00556"></a><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1">00556</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>(Geometry <span class="keyword">const</span>&amp; geometry, Sections&amp; <a class="code" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a>)
+<a name="l00557"></a>00557 {
+<a name="l00558"></a>00558 concept::check&lt;const Geometry&gt;();
+<a name="l00559"></a>00559
+<a name="l00560"></a>00560 <span class="comment">// A maximum of 10 segments per section seems to give the fastest results</span>
+<a name="l00561"></a>00561 <span class="keyword">static</span> <span class="keyword">const</span> std::size_t max_segments_per_section = 10;
+<a name="l00562"></a>00562 <span class="keyword">typedef</span> <a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">dispatch::sectionalize</a>
+<a name="l00563"></a>00563 &lt;
+<a name="l00564"></a>00564 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00565"></a>00565 Geometry,
+<a name="l00566"></a>00566 Sections,
+<a name="l00567"></a>00567 Sections::value,
+<a name="l00568"></a>00568 max_segments_per_section
+<a name="l00569"></a>00569 &gt; sectionalizer_type;
+<a name="l00570"></a>00570
+<a name="l00571"></a>00571 sections.clear();
+<a name="l00572"></a>00572 sectionalizer_type::apply(geometry, sections);
+<a name="l00573"></a>00573 }
+<a name="l00574"></a>00574
+<a name="l00575"></a>00575
+<a name="l00576"></a>00576
+<a name="l00577"></a>00577
+<a name="l00578"></a>00578
+<a name="l00579"></a>00579 } <span class="comment">// namespace ggl</span>
+<a name="l00580"></a>00580
+<a name="l00581"></a>00581 <span class="preprocessor">#endif // GGL_ALGORITHMS_SECTIONALIZE_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,91 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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 Geometry &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__simplify.html#g953e1055914400f9ad3191adc5b42270">ggl::simplify</a> (Geometry const &amp;geometry, Geometry &amp;out, double max_distance)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simplify a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , typename Strategy &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d">ggl::simplify</a> (Geometry const &amp;geometry, Geometry &amp;out, double max_distance, Strategy const &amp;strategy)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simplify a geometry 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 Geometry , typename OutputIterator &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__simplify.html#g4285888f1598725bca124878ac16c656">ggl::simplify_inserter</a> (Geometry const &amp;geometry, OutputIterator out, double max_distance)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simplify a geometry, using an output iterator. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry , typename OutputIterator , typename Strategy &gt; </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a">ggl::simplify_inserter</a> (Geometry const &amp;geometry, OutputIterator out, double max_distance, Strategy const &amp;strategy)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simplify a geometry, using an output iterator and 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>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp_source.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,387 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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
+<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>&gt;</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="geometries_2concepts_2check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="simplify__douglas__peucker_8hpp.html">ggl/strategies/agnostic/simplify_douglas_peucker.hpp</a>&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="simplify__concept_8hpp.html">ggl/strategies/concepts/simplify_concept.hpp</a>&gt;</span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;<a class="code" href="clear_8hpp.html">ggl/algorithms/clear.hpp</a>&gt;</span>
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029
+<a name="l00065"></a>00065 <span class="keyword">namespace </span>ggl
+<a name="l00066"></a>00066 {
+<a name="l00067"></a>00067
+<a name="l00068"></a>00068 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00069"></a>00069 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry using a specified strategy.">simplify</a> {
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00072"></a>00072 <span class="keyword">struct </span>simplify_range_inserter
+<a name="l00073"></a>00073 {
+<a name="l00074"></a>00074 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00075"></a>00075 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Range <span class="keyword">const</span>&amp; range, OutputIterator out,
+<a name="l00076"></a>00076 <span class="keywordtype">double</span> max_distance, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00077"></a>00077 {
+<a name="l00078"></a>00078 <span class="keywordflow">if</span> (boost::size(range) &lt;= 2 || max_distance &lt; 0)
+<a name="l00079"></a>00079 {
+<a name="l00080"></a>00080 std::copy(boost::begin(range), boost::end(range), out);
+<a name="l00081"></a>00081 }
+<a name="l00082"></a>00082 <span class="keywordflow">else</span>
+<a name="l00083"></a>00083 {
+<a name="l00084"></a>00084 strategy.apply(range, out, max_distance);
+<a name="l00085"></a>00085 }
+<a name="l00086"></a>00086 }
+<a name="l00087"></a>00087 };
+<a name="l00088"></a>00088
+<a name="l00089"></a>00089
+<a name="l00090"></a>00090 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00091"></a>00091 <span class="keyword">struct </span>simplify_copy
+<a name="l00092"></a>00092 {
+<a name="l00093"></a>00093 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Range <span class="keyword">const</span>&amp; range, Range&amp; out,
+<a name="l00094"></a>00094 <span class="keywordtype">double</span> max_distance, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00095"></a>00095 {
+<a name="l00096"></a>00096 std::copy
+<a name="l00097"></a>00097 (
+<a name="l00098"></a>00098 boost::begin(range), boost::end(range), std::back_inserter(out)
+<a name="l00099"></a>00099 );
+<a name="l00100"></a>00100 }
+<a name="l00101"></a>00101 };
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Strategy, std::<span class="keywordtype">size_t</span> Minimum&gt;
+<a name="l00105"></a>00105 <span class="keyword">struct </span>simplify_range
+<a name="l00106"></a>00106 {
+<a name="l00107"></a>00107 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Range <span class="keyword">const</span>&amp; range, Range&amp; out,
+<a name="l00108"></a>00108 <span class="keywordtype">double</span> max_distance, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00109"></a>00109 {
+<a name="l00110"></a>00110 <span class="comment">// Call do_container for a linestring / ring</span>
+<a name="l00111"></a>00111
+<a name="l00112"></a>00112 <span class="comment">/* For a RING:</span>
+<a name="l00113"></a>00113 <span class="comment"> The first/last point (the closing point of the ring) should maybe</span>
+<a name="l00114"></a>00114 <span class="comment"> be excluded because it lies on a line with second/one but last.</span>
+<a name="l00115"></a>00115 <span class="comment"> Here it is never excluded.</span>
+<a name="l00116"></a>00116 <span class="comment"></span>
+<a name="l00117"></a>00117 <span class="comment"> Note also that, especially if max_distance is too large,</span>
+<a name="l00118"></a>00118 <span class="comment"> the output ring might be self intersecting while the input ring is</span>
+<a name="l00119"></a>00119 <span class="comment"> not, although chances are low in normal polygons</span>
+<a name="l00120"></a>00120 <span class="comment"></span>
+<a name="l00121"></a>00121 <span class="comment"> Finally the inputring might have 4 points (=correct),</span>
+<a name="l00122"></a>00122 <span class="comment"> the output &lt; 4(=wrong)</span>
+<a name="l00123"></a>00123 <span class="comment"> */</span>
+<a name="l00124"></a>00124
+<a name="l00125"></a>00125 <span class="keywordflow">if</span> (boost::size(range) &lt;= <span class="keywordtype">int</span>(Minimum) || max_distance &lt; 0.0)
+<a name="l00126"></a>00126 {
+<a name="l00127"></a>00127 simplify_copy&lt;Range, Strategy&gt;::apply
+<a name="l00128"></a>00128 (
+<a name="l00129"></a>00129 range, out, max_distance, strategy
+<a name="l00130"></a>00130 );
+<a name="l00131"></a>00131 }
+<a name="l00132"></a>00132 <span class="keywordflow">else</span>
+<a name="l00133"></a>00133 {
+<a name="l00134"></a>00134 simplify_range_inserter&lt;Range, Strategy&gt;::apply
+<a name="l00135"></a>00135 (
+<a name="l00136"></a>00136 range, std::back_inserter(out), max_distance, strategy
+<a name="l00137"></a>00137 );
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139 }
+<a name="l00140"></a>00140 };
+<a name="l00141"></a>00141
+<a name="l00142"></a>00142 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00143"></a>00143 <span class="keyword">struct </span>simplify_polygon
+<a name="l00144"></a>00144 {
+<a name="l00145"></a>00145 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Polygon <span class="keyword">const</span>&amp; poly_in, Polygon&amp; poly_out,
+<a name="l00146"></a>00146 <span class="keywordtype">double</span> max_distance, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00147"></a>00147 {
+<a name="l00148"></a>00148 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type&lt;Polygon&gt;::type ring_type;
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator
+<a name="l00151"></a>00151 &lt;<span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type&gt;::type iterator_type;
+<a name="l00152"></a>00152 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00153"></a>00153 &lt;<span class="keyword">typename</span> interior_type&lt;Polygon&gt;::type&gt;::type const_iterator_type;
+<a name="l00154"></a>00154
+<a name="l00155"></a>00155 <span class="comment">// Note that if there are inner rings, and distance is too large,</span>
+<a name="l00156"></a>00156 <span class="comment">// they might intersect with the outer ring in the output,</span>
+<a name="l00157"></a>00157 <span class="comment">// while it didn't in the input.</span>
+<a name="l00158"></a>00158 simplify_range&lt;ring_type, Strategy, 4&gt;::apply(<a class="code" href="group__access.html#g4dd59c8603683e869f1d74bd40045b8b" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly_in),
+<a name="l00159"></a>00159 <a class="code" href="group__access.html#g4dd59c8603683e869f1d74bd40045b8b" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly_out),
+<a name="l00160"></a>00160 max_distance, strategy);
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 <span class="comment">// Note: here a resizeable container is assumed.</span>
+<a name="l00163"></a>00163 <span class="comment">// Maybe we should make this part of the concept.</span>
+<a name="l00164"></a>00164 <a class="code" href="group__access.html#gaee58ea9a166a2ca07597daf34433d7f" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_out).resize(<a class="code" href="group__access.html#gb13419230cdc76a88bf2afb902776305" title="Function to get the number of interior rings of a polygon.">num_interior_rings</a>(poly_in));
+<a name="l00165"></a>00165
+<a name="l00166"></a>00166 iterator_type it_out = boost::begin(<a class="code" href="group__access.html#gaee58ea9a166a2ca07597daf34433d7f" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_out));
+<a name="l00167"></a>00167
+<a name="l00168"></a>00168 <span class="keywordflow">for</span> (const_iterator_type it_in = boost::begin(<a class="code" href="group__access.html#gaee58ea9a166a2ca07597daf34433d7f" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_in));
+<a name="l00169"></a>00169 it_in != boost::end(<a class="code" href="group__access.html#gaee58ea9a166a2ca07597daf34433d7f" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_in));
+<a name="l00170"></a>00170 ++it_in, ++it_out)
+<a name="l00171"></a>00171 {
+<a name="l00172"></a>00172 simplify_range&lt;ring_type, Strategy, 4&gt;::apply(*it_in,
+<a name="l00173"></a>00173 *it_out, max_distance, strategy);
+<a name="l00174"></a>00174 }
+<a name="l00175"></a>00175 }
+<a name="l00176"></a>00176 };
+<a name="l00177"></a>00177
+<a name="l00178"></a>00178
+<a name="l00179"></a>00179 }} <span class="comment">// namespace detail::simplify</span>
+<a name="l00180"></a>00180 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00181"></a>00181 <span class="preprocessor"></span>
+<a name="l00182"></a>00182
+<a name="l00183"></a>00183 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00184"></a>00184 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<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> Tag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00188"></a>00188 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry using a specified strategy.">simplify</a>
+<a name="l00189"></a>00189 {
+<a name="l00190"></a>00190 };
+<a name="l00191"></a>00191
+<a name="l00192"></a>00192 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00193"></a>00193 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry using a specified strategy.">simplify</a>&lt;point_tag, Point, Strategy&gt;
+<a name="l00194"></a>00194 {
+<a name="l00195"></a>00195 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Point <span class="keyword">const</span>&amp; point, Point&amp; out,
+<a name="l00196"></a>00196 <span class="keywordtype">double</span> max_distance, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00197"></a>00197 {
+<a name="l00198"></a>00198 <a class="code" href="namespaceggl.html#f8cee6dd577bebfd1dbbe4cc503304d4" title="Copies coordinates from source to destination point.">copy_coordinates</a>(point, out);
+<a name="l00199"></a>00199 }
+<a name="l00200"></a>00200 };
+<a name="l00201"></a>00201
+<a name="l00202"></a>00202
+<a name="l00203"></a>00203 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00204"></a>00204 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry using a specified strategy.">simplify</a>&lt;linestring_tag, Linestring, Strategy&gt;
+<a name="l00205"></a>00205 : detail::<a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry using a specified strategy.">simplify</a>::simplify_range
+<a name="l00206"></a>00206 &lt;
+<a name="l00207"></a>00207 Linestring,
+<a name="l00208"></a>00208 Strategy,
+<a name="l00209"></a>00209 2
+<a name="l00210"></a>00210 &gt;
+<a name="l00211"></a>00211 {};
+<a name="l00212"></a>00212
+<a name="l00213"></a>00213 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00214"></a>00214 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry using a specified strategy.">simplify</a>&lt;ring_tag, Ring, Strategy&gt;
+<a name="l00215"></a>00215 : detail::<a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry using a specified strategy.">simplify</a>::simplify_range
+<a name="l00216"></a>00216 &lt;
+<a name="l00217"></a>00217 Ring,
+<a name="l00218"></a>00218 Strategy,
+<a name="l00219"></a>00219 4
+<a name="l00220"></a>00220 &gt;
+<a name="l00221"></a>00221 {};
+<a name="l00222"></a>00222
+<a name="l00223"></a>00223 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00224"></a>00224 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry using a specified strategy.">simplify</a>&lt;polygon_tag, Polygon, Strategy&gt;
+<a name="l00225"></a>00225 : detail::<a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry using a specified strategy.">simplify</a>::simplify_polygon
+<a name="l00226"></a>00226 &lt;
+<a name="l00227"></a>00227 Polygon,
+<a name="l00228"></a>00228 Strategy
+<a name="l00229"></a>00229 &gt;
+<a name="l00230"></a>00230 {};
+<a name="l00231"></a>00231
+<a name="l00232"></a>00232
+<a name="l00233"></a>00233 <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="l00234"></a>00234 <span class="keyword">struct </span><a class="code" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a" title="Simplify a geometry, using an output iterator and a specified strategy.">simplify_inserter</a>
+<a name="l00235"></a>00235 {
+<a name="l00236"></a>00236 };
+<a name="l00237"></a>00237
+<a name="l00238"></a>00238
+<a name="l00239"></a>00239 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00240"></a>00240 <span class="keyword">struct </span><a class="code" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a" title="Simplify a geometry, using an output iterator and a specified strategy.">simplify_inserter</a>&lt;linestring_tag, Linestring, Strategy&gt;
+<a name="l00241"></a>00241 : detail::<a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry using a specified strategy.">simplify</a>::simplify_range_inserter
+<a name="l00242"></a>00242 &lt;
+<a name="l00243"></a>00243 Linestring,
+<a name="l00244"></a>00244 Strategy
+<a name="l00245"></a>00245 &gt;
+<a name="l00246"></a>00246 {};
+<a name="l00247"></a>00247
+<a name="l00248"></a>00248 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00249"></a>00249 <span class="keyword">struct </span><a class="code" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a" title="Simplify a geometry, using an output iterator and a specified strategy.">simplify_inserter</a>&lt;ring_tag, Ring, Strategy&gt;
+<a name="l00250"></a>00250 : detail::<a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry using a specified strategy.">simplify</a>::simplify_range_inserter
+<a name="l00251"></a>00251 &lt;
+<a name="l00252"></a>00252 Ring,
+<a name="l00253"></a>00253 Strategy
+<a name="l00254"></a>00254 &gt;
+<a name="l00255"></a>00255 {};
+<a name="l00256"></a>00256
+<a name="l00257"></a>00257
+<a name="l00258"></a>00258 } <span class="comment">// namespace dispatch</span>
+<a name="l00259"></a>00259 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00260"></a>00260 <span class="preprocessor"></span>
+<a name="l00261"></a>00261
+<a name="l00272"></a>00272 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00273"></a><a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d">00273</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry using a specified strategy.">simplify</a>(Geometry <span class="keyword">const</span>&amp; geometry, Geometry&amp; out,
+<a name="l00274"></a>00274 <span class="keywordtype">double</span> max_distance, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00275"></a>00275 {
+<a name="l00276"></a>00276 concept::check&lt;Geometry&gt;();
+<a name="l00277"></a>00277
+<a name="l00278"></a>00278 BOOST_CONCEPT_ASSERT( (<a class="code" href="structggl_1_1concept_1_1_simplify_strategy.html" title="Checks strategy for simplify.">ggl::concept::SimplifyStrategy&lt;Strategy&gt;</a>) );
+<a name="l00279"></a>00279
+<a name="l00280"></a>00280 <a class="code" href="group__access.html#g6834d3a54e36ad3c0b56065aaaf27771" title="Clears a linestring, linear ring or polygon (exterior+interiors) or multi*.">ggl::clear</a>(out);
+<a name="l00281"></a>00281
+<a name="l00282"></a>00282 <a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry using a specified strategy.">dispatch::simplify</a>
+<a name="l00283"></a>00283 &lt;
+<a name="l00284"></a>00284 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&amp;quot;default&amp;quot; tag">tag&lt;Geometry&gt;::type</a>,
+<a name="l00285"></a>00285 Geometry,
+<a name="l00286"></a>00286 Strategy
+<a name="l00287"></a>00287 &gt;::apply(geometry, out, max_distance, strategy);
+<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="l00309"></a>00309 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry&gt;
+<a name="l00310"></a><a class="code" href="group__simplify.html#g953e1055914400f9ad3191adc5b42270">00310</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry using a specified strategy.">simplify</a>(Geometry <span class="keyword">const</span>&amp; geometry, Geometry&amp; out,
+<a name="l00311"></a>00311 <span class="keywordtype">double</span> max_distance)
+<a name="l00312"></a>00312 {
+<a name="l00313"></a>00313 concept::check&lt;Geometry&gt;();
+<a name="l00314"></a>00314
+<a name="l00315"></a>00315 <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="l00316"></a>00316 <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="l00317"></a>00317 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__distance__segment.html" title="Traits class binding a distance-to-segment strategy to a (possibly two) coordinate...">strategy_distance_segment</a>
+<a name="l00318"></a>00318 &lt;
+<a name="l00319"></a>00319 cs_tag,
+<a name="l00320"></a>00320 cs_tag,
+<a name="l00321"></a>00321 point_type,
+<a name="l00322"></a>00322 point_type
+<a name="l00323"></a>00323 &gt;::type ds_strategy_type;
+<a name="l00324"></a>00324
+<a name="l00325"></a>00325 <span class="keyword">typedef</span> <a class="code" href="classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html" title="Implements the simplify algorithm.">strategy::simplify::douglas_peucker</a>
+<a name="l00326"></a>00326 &lt;
+<a name="l00327"></a>00327 point_type, ds_strategy_type
+<a name="l00328"></a>00328 &gt; strategy_type;
+<a name="l00329"></a>00329
+<a name="l00330"></a>00330 <a class="code" href="group__simplify.html#g752a5b4c8a40756da0e717c1ae4d2d8d" title="Simplify a geometry using a specified strategy.">simplify</a>(geometry, out, max_distance, strategy_type());
+<a name="l00331"></a>00331 }
+<a name="l00332"></a>00332
+<a name="l00333"></a>00333
+<a name="l00351"></a>00351 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00352"></a><a class="code" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a">00352</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a" title="Simplify a geometry, using an output iterator and a specified strategy.">simplify_inserter</a>(Geometry <span class="keyword">const</span>&amp; geometry, OutputIterator out,
+<a name="l00353"></a>00353 <span class="keywordtype">double</span> max_distance, Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00354"></a>00354 {
+<a name="l00355"></a>00355 concept::check&lt;const Geometry&gt;();
+<a name="l00356"></a>00356 BOOST_CONCEPT_ASSERT( (<a class="code" href="structggl_1_1concept_1_1_simplify_strategy.html" title="Checks strategy for simplify.">ggl::concept::SimplifyStrategy&lt;Strategy&gt;</a>) );
+<a name="l00357"></a>00357
+<a name="l00358"></a>00358 <a class="code" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a" title="Simplify a geometry, using an output iterator and a specified strategy.">dispatch::simplify_inserter</a>
+<a name="l00359"></a>00359 &lt;
+<a name="l00360"></a>00360 <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="l00361"></a>00361 Geometry,
+<a name="l00362"></a>00362 Strategy
+<a name="l00363"></a>00363 &gt;::apply(geometry, out, max_distance, strategy);
+<a name="l00364"></a>00364 }
+<a name="l00365"></a>00365
+<a name="l00374"></a>00374 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator&gt;
+<a name="l00375"></a><a class="code" href="group__simplify.html#g4285888f1598725bca124878ac16c656">00375</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a" title="Simplify a geometry, using an output iterator and a specified strategy.">simplify_inserter</a>(Geometry <span class="keyword">const</span>&amp; geometry, OutputIterator out,
+<a name="l00376"></a>00376 <span class="keywordtype">double</span> max_distance)
+<a name="l00377"></a>00377 {
+<a name="l00378"></a>00378 <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="l00379"></a>00379
+<a name="l00380"></a>00380 <span class="comment">// Concept: output point type = point type of input geometry</span>
+<a name="l00381"></a>00381 concept::check&lt;const Geometry&gt;();
+<a name="l00382"></a>00382 concept::check&lt;point_type&gt;();
+<a name="l00383"></a>00383
+<a name="l00384"></a>00384 <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="l00385"></a>00385 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__distance__segment.html" title="Traits class binding a distance-to-segment strategy to a (possibly two) coordinate...">strategy_distance_segment</a>
+<a name="l00386"></a>00386 &lt;
+<a name="l00387"></a>00387 cs_tag,
+<a name="l00388"></a>00388 cs_tag,
+<a name="l00389"></a>00389 point_type,
+<a name="l00390"></a>00390 point_type
+<a name="l00391"></a>00391 &gt;::type ds_strategy_type;
+<a name="l00392"></a>00392
+<a name="l00393"></a>00393 <span class="keyword">typedef</span> <a class="code" href="classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html" title="Implements the simplify algorithm.">strategy::simplify::douglas_peucker</a>
+<a name="l00394"></a>00394 &lt;
+<a name="l00395"></a>00395 point_type, ds_strategy_type
+<a name="l00396"></a>00396 &gt; strategy_type;
+<a name="l00397"></a>00397
+<a name="l00398"></a>00398 <a class="code" href="group__simplify.html#gbe0df65c97527e83bcab80ec3232d45a" title="Simplify a geometry, using an output iterator and a specified strategy.">dispatch::simplify_inserter</a>
+<a name="l00399"></a>00399 &lt;
+<a name="l00400"></a>00400 <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="l00401"></a>00401 Geometry,
+<a name="l00402"></a>00402 strategy_type
+<a name="l00403"></a>00403 &gt;::apply(geometry, out, max_distance, strategy_type());
+<a name="l00404"></a>00404 }
+<a name="l00405"></a>00405
+<a name="l00406"></a>00406
+<a name="l00407"></a>00407 } <span class="comment">// namespace ggl</span>
+<a name="l00408"></a>00408
+<a name="l00409"></a>00409 <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>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 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>
+
+<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>c:/svn/ggl/formal_review/boost/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 Geometry1 , typename Geometry2 &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#gea84c2b86b120e9c79a1a3a111229b60">ggl::transform</a> (Geometry1 const &amp;geometry1, Geometry2 &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 Geometry1 , typename Geometry2 , typename Strategy &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#g69b7e7f328a6092efb8edc9d857504d1">ggl::transform</a> (Geometry1 const &amp;geometry1, Geometry2 &amp;geometry2, Strategy 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>November 5, 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/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp_source.html 2009-11-04 12:51:44 EST (Wed, 04 Nov 2009)
@@ -0,0 +1,346 @@
+<!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>
+
+<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>c:/svn/ggl/formal_review/boost/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="assign_8hpp.html">ggl/algorithms/assign.hpp</a>&gt;</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>&gt;</span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;<a class="code" href="geometries_2concepts_2check_8hpp.html">ggl/geometries/concepts/check.hpp</a>&gt;</span>
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;<a class="code" href="strategies_2transform_8hpp.html">ggl/strategies/transform.hpp</a>&gt;</span>
+<a name="l00029"></a>00029
+<a name="l00030"></a>00030
+<a name="l00065"></a>00065 <span class="keyword">namespace </span>ggl
+<a name="l00066"></a>00066 {
+<a name="l00067"></a>00067
+<a name="l00068"></a>00068 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00069"></a>00069 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__transform.html#g69b7e7f328a6092efb8edc9d857504d1" title="Transforms from one geometry to another geometry using a strategy.">transform</a> {
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>1, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>2, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00072"></a>00072 <span class="keyword">struct </span>transform_point
+<a name="l00073"></a>00073 {
+<a name="l00074"></a>00074 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(Point1 <span class="keyword">const</span>&amp; p1, Point2&amp; p2,
+<a name="l00075"></a>00075 Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00076"></a>00076 {
+<a name="l00077"></a>00077 <span class="keywordflow">return</span> strategy(p1, p2);
+<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> Box1, <span class="keyword">typename</span> Box2, <span class="keyword">typename</span> Strategy&gt;
+<a name="l00082"></a>00082 <span class="keyword">struct </span>transform_box
+<a name="l00083"></a>00083 {
+<a name="l00084"></a>00084 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(Box1 <span class="keyword">const</span>&amp; b1, Box2&amp; b2,
+<a name="l00085"></a>00085 Strategy <span class="keyword">const</span>&amp; strategy)
+<a name="l00086"></a>00086 {
+<a name="l00087"></a>00087 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;Box1&gt;::type point_type1;
+<a name="l00088"></a>00088 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type&lt;Box2&gt;::type point_type2;
+<a name="l00089"></a>00089
+<a name="l00090"></a>00090 point_type1 lower_left, upper_right;
+<a name="l00091"></a>00091 detail::assign::assign_box_2d_corner&lt;min_corner, min_corner&gt;(
+<a name="l00092"></a>00092 b1, lower_left);
+<a name="l00093"></a>00093 detail::assign::assign_box_2d_corner&lt;max_corner, max_corner&gt;(
+<a name="l00094"></a>00094 b1, upper_right);
+<a name="l00095"></a>00095