[/============================================================================
  Boost.Geometry (aka GGL, Generic Geometry Library)

  Copyright (c) 2007-2013 Barend Gehrels, Amsterdam, the Netherlands.
  Copyright (c) 2008-2013 Bruno Lalande, Paris, France.
  Copyright (c) 2009-2013 Mateusz Loskot, London, UK.

  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)
=============================================================================/]


[/ Generated by doxygen_xml2qbk 1.1.1, don't change, will be overwritten automatically]
[/ Generated from doxy/doxygen_output/xml/group__register.xml]
[section:boost_geometry_register_box BOOST_GEOMETRY_REGISTER_BOX]

'''<indexterm><primary>BOOST_GEOMETRY_REGISTER_BOX</primary></indexterm>'''
Macro to register a box. 

[heading Description]
The macro BOOST\u005fGEOMETRY\u005fREGISTER\u005fBOX registers a box such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can be used with the specified type. The box may contain template parameters, which must be specified then. 

[heading Synopsis]
``#define BOOST_GEOMETRY_REGISTER_BOX(Box, Point, MinCorner,
                             MaxCorner)``

[heading Parameters]

[table
[[Name] [Description] ]
[[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 Header]
`#include <boost/geometry/geometries/register/box.hpp>`

[heading Example]
[register_box]
[register_box_output]


[endsect]

[section:boost_geometry_register_box_2d_4values BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES]

'''<indexterm><primary>BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES</primary></indexterm>'''
Macro to register a box. 

[heading Description]
The macro BOOST\u005fGEOMETRY\u005fREGISTER\u005fBOX\u005f2D\u005f4VALUES registers a box such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can be used with the specified type. 

[heading Synopsis]
``#define BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES(Box, Point, Left,
                                        Bottom, Right, Top)``

[heading Parameters]

[table
[[Name] [Description] ]
[[Box] [Box type to be registered ]]
[[Point] [Point type reported as point_type by box. Must be two dimensional. Note that these box types 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 Header]
`#include <boost/geometry/geometries/register/box.hpp>`

[heading Example]
[register_box_2d_4values]
[register_box_2d_4values_output]


[endsect]

[section:boost_geometry_register_box_templated BOOST_GEOMETRY_REGISTER_BOX_TEMPLATED]

'''<indexterm><primary>BOOST_GEOMETRY_REGISTER_BOX_TEMPLATED</primary></indexterm>'''
Macro to register a box. 

[heading Description]
The macro BOOST\u005fGEOMETRY\u005fREGISTER\u005fBOX\u005fTEMPLATED registers a box 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 box are registered, regardless of their point type. 

[heading Synopsis]
``#define BOOST_GEOMETRY_REGISTER_BOX_TEMPLATED(Box, MinCorner, MaxCorner)``

[heading Parameters]

[table
[[Name] [Description] ]
[[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 Header]
`#include <boost/geometry/geometries/register/box.hpp>`

[heading Example]
[register_box_templated]
[register_box_templated_output]


[endsect]

[section:boost_geometry_register_linestring BOOST_GEOMETRY_REGISTER_LINESTRING]

'''<indexterm><primary>BOOST_GEOMETRY_REGISTER_LINESTRING</primary></indexterm>'''
Macro to register a linestring. 

[heading Description]
The macro BOOST\u005fGEOMETRY\u005fREGISTER\u005fLINESTRING registers a linestring such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can be used with the specified type. The linestring may contain template parameters, which must be specified then. 

[heading Synopsis]
``#define BOOST_GEOMETRY_REGISTER_LINESTRING(Linestring)``

[heading Parameters]

[table
[[Name] [Description] ]
[[Linestring] [linestring type to be registered]]
]


[heading Header]
`#include <boost/geometry/geometries/register/linestring.hpp>`

[heading Example]
[register_linestring]
[register_linestring_output]


[endsect]

[section:boost_geometry_register_linestring_templated BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED]

'''<indexterm><primary>BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED</primary></indexterm>'''
Macro to register a templated linestring. 

[heading Description]
The macro BOOST\u005fGEOMETRY\u005fREGISTER\u005fLINESTRING\u005fTEMPLATED registers a templated linestring 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 linestring are registered, regardless of their point type. 

[heading Synopsis]
``#define BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED(Linestring)``

[heading Parameters]

[table
[[Name] [Description] ]
[[Linestring] [linestring (without template parameters) type to be registered]]
]


[heading Header]
`#include <boost/geometry/geometries/register/linestring.hpp>`

[heading Example]
[register_linestring_templated]
[register_linestring_templated_output]


[endsect]

[section:boost_geometry_register_multi_linestring BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING]

'''<indexterm><primary>BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING</primary></indexterm>'''
Macro to register a multi\u005flinestring. 

[heading Description]
The macro BOOST\u005fGEOMETRY\u005fREGISTER\u005fMULTI\u005fLINESTRING registers a multi\u005flinestring such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can be used with the specified type. The multi\u005flinestring may contain template parameters, which must be specified then. 

[heading Synopsis]
``#define BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING(MultiLineString)``

[heading Parameters]

[table
[[Name] [Description] ]
[[MultiLineString] [multi_linestring type to be registered]]
]


[heading Header]
`#include <boost/geometry/geometries/register/multi_linestring.hpp>`

[heading Example]
[register_multi_linestring]
[register_multi_linestring_output]


[endsect]

[section:boost_geometry_register_multi_linestring_templated BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING_TEMPLATED]

'''<indexterm><primary>BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING_TEMPLATED</primary></indexterm>'''
Macro to register a templated multi\u005flinestring. 

[heading Description]
The macro BOOST\u005fGEOMETRY\u005fREGISTER\u005fMULTI\u005fLINESTRING\u005fTEMPLATED registers a templated multi\u005flinestring 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 linestring type, and should not be specified. Boost.Geometry takes care of inserting the template parameter. Hence all types of this templated multi\u005flinestring are registered, regardless of their point type. 

[heading Synopsis]
``#define BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING_TEMPLATED(MultiLineString)``

[heading Parameters]

[table
[[Name] [Description] ]
[[MultiLineString] [multi_linestring (without template parameters) type to be registered]]
]


[heading Header]
`#include <boost/geometry/geometries/register/multi_linestring.hpp>`

[heading Example]
[register_multi_linestring_templated]
[register_multi_linestring_templated_output]


[endsect]

[section:boost_geometry_register_multi_point BOOST_GEOMETRY_REGISTER_MULTI_POINT]

'''<indexterm><primary>BOOST_GEOMETRY_REGISTER_MULTI_POINT</primary></indexterm>'''
Macro to register a multi\u005fpoint. 

[heading Description]
The macro BOOST\u005fGEOMETRY\u005fREGISTER\u005fMULTI\u005fPOINT registers a multi\u005fpoint such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can be used with the specified type. The multi\u005fpoint may contain template parameters, which must be specified then. 

[heading Synopsis]
``#define BOOST_GEOMETRY_REGISTER_MULTI_POINT(MultiPoint)``

[heading Parameters]

[table
[[Name] [Description] ]
[[MultiPoint] [multi_point type to be registered]]
]


[heading Header]
`#include <boost/geometry/geometries/register/multi_point.hpp>`

[heading Example]
[register_multi_point]
[register_multi_point_output]


[endsect]

[section:boost_geometry_register_multi_point_templated BOOST_GEOMETRY_REGISTER_MULTI_POINT_TEMPLATED]

'''<indexterm><primary>BOOST_GEOMETRY_REGISTER_MULTI_POINT_TEMPLATED</primary></indexterm>'''
Macro to register a templated multi\u005fpoint. 

[heading Description]
The macro BOOST\u005fGEOMETRY\u005fREGISTER\u005fMULTI\u005fPOINT\u005fTEMPLATED registers a templated multi\u005fpoint 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 multi\u005fpoint are registered, regardless of their point type. 

[heading Synopsis]
``#define BOOST_GEOMETRY_REGISTER_MULTI_POINT_TEMPLATED(MultiPoint)``

[heading Parameters]

[table
[[Name] [Description] ]
[[MultiPoint] [multi_point (without template parameters) type to be registered]]
]


[heading Header]
`#include <boost/geometry/geometries/register/multi_point.hpp>`

[heading Example]
[register_multi_point_templated]
[register_multi_point_templated_output]


[endsect]

[section:boost_geometry_register_multi_polygon BOOST_GEOMETRY_REGISTER_MULTI_POLYGON]

'''<indexterm><primary>BOOST_GEOMETRY_REGISTER_MULTI_POLYGON</primary></indexterm>'''
Macro to register a multi\u005fpolygon. 

[heading Description]
The macro BOOST\u005fGEOMETRY\u005fREGISTER\u005fMULTI\u005fPOLYGON registers a multi\u005fpolygon such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can be used with the specified type. The multi\u005fpolygon may contain template parameters, which must be specified then. 

[heading Synopsis]
``#define BOOST_GEOMETRY_REGISTER_MULTI_POLYGON(MultiPolygon)``

[heading Parameters]

[table
[[Name] [Description] ]
[[MultiPolygon] [multi_polygon type to be registered]]
]


[heading Header]
`#include <boost/geometry/geometries/register/multi_polygon.hpp>`

[heading Example]
[register_multi_polygon]
[register_multi_polygon_output]


[endsect]

[section:boost_geometry_register_multi_polygon_templated BOOST_GEOMETRY_REGISTER_MULTI_POLYGON_TEMPLATED]

'''<indexterm><primary>BOOST_GEOMETRY_REGISTER_MULTI_POLYGON_TEMPLATED</primary></indexterm>'''
Macro to register a templated multi\u005fpolygon. 

[heading Description]
The macro BOOST\u005fGEOMETRY\u005fREGISTER\u005fMULTI\u005fPOLYGON\u005fTEMPLATED registers a templated multi\u005fpolygon 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 polygon type, and should not be specified. Boost.Geometry takes care of inserting the template parameter. Hence all types of this templated multi\u005fpolygon are registered, regardless of their point type. 

[heading Synopsis]
``#define BOOST_GEOMETRY_REGISTER_MULTI_POLYGON_TEMPLATED(MultiPolygon)``

[heading Parameters]

[table
[[Name] [Description] ]
[[MultiPolygon] [multi_polygon (without template parameters) type to be registered]]
]


[heading Header]
`#include <boost/geometry/geometries/register/multi_polygon.hpp>`

[heading Example]
[register_multi_polygon_templated]
[register_multi_polygon_templated_output]


[endsect]

[section:boost_geometry_register_point_2d BOOST_GEOMETRY_REGISTER_POINT_2D]

'''<indexterm><primary>BOOST_GEOMETRY_REGISTER_POINT_2D</primary></indexterm>'''
Macro to register a 2D point type. 

[heading Description]
The macro BOOST\u005fGEOMETRY\u005fREGISTER\u005fPOINT\u005f2D registers a two-dimensional point type such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can be used with the specified type. For geographic coordinate systems, be sure to specify first longitude and then latitude, to be able to use the strategies included in the library. 

[heading Synopsis]
``#define BOOST_GEOMETRY_REGISTER_POINT_2D(Point, CoordinateType, CoordinateSystem,
                                  Field0, Field1)``

[heading Parameters]

[table
[[Name] [Description] ]
[[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, or longitude) coordinate ]]
[[Field1] [Member containing second (usually y, or latitude) coordinate]]
]


[heading Header]
`#include <boost/geometry/geometries/register/point.hpp>`

[include reference/geometries/register/point.qbk]


[endsect]

[section:boost_geometry_register_point_2d_const BOOST_GEOMETRY_REGISTER_POINT_2D_CONST]

'''<indexterm><primary>BOOST_GEOMETRY_REGISTER_POINT_2D_CONST</primary></indexterm>'''
Macro to register a 2D point type (const version) 

[heading Description]
The macro BOOST\u005fGEOMETRY\u005fREGISTER\u005fPOINT\u005f2D\u005fCONST registers a two-dimensional point type such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can be used with the specified type. The const version registers only read access to the fields, the point type is therefore read-only. For geographic coordinate systems, be sure to specify first longitude and then latitude, to be able to use the strategies included in the library. 

[heading Synopsis]
``#define BOOST_GEOMETRY_REGISTER_POINT_2D_CONST(Point, CoordinateType, CoordinateSystem,
                                        Field0, Field1)``

[heading Parameters]

[table
[[Name] [Description] ]
[[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, or longitude) coordinate ]]
[[Field1] [Member containing second (usually y, or latitude) coordinate ]]
]


[heading Header]
`#include <boost/geometry/geometries/register/point.hpp>`


[endsect]

[section:boost_geometry_register_point_2d_get_set BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET]

'''<indexterm><primary>BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET</primary></indexterm>'''
Macro to register a 2D point type (having separate get/set methods) 

[heading Description]
The macro BOOST\u005fGEOMETRY\u005fREGISTER\u005fPOINT\u005f2D\u005fGET\u005fSET registers a two-dimensional point type such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can be 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. For geographic coordinate systems, be sure to specify first longitude and then latitude, to be able to use the strategies included in the library. 

[heading Synopsis]
``#define BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET(Point, CoordinateType, CoordinateSystem,
                                          Get0, Get1, Set0,
                                          Set1)``

