retdec
|
#include <range.h>
Public Types | |
using | RangeType = Range< T > |
using | RangeElementType = T |
using | iterator = typename std::vector< RangeType >::iterator |
using | const_iterator = typename std::vector< RangeType >::const_iterator |
typedef RangeType | value_type |
Public Member Functions | |
RangeContainer ()=default | |
RangeContainer (const RangeContainer &)=default | |
RangeContainer (RangeContainer &&)=default | |
RangeContainer & | operator= (const RangeContainer &)=default |
RangeContainer & | operator= (RangeContainer &&)=default |
bool | operator== (const RangeContainer &o) const |
bool | operator!= (const RangeContainer &o) const |
auto | begin () |
auto | end () |
auto | begin () const |
auto | end () const |
std::size_t | size () const |
bool | empty () const |
void | clear () |
auto | front () |
auto | front () const |
auto | back () |
auto | back () const |
decltype(auto) | operator[] (std::size_t index) |
decltype(auto) | operator[] (std::size_t index) const |
template<typename RangeT > | |
std::pair< iterator, bool > | insert (RangeT &&range) |
template<typename RangeT > | |
std::pair< iterator, bool > | insert (const_iterator, RangeT &&range) |
std::pair< iterator, bool > | insert (const RangeElementType &s, const RangeElementType &e) |
const RangeType * | getRange (const RangeElementType &e) const |
bool | contains (const RangeElementType &e) const |
bool | containsExact (const RangeType &r) const |
void | remove (const RangeType &r) |
void | remove (const RangeElementType &s, const RangeElementType &e) |
Private Attributes | |
std::vector< RangeType > | _ranges |
Friends | |
std::ostream & | operator<< (std::ostream &out, const RangeContainer< RangeElementType > &r) |
Range container provides storing multiple ranges in one container while keeping the ranges disjoint. This container also looks for continuous ranges and merges them together into one range. All ranges are kept in ascending order.
T | Range element type. |
using retdec::common::RangeContainer< T >::const_iterator = typename std::vector<RangeType>::const_iterator |
using retdec::common::RangeContainer< T >::iterator = typename std::vector<RangeType>::iterator |
using retdec::common::RangeContainer< T >::RangeElementType = T |
using retdec::common::RangeContainer< T >::RangeType = Range<T> |
typedef RangeType retdec::common::RangeContainer< T >::value_type |
|
default |
|
default |
|
default |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Adds new range into the container. Range is merged with other ranges if it overlaps it or is continuous with it. This method invalidates iterators.
RangeT | Range type. |
range | Range to insert. |
|
inline |
|
default |
|
default |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
friend |
|
private |