Source code for angr.analyses.forward_analysis.visitors.loop

from ...cfg.cfg_utils import CFGUtils
from .graph import GraphVisitor


[docs]class LoopVisitor(GraphVisitor): """ :param angr.analyses.loopfinder.Loop loop: The loop to visit. """ def __init__(self, loop): super().__init__() self.loop = loop self.reset()
[docs] def successors(self, node): return self.loop.graph.successors(node)
[docs] def predecessors(self, node): return self.loop.graph.predecessors(node)
[docs] def sort_nodes(self, nodes=None): sorted_nodes = CFGUtils.quasi_topological_sort_nodes(self.loop.graph) if nodes is not None: sorted_nodes = [n for n in sorted_nodes if n in set(nodes)] return sorted_nodes