An object arr of the class Arrangement_with_history_2<Traits,Dcel> represents the planar subdivision induced by a set of input curves C. The arrangement is represented as a doublyconnected edgelist (Dcel). As is the case for the Arrangement_2<Traits,Dcel>, each Dcel vertex is associated with a point and each edge is associated with an xmonotone curve whose interior is disjoint from all other edges and vertices. Each such xmonotone curve is a subcurve of some C ∈ C  or may represent an overlap among several curves in C.
The Arrangement_with_history_2<Traits,Dcel> classtemplate extends the Arrangement_2 classtemplate by keeping an additional container of input curves representing C, and by maintaining a crossmapping between these curves and the arrangement edges they induce. This way it is possible to determine the inducing curve(s) of each arrangement edge. This mapping also allows the traversal of input curves, and the traversal of edges induced by each curve.
The Arrangement_with_history_2<Traits,Dcel> template has two parameters:
#include <CGAL/Arrangement_with_history_2.h>
 
 a private type used as an abbreviation of the Arrangement_with_history_2<Traits,Dcel> type hereafter. 
 
the traits class in use.
 
 
the Dcel representation of the arrangement.

 
 the point type, as defined by the traits class.  
 
 the xmonotone curve type, as defined by the traits class.  
 
 the curve type, as defined by the traits class. 
In addition, the nested types Vertex, Halfedge and Face are defined, as well as all handle, iterator and circualtor types, as defined by the Arrangement_2 classtemplate .
 
a handle for an input curve.
 
 
a bidirectional iterator over the
curves that induce the arrangement. Its valuetype is
Curve_2.
 
 
an iterator over the edges induced by an input curve.
Its value type is Halfedge_handle.
 
 
an iterator for the curves that originate a given arrangement edge.
Its value type is Curve_handle.

 
constructs an empty arrangement containing one unbounded face,
which corresponds to the
whole plane.
 
 
copy constructor.
 
 
constructs an empty arrangement that uses the given traits
instance for performing the geometric predicates.


 assignment operator. 

 assigns the contents of another arrangement. 

 clears the arrangement. 
See the Arrangement_2 referrence pages for the full list.
• Accessing the Input Curves:
See the Arrangement_2 referrence pages for the full list of functions for modifying arrangement vertices.
• Modifying Arrangement Edges:
The following functions override their counterparts in the Arrangement_2 class, as they also maintain the crossrelationships between the input curves and the edges they induce.

 
splits the edge e into two edges (more precisely, into two halfedge
pairs), at a given split point p.
The function returns a handle for the halfedge whose source is the same
as e>source() and whose target vertex is the split point.
 

 
merges the edges represented by e1 and e2 into
a single edge.
The function returns a handle for one of the merged halfedges.
 

 
removes the edge e from the arrangement. Since the e may be the only edge incident to its source vertex (or its target vertex), this vertex can be removed as well. The flags remove_source and remove_target indicate whether the endpoints of e should be removed, or whether they should be left as isolated vertices in the arrangement. If the operation causes two faces to merge, the merged face is returned. Otherwise, the face to which the edge was incident is returned. 