GCC Middle and Back End API Reference
ana::concrete_binding_map Class Reference

#include <store.h>

Public Types

using map_t = std::map<bit_range, const svalue *>
using const_iterator = map_t::const_iterator
using iterator = map_t::iterator

Public Member Functions

void clear ()
bool empty_p () const
bool operator== (const concrete_binding_map &other) const
bool operator!= (const concrete_binding_map &other) const
const_iterator begin () const
const_iterator end () const
iterator begin ()
iterator end ()
size_t size () const
void dump_to_pp (pretty_printer *pp, bool simple, bool multiline) const
void dump (bool simple) const
void add_to_tree_widget (text_art::tree_widget &parent_widget, const text_art::dump_widget_info &dwi) const
void validate () const
void insert (const bit_range &bits, const svalue *sval)
void insert (const byte_range &bytes, const svalue *sval)
void erase (const bit_range &bits)
const svalueget_any_exact_binding (const bit_range &bits) const
const_iterator find (const bit_range &bits) const
iterator find (const bit_range &bits)
complexity calc_complexity () const
bool apply_ctor_to_region (const region *parent_reg, tree ctor, region_model_manager *mgr)
void remove_overlapping_binding (store_manager *mgr, const bit_range &bits_to_drop, const bit_range &affected_bound_bits, const svalue &old_sval)
void remove_overlapping_bindings (store_manager *mgr, const bit_range &bits)

Static Public Member Functions

static int cmp (const concrete_binding_map &map1, const concrete_binding_map &map2)

Private Member Functions

std::vector< std::pair< bit_range, const svalue & > > get_overlapping_bindings (const bit_range &bits)
bool apply_ctor_val_to_range (const region *parent_reg, region_model_manager *mgr, tree min_index, tree max_index, tree val)
bool apply_ctor_pair_to_child_region (const region *parent_reg, region_model_manager *mgr, tree index, tree val)

Private Attributes

map_t m_map

Detailed Description

A mapping from concrete bit_ranges to svalues, for use by
binding_cluster and compound_svalue.
The keys are ordered by the start offset, and must not overlap
The bound svalues may not be compound_svalues, so that we don't
nest these (for canonicalization).   

Member Typedef Documentation

◆ const_iterator

using ana::concrete_binding_map::const_iterator = map_t::const_iterator

◆ iterator

using ana::concrete_binding_map::iterator = map_t::iterator

◆ map_t

Member Function Documentation

◆ add_to_tree_widget()

void ana::concrete_binding_map::add_to_tree_widget ( text_art::tree_widget & parent_widget,
const text_art::dump_widget_info & dwi ) const

◆ apply_ctor_pair_to_child_region()

bool ana::concrete_binding_map::apply_ctor_pair_to_child_region ( const region * parent_reg,
region_model_manager * mgr,
tree index,
tree val )
private

◆ apply_ctor_to_region()

bool ana::concrete_binding_map::apply_ctor_to_region ( const region * parent_reg,
tree ctor,
region_model_manager * mgr )

◆ apply_ctor_val_to_range()

bool ana::concrete_binding_map::apply_ctor_val_to_range ( const region * parent_reg,
region_model_manager * mgr,
tree min_index,
tree max_index,
tree val )
private

◆ begin() [1/2]

iterator ana::concrete_binding_map::begin ( )
inline

References m_map.

◆ begin() [2/2]

const_iterator ana::concrete_binding_map::begin ( ) const
inline

References m_map.

◆ calc_complexity()

complexity ana::concrete_binding_map::calc_complexity ( ) const

◆ clear()

void ana::concrete_binding_map::clear ( )
inline

References m_map.

◆ cmp()

int ana::concrete_binding_map::cmp ( const concrete_binding_map & map1,
const concrete_binding_map & map2 )
static

◆ dump()

void ana::concrete_binding_map::dump ( bool simple) const

◆ dump_to_pp()

void ana::concrete_binding_map::dump_to_pp ( pretty_printer * pp,
bool simple,
bool multiline ) const

◆ empty_p()

bool ana::concrete_binding_map::empty_p ( ) const
inline

References m_map.

◆ end() [1/2]

iterator ana::concrete_binding_map::end ( )
inline

References m_map.

◆ end() [2/2]

const_iterator ana::concrete_binding_map::end ( ) const
inline

References m_map.

◆ erase()

void ana::concrete_binding_map::erase ( const bit_range & bits)
inline

References m_map.

◆ find() [1/2]

iterator ana::concrete_binding_map::find ( const bit_range & bits)
inline

References m_map.

◆ find() [2/2]

const_iterator ana::concrete_binding_map::find ( const bit_range & bits) const
inline

References m_map.

◆ get_any_exact_binding()

const svalue * ana::concrete_binding_map::get_any_exact_binding ( const bit_range & bits) const

◆ get_overlapping_bindings()

std::vector< std::pair< bit_range, const svalue & > > ana::concrete_binding_map::get_overlapping_bindings ( const bit_range & bits)
private

◆ insert() [1/2]

void ana::concrete_binding_map::insert ( const bit_range & bits,
const svalue * sval )
inline

References m_map.

◆ insert() [2/2]

void ana::concrete_binding_map::insert ( const byte_range & bytes,
const svalue * sval )
inline

◆ operator!=()

bool ana::concrete_binding_map::operator!= ( const concrete_binding_map & other) const
inline

References m_map.

◆ operator==()

bool ana::concrete_binding_map::operator== ( const concrete_binding_map & other) const
inline

References m_map.

◆ remove_overlapping_binding()

void ana::concrete_binding_map::remove_overlapping_binding ( store_manager * mgr,
const bit_range & bits_to_drop,
const bit_range & affected_bound_bits,
const svalue & old_sval )

◆ remove_overlapping_bindings()

void ana::concrete_binding_map::remove_overlapping_bindings ( store_manager * mgr,
const bit_range & bits )

◆ size()

size_t ana::concrete_binding_map::size ( ) const
inline

References m_map.

◆ validate()

void ana::concrete_binding_map::validate ( ) const

Field Documentation

◆ m_map

map_t ana::concrete_binding_map::m_map
private

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