[heading Parameters]

[table
[[Name] [Description] ]
[[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, or longitude) coordinate ]]
[[Get1] [Method to get the second (usually y, or latitude) coordinate ]]
[[Set0] [Method to set the first (usually x, or longitude) coordinate ]]
[[Set1] [Method to set the second (usually y, or latitude) coordinate ]]
]


[heading Header]
`#include <boost/geometry/geometries/register/point.hpp>`


[endsect]

[section:boost_geometry_register_point_3d BOOST_GEOMETRY_REGISTER_POINT_3D]

'''<indexterm><primary>BOOST_GEOMETRY_REGISTER_POINT_3D</primary></indexterm>'''
Macro to register a 3D point type. 

[heading Description]
The macro BOOST\u005fGEOMETRY\u005fREGISTER\u005fPOINT\u005f3D registers a three-dimensional point type such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can be used with the specified type. 

[heading Synopsis]
``#define BOOST_GEOMETRY_REGISTER_POINT_3D(Point, CoordinateType, CoordinateSystem,
                                  Field0, Field1, Field2)``

[heading Parameters]

[table
[[Name] [Description] ]
[[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 ]]
]


[heading Header]
`#include <boost/geometry/geometries/register/point.hpp>`


[endsect]

[section:boost_geometry_register_point_3d_const BOOST_GEOMETRY_REGISTER_POINT_3D_CONST]

