hobbes
a language, embedded compiler, and runtime for efficient dynamic expression evaluation, data storage and analysis
Public Types | Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
hobbes::range_map< K, V, Ord > Class Template Reference

#include <rmap.H>

Inheritance diagram for hobbes::range_map< K, V, Ord >:
Inheritance graph
Collaboration diagram for hobbes::range_map< K, V, Ord >:
Collaboration graph

Public Types

typedef std::pair< K, K > range
 
typedef std::vector< rangeranges
 
typedef std::vector< std::pair< range, V > > Mapping
 

Public Member Functions

void show (std::ostream &out) const
 
const V * lookup (const K &k) const
 
const V * lookupRangeSubset (const range &kr) const
 
void insert (const range &rr, const V &v)
 
void insert (const K &k0, const K &k1, const V &v)
 
void mergeRange (range rr, const std::function< void(V &)> &f)
 
void mergeRange (const K &k0, const K &k1, const std::function< void(V &)> &f)
 
void keys (std::set< K > *ks) const
 
Mapping mapping () const
 
ranges disjointRanges (const ranges &trs) const
 
void compact ()
 

Private Types

enum  RangeIntersection {
  LLRR, RRLL, EE, ELR,
  ERL, LRE, RLE, LRRL,
  RLLR, LRLR, RLRL
}
 
typedef std::vector< V > values
 

Private Member Functions

bool rangesValid () const
 
size_t find (const K &k) const
 
void insAt (size_t i, const range &r, const V &v)
 
void deleteFrom (size_t i, const range &rr)
 

Static Private Member Functions

static bool rangesValid (const ranges &rs)
 
static RangeIntersection classifyIntersection (const range &lr, const range &rr)
 

Private Attributes

ranges rs
 
values vs
 

Member Typedef Documentation

◆ Mapping

template<typename K, typename V, typename Ord>
typedef std::vector<std::pair<range, V> > hobbes::range_map< K, V, Ord >::Mapping

◆ range

template<typename K, typename V, typename Ord>
typedef std::pair<K, K> hobbes::range_map< K, V, Ord >::range

◆ ranges

template<typename K, typename V, typename Ord>
typedef std::vector<range> hobbes::range_map< K, V, Ord >::ranges

◆ values

template<typename K, typename V, typename Ord>
typedef std::vector<V> hobbes::range_map< K, V, Ord >::values
private

Member Enumeration Documentation

◆ RangeIntersection

template<typename K, typename V, typename Ord>
enum hobbes::range_map::RangeIntersection
private
Enumerator
LLRR 
RRLL 
EE 
ELR 
ERL 
LRE 
RLE 
LRRL 
RLLR 
LRLR 
RLRL 

Member Function Documentation

◆ classifyIntersection()

template<typename K, typename V, typename Ord>
static RangeIntersection hobbes::range_map< K, V, Ord >::classifyIntersection ( const range lr,
const range rr 
)
inlinestaticprivate

◆ compact()

template<typename K, typename V, typename Ord>
void hobbes::range_map< K, V, Ord >::compact ( )
inline

◆ deleteFrom()

template<typename K, typename V, typename Ord>
void hobbes::range_map< K, V, Ord >::deleteFrom ( size_t  i,
const range rr 
)
inlineprivate

◆ disjointRanges()

template<typename K, typename V, typename Ord>
ranges hobbes::range_map< K, V, Ord >::disjointRanges ( const ranges trs) const
inline

◆ find()

template<typename K, typename V, typename Ord>
size_t hobbes::range_map< K, V, Ord >::find ( const K &  k) const
inlineprivate

◆ insAt()

template<typename K, typename V, typename Ord>
void hobbes::range_map< K, V, Ord >::insAt ( size_t  i,
const range r,
const V &  v 
)
inlineprivate

◆ insert() [1/2]

template<typename K, typename V, typename Ord>
void hobbes::range_map< K, V, Ord >::insert ( const range rr,
const V &  v 
)
inline

◆ insert() [2/2]

template<typename K, typename V, typename Ord>
void hobbes::range_map< K, V, Ord >::insert ( const K &  k0,
const K &  k1,
const V &  v 
)
inline

◆ keys()

template<typename K, typename V, typename Ord>
void hobbes::range_map< K, V, Ord >::keys ( std::set< K > *  ks) const
inline

◆ lookup()

template<typename K, typename V, typename Ord>
const V* hobbes::range_map< K, V, Ord >::lookup ( const K &  k) const
inline

◆ lookupRangeSubset()

template<typename K, typename V, typename Ord>
const V* hobbes::range_map< K, V, Ord >::lookupRangeSubset ( const range kr) const
inline

◆ mapping()

template<typename K, typename V, typename Ord>
Mapping hobbes::range_map< K, V, Ord >::mapping ( ) const
inline

◆ mergeRange() [1/2]

template<typename K, typename V, typename Ord>
void hobbes::range_map< K, V, Ord >::mergeRange ( range  rr,
const std::function< void(V &)> &  f 
)
inline

◆ mergeRange() [2/2]

template<typename K, typename V, typename Ord>
void hobbes::range_map< K, V, Ord >::mergeRange ( const K &  k0,
const K &  k1,
const std::function< void(V &)> &  f 
)
inline

◆ rangesValid() [1/2]

template<typename K, typename V, typename Ord>
static bool hobbes::range_map< K, V, Ord >::rangesValid ( const ranges rs)
inlinestaticprivate

◆ rangesValid() [2/2]

template<typename K, typename V, typename Ord>
bool hobbes::range_map< K, V, Ord >::rangesValid ( ) const
inlineprivate

◆ show()

template<typename K, typename V, typename Ord>
void hobbes::range_map< K, V, Ord >::show ( std::ostream &  out) const
inline

Member Data Documentation

◆ rs

template<typename K, typename V, typename Ord>
ranges hobbes::range_map< K, V, Ord >::rs
private

◆ vs

template<typename K, typename V, typename Ord>
values hobbes::range_map< K, V, Ord >::vs
private

The documentation for this class was generated from the following file: