register

# register: Macros for registration

BOOST_GEOMETRY_REGISTER_BOX
Box
Point
MinCorner
MaxCorner
namespace boost { namespace geometry { namespace traits { \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_BOX_TRAITS(Box, Point) \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_BOX_ACCESS(Box, Point, MinCorner, MaxCorner) \ }}}

Macro to register a \1.

The macro BOOST_GEOMETRY_REGISTER_BOX registers a box such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can used with the specified type. The box may contain template parameters, which must be specified then. Box

Box type to be registered

Point

Point type on which box is based. Might be two or three-dimensional

MinCorner

minimum corner (should be public member or method)

MaxCorner

maximum corner (should be public member or method)

[heading Example] [register_box] [register_box_output]
BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES
Box
Point
Left
Bottom
Right
Top
namespace boost { namespace geometry { namespace traits { \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_BOX_TRAITS(Box, Point) \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_BOX_ACCESS_4VALUES(Box, Point, Left, Bottom, Right, Top) \ }}}

Macro to register a \1.

The macro BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES registers a box such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can used with the specified type. Box

Box type to be registered

Point

Point type reported as point_type by box. Must be two dimensional. Note that these box tyeps do not contain points, but they must have a related point_type

Left

Left side (must be public member or method)

Bottom

Bottom side (must be public member or method)

Right

Right side (must be public member or method)

Top

Top side (must be public member or method)

[heading Example] [register_box_2d_4values] [register_box_2d_4values_output]
BOOST_GEOMETRY_REGISTER_BOX_TEMPLATED
Box
MinCorner
MaxCorner
namespace boost { namespace geometry { namespace traits { \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_BOX_TRAITS_TEMPLATED(Box) \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_BOX_ACCESS_TEMPLATED(Box, MinCorner, MaxCorner) \ }}}

Macro to register a \1.

The macro BOOST_GEOMETRY_REGISTER_BOX_TEMPLATED registers a box such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can 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 box are registered, regardless of their point type. Box

Box type to be registered

MinCorner

minimum corner (should be public member or method)

MaxCorner

maximum corner (should be public member or method)

[heading Example] [register_box_templated] [register_box_templated_output]
BOOST_GEOMETRY_REGISTER_LINESTRING
Linestring
namespace boost { namespace geometry { namespace traits { \ template<> struct tag<Linestring> { typedef linestring_tag type; }; \ }}}

Macro to register a \1.

The macro BOOST_GEOMETRY_REGISTER_LINESTRING registers a linestring such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can used with the specified type. The linestring may contain template parameters, which must be specified then. Linestring

linestring type to be registered

[heading Example] [register_linestring] [register_linestring_output]
BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED
Linestring
namespace boost { namespace geometry { namespace traits { \ template<typename P> struct tag< Linestring<P> > { typedef linestring_tag type; }; \ }}}

Macro to register a \1.

The macro BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED registers a templated linestring such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can 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 linestring are registered, regardless of their point type. Linestring

linestring (without template parameters) type to be registered

[heading Example] [register_linestring_templated] [register_linestring_templated_output]
BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING
MultiLineString
namespace boost { namespace geometry { namespace traits { \ template<> struct tag<MultiLineString> { typedef multi_linestring_tag type; }; \ }}}

Macro to register a \1.

The macro BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING registers a multi_linestring such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can used with the specified type. The multi_linestring may contain template parameters, which must be specified then. MultiLineString

multi_linestring type to be registered

[heading Example] [register_multi_linestring] [register_multi_linestring_output]
BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING_TEMPLATED
MultiLineString
namespace boost { namespace geometry { namespace traits { \ template<typename LineString> struct tag< MultiLineString<LineString> > { typedef multi_linestring_tag type; }; \ }}}

Macro to register a \1.

The macro BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING_TEMPLATED registers a templated multi_linestring such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can used with the specified type. The type must have one template parameter, which should be a linestring type, and should not be specified. Boost.Geometry takes care of inserting the template parameter. Hence all types of this templated multi_linestring are registered, regardless of their point type. MultiLineString

multi_linestring (without template parameters) type to be registered

[heading Example] [register_multi_linestring_templated] [register_multi_linestring_templated_output]
BOOST_GEOMETRY_REGISTER_MULTI_POINT
MultiPoint
namespace boost { namespace geometry { namespace traits { \ template<> struct tag<MultiPoint> { typedef multi_point_tag type; }; \ }}}

Macro to register a \1.

