23 #include <elm/genstruct/Vector.h>
27 namespace otawa {
namespace concept {
58 int outDegree(
const Vertex& vertex)
const;
95 bool isLoopHeader(
Vertex& vertex);
102 int indexOf(
const Vertex& vertex)
const;
138 int inDegree(
const Vertex& vertex)
const;
146 bool isSuccessorOf(
const Vertex& succ,
const Vertex& ref);
154 template <
class T>
class VertexMap:
public Map<Vertex, T> { };
162 template <
class T>
class EdgeMap:
public Map<Edge, T> { };
207 int countInsts(
void);
228 template <
class T,
class G>
248 void join(
t& d,
t s);
255 bool equals(
t v1,
t v2);
279 void update(
const typename G::Vertex& vertex,
t& d);
316 bool equals(
Set *set1,
Set *set2);
330 void merge(
Set *set1,
Set *set2);
351 void diff(
Set *dset,
Set *tset);
446 int count(
void)
const;
488 bool equals(
t v1,
t v2);
dtd::RefAttr< BasicBlock * > source("source", dtd::STRICT|dtd::REQUIRED)
void set(T *target, int size, const T &v)
dtd::Element edge(dtd::make("edge", _EDGE).attr(source).attr(target).attr(called))
Concept of directed graph providing an edge map.
Definition: concepts.h:159
Concept of directed graph with predecessor available.
Definition: concepts.h:107
Iterator on the vertices of the graph.
Definition: concepts.h:429
Iterator to set output values.
Definition: concepts.h:535
Entering-in edge iterator on a node.
Definition: concepts.h:110
Content & empty
Definition: cfgio_Input.cpp:174
Concept used to implements AbsIntLite domain.
Definition: concepts.h:229
struct Set Set
Type of the set of the problem.
Definition: concepts.h:288
Directed graph with a unique entry and exit points.
Definition: concepts.h:175
BiDiGraph implementation for CFG.
Definition: ai.h:212
void * t
Type of domain values.
Definition: concepts.h:460
dtd::Element bb(dtd::make("bb", _BB).attr(id).attr(address).attr(size))
elm::io::IntFormat address(Address addr)
Build a format to display addresses.
Definition: base.cpp:213
Directed graph with a unique entry point.
Definition: concepts.h:167
void * edge_t
Graph edge type.
Definition: concepts.h:380
dtd::Element exit(dtd::make("exit", _EXIT).attr(id))
value_t value(CString name, int value)
Domain concept for ai module.
Definition: concepts.h:454
An iterable block of instruction.
Definition: concepts.h:182
Vertex class.
Definition: concepts.h:41
Concept of directed graph providing a vertex map.
Definition: concepts.h:151
dtd::Element entry(dtd::make("entry", _ENTRY).attr(id))
void * vertex_t
Graph vertex type.
Definition: concepts.h:375
The representation of an address in OTAWA.
Definition: base.h:54
Concept used to implements IterativeDFA problems.
Definition: concepts.h:284
T t
Type of the values of the domain.
Definition: concepts.h:233
This concept attempts to provide a representation of a digraph that may only be traversed in the edge...
Definition: concepts.h:37
Efficient map for the edges.
Definition: concepts.h:162
sys::SystemOutStream & out
inst add(int d, int a, int b)
Definition: inst.h:163
A digraph that supports loop identification.
Definition: concepts.h:89
Graph concept for ai module.
Definition: concepts.h:369
This is the minimal definition of a basic block.
Definition: BasicBlock.h:43
Iterator on the entering edges on the given vertex.
Definition: concepts.h:411
Efficient map for the nodes.
Definition: concepts.h:154
Iterator on the instruction of the block.
Definition: concepts.h:212
Opaque type for the edges.
Definition: concepts.h:44
Outing edge iterator on a node.
Definition: concepts.h:69
Iterator on the leaving edges of the given vertex.
Definition: concepts.h:420
This kind of digraph contain indexed graph.
Definition: concepts.h:100