'''<indexterm><primary>BOOST_GEOMETRY_REGISTER_POINT_3D_CONST</primary></indexterm>'''
Macro to register a 3D point type (const version) 

[heading Description]
The macro BOOST\u005fGEOMETRY\u005fREGISTER\u005fPOINT\u005f3D\u005fCONST registers a three-dimensional point type such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can be used with the specified type. The const version registers only read access to the fields, the point type is therefore read-only. 

[heading Synopsis]
``#define BOOST_GEOMETRY_REGISTER_POINT_3D_CONST(Point, CoordinateType, CoordinateSystem,
                                        Field0, Field1, Field2)``

[heading Parameters]

[table
[[Name] [Description] ]
[[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 ]]
]


[heading Header]
`#include <boost/geometry/geometries/register/point.hpp>`


[endsect]

[section:boost_geometry_register_point_3d_get_set BOOST_GEOMETRY_REGISTER_POINT_3D_GET_SET]

'''<indexterm><primary>BOOST_GEOMETRY_REGISTER_POINT_3D_GET_SET</primary></indexterm>'''
Macro to register a 3D point type (having separate get/set methods) 

[heading Description]
The macro BOOST\u005fGEOMETRY\u005fREGISTER\u005fPOINT\u005f3D\u005fGET\u005fSET registers a three-dimensional point type such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can be 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. 