The macro BOOST_GEOMETRY_REGISTER_MULTI_POINT registers a multi_point such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can used with the specified type. The multi_point may contain template parameters, which must be specified then. MultiPoint

multi_point type to be registered

[heading Example] [register_multi_point] [register_multi_point_output]
BOOST_GEOMETRY_REGISTER_MULTI_POINT_TEMPLATED
MultiPoint
namespace boost { namespace geometry { namespace traits { \ template<typename Point> struct tag< MultiPoint<Point> > { typedef multi_point_tag type; }; \ }}}

Macro to register a \1.

The macro BOOST_GEOMETRY_REGISTER_MULTI_POINT_TEMPLATED registers a templated multi_point such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can 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 multi_point are registered, regardless of their point type. MultiPoint

multi_point (without template parameters) type to be registered

[heading Example] [register_multi_point_templated] [register_multi_point_templated_output]
BOOST_GEOMETRY_REGISTER_MULTI_POLYGON
MultiPolygon
namespace boost { namespace geometry { namespace traits { \ template<> struct tag<MultiPolygon> { typedef multi_polygon_tag type; }; \ }}}

Macro to register a \1.

The macro BOOST_GEOMETRY_REGISTER_MULTI_POLYGON registers a multi_polygon such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can used with the specified type. The multi_polygon may contain template parameters, which must be specified then. MultiPolygon

multi_polygon type to be registered

[heading Example] [register_multi_polygon] [register_multi_polygon_output]
BOOST_GEOMETRY_REGISTER_MULTI_POLYGON_TEMPLATED
MultiPolygon
namespace boost { namespace geometry { namespace traits { \ template<typename Polygon> struct tag< MultiPolygon<Polygon> > { typedef multi_polygon_tag type; }; \ }}}

Macro to register a \1.

The macro BOOST_GEOMETRY_REGISTER_MULTI_POLYGON_TEMPLATED registers a templated multi_polygon such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can used with the specified type. The type must have one template parameter, which should be a polygon type, and should not be specified. Boost.Geometry takes care of inserting the template parameter. Hence all types of this templated multi_polygon are registered, regardless of their point type. MultiPolygon

multi_polygon (without template parameters) type to be registered

[heading Example] [register_multi_polygon_templated] [register_multi_polygon_templated_output]
BOOST_GEOMETRY_REGISTER_POINT_2D
Point
CoordinateType
CoordinateSystem
Field0
Field1
namespace boost { namespace geometry { namespace traits { \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_TRAITS(Point, 2, CoordinateType, CoordinateSystem) \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS(Point, 0, CoordinateType, Field0, Field0) \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS(Point, 1, CoordinateType, Field1, Field1) \ }}}

Macro to register a \1.

The macro BOOST_GEOMETRY_REGISTER_POINT_2D registers a two-dimensional point type such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can used with the specified type. Point

Point type to be registered

CoordinateType

Type of the coordinates of the point (e.g. double)

CoordinateSystem

Coordinate system (e.g. cs::cartesian)

Field0

Member containing first (usually x) coordinate

Field1

Member containing second (usually y) coordinate

[include reference/geometries/register/point.qbk]
BOOST_GEOMETRY_REGISTER_POINT_2D_CONST
Point
CoordinateType
CoordinateSystem
Field0
Field1
namespace boost { namespace geometry { namespace traits { \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_TRAITS(Point, 2, CoordinateType, CoordinateSystem) \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_CONST(Point, 0, CoordinateType, Field0) \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_CONST(Point, 1, CoordinateType, Field1) \ }}}

Macro to register a \1 (const version)

The macro BOOST_GEOMETRY_REGISTER_POINT_2D_CONST registers a two-dimensional point type such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can used with the specified type.. The const version registers only read access to the fields, the point type is therefore read-only Point

Point type to be registered

CoordinateType

Type of the coordinates of the point (e.g. double)

CoordinateSystem

Coordinate system (e.g. cs::cartesian)

Field0

Member containing first (usually x) coordinate

Field1

Member containing second (usually y) coordinate

BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET
Point
CoordinateType
CoordinateSystem
Get0
Get1
Set0
Set1
namespace boost { namespace geometry { namespace traits { \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_TRAITS(Point, 2, CoordinateType, CoordinateSystem) \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_GET_SET(Point, 0, CoordinateType, Get0, Set0) \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_GET_SET(Point, 1, CoordinateType, Get1, Set1) \ }}}

Macro to register a \1 (having separate get/set methods)

The macro BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET registers a two-dimensional point type such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can used with the specified type.. The get/set version registers get and set methods separately and can be used for classes with protected member variables and get/set methods to change coordinates Point

