BWAPI
Public Types | Public Member Functions | Protected Attributes
Arr_construction_event< Traits_, Subcurve_, Arrangement_ > Class Template Reference

#include <Arr_construction_event.h>

Inheritance diagram for Arr_construction_event< Traits_, Subcurve_, Arrangement_ >:
Inheritance graph
[legend]
Collaboration diagram for Arr_construction_event< Traits_, Subcurve_, Arrangement_ >:
Collaboration graph
[legend]

List of all members.

Public Types

typedef Traits_ Traits_2
typedef Subcurve_ Subcurve
typedef Arrangement_ Arrangement_2
typedef
Arrangement_2::Vertex_handle 
Vertex_handle
typedef
Arrangement_2::Halfedge_handle 
Halfedge_handle
typedef
Traits_2::X_monotone_curve_2 
X_monotone_curve_2
typedef Traits_2::Point_2 Point_2
typedef Sweep_line_event
< Traits_2, Subcurve
Base
typedef Arr_construction_event
< Traits_2, Subcurve,
Halfedge_handle
Self
typedef Base::Subcurve_container Subcurve_container
typedef Base::Subcurve_iterator Subcurve_iterator
typedef
Base::Subcurve_reverse_iterator 
Subcurve_reverse_iterator

Public Member Functions

 Arr_construction_event ()
 ~Arr_construction_event ()
std::pair< bool,
Subcurve_iterator
add_curve_to_right (Subcurve *curve, const Traits_2 *tr)
std::pair< bool,
Subcurve_iterator
add_curve_pair_to_right (Subcurve *sc1, Subcurve *sc2)
int compute_halfedge_jump_count (Subcurve *curve)
bool is_curve_largest (Subcurve *curve)
void init_subcurve_in_arrangement_flags (unsigned int n)
bool is_subcurve_in_arrangement (unsigned int i) const
void set_subcurve_in_arrangement (unsigned int i, bool flag)
void set_halfedge_handle (Halfedge_handle h)
Halfedge_handle halfedge_handle () const
void set_vertex_handle (Vertex_handle v)
Vertex_handle vertex_handle () const
unsigned int dec_right_curves_counter ()
unsigned int right_curves_counter () const

Protected Attributes

std::vector< bool > m_isCurveInArr
Halfedge_handle m_halfedge
Vertex_handle m_vertex
unsigned int m_right_curves_counter

Detailed Description

template<class Traits_, class Subcurve_, class Arrangement_>
class Arr_construction_event< Traits_, Subcurve_, Arrangement_ >

Stores the data associated with an event. In addition to the information stored in Sweep_line_event, when constructing an arrangement, additional information is kept, in order to speed insertion of curves into the planar map.

The additional infomation contains the following:

Inherits from Sweep_line_event.

See also:
Sweep_line_event

Member Typedef Documentation

template<class Traits_ , class Subcurve_ , class Arrangement_ >
typedef Arrangement_ Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::Arrangement_2
template<class Traits_ , class Subcurve_ , class Arrangement_ >
typedef Sweep_line_event<Traits_2, Subcurve> Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::Base
template<class Traits_ , class Subcurve_ , class Arrangement_ >
typedef Arrangement_2::Halfedge_handle Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::Halfedge_handle
template<class Traits_ , class Subcurve_ , class Arrangement_ >
typedef Traits_2::Point_2 Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::Point_2
template<class Traits_ , class Subcurve_ , class Arrangement_ >
typedef Arr_construction_event<Traits_2, Subcurve, Halfedge_handle> Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::Self
template<class Traits_ , class Subcurve_ , class Arrangement_ >
typedef Subcurve_ Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::Subcurve
template<class Traits_ , class Subcurve_ , class Arrangement_ >
typedef Base::Subcurve_container Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::Subcurve_container
template<class Traits_ , class Subcurve_ , class Arrangement_ >
typedef Base::Subcurve_iterator Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::Subcurve_iterator
template<class Traits_ , class Subcurve_ , class Arrangement_ >
typedef Base::Subcurve_reverse_iterator Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::Subcurve_reverse_iterator
template<class Traits_ , class Subcurve_ , class Arrangement_ >
typedef Traits_ Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::Traits_2
template<class Traits_ , class Subcurve_ , class Arrangement_ >
typedef Arrangement_2::Vertex_handle Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::Vertex_handle
template<class Traits_ , class Subcurve_ , class Arrangement_ >
typedef Traits_2::X_monotone_curve_2 Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::X_monotone_curve_2