[heading Synopsis]
``#define BOOST_GEOMETRY_REGISTER_POINT_3D_GET_SET(Point, CoordinateType, CoordinateSystem,
                                          Get0, Get1, Get2,
                                          Set0, Set1, Set2)``

[heading Parameters]

[table
[[Name] [Description] ]
[[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 ]]
]


[heading Header]
`#include <boost/geometry/geometries/register/point.hpp>`


[endsect]

[section:boost_geometry_register_ring BOOST_GEOMETRY_REGISTER_RING]

'''<indexterm><primary>BOOST_GEOMETRY_REGISTER_RING</primary></indexterm>'''
Macro to register a ring. 

[heading Description]
The macro BOOST\u005fGEOMETRY\u005fREGISTER\u005fRING registers a ring such that it is recognized by Boost.Geometry and that Boost.Geometry functionality can be used with the specified type. The ring may contain template parameters, which must be specified then. 

[heading Synopsis]
``#define BOOST_GEOMETRY_REGISTER_RING(Ring)``

[heading Parameters]

[table
[[Name] [Description] ]
[[Ring] [ring type to be registered]]
]


[heading Header]
`#include <boost/geometry/geometries/register/ring.hpp>`

[heading Example]
[register_ring]
[register_ring_output]


[endsect]

[section:boost_geometry_register_ring_templated BOOST_GEOMETRY_REGISTER_RING_TEMPLATED]

'''<indexterm><primary>BOOST_GEOMETRY_REGISTER_RING_TEMPLATED</primary></indexterm>'''
Macro to register a templated ring. 

[heading Description]
The macro BOOST\u005fGEOMETRY\u005fREGISTER\u005fRING\u005fTEMPLATED 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. 

[heading Synopsis]
``#define BOOST_GEOMETRY_REGISTER_RING_TEMPLATED(Ring)``

[heading Parameters]

[table
[[Name] [Description] ]
[[Ring] [ring (without template parameters) type to be registered]]
]


[heading Header]
`#include <boost/geometry/geometries/register/ring.hpp>`

[heading Example]
[register_ring_templated]
[register_ring_templated_output]


[endsect]

