Interface to information about an edge between basic blocks and/or special nodes. More...
#include <dcfg_api.H>
Public Member Functions | |
virtual DCFG_ID | get_edge_id () const =0 |
Get ID number of edge. | |
virtual DCFG_ID | get_source_node_id () const =0 |
Get node ID of edge source. | |
virtual DCFG_ID | get_target_node_id () const =0 |
Get node ID of edge target. | |
virtual UINT64 | get_exec_count () const =0 |
Get edge count. | |
virtual UINT64 | get_exec_count_for_thread (UINT32 thread_id) const =0 |
Get edge count per thread. | |
virtual const std::string * | get_edge_type () const =0 |
Get edge type. | |
virtual bool | is_any_branch_type () const =0 |
Determine whether this edge is any type of branch. | |
virtual bool | is_any_call_type () const =0 |
Determine whether this edge is any type of call. | |
virtual bool | is_any_return_type () const =0 |
Determine whether this edge is any type of return. | |
virtual bool | is_any_inter_routine_type () const =0 |
Determine whether this edge is any type of call or return or an edge from the start node or to the exit node. | |
virtual bool | is_any_bypass_type () const =0 |
Determine whether this edge is any type of bypass, which is a "fabricated" edge across call/return pairs, etc. | |
virtual bool | is_branch_edge_type () const =0 |
Determine whether this edge is a branch edge type. | |
virtual bool | is_call_edge_type () const =0 |
Determine whether this edge is a call edge type. | |
virtual bool | is_return_edge_type () const =0 |
Determine whether this edge is a return edge type. | |
virtual bool | is_call_bypass_edge_type () const =0 |
Determine whether this edge is a call bypass edge type. | |
virtual bool | is_conditional_branch_edge_type () const =0 |
Determine whether this edge is a conditional branch edge type. | |
virtual bool | is_context_bypass_edge_type () const =0 |
Determine whether this edge is a context bypass edge type. | |
virtual bool | is_context_edge_type () const =0 |
Determine whether this edge is a context edge type. | |
virtual bool | is_context_return_edge_type () const =0 |
Determine whether this edge is a context return edge type. | |
virtual bool | is_direct_branch_edge_type () const =0 |
Determine whether this edge is a direct branch edge type. | |
virtual bool | is_direct_call_edge_type () const =0 |
Determine whether this edge is a direct call edge type. | |
virtual bool | is_direct_conditional_branch_edge_type () const =0 |
Determine whether this edge is a direct conditional branch edge type. | |
virtual bool | is_direct_unconditional_branch_edge_type () const =0 |
Determine whether this edge is a direct unconditional branch edge type. | |
virtual bool | is_entry_edge_type () const =0 |
Determine whether this edge is an entry edge type. | |
virtual bool | is_excluded_bypass_edge_type () const =0 |
Determine whether this edge is an excluded bypass edge type. | |
virtual bool | is_exit_edge_type () const =0 |
Determine whether this edge is an exit edge type. | |
virtual bool | is_fall_thru_edge_type () const =0 |
Determine whether this edge is a fall thru edge type. | |
virtual bool | is_indirect_branch_edge_type () const =0 |
Determine whether this edge is an indirect branch edge type. | |
virtual bool | is_indirect_call_edge_type () const =0 |
Determine whether this edge is an indirect call edge type. | |
virtual bool | is_indirect_conditional_branch_edge_type () const =0 |
Determine whether this edge is an indirect conditional branch edge type. | |
virtual bool | is_indirect_unconditional_branch_edge_type () const =0 |
Determine whether this edge is an indirect unconditional branch edge type. | |
virtual bool | is_rep_edge_type () const =0 |
Determine whether this edge is a rep-prefix edge type. | |
virtual bool | is_sys_call_bypass_edge_type () const =0 |
Determine whether this edge is a system call bypass edge type. | |
virtual bool | is_sys_call_edge_type () const =0 |
Determine whether this edge is a system call edge type. | |
virtual bool | is_sys_return_edge_type () const =0 |
Determine whether this edge is a system return edge type. | |
virtual bool | is_unconditional_branch_edge_type () const =0 |
Determine whether this edge is an unconditional branch edge type. | |
virtual bool | is_unknown_edge_type () const =0 |
Determine whether this edge is an unknown edge type. | |
Interface to information about an edge between basic blocks and/or special nodes.
|
pure virtual |
Get ID number of edge.
|
pure virtual |
Get edge type.
|
pure virtual |
Get edge count.
|
pure virtual |
Get edge count per thread.
[in] | thread_id | Thread number. Typically, threads are consecutively numbered from zero to DCFG_PROCESS::get_highest_thread_id(). |
|
pure virtual |
Get node ID of edge source.
This is the node node the edge is "coming from". Most node IDs correspond to basic-blocks, but they could also be for special nodes. In particular, a source node ID could be the "START" node.
|
pure virtual |
Get node ID of edge target.
This is the node node the edge is "going to". Most node IDs correspond to basic-blocks, but they could also be for special nodes. In particular, a source node ID could be the "START" node.
|
pure virtual |
Determine whether this edge is any type of branch.
true
if branch, false
otherwise.
|
pure virtual |
Determine whether this edge is any type of bypass, which is a "fabricated" edge across call/return pairs, etc.
See the DCFG documentation for more information on bypasses.
true
if bypass, false
otherwise.
|
pure virtual |
Determine whether this edge is any type of call.
This includes routine calls, system calls, etc.
true
if call, false
otherwise.
|
pure virtual |
Determine whether this edge is any type of call or return or an edge from the start node or to the exit node.
true
if inter-routine, false
otherwise.
|
pure virtual |
Determine whether this edge is any type of return.
This includes routine returns, system returns, etc.
true
if return, false
otherwise.
|
pure virtual |
Determine whether this edge is a branch edge type.
true
if branch edge, false
otherwise.
|
pure virtual |
Determine whether this edge is a call bypass edge type.
true
if call bypass edge, false
otherwise.
|
pure virtual |
Determine whether this edge is a call edge type.
true
if call edge, false
otherwise.
|
pure virtual |
Determine whether this edge is a conditional branch edge type.
true
if conditional branch edge, false
otherwise.
|
pure virtual |
Determine whether this edge is a context bypass edge type.
true
if context bypass edge, false
otherwise.
|
pure virtual |
Determine whether this edge is a context edge type.
true
if context edge, false
otherwise.
|
pure virtual |
Determine whether this edge is a context return edge type.
true
if context return edge, false
otherwise.
|
pure virtual |
Determine whether this edge is a direct branch edge type.
true
if direct branch edge, false
otherwise.
|
pure virtual |
Determine whether this edge is a direct call edge type.
true
if direct call edge, false
otherwise.
|
pure virtual |
Determine whether this edge is a direct conditional branch edge type.
true
if direct conditional branch edge, false
otherwise.
|
pure virtual |
Determine whether this edge is a direct unconditional branch edge type.
true
if direct unconditional branch edge, false
otherwise.
|
pure virtual |
Determine whether this edge is an entry edge type.
true
if entry edge, false
otherwise.
|
pure virtual |
Determine whether this edge is an excluded bypass edge type.
true
if excluded bypass edge, false
otherwise.
|
pure virtual |
Determine whether this edge is an exit edge type.
true
if exit edge, false
otherwise.
|
pure virtual |
Determine whether this edge is a fall thru edge type.
true
if fall thru edge, false
otherwise.
|
pure virtual |
Determine whether this edge is an indirect branch edge type.
true
if indirect branch edge, false
otherwise.
|
pure virtual |
Determine whether this edge is an indirect call edge type.
true
if indirect call edge, false
otherwise.
|
pure virtual |
Determine whether this edge is an indirect conditional branch edge type.
true
if indirect conditional branch edge, false
otherwise.
|
pure virtual |
Determine whether this edge is an indirect unconditional branch edge type.
true
if indirect unconditional branch edge, false
otherwise.
|
pure virtual |
Determine whether this edge is a rep-prefix edge type.
true
if rep edge, false
otherwise.
|
pure virtual |
Determine whether this edge is a return edge type.
true
if return edge, false
otherwise.
|
pure virtual |
Determine whether this edge is a system call bypass edge type.
true
if sys call bypass edge, false
otherwise.
|
pure virtual |
Determine whether this edge is a system call edge type.
true
if sys call edge, false
otherwise.
|
pure virtual |
Determine whether this edge is a system return edge type.
true
if sys return edge, false
otherwise.
|
pure virtual |
Determine whether this edge is an unconditional branch edge type.
true
if unconditional branch edge, false
otherwise.
|
pure virtual |
Determine whether this edge is an unknown edge type.
true
if unknown edge, false
otherwise.