/// \defgroup PkgArrangement2 2D Arrangement Reference

/// \defgroup PkgArrangement2Concepts Concepts
/// \ingroup PkgArrangement2

/// \cgalConceptNamespace
/// The namespace containing concepts specific to Arrangements.
namespace ArrTraits {}

/// \defgroup PkgArrangement2ConceptsDCEL DCEL Concepts
/// \ingroup PkgArrangement2Concepts

/// \defgroup PkgArrangement2ConceptsGeometricObjects Geometric Object Concepts
/// \ingroup PkgArrangement2Concepts

/// \defgroup PkgArrangement2ConceptsFunctionObjects Function Object Concepts
/// \ingroup PkgArrangement2Concepts

/// \defgroup PkgArrangement2ConceptsTraits Traits Concepts
/// \ingroup PkgArrangement2Concepts

/// \defgroup PkgArrangement2TraitsClasses Traits Classes
/// \ingroup PkgArrangement2

/// \defgroup PkgArrangement2DCEL DCEL
/// \ingroup PkgArrangement2

/// \defgroup PkgArrangement2IO I/O
/// \ingroup PkgArrangement2

/// \defgroup PkgArrangement2op_left_shift operator<<
/// \ingroup PkgArrangement2IO

/// \defgroup PkgArrangement2op_right_shift operator>>
/// \ingroup PkgArrangement2IO

/// \defgroup PkgArrangement2PointLocation Point Location
/// \ingroup PkgArrangement2

/// \defgroup PkgArrangement2Overlay Overlay
/// \ingroup PkgArrangement2

/// \defgroup PkgArrangement2Funcs Free Functions
/// \ingroup PkgArrangement2

/// \defgroup PkgArrangement2Insert CGAL::insert()
/// \ingroup PkgArrangement2Funcs

/// \defgroup PkgArrangement2Tags Tags
/// \ingroup PkgArrangement2

/// \defgroup PkgArrangement2Macros Macros
/// \ingroup PkgArrangement2

/// \defgroup PkgArrangement2Enums Enumerations
/// \ingroup PkgArrangement2