Constructor & Destructor Documentation

template<class Traits_ , class Subcurve_ , class Arrangement_ >
Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::Arr_construction_event ( ) [inline]

Default constructor.

template<class Traits_ , class Subcurve_ , class Arrangement_ >
Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::~Arr_construction_event ( ) [inline]

Destructor


Member Function Documentation

template<class Traits_ , class Subcurve_ , class Arrangement_ >
std::pair<bool, Subcurve_iterator> Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::add_curve_pair_to_right ( Subcurve sc1,
Subcurve sc2 
) [inline]

Add a curve pair to the right of the event.

Reimplemented from Sweep_line_event< Traits_, Subcurve_ >.

Here is the call graph for this function:

template<class Traits_ , class Subcurve_ , class Arrangement_ >
std::pair<bool, Subcurve_iterator> Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::add_curve_to_right ( Subcurve curve,
const Traits_2 tr 
) [inline]

Add a curve to the right of the event.

Reimplemented from Sweep_line_event< Traits_, Subcurve_ >.

Here is the call graph for this function:

template<class Traits_ , class Subcurve_ , class Arrangement_ >
int Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::compute_halfedge_jump_count ( Subcurve curve) [inline]

using the additional data that we store at the event, we compute how much we have to jump (he = he->next()->twin()) from the halfedge that is stored in the event, to the halefge that is previous to 'curve' that is about to be inserted into the arrangement.

Here is the call graph for this function:

template<class Traits_ , class Subcurve_ , class Arrangement_ >
unsigned int Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::dec_right_curves_counter ( ) [inline]

Decrement the count of curves to the right that we have't done yet with (haven't been inserted to the arrangement).

template<class Traits_ , class Subcurve_ , class Arrangement_ >
Halfedge_handle Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::halfedge_handle ( ) const [inline]

Get the halfedge handle.

template<class Traits_ , class Subcurve_ , class Arrangement_ >
void Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::init_subcurve_in_arrangement_flags ( unsigned int  n) [inline]

Resize the bit-vector indicating whether the incident curves are already in the arrangement, and set all flags to false.

template<class Traits_ , class Subcurve_ , class Arrangement_ >
bool Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::is_curve_largest ( Subcurve curve) [inline]

return true iff 'curve' is the toppest curve among the halfedges to the right fo the event that were already were inserted to the arrangement.

Here is the call graph for this function:

template<class Traits_ , class Subcurve_ , class Arrangement_ >
bool Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::is_subcurve_in_arrangement ( unsigned int  i) const [inline]

Check if the i'th subcurve is in the arrangement.

template<class Traits_ , class Subcurve_ , class Arrangement_ >
unsigned int Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::right_curves_counter ( ) const [inline]

Get the number of subcurves to the right of the event that we have't done yet with (haven't been inserted to the arrangement).

template<class Traits_ , class Subcurve_ , class Arrangement_ >
void Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::set_halfedge_handle ( Halfedge_handle  h) [inline]

Set the halfedge handle.

template<class Traits_ , class Subcurve_ , class Arrangement_ >
void Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::set_subcurve_in_arrangement ( unsigned int  i,
bool  flag 
) [inline]

Set the flag indicating whether the i'th subcurve is in the arrangement.

template<class Traits_ , class Subcurve_ , class Arrangement_ >
void Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::set_vertex_handle ( Vertex_handle  v) [inline]

Set the vertex handle.

template<class Traits_ , class Subcurve_ , class Arrangement_ >
Vertex_handle Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::vertex_handle ( ) const [inline]

Get the vertex handle.


Member Data Documentation

template<class Traits_ , class Subcurve_ , class Arrangement_ >
Halfedge_handle Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::m_halfedge [protected]
template<class Traits_ , class Subcurve_ , class Arrangement_ >
std::vector<bool> Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::m_isCurveInArr [protected]
template<class Traits_ , class Subcurve_ , class Arrangement_ >
unsigned int Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::m_right_curves_counter [protected]
template<class Traits_ , class Subcurve_ , class Arrangement_ >
Vertex_handle Arr_construction_event< Traits_, Subcurve_, Arrangement_ >::m_vertex [protected]

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines