GTIRB
v2.2.0
GrammaTech Intermediate Representation for Binaries: C++ API
|
A complete internal representation consisting of Modules (Module). More...
#include <IR.hpp>
Public Types | |
enum | load_error { load_error::IncorrectVersion = 1, load_error::CorruptFile, load_error::CorruptModule, load_error::CorruptSection, load_error::CorruptByteInterval, load_error::CorruptCFG, load_error::BadUUID, load_error::MissingUUID, load_error::NotGTIRB } |
Specifies various failure modes when loading an IR. More... | |
Public Types inherited from gtirb::AuxDataContainer | |
using | const_aux_data_iterator = boost::transform_iterator< AccessRawData, AuxDataSet::const_iterator > |
An iterator type for traversing the AuxData in this container. More... | |
using | const_aux_data_range = boost::iterator_range< const_aux_data_iterator > |
Public Member Functions | |
CFG & | getCFG () |
Get a const reference to the associated Control Flow Graph (CFG). More... | |
const CFG & | getCFG () const |
Get the associated Control Flow Graph (CFG). More... | |
uint32_t | getVersion () const |
Get the version of the Protobuf used when creating this IR. More... | |
void | save (std::ostream &Out) const |
Serialize to an output stream in binary format. More... | |
void | saveJSON (std::ostream &Out) const |
Serialize to an output stream in JSON format. More... | |
void | setVersion (uint32_t V) |
Set the version of the Protobuf used when creating this IR. More... | |
Public Member Functions inherited from gtirb::AuxDataContainer | |
template<typename Schema > | |
void | addAuxData (typename Schema::Type &&X) |
Add a new AuxData, transferring ownership. More... | |
template<typename Schema > | |
Schema::Type * | getAuxData () |
Get a reference to the underlying type stored in the AuxData by name. More... | |
template<typename Schema > | |
const Schema::Type * | getAuxData () const |
Get a reference to the underlying type stored in the AuxData by name. More... | |
template<typename Schema > | |
bool | removeAuxData () |
Remove an AuxData by schema. More... | |
bool | removeAuxData (std::string Name) |
Remove an AuxData by name. More... | |
const_aux_data_iterator | aux_data_begin () const |
Return a constant iterator to the first AuxData. More... | |
const_aux_data_iterator | aux_data_end () const |
Return a constant iterator to the element following the last AuxData. More... | |
const_aux_data_range | aux_data () const |
Return a constant range of the auxiliary data (AuxData). More... | |
size_t | getAuxDataSize () const |
Get the total number of AuxData objects in this IR. More... | |
bool | getAuxDataEmpty () const |
Check: Is the number of AuxData objects in this IR zero? More... | |
void | clearAuxData () |
Clear all AuxData from the IR. More... | |
Public Member Functions inherited from gtirb::Node | |
Node (const Node &)=delete | |
Copying Nodes is explicitly disabled. More... | |
Node (Node &&)=delete | |
Move-constructing Nodes is explicitly disabled. More... | |
~Node () noexcept | |
Cleans up resources no longer needed by the Node object. More... | |
const UUID & | getUUID () const |
Get the Universally Unique ID (UUID) for this . More... | |
Node & | operator= (const Node &)=delete |
Copying Nodes is explicilty disabled. More... | |
Node & | operator= (Node &&)=delete |
Move-assigning Nodes is explicilty disabled. More... | |
Static Public Member Functions | |
static IR * | Create (Context &C) |
Create an IR object in its default state. More... | |
static ErrorOr< IR * > | load (Context &C, std::istream &In) |
Deserialize binary format from an input stream. More... | |
static ErrorOr< IR * > | loadJSON (Context &C, std::istream &In) |
Deserialize JSON format from an input stream. More... | |
Static Public Member Functions inherited from gtirb::AuxDataContainer | |
template<typename Schema > | |
static void | registerAuxDataType () |
Register a type to be used with AuxData of the given name. More... | |
Static Public Member Functions inherited from gtirb::Node | |
static Node * | Create (Context &C) |
Create a Node object in its default state. More... | |
static const Node * | getByUUID (const Context &C, const UUID &Uuid) |
Retrieve a node by its UUID. More... | |
static Node * | getByUUID (Context &C, const UUID &Uuid) |
Retrieve a node by its UUID. More... | |
Friends | |
class | Context |
Module-Related Public Types and Functions | |
Iterator over Modules. Modules are returned in name order. If more than one module has the same name, the order in which they are returned is unspecified. | |
using | module_iterator = boost::indirect_iterator< ModuleSet::iterator > |
using | const_module_iterator = boost::indirect_iterator< ModuleSet::const_iterator, const Module > |
Constant iterator over Modules. More... | |
using | module_range = boost::iterator_range< module_iterator > |
Range of Modules. More... | |
using | const_module_range = boost::iterator_range< const_module_iterator > |
Constant range of Modules. More... | |
using | module_name_iterator = boost::indirect_iterator< ModuleSet::index< by_name >::type::iterator > |
Iterator over modules Modules. More... | |
using | module_name_range = boost::iterator_range< module_name_iterator > |
Range of modules Modules. More... | |
using | const_module_name_iterator = boost::indirect_iterator< ModuleSet::index< by_name >::type::const_iterator, const Module > |
Constant iterator over modules Modules. More... | |
using | const_module_name_range = boost::iterator_range< const_module_name_iterator > |
Constant range of modules Modules. More... | |
module_iterator | modules_begin () |
Returns an iterator to the first Module. More... | |
module_iterator | modules_end () |
Returns an iterator to the element following the last Module. More... | |
const_module_iterator | modules_begin () const |
Returns a constant iterator to the first Module. More... | |
const_module_iterator | modules_end () const |
Returns a constant iterator to the element following the last Module. More... | |
module_range | modules () |
Returns a range of the Modules. More... | |
const_module_range | modules () const |
Returns a constant range of the Modules. More... | |
bool | removeModule (Module *M) |
Remove a Module object located in this IR. More... | |
Module * | addModule (Module *M) |
Move a Module object to be located in this IR. More... | |
template<typename... Args> | |
Module * | addModule (Context &C, Args... A) |
Creates a new Module in this IR. More... | |
module_name_range | findModules (const std::string &N) |
Find modules by name. More... | |
const_module_name_range | findModules (const std::string &N) const |
Find modules by name. More... | |
ProxyBlock-Related Public Types and Functions | |
using | proxy_block_iterator = MergeSortedIterator< Module::proxy_block_iterator, ArbitraryLess< ProxyBlock > > |
Iterator over ProxyBlock objects. More... | |
using | proxy_block_range = boost::iterator_range< proxy_block_iterator > |
Range over ProxyBlock objects. More... | |
using | const_proxy_block_iterator = MergeSortedIterator< Module::const_proxy_block_iterator, ArbitraryLess< ProxyBlock > > |
Iterator over ProxyBlock objects. More... | |
using | const_proxy_block_range = boost::iterator_range< const_proxy_block_iterator > |
Range over ProxyBlock objects. More... | |
proxy_block_iterator | proxy_blocks_begin () |
Return an iterator to the first ProxyBlock. More... | |
proxy_block_iterator | proxy_blocks_end () |
Return an iterator to the element following the last ProxyBlock. More... | |
proxy_block_range | proxy_blocks () |
Return a range of all the ProxyBlock objects. More... | |
const_proxy_block_iterator | proxy_blocks_begin () const |
Return an iterator to the first ProxyBlock. More... | |
const_proxy_block_iterator | proxy_blocks_end () const |
Return an iterator to the element following the last ProxyBlock. More... | |
const_proxy_block_range | proxy_blocks () const |
Return an iterator to the first ProxyBlock. More... | |
Symbol-Related Public Types and Functions | |
using | symbol_iterator = MergeSortedIterator< Module::symbol_iterator, ArbitraryLess< Symbol > > |
Iterator over Symbol objects. More... | |
using | symbol_range = boost::iterator_range< symbol_iterator > |
Range of Symbol objects. More... | |
using | const_symbol_iterator = MergeSortedIterator< Module::const_symbol_iterator, ArbitraryLess< Symbol > > |
Iterator over Symbol objects. More... | |
using | const_symbol_range = boost::iterator_range< const_symbol_iterator > |
Range of Symbol objects. More... | |
symbol_iterator | symbols_begin () |
Return an iterator to the first Symbol. More... | |
symbol_iterator | symbols_end () |
Return an iterator to the element following the last Symbol. More... | |
symbol_range | symbols () |
Return a range of the Symbol objects. More... | |
const_symbol_iterator | symbols_begin () const |
Return an iterator to the first Symbol. More... | |
const_symbol_iterator | symbols_end () const |
Return an iterator to the element following the last Symbol. More... | |
const_symbol_range | symbols () const |
Return a range of the Symbol objects. More... | |
Section-Related Public Types and Functions | |
using | section_iterator = MergeSortedIterator< Module::section_iterator, AddressLess > |
Iterator over Section objects. More... | |
using | section_range = boost::iterator_range< section_iterator > |
Range of Section objects. More... | |
using | section_subrange = boost::iterator_range< MergeSortedIterator< Module::section_subrange::iterator, AddressLess > > |
Sub-range of Section objects overlapping an address. More... | |
using | const_section_iterator = MergeSortedIterator< Module::const_section_iterator, AddressLess > |
Iterator over Section objects. More... | |
using | const_section_range = boost::iterator_range< const_section_iterator > |
Range of Section objects. More... | |
using | const_section_subrange = boost::iterator_range< MergeSortedIterator< Module::const_section_subrange::iterator, AddressLess > > |
Sub-range of Section objects overlapping an address. More... | |
using | section_name_iterator = MergeSortedIterator< Module::section_name_iterator, AddressLess > |
Iterator over Section objects. More... | |
using | section_name_range = boost::iterator_range< section_name_iterator > |
Range of Section objects. More... | |
using | const_section_name_iterator = MergeSortedIterator< Module::const_section_name_iterator, AddressLess > |
Iterator over Section objects. More... | |
using | const_section_name_range = boost::iterator_range< const_section_name_iterator > |
Range of Section objects. More... | |
section_iterator | sections_begin () |
Return an iterator to the first Section. More... | |
section_iterator | sections_end () |
Return an iterator to the element following the last Section. More... | |
section_range | sections () |
Return a range of all the Section objects. More... | |
const_section_iterator | sections_begin () const |
Return an iterator to the first Section. More... | |
const_section_iterator | sections_end () const |
Return an iterator to the element following the last Section. More... | |
const_section_range | sections () const |
Return a range of all the Section objects. More... | |
section_subrange | findSectionsOn (Addr A) |
Find a Section containing an address. More... | |
const_section_subrange | findSectionsOn (Addr A) const |
Find a Section containing an address. More... | |
section_range | findSectionsAt (Addr A) |
Find all the sections that start at an address. More... | |
section_range | findSectionsAt (Addr Low, Addr High) |
Find all the sections that start between a range of addresses. More... | |
const_section_range | findSectionsAt (Addr A) const |
Find all the sections that start at an address. More... | |
const_section_range | findSectionsAt (Addr Low, Addr High) const |
Find all the sections that start between a range of addresses. More... | |
section_name_range | findSections (const std::string &X) |
Find all the sections containing a name. More... | |
const_section_name_range | findSections (const std::string &X) const |
Find all the sections containing a name. More... | |
ByteInterval-Related Public Types and Functions | |
using | byte_interval_iterator = MergeSortedIterator< Module::byte_interval_iterator, AddressLess > |
Iterator over ByteInterval objects. More... | |
using | byte_interval_range = boost::iterator_range< byte_interval_iterator > |
Range of ByteInterval objects. More... | |
using | byte_interval_subrange = boost::iterator_range< MergeSortedIterator< Module::byte_interval_subrange::iterator, AddressLess > > |
Sub-range of ByteInterval objects overlapping addresses. More... | |
using | const_byte_interval_iterator = MergeSortedIterator< Module::const_byte_interval_iterator, AddressLess > |
Const iterator over ByteInterval objects. More... | |
using | const_byte_interval_range = boost::iterator_range< const_byte_interval_iterator > |
Const range of ByteInterval objects. More... | |
using | const_byte_interval_subrange = boost::iterator_range< MergeSortedIterator< Module::const_byte_interval_subrange::iterator, AddressLess > > |
Sub-range of ByteInterval objects overlapping addresses. More... | |
byte_interval_iterator | byte_intervals_begin () |
Return an iterator to the first ByteInterval. More... | |
byte_interval_iterator | byte_intervals_end () |
Return an iterator to the element following the last ByteInterval. More... | |
byte_interval_range | byte_intervals () |
Return a range of all the ByteInterval objects. More... | |
const_byte_interval_iterator | byte_intervals_begin () const |
Return an iterator to the first ByteInterval. More... | |
const_byte_interval_iterator | byte_intervals_end () const |
Return an iterator to the element following the last ByteInterval. More... | |
const_byte_interval_range | byte_intervals () const |
Return a range of all the ByteInterval objects. More... | |
byte_interval_subrange | findByteIntervalsOn (Addr A) |
Find all the intervals that have bytes that lie within the address specified. More... | |
const_byte_interval_subrange | findByteIntervalsOn (Addr A) const |
Find all the intervals that have bytes that lie within the address specified. More... | |
byte_interval_range | findByteIntervalsAt (Addr A) |
Find all the intervals that start at an address. More... | |
byte_interval_range | findByteIntervalsAt (Addr Low, Addr High) |
Find all the intervals that start between a range of addresses. More... | |
const_byte_interval_range | findByteIntervalsAt (Addr A) const |
Find all the intervals that start at an address. More... | |
const_byte_interval_range | findByteIntervalsAt (Addr Low, Addr High) const |
Find all the intervals that start between a range of addresses. More... | |
Block-Related Public Types and Functions | |
using | block_iterator = MergeSortedIterator< Module::block_iterator, BlockAddressLess > |
Iterator over blocks. More... | |
using | block_range = boost::iterator_range< block_iterator > |
Range of blocks. More... | |
using | block_subrange = boost::iterator_range< MergeSortedIterator< Module::block_subrange::iterator, BlockAddressLess > > |
Sub-range of blocks overlapping an address or range of addreses. More... | |
using | const_block_iterator = MergeSortedIterator< Module::const_block_iterator, BlockAddressLess > |
Iterator over blocks. More... | |
using | const_block_range = boost::iterator_range< const_block_iterator > |
Range of blocks. More... | |
using | const_block_subrange = boost::iterator_range< MergeSortedIterator< Module::const_block_subrange::iterator, BlockAddressLess > > |
Sub-range of blocks overlapping an address or range of addreses. More... | |
block_iterator | blocks_begin () |
Return an iterator to the first block. More... | |
block_iterator | blocks_end () |
Return an iterator to the element following the last block. More... | |
block_range | blocks () |
Return a range of all the blocks. More... | |
const_block_iterator | blocks_begin () const |
Return an iterator to the first block. More... | |
const_block_iterator | blocks_end () const |
Return an iterator to the element following the last block. More... | |
const_block_range | blocks () const |
Return a range of all the blocks. More... | |
block_subrange | findBlocksOn (Addr A) |
Find all the blocks that have bytes that lie within the address specified. More... | |
const_block_subrange | findBlocksOn (Addr A) const |
Find all the blocks that have bytes that lie within the address specified. More... | |
block_range | findBlocksAt (Addr A) |
Find all the blocks that start at an address. More... | |
block_range | findBlocksAt (Addr Low, Addr High) |
Find all the blocks that start between a range of addresses. More... | |
const_block_range | findBlocksAt (Addr A) const |
Find all the blocks that start at an address. More... | |
const_block_range | findBlocksAt (Addr Low, Addr High) const |
Find all the blocks that start between a range of addresses. More... | |
CodeBlock-Related Public Types and Functions | |
using | code_block_iterator = MergeSortedIterator< Module::code_block_iterator, AddressLess > |
Iterator over CodeBlock objects. More... | |
using | code_block_range = boost::iterator_range< code_block_iterator > |
Range of CodeBlock objects. More... | |
using | code_block_subrange = boost::iterator_range< MergeSortedIterator< Module::code_block_subrange::iterator, AddressLess > > |
Sub-range of CodeBlock objects overlapping an address or range of addreses. More... | |
using | const_code_block_iterator = MergeSortedIterator< Module::const_code_block_iterator, AddressLess > |
Iterator over CodeBlock objects. More... | |
using | const_code_block_range = boost::iterator_range< const_code_block_iterator > |
Range of CodeBlock objects. More... | |
using | const_code_block_subrange = boost::iterator_range< MergeSortedIterator< Module::const_code_block_subrange::iterator, AddressLess > > |
Sub-range of CodeBlock objects overlapping an address or range of addreses. More... | |
code_block_iterator | code_blocks_begin () |
Return an iterator to the first CodeBlock. More... | |
code_block_iterator | code_blocks_end () |
Return an iterator to the element following the last CodeBlock. More... | |
code_block_range | code_blocks () |
Return a range of all the CodeBlock objects. More... | |
const_code_block_iterator | code_blocks_begin () const |
Return an iterator to the first CodeBlock. More... | |
const_code_block_iterator | code_blocks_end () const |
Return an iterator to the element following the last CodeBlock. More... | |
const_code_block_range | code_blocks () const |
Return a range of all the CodeBlock objects. More... | |
code_block_subrange | findCodeBlocksOn (Addr A) |
Find all the code blocks that have bytes that lie within the address specified. More... | |
const_code_block_subrange | findCodeBlocksOn (Addr A) const |
Find all the code blocks that have bytes that lie within the address specified. More... | |
code_block_range | findCodeBlocksAt (Addr A) |
Find all the code blocks that start at an address. More... | |
code_block_range | findCodeBlocksAt (Addr Low, Addr High) |
Find all the code blocks that start between a range of addresses. More... | |
const_code_block_range | findCodeBlocksAt (Addr A) const |
Find all the code blocks that start at an address. More... | |
const_code_block_range | findCodeBlocksAt (Addr Low, Addr High) const |
Find all the code blocks that start between a range of addresses. More... | |
DataBlock-Related Public Types and Functions | |
using | data_block_iterator = MergeSortedIterator< Module::data_block_iterator, AddressLess > |
Iterator over DataBlock objects. More... | |
using | data_block_range = boost::iterator_range< data_block_iterator > |
Range of DataBlock objects. More... | |
using | data_block_subrange = boost::iterator_range< MergeSortedIterator< Module::data_block_subrange::iterator, AddressLess > > |
Sub-range of DataBlock objects overlapping an address or range of addreses. More... | |
using | const_data_block_iterator = MergeSortedIterator< Module::const_data_block_iterator, AddressLess > |
Iterator over DataBlock objects. More... | |
using | const_data_block_range = boost::iterator_range< const_data_block_iterator > |
Range of DataBlock objects. More... | |
using | const_data_block_subrange = boost::iterator_range< MergeSortedIterator< Module::const_data_block_subrange::iterator, AddressLess > > |
Sub-range of DataBlock objects overlapping an address or range of addreses. More... | |
data_block_iterator | data_blocks_begin () |
Return an iterator to the first DataBlock. More... | |
data_block_iterator | data_blocks_end () |
Return an iterator to the element following the last DataBlock. More... | |
data_block_range | data_blocks () |
Return a range of all the DataBlock objects. More... | |
const_data_block_iterator | data_blocks_begin () const |
Return an iterator to the first DataBlock. More... | |
const_data_block_iterator | data_blocks_end () const |
Return an iterator to the element following the last DataBlock. More... | |
const_data_block_range | data_blocks () const |
Return a range of all the DataBlock objects. More... | |
data_block_subrange | findDataBlocksOn (Addr A) |
Find all the data blocks that have bytes that lie within the address specified. More... | |
const_data_block_subrange | findDataBlocksOn (Addr A) const |
Find all the data blocks that have bytes that lie within the address specified. More... | |
data_block_range | findDataBlocksAt (Addr A) |
Find all the data blocks that start at an address. More... | |
data_block_range | findDataBlocksAt (Addr Low, Addr High) |
Find all the data blocks that start between a range of addresses. More... | |
const_data_block_range | findDataBlocksAt (Addr A) const |
Find all the data blocks that start at an address. More... | |
const_data_block_range | findDataBlocksAt (Addr Low, Addr High) const |
Find all the data blocks that start between a range of addresses. More... | |
A complete internal representation consisting of Modules (Module).
using gtirb::IR::block_iterator = MergeSortedIterator<Module::block_iterator, BlockAddressLess> |
Iterator over blocks.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::IR::block_range = boost::iterator_range<block_iterator> |
Range of blocks.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::IR::block_subrange = boost::iterator_range< MergeSortedIterator<Module::block_subrange::iterator, BlockAddressLess> > |
Sub-range of blocks overlapping an address or range of addreses.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::IR::byte_interval_iterator = MergeSortedIterator<Module::byte_interval_iterator, AddressLess> |
Iterator over ByteInterval objects.
using gtirb::IR::byte_interval_range = boost::iterator_range<byte_interval_iterator> |
Range of ByteInterval objects.
using gtirb::IR::byte_interval_subrange = boost::iterator_range<MergeSortedIterator< Module::byte_interval_subrange::iterator, AddressLess> > |
Sub-range of ByteInterval objects overlapping addresses.
using gtirb::IR::code_block_iterator = MergeSortedIterator<Module::code_block_iterator, AddressLess> |
Iterator over CodeBlock objects.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::IR::code_block_range = boost::iterator_range<code_block_iterator> |
Range of CodeBlock objects.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::IR::code_block_subrange = boost::iterator_range< MergeSortedIterator<Module::code_block_subrange::iterator, AddressLess> > |
Sub-range of CodeBlock objects overlapping an address or range of addreses.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::IR::const_block_iterator = MergeSortedIterator<Module::const_block_iterator, BlockAddressLess> |
Iterator over blocks.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::IR::const_block_range = boost::iterator_range<const_block_iterator> |
Range of blocks.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::IR::const_block_subrange = boost::iterator_range<MergeSortedIterator< Module::const_block_subrange::iterator, BlockAddressLess> > |
Sub-range of blocks overlapping an address or range of addreses.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::IR::const_byte_interval_iterator = MergeSortedIterator<Module::const_byte_interval_iterator, AddressLess> |
Const iterator over ByteInterval objects.
using gtirb::IR::const_byte_interval_range = boost::iterator_range<const_byte_interval_iterator> |
Const range of ByteInterval objects.
using gtirb::IR::const_byte_interval_subrange = boost::iterator_range<MergeSortedIterator< Module::const_byte_interval_subrange::iterator, AddressLess> > |
Sub-range of ByteInterval objects overlapping addresses.
using gtirb::IR::const_code_block_iterator = MergeSortedIterator<Module::const_code_block_iterator, AddressLess> |
Iterator over CodeBlock objects.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::IR::const_code_block_range = boost::iterator_range<const_code_block_iterator> |
Range of CodeBlock objects.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::IR::const_code_block_subrange = boost::iterator_range<MergeSortedIterator< Module::const_code_block_subrange::iterator, AddressLess> > |
Sub-range of CodeBlock objects overlapping an address or range of addreses.
Blocks are yielded in address order, ascending.
using gtirb::IR::const_data_block_iterator = MergeSortedIterator<Module::const_data_block_iterator, AddressLess> |
Iterator over DataBlock objects.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::IR::const_data_block_range = boost::iterator_range<const_data_block_iterator> |
Range of DataBlock objects.
Blocks are yielded in address order, ascending.
using gtirb::IR::const_data_block_subrange = boost::iterator_range<MergeSortedIterator< Module::const_data_block_subrange::iterator, AddressLess> > |
Sub-range of DataBlock objects overlapping an address or range of addreses.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::IR::const_module_iterator = boost::indirect_iterator<ModuleSet::const_iterator, const Module> |
Constant iterator over Modules.
Modules are returned in name order. If more than one module has the same name, the order in which they are returned is unspecified.
using gtirb::IR::const_module_name_iterator = boost::indirect_iterator<ModuleSet::index<by_name>::type::const_iterator, const Module> |
Constant iterator over modules Modules.
This iterator returns modules in name order. If two modules have the same name, their order is unspecified.
using gtirb::IR::const_module_name_range = boost::iterator_range<const_module_name_iterator> |
Constant range of modules Modules.
This range returns modules in name order. If two modules have the same name, their order is unspecified.
using gtirb::IR::const_module_range = boost::iterator_range<const_module_iterator> |
Constant range of Modules.
Modules are returned in name order. If more than one module has the same name, the order in which they are returned is unspecified.
using gtirb::IR::const_proxy_block_iterator = MergeSortedIterator<Module::const_proxy_block_iterator, ArbitraryLess<ProxyBlock> > |
Iterator over ProxyBlock objects.
using gtirb::IR::const_proxy_block_range = boost::iterator_range<const_proxy_block_iterator> |
Range over ProxyBlock objects.
using gtirb::IR::const_section_iterator = MergeSortedIterator<Module::const_section_iterator, AddressLess> |
Iterator over Section objects.
using gtirb::IR::const_section_name_iterator = MergeSortedIterator<Module::const_section_name_iterator, AddressLess> |
Iterator over Section objects.
using gtirb::IR::const_section_name_range = boost::iterator_range<const_section_name_iterator> |
Range of Section objects.
using gtirb::IR::const_section_range = boost::iterator_range<const_section_iterator> |
Range of Section objects.
using gtirb::IR::const_section_subrange = boost::iterator_range<MergeSortedIterator< Module::const_section_subrange::iterator, AddressLess> > |
Sub-range of Section objects overlapping an address.
using gtirb::IR::const_symbol_iterator = MergeSortedIterator<Module::const_symbol_iterator, ArbitraryLess<Symbol> > |
Iterator over Symbol objects.
This iterator returns symbols in an arbitrary order.
using gtirb::IR::const_symbol_range = boost::iterator_range<const_symbol_iterator> |
Range of Symbol objects.
This range returns symbols in an arbitrary order.
using gtirb::IR::const_symbolic_expression_iterator = MergeSortedIterator< Module::const_symbolic_expression_iterator, ByteInterval::ConstSymbolicExpressionElement::AddressLess> |
Iterator over SymbolicExpressionElement objects.
Results are yielded in address order, ascending.
using gtirb::IR::const_symbolic_expression_range = boost::iterator_range<const_symbolic_expression_iterator> |
Range of SymbolicExpressionElement objects.
Results are yielded in address order, ascending.
using gtirb::IR::data_block_iterator = MergeSortedIterator<Module::data_block_iterator, AddressLess> |
Iterator over DataBlock objects.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::IR::data_block_range = boost::iterator_range<data_block_iterator> |
Range of DataBlock objects.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::IR::data_block_subrange = boost::iterator_range< MergeSortedIterator<Module::data_block_subrange::iterator, AddressLess> > |
Sub-range of DataBlock objects overlapping an address or range of addreses.
Blocks are yielded in address order, ascending. For more details, see the documentation on iteration order.
using gtirb::IR::module_iterator = boost::indirect_iterator<ModuleSet::iterator> |
using gtirb::IR::module_name_iterator = boost::indirect_iterator<ModuleSet::index<by_name>::type::iterator> |
Iterator over modules Modules.
This iterator returns modules in name order. If two modules have the same name, their order is unspecified.
using gtirb::IR::module_name_range = boost::iterator_range<module_name_iterator> |
Range of modules Modules.
This range returns modules in name order. If two modules have the same name, their order is unspecified.
using gtirb::IR::module_range = boost::iterator_range<module_iterator> |
Range of Modules.
Modules are returned in name order. If more than one module has the same name, the order in which they are returned is unspecified.
using gtirb::IR::proxy_block_iterator = MergeSortedIterator<Module::proxy_block_iterator, ArbitraryLess<ProxyBlock> > |
Iterator over ProxyBlock objects.
using gtirb::IR::proxy_block_range = boost::iterator_range<proxy_block_iterator> |
Range over ProxyBlock objects.
using gtirb::IR::section_iterator = MergeSortedIterator<Module::section_iterator, AddressLess> |
Iterator over Section objects.
using gtirb::IR::section_name_iterator = MergeSortedIterator<Module::section_name_iterator, AddressLess> |
Iterator over Section objects.
using gtirb::IR::section_name_range = boost::iterator_range<section_name_iterator> |
Range of Section objects.
using gtirb::IR::section_range = boost::iterator_range<section_iterator> |
Range of Section objects.
using gtirb::IR::section_subrange = boost::iterator_range< MergeSortedIterator<Module::section_subrange::iterator, AddressLess> > |
Sub-range of Section objects overlapping an address.
using gtirb::IR::symbol_iterator = MergeSortedIterator<Module::symbol_iterator, ArbitraryLess<Symbol> > |
Iterator over Symbol objects.
This iterator returns symbols in an arbitrary order.
using gtirb::IR::symbol_range = boost::iterator_range<symbol_iterator> |
Range of Symbol objects.
This range returns symbols in an arbitrary order.
using gtirb::IR::symbolic_expression_iterator = MergeSortedIterator<Module::symbolic_expression_iterator, ByteInterval::SymbolicExpressionElement::AddressLess> |
Iterator over SymbolicExpressionElement objects.
Results are yielded in address order, ascending.
using gtirb::IR::symbolic_expression_range = boost::iterator_range<symbolic_expression_iterator> |
Range of SymbolicExpressionElement objects.
Results are yielded in address order, ascending.
|
strong |
Specifies various failure modes when loading an IR.
Enumerator | |
---|---|
IncorrectVersion | The version number in the file does not match. |
CorruptFile | The content of the file could not be deserialized. |
CorruptModule | |
CorruptSection | |
CorruptByteInterval | |
CorruptCFG | The control flow graph could not be deserialized. |
BadUUID | An object had an incorrectly formatted UUID. |
MissingUUID | A UUID did not refer to an object in the loading Context. |
NotGTIRB | Indicates the GTIRB magic number was not found. |
|
inline |
Return a range of all the blocks.
|
inline |
Return a range of all the blocks.
|
inline |
Return an iterator to the first block.
|
inline |
Return an iterator to the first block.
|
inline |
Return an iterator to the element following the last block.
|
inline |
Return an iterator to the element following the last block.
|
inline |
Return a range of all the ByteInterval objects.
|
inline |
Return a range of all the ByteInterval objects.
|
inline |
Return an iterator to the first ByteInterval.
|
inline |
Return an iterator to the first ByteInterval.
|
inline |
Return an iterator to the element following the last ByteInterval.
|
inline |
Return an iterator to the element following the last ByteInterval.
|
inline |
Return a range of all the CodeBlock objects.
|
inline |
Return a range of all the CodeBlock objects.
|
inline |
Return an iterator to the first CodeBlock.
|
inline |
Return an iterator to the first CodeBlock.
|
inline |
Return an iterator to the element following the last CodeBlock.
|
inline |
Return an iterator to the element following the last CodeBlock.
|
inline |
Return a range of all the DataBlock objects.
|
inline |
Return a range of all the DataBlock objects.
|
inline |
Return an iterator to the first DataBlock.
|
inline |
Return an iterator to the first DataBlock.
|
inline |
Return an iterator to the element following the last DataBlock.
|
inline |
Return an iterator to the element following the last DataBlock.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Find all the intervals that start at an address.
A | The address to look up. |
A
.
|
inline |
Find all the intervals that start at an address.
A | The address to look up. |
A
.
|
inline |
Find all the intervals that start between a range of addresses.
Low | The low address, inclusive. |
High | The high address, exclusive. |
|
inline |
Find all the intervals that start between a range of addresses.
Low | The low address, inclusive. |
High | The high address, exclusive. |
|
inline |
Find all the intervals that have bytes that lie within the address specified.
A | The address to look up. |
A
.
|
inline |
Find all the intervals that have bytes that lie within the address specified.
A | The address to look up. |
A
.
|
inline |
Find all the code blocks that start at an address.
A | The address to look up. |
A
.
|
inline |
Find all the code blocks that start at an address.
A | The address to look up. |
A
.
|
inline |
Find all the code blocks that start between a range of addresses.
Low | The low address, inclusive. |
High | The high address, exclusive. |
|
inline |
Find all the code blocks that start between a range of addresses.
Low | The low address, inclusive. |
High | The high address, exclusive. |
|
inline |
Find all the code blocks that have bytes that lie within the address specified.
A | The address to look up. |
A
.
|
inline |
Find all the code blocks that have bytes that lie within the address specified.
A | The address to look up. |
A
.
|
inline |
Find all the data blocks that start at an address.
A | The address to look up. |
A
.
|
inline |
Find all the data blocks that start at an address.
A | The address to look up. |
A
.
|
inline |
Find all the data blocks that start between a range of addresses.
Low | The low address, inclusive. |
High | The high address, exclusive. |
|
inline |
Find all the data blocks that start between a range of addresses.
Low | The low address, inclusive. |
High | The high address, exclusive. |
|
inline |
Find all the data blocks that have bytes that lie within the address specified.
A | The address to look up. |
A
.
|
inline |
Find all the data blocks that have bytes that lie within the address specified.
A | The address to look up. |
A
.
|
inline |
Find modules by name.
N | The name to look up. |
|
inline |
Find modules by name.
N | The name to look up. |
|
inline |
Find all the sections containing a name.
A | The string name to look up. |
|
inline |
Find all the sections containing a name.
A | The string name to look up. |
|
inline |
Find all the sections that start at an address.
A | The address to look up. |
A
.
|
inline |
Find all the sections that start at an address.
A | The address to look up. |
A
.
|
inline |
Find all the sections that start between a range of addresses.
Low | The low address, inclusive. |
High | The high address, exclusive. |
|
inline |
Find all the sections that start between a range of addresses.
Low | The low address, inclusive. |
High | The high address, exclusive. |
|
inline |
Find a Section containing an address.
A | The address to look up. |
|
inline |
Find a Section containing an address.
A | The address to look up. |
|
inline |
Find all the symbolic expressions that start at an address.
A | The address to look up. |
A
.
|
inline |
Find all the symbolic expressions that start at an address.
A | The address to look up. |
A
.
|
inline |
Find all the symbolic expressions that start between a range of addresses.
Low | The low address, inclusive. |
High | The high address, exclusive. |
|
inline |
Find all the symbolic expressions that start between a range of addresses.
Low | The low address, inclusive. |
High | The high address, exclusive. |
|
inline |
Get a const reference to the associated Control Flow Graph (CFG).
|
inline |
Get the associated Control Flow Graph (CFG).
|
inline |
Get the version of the Protobuf used when creating this IR.
Backwards-incompatible changes to the Protobuf structure of GTIRB cause this verison number to increment.
|
inline |
Returns a range of the Modules.
|
inline |
Returns a constant range of the Modules.
|
inline |
Returns an iterator to the first Module.
|
inline |
Returns a constant iterator to the first Module.
|
inline |
Returns an iterator to the element following the last Module.
|
inline |
Returns a constant iterator to the element following the last Module.
|
inline |
Return a range of all the ProxyBlock objects.
|
inline |
Return an iterator to the first ProxyBlock.
|
inline |
Return an iterator to the first ProxyBlock.
|
inline |
Return an iterator to the first ProxyBlock.
|
inline |
Return an iterator to the element following the last ProxyBlock.
|
inline |
Return an iterator to the element following the last ProxyBlock.
|
inline |
void gtirb::IR::save | ( | std::ostream & | Out | ) | const |
Serialize to an output stream in binary format.
Out | The output stream. |
void gtirb::IR::saveJSON | ( | std::ostream & | Out | ) | const |
Serialize to an output stream in JSON format.
Out | The output stream. |
|
inline |
Return a range of all the Section objects.
|
inline |
Return a range of all the Section objects.
|
inline |
Return an iterator to the first Section.
|
inline |
Return an iterator to the first Section.
|
inline |
Return an iterator to the element following the last Section.
|
inline |
Return an iterator to the element following the last Section.
|
inline |
Set the version of the Protobuf used when creating this IR.
Backwards-incompatible changes to the Protobuf structure of GTIRB cause this verison number to increment. This function is useful when, for example, migrating GTIRB from old versions to new versions of the Protobuf format.
|
inline |
Return a range of all the SymbolicExpression objects.
|
inline |
Return a range of all the SymbolicExpression objects.
|
inline |
Return an iterator to the first SymbolicExpression.
|
inline |
Return an iterator to the first SymbolicExpression.
|
inline |
Return an iterator to the element following the last SymbolicExpression.
|
inline |
Return an iterator to the element following the last SymbolicExpression.
|
inline |
Return a range of the Symbol objects.
|
inline |
Return a range of the Symbol objects.
|
inline |
Return an iterator to the first Symbol.
|
inline |
Return an iterator to the first Symbol.
|
inline |
Return an iterator to the element following the last Symbol.
|
inline |
Return an iterator to the element following the last Symbol.
|
friend |