/*!
\addtogroup PkgArrangement2
\todo check generated documentation
\cgalPkgDescriptionBegin{2D Arrangements,PkgArrangement2Summary}
\cgalPkgPicture{Arrangement_2.png}
\cgalPkgSummaryBegin
\cgalPkgAuthors{Ron Wein, Eric Berberich, Efi Fogel, Dan Halperin, Michael Hemmer, Oren Salzman, and Baruch Zukerman}
\cgalPkgDesc{This package can be used to construct, maintain, alter, and display arrangements in the plane. Once an arrangement is constructed, the package can be used to obtain results of various queries on the arrangement, such as point location. The package also includes generic implementations of two algorithmic frameworks, that are, computing the zone of an arrangement, and line-sweeping the plane, the arrangements is embedded on. These frameworks are used in turn in the implementations of other operations on arrangements. Computing the overlay of two arrangements, for example, is based on the sweep-line framework.   Arrangements and arrangement components can also be extended to store additional data. An important extension stores the construction history of the arrangement, such that it is possible to obtain the originating curve of an arrangement subcurve.}
\cgalPkgManuals{Chapter_2D_Arrangements,PkgArrangement2}
\cgalPkgSummaryEnd
\cgalPkgShortInfoBegin
\cgalPkgSince{2.1}
\cgalPkgBib{cgal:wfzh-a2}
\cgalPkgLicense{\ref licensesGPL "GPL"}
\cgalPkgDemo{2D Arrangements,arrangements_2.zip}
\cgalPkgShortInfoEnd
\cgalPkgDescriptionEnd

Given a set \f$ \mathcal{C}\f$ of planar curves, the <I>arrangement</I>
\f$ {\mathcal A}({\mathcal C})\f$ is the subdivision of the plane induced
by the curves in \f$ \mathcal{C}\f$ into maximally connected cells. The cells
can be \f$ 0\f$-dimensional (<I>vertices</I>), \f$ 1\f$-dimensional (<I>edges</I>)
or \f$ 2\f$-dimensional (<I>faces</I>).

The class `Arrangement_2<Traits,Dcel>` encapsulates a data structure
that maintains arrangements of arbitrary bounded planar curves. It comes
with a variety of algorithms that operate on planar arrangement,
such as point-location queries and overlay computations, which are
implemented as peripheral classes or as free (global) functions.

\cgalClassifedRefPages

## Enumerations ##

- `CGAL::Arr_parameter_space`
- `CGAL::Arr_curve_end`
- `CGAL::Arr_halfedge_direction`

## Tags ##

- `CGAL::Arr_oblivious_side_tag`
- `CGAL::Arr_open_side_tag`

## Concepts ##

- `ArrangementDcel`
- `ArrangementDcelWithRebind`
- `ArrangementDcelVertex`
- `ArrangementDcelHalfedge`
- `ArrangementDcelFace`
- `ArrangementDcelHole`
- `ArrangementDcelIsolatedVertex`
- `ArrangementBasicTraits_2`
- `ArrangementLandmarkTraits_2`
- `ArrangementXMonotoneTraits_2`
- `ArrangementTraits_2`
- `ArrangementOpenBoundaryTraits_2`
- `ArrangementInputFormatter`
- `ArrangementOutputFormatter`
- `ArrangementWithHistoryInputFormatter`
- `ArrangementWithHistoryOutputFormatter`
- `ArrangementPointLocation_2`
- `ArrangementVerticalRayShoot_2`

## Geometric Object Concepts ##

- `ArrTraits::Point_2`
- `ArrTraits::XMonotoneCurve_2`
- `ArrTraits::Curve_2`

## Function Object Concepts ##

- `ArrTraits::CompareX_2`
- `ArrTraits::CompareXy_2`
- `ArrTraits::ConstructMinVertex_2`
- `ArrTraits::ConstructMaxVertex_2`
- `ArrTraits::IsVertical_2`
- `ArrTraits::CompareYAtX_2`
- `ArrTraits::CompareYAtXLeft_2`
- `ArrTraits::CompareYAtXRight_2`
- `ArrTraits::Equal_2`
- `ArrTraits::ParameterSpaceInX_2`
- `ArrTraits::ParameterSpaceInY_2`
- `ArrTraits::CompareXAtLimit_2`
- `ArrTraits::CompareXNearLimit_2`
- `ArrTraits::CompareYNearBoundary_2`
- `ArrTraits::Intersect_2`
- `ArrTraits::Split_2`
- `ArrTraits::AreMergeable_2`
- `ArrTraits::Merge_2`
- `ArrTraits::MakeXMonotone_2`
- `ArrTraits::Approximate_2`
- `ArrTraits::ConstructXMonotoneCurve_2`

## Classes ##

- `CGAL::Arrangement_2<Traits,Dcel>`
- `CGAL::Arr_accessor<Arrangement>`
- `CGAL::Arr_observer<Arrangement>`
- `CGAL::Arrangement_with_history_2<Traits,Dcel>`
- `CGAL::Arrangement_2::Vertex`
- `CGAL::Arrangement_2::Halfedge`
- `CGAL::Arrangement_2::Face`
- `CGAL::Arr_dcel_base<V,H,F>`
- `CGAL::Arr_default_dcel<Traits>`
- `CGAL::Arr_face_extended_dcel<Traits,FData,V,H,F>`
- `CGAL::Arr_extended_dcel<Traits,VData,HData,FData,V,H,F>`
- `CGAL::Arr_segment_traits_2<Kernel>`
- `CGAL::Arr_non_caching_segment_traits_2<Kernel>`
- `CGAL::Arr_linear_traits_2<Kernel>`
- `CGAL::Arr_polyline_traits_2<SegmentTraits>`
- `CGAL::Arr_circle_segment_traits_2<Kernel>`
- `CGAL::Arr_line_arc_traits_2<CircularKernel>`
- `CGAL::Arr_circular_arc_traits_2<CircularKernel>`
- `CGAL::Arr_circular_line_arc_traits_2<CircularKernel>`
- `CGAL::Arr_conic_traits_2<RatKernel,AlgKernel,NtTraits>`
- `CGAL::Arr_rational_function_traits_2<AlgebraicKernel_d_1>`
- `CGAL::Arr_Bezier_curve_traits_2<RatKernel,AlgKernel,NtTraits>`
- `CGAL::Arr_algebraic_segment_traits_2<Coefficient>`
- `CGAL::Arr_curve_data_traits_2<Tr,XData,Mrg,CData,Cnv>`
- `CGAL::Arr_consolidated_curve_data_traits_2<Traits,Data>`
- `CGAL::Arr_text_formatter<Arrangement>`
- `CGAL::Arr_face_extended_text_formatter<Arrangement>`
- `CGAL::Arr_extended_dcel_text_formatter<Arrangement>`
- `CGAL::Arr_with_history_text_formatter<ArrFormatter>`
- `CGAL::Arr_naive_point_location<Arrangement>`
- `CGAL::Arr_walk_along_line_point_location<Arrangement>`
- `CGAL::Arr_trapezoid_ric_point_location<Arrangement>`
- `CGAL::Arr_landmarks_point_location<Arrangement,Generator>`
- `CGAL::Arr_vertex_index_map<Arrangement>`
- `CGAL::Arr_face_index_map<Arrangement>`
- `CGAL::Arr_point_location_result<Arrangement>`

## Macros ##
- \link CGAL_ARR_POINT_LOCATION_VERSION `CGAL_ARR_POINT_LOCATION_VERSION` \endlink

## Functions ##

- `CGAL::is_valid()`
- `CGAL::insert()`
- `CGAL::insert_non_intersecting_curve()`
- `CGAL::insert_non_intersecting_curves()`
- `CGAL::insert_point()`
- `CGAL::remove_edge()`
- `CGAL::remove_vertex()`
- `CGAL::locate()`
- `CGAL::decompose()`
- `CGAL::overlay()`
- `CGAL::read()`
- `CGAL::write()`
- `CGAL::remove_curve()`
- \link PkgArrangement2op_left_shift `CGAL::operator<<` \endlink
- \link PkgArrangement2op_right_shift `CGAL::operator<<` \endlink

*/
