+void test_assign_conversion()
+{
+ typedef bg::model::box box_type;
+ typedef bg::model::ring
ring_type;
+ typedef bg::model::polygon
polygon_type;
+
+ P p;
+ bg::assign_values(p, 1, 2);
+
+ box_type b;
+ bg::assign(b, p);
+
+ BOOST_CHECK_CLOSE((bg::get<0, 0>(b)), 1.0, 0.001);
+ BOOST_CHECK_CLOSE((bg::get<0, 1>(b)), 2.0, 0.001);
+ BOOST_CHECK_CLOSE((bg::get<1, 0>(b)), 1.0, 0.001);
+ BOOST_CHECK_CLOSE((bg::get<1, 1>(b)), 2.0, 0.001);
+
+
+ bg::set(b, 1);
+ bg::set(b, 2);
+ bg::set(b, 3);
+ bg::set(b, 4);
+
+ ring_type ring;
+ bg::assign(ring, b);
+
+ //std::cout << bg::wkt(b) << std::endl;
+ //std::cout << bg::wkt(ring) << std::endl;
+
+ typename boost::range_const_iterator::type it = ring.begin();
+ BOOST_CHECK_CLOSE(bg::get<0>(*it), 1.0, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(*it), 2.0, 0.001);
+ it++;
+ BOOST_CHECK_CLOSE(bg::get<0>(*it), 1.0, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(*it), 4.0, 0.001);
+ it++;
+ BOOST_CHECK_CLOSE(bg::get<0>(*it), 3.0, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(*it), 4.0, 0.001);
+ it++;
+ BOOST_CHECK_CLOSE(bg::get<0>(*it), 3.0, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(*it), 2.0, 0.001);
+ it++;
+ BOOST_CHECK_CLOSE(bg::get<0>(*it), 1.0, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(*it), 2.0, 0.001);
+
+ BOOST_CHECK_EQUAL(ring.size(), 5u);
+
+
+ polygon_type polygon;
+
+ bg::assign(polygon, ring);
+ BOOST_CHECK_EQUAL(bg::num_points(polygon), 5u);
+
+ ring_type ring2;
+ bg::assign(ring2, polygon);
+ BOOST_CHECK_EQUAL(bg::num_points(ring2), 5u);
+}
+
+
template
void test_assign_point_2d()
{
Point p;
- bg::assign(p, 1, 2);
+ bg::assign_values(p, 1, 2);
BOOST_CHECK(bg::get<0>(p) == 1);
BOOST_CHECK(bg::get<1>(p) == 2);
- bg::detail::assign::assign_value(p, 123);
+ bg::assign_value(p, 123);
BOOST_CHECK(bg::get<0>(p) == 123);
BOOST_CHECK(bg::get<1>(p) == 123);
@@ -148,6 +209,10 @@ void test_assign_point_2d()
BOOST_CHECK(bg::get<1>(p) == 0);
}
+
+
+
+
int test_main(int, char* [])
{
test_assign_point_3d();
@@ -165,6 +230,9 @@ int test_main(int, char* [])
test_assign_point_2d >();
test_assign_point_2d >();
+ test_assign_conversion >();
+
+
// Segment (currently) cannot handle array's because derived from std::pair
test_assign_box_2d();
test_assign_box_2d();
diff --git a/test/algorithms/detail/convert.cpp b/test/algorithms/convert.cpp
similarity index 92%
rename from test/algorithms/detail/convert.cpp
rename to test/algorithms/convert.cpp
index 2c6d227d3..185aceb11 100644
--- a/test/algorithms/detail/convert.cpp
+++ b/test/algorithms/convert.cpp
@@ -16,7 +16,7 @@
#include
-#include
+#include
#include
#include
@@ -32,10 +32,10 @@ void test_all()
typedef bg::model::box box_type;
P p;
- bg::assign(p, 1, 2);
+ bg::assign_values(p, 1, 2);
box_type b;
- bg::detail::convert(p, b);
+ bg::convert(p, b);
BOOST_CHECK_CLOSE((bg::get<0, 0>(b)), 1.0, 0.001);
BOOST_CHECK_CLOSE((bg::get<0, 1>(b)), 2.0, 0.001);
@@ -59,7 +59,7 @@ void test_std()
bg::set(b, 4);
ring_type ring;
- bg::detail::convert(b, ring);
+ bg::convert(b, ring);
//std::cout << bg::wkt(b) << std::endl;
//std::cout << bg::wkt(ring) << std::endl;
@@ -85,10 +85,10 @@ void test_std()
polygon_type polygon;
- bg::detail::convert(ring, polygon);
+ bg::convert(ring, polygon);
BOOST_CHECK_EQUAL(bg::num_points(polygon), 5u);
- bg::detail::convert(polygon, ring);
+ bg::convert(polygon, ring);
BOOST_CHECK_EQUAL(bg::num_points(ring), 5u);
}
diff --git a/test/algorithms/detail/convert.vcproj b/test/algorithms/convert.vcproj
similarity index 92%
rename from test/algorithms/detail/convert.vcproj
rename to test/algorithms/convert.vcproj
index b3a11404f..c75bf0ee5 100644
--- a/test/algorithms/detail/convert.vcproj
+++ b/test/algorithms/convert.vcproj
@@ -20,7 +20,7 @@
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)\convert"
ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
+ InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
CharacterSet="1"
>
@@ -114,7 +114,7 @@
/>
-#include
#include
#include
#include
-#include
-#include
#include
#include
+#if defined(TEST_WITH_SVG)
+# include
+#endif
+
+#include
+#include
+#include
+#include
+
template
struct box_item
@@ -214,6 +220,234 @@ void test_all()
}
+//------------------- higher volumes
+
+template
+struct svg_visitor
+{
+ SvgMapper& m_mapper;
+
+ svg_visitor(SvgMapper& mapper)
+ : m_mapper(mapper)
+ {}
+
+ template
+ inline void apply(Box const& box, int level)
+ {
+ /*
+ std::string color("rgb(64,64,64)");
+ switch(level)
+ {
+ case 0 : color = "rgb(255,0,0)"; break;
+ case 1 : color = "rgb(0,255,0)"; break;
+ case 2 : color = "rgb(0,0,255)"; break;
+ case 3 : color = "rgb(255,255,0)"; break;
+ case 4 : color = "rgb(255,0,255)"; break;
+ case 5 : color = "rgb(0,255,255)"; break;
+ case 6 : color = "rgb(255,128,0)"; break;
+ case 7 : color = "rgb(0,128,255)"; break;
+ }
+ std::ostringstream style;
+ style << "fill:none;stroke-width:" << (5.0 - level / 2.0) << ";stroke:" << color << ";";
+ m_mapper.map(box, style.str());
+ */
+ m_mapper.map(box, "fill:none;stroke-width:2;stroke:rgb(0,0,0);");
+
+ }
+};
+
+
+
+
+template
+void fill_points(Collection& collection, int seed, int size, int count)
+{
+ typedef boost::minstd_rand base_generator_type;
+
+ base_generator_type generator(seed);
+
+ boost::uniform_int<> random_coordinate(0, size - 1);
+ boost::variate_generator >
+ coordinate_generator(generator, random_coordinate);
+
+ std::set > included;
+
+ int n = 0;
+ for (int i = 0; n < count && i < count*count; i++)
+ {
+ int x = coordinate_generator();
+ int y = coordinate_generator();
+ std::pair pair = std::make_pair(x, y);
+ if (included.find(pair) == included.end())
+ {
+ included.insert(pair);
+ typename boost::range_value::type item;
+ item.x = x;
+ item.y = y;
+ collection.push_back(item);
+ n++;
+ }
+ }
+}
+
+void test_many_points(int seed, int size, int count)
+{
+ bg::model::multi_point mp1, mp2;
+
+ fill_points(mp1, seed, size, count);
+ fill_points(mp2, seed * 2, size, count);
+
+ // Test equality in quadratic loop
+ int expected_count = 0;
+ BOOST_FOREACH(point_item const& item1, mp1)
+ {
+ BOOST_FOREACH(point_item const& item2, mp2)
+ {
+ if (bg::equals(item1, item2))
+ {
+ expected_count++;
+ }
+ }
+ }
+
+#if defined(TEST_WITH_SVG)
+ std::ostringstream filename;
+ filename << "partition" << seed << ".svg";
+ std::ofstream svg(filename.str().c_str());
+
+ bg::svg_mapper mapper(svg, 800, 800);
+
+ {
+ point_item p;
+ p.x = -1; p.y = -1; mapper.add(p);
+ p.x = size + 1; p.y = size + 1; mapper.add(p);
+ }
+
+ typedef svg_visitor > box_visitor_type;
+ box_visitor_type box_visitor(mapper);
+#else
+ typedef bg::visit_no_policy box_visitor_type;
+ box_visitor_type box_visitor;
+#endif
+
+ point_visitor visitor;
+ bg::partition
+ <
+ bg::model::box, get_point, ovelaps_point,
+ box_visitor_type
+ >::apply(mp1, mp2, visitor, 2, box_visitor);
+
+ BOOST_CHECK_EQUAL(visitor.count, expected_count);
+
+#if defined(TEST_WITH_SVG)
+ BOOST_FOREACH(point_item const& item, mp1)
+ {
+ mapper.map(item, "fill:rgb(255,128,0);stroke:rgb(0,0,100);stroke-width:1", 8);
+ }
+ BOOST_FOREACH(point_item const& item, mp2)
+ {
+ mapper.map(item, "fill:rgb(0,128,255);stroke:rgb(0,0,100);stroke-width:1", 4);
+ }
+#endif
+}
+
+template
+void fill_boxes(Collection& collection, int seed, int size, int count)
+{
+ typedef boost::minstd_rand base_generator_type;
+
+ base_generator_type generator(seed);
+
+ boost::uniform_int<> random_coordinate(0, size * 10 - 1);
+ boost::variate_generator >
+ coordinate_generator(generator, random_coordinate);
+
+ int n = 0;
+ for (int i = 0; n < count && i < count*count; i++)
+ {
+ int w = coordinate_generator() % 30;
+ int h = coordinate_generator() % 30;
+ if (w > 0 && h > 0)
+ {
+ int x = coordinate_generator();
+ int y = coordinate_generator();
+ if (x + w < size * 10 && y + h < size * 10)
+ {
+ typename boost::range_value::type item(n+1);
+ bg::assign_values(item.box, x / 10.0, y / 10.0, (x + w) / 10.0, (y + h) / 10.0);
+ collection.push_back(item);
+ n++;
+ }
+ }
+ }
+}
+
+
+
+void test_many_boxes(int seed, int size, int count)
+{
+ typedef bg::model::box box_type;
+ std::vector > boxes;
+
+ fill_boxes(boxes, seed, size, count);
+
+ // Test equality in quadratic loop
+ int expected_count = 0;
+ double expected_area = 0.0;
+ BOOST_FOREACH(box_item const& item1, boxes)
+ {
+ BOOST_FOREACH(box_item const& item2, boxes)
+ {
+ if (item1.id < item2.id)
+ {
+ if (bg::intersects(item1.box, item2.box))
+ {
+ box_type b;
+ bg::intersection(item1.box, item2.box, b);
+ expected_area += bg::area(b);
+ expected_count++;
+ }
+ }
+ }
+ }
+
+
+#if defined(TEST_WITH_SVG)
+ std::ostringstream filename;
+ filename << "partition_box_" << seed << ".svg";
+ std::ofstream svg(filename.str().c_str());
+
+ bg::svg_mapper mapper(svg, 800, 800);
+
+ {
+ point_item p;
+ p.x = -1; p.y = -1; mapper.add(p);
+ p.x = size + 1; p.y = size + 1; mapper.add(p);
+ }
+
+ BOOST_FOREACH(box_item const& item, boxes)
+ {
+ mapper.map(item.box, "opacity:0.6;fill:rgb(50,50,210);stroke:rgb(0,0,0);stroke-width:1");
+ }
+
+ typedef svg_visitor > partition_visitor_type;
+ partition_visitor_type partition_visitor(mapper);
+
+
+ box_visitor visitor;
+ bg::partition
+ <
+ box_type, get_box, ovelaps_box,
+ partition_visitor_type
+ >::apply(boxes, visitor, 2, partition_visitor);
+
+ BOOST_CHECK_EQUAL(visitor.count, expected_count);
+ BOOST_CHECK_CLOSE(visitor.area, expected_area, 0.001);
+
+#endif
+}
+
+
@@ -221,5 +455,20 @@ int test_main( int , char* [] )
{
test_all >();
+ test_many_points(12345, 20, 40);
+ test_many_points(54321, 20, 60);
+ test_many_points(67890, 20, 80);
+ test_many_points(98765, 20, 100);
+ for (int i = 1; i < 10; i++)
+ {
+ test_many_points(i, 30, i * 20);
+ }
+
+ test_many_boxes(12345, 20, 40);
+ for (int i = 1; i < 10; i++)
+ {
+ test_many_boxes(i, 20, i * 10);
+ }
+
return 0;
}
diff --git a/test/algorithms/intersection.cpp b/test/algorithms/intersection.cpp
index 5a3bada28..5a7b2c647 100644
--- a/test/algorithms/intersection.cpp
+++ b/test/algorithms/intersection.cpp
@@ -324,7 +324,7 @@ void test_pointer_version()
p = new test::test_point_xy; p->x = 10; p->y = 10; ln.push_back(p);
bg::model::box > box;
- bg::assign(box, 2, 2, 8, 8);
+ bg::assign_values(box, 2, 2, 8, 8);
typedef bg::model::linestring > output_type;
std::vector clip;
diff --git a/test/algorithms/make.cpp b/test/algorithms/make.cpp
index 58a26c43f..65b63fe9e 100644
--- a/test/algorithms/make.cpp
+++ b/test/algorithms/make.cpp
@@ -62,7 +62,7 @@ void test_linestring_2d()
T coors[][2] = {{1,2}, {3,4}};
- L line = bg::make(coors);
+ L line = bg::detail::make::make_points(coors);
BOOST_CHECK_EQUAL(line.size(), 2u);
}
@@ -74,7 +74,7 @@ void test_linestring_3d()
T coors[][3] = {{1,2,3}, {4,5,6}};
- L line = bg::make(coors);
+ L line = bg::detail::make::make_points(coors);
BOOST_CHECK_EQUAL(line.size(), 2u);
//std::cout << dsv(line) << std::endl;
diff --git a/test/algorithms/transform.cpp b/test/algorithms/transform.cpp
index e4d5bc9a7..af8ba28c7 100644
--- a/test/algorithms/transform.cpp
+++ b/test/algorithms/transform.cpp
@@ -80,7 +80,7 @@ void test_transformations(double phi, double theta, double r)
{
typedef bg::model::point > spherical_type;
spherical_type sph1;
- assign(sph1, phi, theta, r);
+ assign_values(sph1, phi, theta, r);
BOOST_CHECK(transform(sph1, p));
spherical_type sph2;
@@ -97,7 +97,7 @@ void test_transformations(double phi, double theta, double r)
{
typedef bg::model::point > spherical_type;
spherical_type sph1, sph2;
- assign(sph1, phi, theta);
+ assign_values(sph1, phi, theta);
BOOST_CHECK(transform(sph1, p));
BOOST_CHECK(transform(p, sph2));
diff --git a/test/arithmetic/arithmetic.cpp b/test/arithmetic/arithmetic.cpp
index 8ed3cd8d1..1ae1915f4 100644
--- a/test/arithmetic/arithmetic.cpp
+++ b/test/arithmetic/arithmetic.cpp
@@ -30,14 +30,14 @@ template
void test_addition()
{
P p1;
- bg::assign(p1, 1, 2, 3);
+ bg::assign_values(p1, 1, 2, 3);
bg::add_value(p1, 10);
BOOST_CHECK(bg::get<0>(p1) == 11);
BOOST_CHECK(bg::get<1>(p1) == 12);
BOOST_CHECK(bg::get<2>(p1) == 13);
P p2;
- bg::assign(p2, 4, 5, 6);
+ bg::assign_values(p2, 4, 5, 6);
bg::add_point(p1, p2);
BOOST_CHECK(bg::get<0>(p1) == 15);
BOOST_CHECK(bg::get<1>(p1) == 17);
@@ -48,14 +48,14 @@ template
void test_subtraction()
{
P p1;
- bg::assign(p1, 1, 2, 3);
+ bg::assign_values(p1, 1, 2, 3);
bg::subtract_value(p1, 10);
BOOST_CHECK(bg::get<0>(p1) == -9);
BOOST_CHECK(bg::get<1>(p1) == -8);
BOOST_CHECK(bg::get<2>(p1) == -7);
P p2;
- bg::assign(p2, 4, 6, 8);
+ bg::assign_values(p2, 4, 6, 8);
bg::subtract_point(p1, p2);
BOOST_CHECK(bg::get<0>(p1) == -13);
BOOST_CHECK(bg::get<1>(p1) == -14);
@@ -66,14 +66,14 @@ template
void test_multiplication()
{
P p1;
- bg::assign(p1, 1, 2, 3);
+ bg::assign_values(p1, 1, 2, 3);
bg::multiply_value(p1, 5);
BOOST_CHECK(bg::get<0>(p1) == 5);
BOOST_CHECK(bg::get<1>(p1) == 10);
BOOST_CHECK(bg::get<2>(p1) == 15);
P p2;
- bg::assign(p2, 4, 5, 6);
+ bg::assign_values(p2, 4, 5, 6);
bg::multiply_point(p1, p2);
BOOST_CHECK(bg::get<0>(p1) == 20);
BOOST_CHECK(bg::get<1>(p1) == 50);
@@ -84,20 +84,37 @@ template
void test_division()
{
P p1;
- bg::assign(p1, 50, 100, 150);
+ bg::assign_values(p1, 50, 100, 150);
bg::divide_value(p1, 5);
BOOST_CHECK(bg::get<0>(p1) == 10);
BOOST_CHECK(bg::get<1>(p1) == 20);
BOOST_CHECK(bg::get<2>(p1) == 30);
P p2;
- bg::assign(p2, 2, 4, 6);
+ bg::assign_values(p2, 2, 4, 6);
bg::divide_point(p1, p2);
BOOST_CHECK(bg::get<0>(p1) == 5);
BOOST_CHECK(bg::get<1>(p1) == 5);
BOOST_CHECK(bg::get<2>(p1) == 5);
}
+template
+void test_assign()
+{
+ P p1;
+ P p2;
+ bg::assign_values(p1, 12, 34, 56);
+ bg::assign_point(p2, p1);
+ BOOST_CHECK(bg::get<0>(p2) == 12);
+ BOOST_CHECK(bg::get<1>(p2) == 34);
+ BOOST_CHECK(bg::get<2>(p2) == 56);
+
+ bg::assign_value(p2, 78);
+ BOOST_CHECK(bg::get<0>(p2) == 78);
+ BOOST_CHECK(bg::get<1>(p2) == 78);
+ BOOST_CHECK(bg::get<2>(p2) == 78);
+}
+
template
void test_all()
@@ -106,6 +123,7 @@ void test_all()
test_subtraction();
test_multiplication
();
test_division
();
+ test_assign
();
}
diff --git a/test/arithmetic/dot_product.cpp b/test/arithmetic/dot_product.cpp
index 806b10424..777124ca2 100644
--- a/test/arithmetic/dot_product.cpp
+++ b/test/arithmetic/dot_product.cpp
@@ -30,9 +30,9 @@ template
void test_all()
{
P p1;
- bg::assign(p1, 1, 2, 3);
+ bg::assign_values(p1, 1, 2, 3);
P p2;
- bg::assign(p2, 4, 5, 6);
+ bg::assign_values(p2, 4, 5, 6);
BOOST_CHECK(bg::dot_product(p1, p2) == 1*4 + 2*5 + 3*6);
}
diff --git a/test/compile_test.cpp b/test/compile_test.cpp
deleted file mode 100644
index 31d02020e..000000000
--- a/test/compile_test.cpp
+++ /dev/null
@@ -1,220 +0,0 @@
-// TODO: OLD!
-
-// Boost.Geometry (aka GGL, Generic Geometry Library)
-//
-// Copyright (c) 2007-2011 Barend Gehrels, Amsterdam, the Netherlands.
-// Use, modification and distribution is subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-
-#include
-
-template
-struct modifying_functor
-{
- double sum;
- modifying_functor() : sum(0)
- {}
- inline void operator()(P& p)
- {
- p.x(1);
- }
-
- inline void operator()(bg::segment& s)
- {
- s.first.x(1);
- }
-};
-
-template
-struct const_functor
-{
- double sum;
- const_functor() : sum(0)
- {}
- inline void operator()(P const& p)
- {
- sum += p.x();
- }
-
- inline void operator()(bg::segment const& s)
- {
- sum += s.first.x() - s.second.x();
- }
-};
-
-template class V>
-void check_linestring()
-{
- typedef bg::model::d2::point_xy P;
- typedef bg::model::linestring line_type;
- line_type line;
- line.push_back(P(0,0));
- line.push_back(P(1,1));
-
- typedef bg::multi_linestring multi_line_type;
- multi_line_type multi;
- multi.push_back(line);
-
- double len = bg::length(line);
- len = bg::length(multi);
- double d = bg::distance(P(0,1), line);
- //d = bg::distance(P(0,1), multi); not defined yet!
-
- line_type simp;
- bg::simplify(line, simp, 3);
- multi_line_type simpm;
- bg::simplify(multi, simpm, 3);
-
- typedef bg::model::box box_type;
- box_type box1;
- bg::envelope(line, box1);
- box_type box2;
- bg::envelope(multi, box2);
-
- // FIXME: Where is output stream op for line/multi --mloskot
- //std::stringstream out;
- // out << line << std::endl;
- //out << multi << std::endl;
-
- // For each, const
- /* TODO: Fix for_each/functor
- const_functor
cf;
- std::for_each(line.begin(), line.end(), cf);
-
- const line_type& cl = line;
- const multi_line_type& cm = multi;
-
- bg::for_each_point(cl, cf);
- bg::for_each_point(cm, cf);
- bg::for_each_segment(cl, cf);
- bg::for_each_segment(cm, cf);
-
- // For each, modifying
- modifying_functor
mf;
- line_type& ml = line;
- multi_line_type& mm = multi;
- std::for_each(line.begin(), line.end(), mf);
- bg::for_each_point(ml, mf);
- bg::for_each_point(mm, mf);
- bg::for_each_segment(ml, mf);
- bg::for_each_segment(mm, mf);
- */
-
-}
-
-template
-<
- typename T,
- template class VP,
- template class VR
->
-void check_polygon()
-{
- typedef bg::model::d2::point_xy P;
- typedef bg::model::polygon Y;
- Y poly;
- poly.outer().push_back(P(0,0));
- poly.outer().push_back(P(2,0));
- poly.outer().push_back(P(2,2));
- poly.outer().push_back(P(0,2));
-
- bg::correct(poly);
-
- // multi
- typedef bg::multi_polygon MY;
- MY multi;
- multi.push_back(poly);
-
- double a = bg::area(poly);
- a = bg::area(multi);
-
- //double d = bg::distance(P(0,1), poly);
-
- Y simp;
- bg::simplify(poly, simp, 3);
- MY msimp;
- bg::simplify(multi, msimp, 3);
-
- typedef bg::model::box box_type;
- box_type box1;
- bg::envelope(poly, box1);
- box_type box2;
- bg::envelope(multi, box2);
-
- P ctr;
- bg::centroid(poly, ctr);
-
- // within
- bg::model::d2::point_xy circ_centre(10,10);
-
- bool w = bg::within(P(1, 1), poly);
- //w = bg::within(poly, b); tbd
- w = bg::within(P(1, 1), multi);
-
- //bg::circle circ(circ_centre, 10);
- //w = bg::within(poly, circ);
- //w = bg::within(multi, circ);
- //w = bg::within(multi, b); tbd
-
- // For each, const
- /* TODO: Fix for_each/functor
- const_functor cf;
- std::for_each(poly.outer().begin(), poly.outer().end(), cf);
-
- const Y& cp = poly;
- const MY& cm = multi;
-
- bg::for_each_point(cp, cf);
- bg::for_each_point(cm, cf);
- bg::for_each_segment(cp, cf);
- bg::for_each_segment(cm, cf);
-
- // For each, modifying
- modifying_functor
mf;
- Y& mp = poly;
- MY& mm = multi;
- std::for_each(poly.outer().begin(), poly.outer().end(), mf);
- bg::for_each_point(mp, mf);
- bg::for_each_point(mm, mf);
- bg::for_each_segment(mp, mf);
- bg::for_each_segment(mm, mf);
- */
-}
-
-
-int main()
-{
- check_linestring();
- check_linestring();
- check_linestring();
- check_linestring();
-
- //check_linestring