class cfg_edge_set¶
A set of ( point , edge_label ).
Return type for CFG-related queries on point : point.cfg_inter_targets(), point.cfg_targets()
Use a cfg_edge_set_iterator to iterate over a cfg_edge_set . For example:
for e in my_cfg_edge_set:
print('cfg_edge: ', e)
cfg_edge_set Members¶
| Constructor | __init__() |
| Methods | __contains__(), __eq__(), __hash__(), __iter__(), __len__(), __ne__(), __repr__(), __str__(), empty(), to_vector() |
cfg_edge_set Details¶
-
class
cs.cfg_edge_set¶ A set of (
point,edge_label).-
__init__(other)¶ Copy constructor.
Parameters: other ( cfg_edge_set) –>>> v0 = project.current() >>> v1 = v0.procedures_vector() >>> v2 = v1[3].entry_point() >>> v3 = v2.cfg_targets() >>> cfg_edge_set(v3) <cs.cfg_edge_set {(<cs.point [call-site] whoknows(int)>, <cs.edge_label T>)}>
-
__contains__(elt)¶ Check: does the set contain the specified element?
Parameters: elt (( point,edge_label)) – The element to check.Return type: bool Returns: Trueifeltis present in the set,Falseotherwise.>>> v0 = edge_label(True) >>> v1 = project.current() >>> v2 = v1.procedures_vector() >>> v3 = v2[4].call_sites_vector() >>> v4 = v3[0].cfg_targets() >>> v5 = v2[3].exit_point() >>> (v5, v0) in v4 False
-
__eq__(__y)¶ Equality operator for
cfg_edge_set.Parameters: __y ( cfg_edge_set) – The set to compare against.Return type: bool Returns: Trueifself==__y,Falseotherwise.>>> b = project.current().find_procedure('bar(int, void *, int)') >>> cs = b.call_sites_vector() >>> cs[0].cfg_targets() == cs[1].cfg_targets() False
-
__hash__()¶ Get a hash of the set.
Return type: int Returns: The hash value for the set. >>> b = project.current().find_procedure('bar(int, void *, int)') >>> ep = b.entry_point() >>> eptargs = ep.cfg_targets() >>> hash(eptargs) 1926813223
-
__iter__()¶ Get an iterator over the set elements.
Return type: cfg_edge_set_iteratorReturns: An iterator over the set elements. >>> v0 = project.current() >>> b = v0.find_procedure('bar(int, void *, int)') >>> ctrl_pt = next(pt for pt in b.points() if pt.get_kind()==point_kind.CONTROL_POINT) >>> ctrl_pt <cs.point [control-point] i == 0> >>> for target in ctrl_pt.cfg_targets(): # cfg_edge_set.__iter__() and cfg_edge_set_iterator.__next__() underlyingly manage iteration ... print(target) ... (<cs.point [expression] $temp3 = i>, <cs.edge_label T>) (<cs.point [expression] $temp4 = i>, <cs.edge_label F>)
-
__len__()¶ Get the set cardinality.
Return type: int Returns: The number of elements in the set. >>> b = project.current().find_procedure('bar(int, void *, int)') >>> for cs in b.call_sites(): ... print(cs, len(cs.cfg_targets())) ... [call-site] bar(int, void *, int) 1 [call-site] mymalloc(int) 1
-
__ne__(__y)¶ Inequality operator for
cfg_edge_set.Parameters: __y ( cfg_edge_set) – The set to compare against.Return type: bool Returns: Falseifself==__yaccording tocfg_edge_set.__eq__(),Trueotherwise.>>> b = project.current().find_procedure('bar(int, void *, int)') >>> ep = b.entry_point() >>> cs = next(s for s in b.call_sites()) >>> cs.cfg_targets() != ep.cfg_targets() True
-
__repr__()¶ Get a representation of a set that includes information useful for debugging.
Return type: str Returns: The string representation. >>> b = project.current().find_procedure('bar(int, void *, int)') >>> cs = next(s for s in b.call_sites()) >>> repr(cs.cfg_targets()) '<cs.cfg_edge_set {(<cs.point [actual-in] $param_3 = 2>, <cs.edge_label T>)}>'
-
__str__()¶ Get a simple string representation of a set.
Return type: str Returns: The string representation. >>> b = project.current().find_procedure('bar(int, void *, int)') >>> cs = next(s for s in b.call_sites()) >>> str(cs.cfg_targets()) '{(<cs.point [actual-in] $param_3 = 2>, <cs.edge_label T>)}'
-
empty()¶ Check: is the set empty?
Return type: bool Returns: Trueif the set is empty,Falseotherwise.>>> b = project.current().find_procedure('bar(int, void *, int)') >>> b.entry_point().cfg_targets().empty() False >>> b.exit_point().cfg_targets().empty() True
-
to_vector()¶ Get a list of all the elements in the set.
Return type: [( point,edge_label)]Returns: A list containing all the elements in the set. >>> b = project.current().find_procedure('bar(int, void *, int)') >>> b.entry_point().cfg_targets().to_vector() ((<cs.point [control-point] i == 0>, <cs.edge_label T>),)
-