Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext
BOOST_GEOMETRY_REGISTER_RING_TEMPLATED

Macro to register a templated ring.

Description

The macro BOOST_GEOMETRY_REGISTER_RING_TEMPLATED registers a templated ring such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can be used with the specified type. The type must have one template parameter, which should be a point type, and should not be specified. Boost.Geometry takes care of inserting the template parameter. Hence all types of this templated ring are registered, regardless of their point type. Optionally accepts Clockwise, or Clockwise and Closed, to specify orientation and closure. Closure stays at the default when omitted.

Synopsis

#define BOOST_GEOMETRY_REGISTER_RING_TEMPLATED(...)

Parameters

Name

Description

...

ring (without template parameters) type to be registered, Ring, Clockwise, or Ring, Clockwise, Closed

Header

#include <boost/geometry/geometries/register/ring.hpp>

Example

Show the use of the macro BOOST_GEOMETRY_REGISTER_RING_TEMPLATED

#include <iostream>
#include <deque>

#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/register/ring.hpp>

// Adapt any deque to Boost.Geometry Ring Concept
BOOST_GEOMETRY_REGISTER_RING_TEMPLATED(std::deque)

int main()
{
    std::deque<boost::geometry::model::d2::point_xy<double>> ring(3);
    boost::geometry::assign_values(ring[0], 0, 0);
    boost::geometry::assign_values(ring[2], 4, 1);
    boost::geometry::assign_values(ring[1], 1, 4);

    // Boost.Geometry algorithms work on any deque now
    boost::geometry::correct(ring);
    std::cout << "Area: "  << boost::geometry::area(ring) << std::endl;
    std::cout << "Contents: "  << boost::geometry::wkt(ring) << std::endl;

    return 0;
}

Output:

Area: 7.5
Line: ((0, 0), (1, 4), (4, 1), (0, 0))

PrevUpHomeNext