Rectangle Set

API Reference

template <typename _Key, typename _Value>
class

Public Types

typedef
typedef
typedef

Public Functions

mdds::rectangle_set::rectangle_set()
mdds::rectangle_set::rectangle_set(const rectangle_set &r)
mdds::rectangle_set::~rectangle_set()
rectangle_set &mdds::rectangle_set::operator=(const rectangle_set &r)
bool mdds::rectangle_set::operator==(const rectangle_set &r)
const

Equality between two instances of rectangle_set is evaluated based on the stored rectangle instances; their pointer values and geometries.

bool mdds::rectangle_set::operator!=(const rectangle_set &r)
const
bool mdds::rectangle_set::insert(key_type x1, key_type y1, key_type x2, key_type y2, value_type data)

Insert a new rectangle (and data associated with it) into the set. Note that insertion of duplicate data instance is not allowed. A data is considered a duplicate if its pointer value is identical to one of the data instances already stored within. Also note that the end point of a rectangle is non-inclusive; a rectangle of (x1,y1) - (x2,y2) means that the rectangle spans x1 <= x < x2 and y1 <= y < y2.

Return
true if a rectangle successfully inserted, false otherwise.
Parameters
  • x1 -

    lower x coordinate of the rectangle. Inclusive.

  • y1 -

    lower y coordinate of the rectangle. Inclusive.

  • x2 -

    upper x coordinate of the rectangle. Non-inclusive.

  • y2 -

    upper y coordinate of the rectangle. Non-inclusive.

  • data -

    pointer to data instance associated with this rectangle. Note that the caller is responsible for managing the life cycle of the data instance.

bool mdds::rectangle_set::search(key_type x, key_type y, search_result_type &result)

Search and collect all rectangles that contains a given point.

Return
true if the search is successful, false otherwise.
Parameters
  • x -

    x coordinate of a query point.

  • y -

    y coordinate of a query point.

  • result -

    array of pointers to rectangle instances.

search_result mdds::rectangle_set::search(key_type x, key_type y)

Search and collect all rectangles containing a given point.

Return
object containing the result of the search, which can be accessed via iterator.
Parameters
  • x -

    x coordinate of a query point.

  • y -

    y coordinate of a query point.

void mdds::rectangle_set::remove(value_type data)

Remove a rectangle instance pointed to by a given pointer.

Parameters
  • data -

    pointer that points to the rectangle instance you wish to remove from the set.

void mdds::rectangle_set::clear()

Clear all rectangles stored in the set.

size_t mdds::rectangle_set::size()
const

Return the number of rectangles currently stored in the set.

Return
number of stored rectangles.

bool mdds::rectangle_set::empty()
const

Check whether or not the set is empty.

Return
true if the set is empty, false otherwise.

class

Most of the implementation of search_result and its iterator is in segment_tree since the iteration logic is identical & depends on the segment_tree internals.

Inherits from mdds::segment_tree< _Key, _Value >::search_result_base

Public Types

typedef typedef inner_type::search_result_base::res_chains_type mdds::rectangle_set<_Key, _Value>::search_result::res_chains_type
typedef typedef inner_type::search_result_base::res_chains_ptr mdds::rectangle_set<_Key, _Value>::search_result::res_chains_ptr
typedef typedef inner_type::data_chain_type mdds::rectangle_set<_Key, _Value>::search_result::data_chain_type

Public Functions

template<>
mdds::rectangle_set<_Key, _Value>::search_result::search_result()
template<>
mdds::rectangle_set<_Key, _Value>::search_result::search_result(const search_result &r)
template<>
search_result::iterator mdds::rectangle_set<_Key, _Value>::search_result::begin()
template<>
search_result::iterator mdds::rectangle_set<_Key, _Value>::search_result::end()
class

Inherits from mdds::segment_tree< _Key, _Value >::iterator_base

Public Functions

template<>
mdds::rectangle_set<_Key, _Value>::search_result::iterator::iterator()

Friends

friend mdds::rectangle_set::rectangle_set< _Key, _Value >::search_result