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

#include <ana-state-to-diagnostic-state.h>

Inheritance diagram for ana::xml_state:
Collaboration diagram for ana::xml_state:

Public Member Functions

 xml_state (const program_state &state, const extrinsic_state &ext_state)
xml::elementget_or_create_element (const region &reg)
void write_as_xml (pretty_printer *pp, int depth, bool indent) const final override
void add_child (std::unique_ptr< node > node)
void add_text (std::string str)
void add_text_from_pp (pretty_printer &pp)
void add_comment (std::string str)
elementfind_child_element (std::string kind) const
virtual textdyn_cast_text ()
virtual elementdyn_cast_element ()
void dump (FILE *out) const
void DEBUG_FUNCTION dump () const

Data Fields

std::unique_ptr< doctypedecl > m_doctypedecl
std::vector< std::unique_ptr< node > > m_children

Private Types

typedef std::map< bit_range, const svalue * > concrete_bindings_t

Private Member Functions

xml::elementcreate_and_add_element (const region &reg)
std::unique_ptr< xml::elementcreate_element (const region &reg)
void create_elements_for_binding_cluster (const binding_cluster &cluster, bool create_all)
std::unique_ptr< xml::elementcreate_element_for_conc_bindings (const concrete_bindings_t &conc_bindings)
bool get_bit_range_within_base_region (const region &reg, bit_range &out)
void populate_element_for_typed_region (xml::element &e, const region &reg, const concrete_bindings_t &conc_bindings, bool create_all)
void set_attr_for_dynamic_extents (const region &reg, xml::element &e)
bool show_child_element_for_child_region_p (const region &reg, const concrete_bindings_t &conc_bindings, bool create_all)
std::unique_ptr< xml::elementcreate_element_for_svalue (const svalue *sval)

Static Private Member Functions

static std::unique_ptr< xml::elementmake_memory_space_element (const char *label)

Private Attributes

const program_statem_state
const extrinsic_statem_ext_state
region_model_managerm_mgr
xml::elementm_root
std::map< const region *, xml::element * > m_region_to_element_map
std::map< const region *, treem_types_for_untyped_regions

Member Typedef Documentation

◆ concrete_bindings_t

typedef std::map<bit_range, const svalue *> ana::xml_state::concrete_bindings_t
private

Constructor & Destructor Documentation

◆ xml_state()

ana::xml_state::xml_state ( const program_state & state,
const extrinsic_state & ext_state )

Member Function Documentation

◆ add_child()

void xml::node_with_children::add_child ( std::unique_ptr< node > node)
inherited

◆ add_comment()

void xml::node_with_children::add_comment ( std::string str)
inherited

References add_child().

◆ add_text()

void xml::node_with_children::add_text ( std::string str)
inherited

References add_child(), and m_children.

Referenced by xml::printer::add_text(), and add_text_from_pp().

◆ add_text_from_pp()

void xml::node_with_children::add_text_from_pp ( pretty_printer & pp)
inherited

◆ create_and_add_element()

xml::element & ana::xml_state::create_and_add_element ( const region & reg)
private

◆ create_element()

std::unique_ptr< xml::element > ana::xml_state::create_element ( const region & reg)
private

◆ create_element_for_conc_bindings()

std::unique_ptr< xml::element > ana::xml_state::create_element_for_conc_bindings ( const concrete_bindings_t & conc_bindings)
private

◆ create_element_for_svalue()

std::unique_ptr< xml::element > ana::xml_state::create_element_for_svalue ( const svalue * sval)
private

◆ create_elements_for_binding_cluster()

void ana::xml_state::create_elements_for_binding_cluster ( const binding_cluster & cluster,
bool create_all )
private

◆ dump() [1/2]

void DEBUG_FUNCTION xml::node::dump ( ) const
inlineinherited

References DEBUG_FUNCTION, and dump().

Referenced by dump().

◆ dump() [2/2]

void xml::node::dump ( FILE * out) const
inherited

◆ dyn_cast_element()

virtual element * xml::node::dyn_cast_element ( )
inlinevirtualinherited

Reimplemented in xml::element.

◆ dyn_cast_text()

virtual text * xml::node::dyn_cast_text ( )
inlinevirtualinherited

Reimplemented in xml::text.

◆ find_child_element()

element * xml::node_with_children::find_child_element ( std::string kind) const
inherited

◆ get_bit_range_within_base_region()

bool ana::xml_state::get_bit_range_within_base_region ( const region & reg,
bit_range & out )
private

◆ get_or_create_element()

xml::element & ana::xml_state::get_or_create_element ( const region & reg)

◆ make_memory_space_element()

std::unique_ptr< xml::element > ana::xml_state::make_memory_space_element ( const char * label)
staticprivate

◆ populate_element_for_typed_region()

void ana::xml_state::populate_element_for_typed_region ( xml::element & e,
const region & reg,
const concrete_bindings_t & conc_bindings,
bool create_all )
private

◆ set_attr_for_dynamic_extents()

void ana::xml_state::set_attr_for_dynamic_extents ( const region & reg,
xml::element & e )
private

◆ show_child_element_for_child_region_p()

bool ana::xml_state::show_child_element_for_child_region_p ( const region & reg,
const concrete_bindings_t & conc_bindings,
bool create_all )
private

◆ write_as_xml()

void xml::document::write_as_xml ( pretty_printer * pp,
int depth,
bool indent ) const
finaloverridevirtualinherited
struct document : public node_with_children.

Implements xml::node.

References xml::node_with_children::m_children, m_doctypedecl, and pp_string().

Field Documentation

◆ m_children

◆ m_doctypedecl

std::unique_ptr<doctypedecl> xml::document::m_doctypedecl
inherited

Referenced by write_as_xml().

◆ m_ext_state

const extrinsic_state& ana::xml_state::m_ext_state
private

◆ m_mgr

region_model_manager& ana::xml_state::m_mgr
private

◆ m_region_to_element_map

std::map<const region *, xml::element *> ana::xml_state::m_region_to_element_map
private

◆ m_root

xml::element* ana::xml_state::m_root
private

◆ m_state

const program_state& ana::xml_state::m_state
private

◆ m_types_for_untyped_regions

std::map<const region *, tree> ana::xml_state::m_types_for_untyped_regions
private

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