| Home | Libraries | People | FAQ | More

#### Ring Concept

###### Description

The Ring Concept describes the requirements for a ring type. All algorithms in Boost.Geometry will check any geometry arguments against the concept requirements.

| Note
Also called linear ring, but we explicitly refer to a filled feature here

###### Concept Definition

The Ring Concept is defined as following:

- there must be a specialization of `traits::tag` defining `ring_tag` as type
- it must behave like a Boost.Range Random Access Range
- The type defined by the metafunction `range_value<...>::type` must fulfill the Point Concept
- there might be a specialization of `traits::point_order` defining the order or orientation of its points, `clockwise` or `counterclockwise`
- there might be a specialization of `traits::closure` defining the closure, `open` or `closed`

###### Available Models

- ring
- a Boost.Polygon polygon_data (requires `#include boost/geometry/geometries/adapted/boost_polygon/ring.hpp>`)
- a std::vector (requires `#include boost/geometry/geometries/adapted/std_as_ring.hpp>`)
- a std::deque (requires `#include boost/geometry/geometries/adapted/std_as_ring.hpp>`)