Point type to be registered

CoordinateType

Type of the coordinates of the point (e.g. double)

CoordinateSystem

Coordinate system (e.g. cs::cartesian)

Get0

Method to get the first (usually x) coordinate

Get1

Method to get the second (usually y) coordinate

Set0

Method to set the first (usually x) coordinate

Set1

Method to set the second (usually y) coordinate

BOOST_GEOMETRY_REGISTER_POINT_3D
Point
CoordinateType
CoordinateSystem
Field0
Field1
Field2
namespace boost { namespace geometry { namespace traits { \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_TRAITS(Point, 3, CoordinateType, CoordinateSystem) \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS(Point, 0, CoordinateType, Field0, Field0) \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS(Point, 1, CoordinateType, Field1, Field1) \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS(Point, 2, CoordinateType, Field2, Field2) \ }}}

Macro to register a \1.

The macro BOOST_GEOMETRY_REGISTER_POINT_3D registers a three-dimensional point type such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can used with the specified type. Point

Point type to be registered

CoordinateType

Type of the coordinates of the point (e.g. double)

CoordinateSystem

Coordinate system (e.g. cs::cartesian)

Field0

Member containing first (usually x) coordinate

Field1

Member containing second (usually y) coordinate

Field2

Member containing third (usually z) coordinate

BOOST_GEOMETRY_REGISTER_POINT_3D_CONST
Point
CoordinateType
CoordinateSystem
Field0
Field1
Field2
namespace boost { namespace geometry { namespace traits { \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_TRAITS(Point, 3, CoordinateType, CoordinateSystem) \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_CONST(Point, 0, CoordinateType, Field0) \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_CONST(Point, 1, CoordinateType, Field1) \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_CONST(Point, 2, CoordinateType, Field2) \ }}}

Macro to register a \1 (const version)

The macro BOOST_GEOMETRY_REGISTER_POINT_3D_CONST registers a three-dimensional point type such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can used with the specified type.. The const version registers only read access to the fields, the point type is therefore read-only Point

Point type to be registered

CoordinateType

Type of the coordinates of the point (e.g. double)

CoordinateSystem

Coordinate system (e.g. cs::cartesian)

Field0

Member containing first (usually x) coordinate

Field1

Member containing second (usually y) coordinate

Field2

Member containing third (usually z) coordinate

BOOST_GEOMETRY_REGISTER_POINT_3D_GET_SET
Point
CoordinateType
CoordinateSystem
Get0
Get1
Get2
Set0
Set1
Set2
namespace boost { namespace geometry { namespace traits { \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_TRAITS(Point, 3, CoordinateType, CoordinateSystem) \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_GET_SET(Point, 0, CoordinateType, Get0, Set0) \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_GET_SET(Point, 1, CoordinateType, Get1, Set1) \ BOOST_GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_GET_SET(Point, 2, CoordinateType, Get2, Set2) \ }}}

Macro to register a \1 (having separate get/set methods)

The macro BOOST_GEOMETRY_REGISTER_POINT_3D_GET_SET registers a three-dimensional point type such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can used with the specified type.. The get/set version registers get and set methods separately and can be used for classes with protected member variables and get/set methods to change coordinates Point

Point type to be registered

CoordinateType

Type of the coordinates of the point (e.g. double)

CoordinateSystem

Coordinate system (e.g. cs::cartesian)

Get0

Method to get the first (usually x) coordinate

Get1

Method to get the second (usually y) coordinate

Get2

Method to get the third (usually z) coordinate

Set0

Method to set the first (usually x) coordinate

Set1

Method to set the second (usually y) coordinate

Set2

Method to set the third (usually z) coordinate

BOOST_GEOMETRY_REGISTER_RING
Ring
namespace boost { namespace geometry { namespace traits { \ template<> struct tag<Ring> { typedef ring_tag type; }; \ }}}

Macro to register a \1.

The macro BOOST_GEOMETRY_REGISTER_RING registers a ring such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can used with the specified type. The ring may contain template parameters, which must be specified then. Ring

ring type to be registered

[heading Example] [register_ring] [register_ring_output]
BOOST_GEOMETRY_REGISTER_RING_TEMPLATED
Ring
namespace boost { namespace geometry { namespace traits { \ template<typename P> struct tag< Ring<P> > { typedef ring_tag type; }; \ }}}

Macro to register a \1.

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 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. Ring

ring (without template parameters) type to be registered

[heading Example] [register_ring_templated] [register_ring_templated_output]