summaryrefslogtreecommitdiffstats
path: root/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/cfg/IControlFlowGraph.java
diff options
context:
space:
mode:
authorElliott Baron <ebaron@fedoraproject.org>2010-06-26 22:27:34 -0400
committerElliott Baron <ebaron@fedoraproject.org>2010-06-26 22:27:34 -0400
commit4e112eca7750a4f530c986be55c178c43c16d3ea (patch)
treedb140c4fe4db9945502398e4869707ca0346353e /org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/cfg/IControlFlowGraph.java
parentaa73b3f2503808e4b4029a73368a75b258d6f0dc (diff)
downloadcodan-4e112eca7750a4f530c986be55c178c43c16d3ea.tar.gz
codan-4e112eca7750a4f530c986be55c178c43c16d3ea.tar.xz
codan-4e112eca7750a4f530c986be55c178c43c16d3ea.zip
Update codan plugins to CDT 7.0.HEADmaster
* org.eclipse.cdt.codan.checkers.ui: Updated. * org.eclipse.cdt.codan.checkers: Updated. * org.eclipse.cdt.codan.core: Updated. * org.eclipse.cdt.codan.ui: Updated. * org.eclipse.cdt.codan.core.cxx: Added. * org.eclipse.cdt.codan.extension/META-INF/MANIFEST.MF: Import org.eclipse.cdt.codan.core.cxx.model. * org.eclipse.cdt.codan.extension/src/org/eclipse/cdt/codan/extension/checkers/AbstractPropSimChecker.java: Superclass moved.
Diffstat (limited to 'org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/cfg/IControlFlowGraph.java')
-rw-r--r--org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/cfg/IControlFlowGraph.java69
1 files changed, 69 insertions, 0 deletions
diff --git a/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/cfg/IControlFlowGraph.java b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/cfg/IControlFlowGraph.java
new file mode 100644
index 0000000..a8f9269
--- /dev/null
+++ b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/cfg/IControlFlowGraph.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2010 Alena Laskavaia
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Alena Laskavaia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.codan.core.model.cfg;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+/**
+ * Represents control flow graph (CFG) object.
+ * This is "normalized" control flow graph, with typed nodes:
+ * <br>
+ * <li> {@link IStartNode} - start node of the cfg (source)
+ * <li> {@link IExitNode} - exit node of the cfg (sink)
+ * <li> {@link IPlainNode} - has one incoming one outgoing
+ * <li> {@link IDecisionNode} - has one incoming and the only node that can have
+ * multiple outcoming
+ * arcs
+ * <li> {@link IConnectorNode} - the only node that can have multiple incoming
+ * arcs, and one outgoing
+ * <li> {@link IJumpNode} - has one incoming and one outgoing but represent
+ * change of control direction
+ * <li> {@link IBranchNode} - usually node where decision node connect to,
+ * labels represent a way where controls goes to
+ *
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface IControlFlowGraph {
+ /**
+ * @return start node of the graph. CFG only has one start node.
+ */
+ IStartNode getStartNode();
+
+ /**
+ * @return iterator over exit nodes of control flow graph. Exit nodes
+ * include return statement,
+ * and statements with throw and abort/exit functions.
+ */
+ Iterator<IExitNode> getExitNodeIterator();
+
+ /**
+ * @return size of exit nodes list
+ */
+ int getExitNodeSize();
+
+ /**
+ * @return list of roots of dead code sections, they don't have incoming
+ * arcs
+ */
+ Iterator<IBasicBlock> getUnconnectedNodeIterator();
+
+ /**
+ * @return size of unconnected nodes list
+ */
+ int getUnconnectedNodeSize();
+
+ /**
+ * @return collection of all nodes
+ */
+ Collection<IBasicBlock> getNodes();
+}