Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlena Laskavaia2010-04-15 02:22:56 +0000
committerAlena Laskavaia2010-04-15 02:22:56 +0000
commit234a20224a17c7229a7e4a440c2a89992ba825df (patch)
tree08280571a85cc1e4ac05a0579266c5fccd8ae866 /codan/org.eclipse.cdt.codan.ui.cfgview
parent697b118ca513be0a19f94db521159dca1bbb342d (diff)
downloadorg.eclipse.cdt-234a20224a17c7229a7e4a440c2a89992ba825df.tar.gz
org.eclipse.cdt-234a20224a17c7229a7e4a440c2a89992ba825df.tar.xz
org.eclipse.cdt-234a20224a17c7229a7e4a440c2a89992ba825df.zip
- added support for break and continue
Diffstat (limited to 'codan/org.eclipse.cdt.codan.ui.cfgview')
-rw-r--r--codan/org.eclipse.cdt.codan.ui.cfgview/src/org/eclipse/cdt/codan/ui/cfgview/views/ControlFlowGraphView.java59
1 files changed, 26 insertions, 33 deletions
diff --git a/codan/org.eclipse.cdt.codan.ui.cfgview/src/org/eclipse/cdt/codan/ui/cfgview/views/ControlFlowGraphView.java b/codan/org.eclipse.cdt.codan.ui.cfgview/src/org/eclipse/cdt/codan/ui/cfgview/views/ControlFlowGraphView.java
index f3f05073bf8..218004ab9fd 100644
--- a/codan/org.eclipse.cdt.codan.ui.cfgview/src/org/eclipse/cdt/codan/ui/cfgview/views/ControlFlowGraphView.java
+++ b/codan/org.eclipse.cdt.codan.ui.cfgview/src/org/eclipse/cdt/codan/ui/cfgview/views/ControlFlowGraphView.java
@@ -13,7 +13,7 @@ import org.eclipse.cdt.codan.provisional.core.model.cfg.IControlFlowGraph;
import org.eclipse.cdt.codan.provisional.core.model.cfg.IDecisionNode;
import org.eclipse.cdt.codan.provisional.core.model.cfg.IExitNode;
import org.eclipse.cdt.codan.provisional.core.model.cfg.IJumpNode;
-import org.eclipse.cdt.codan.provisional.core.model.cfg.ILabeledNode;
+import org.eclipse.cdt.codan.provisional.core.model.cfg.IBranchNode;
import org.eclipse.cdt.codan.provisional.core.model.cfg.ISingleOutgoing;
import org.eclipse.cdt.codan.provisional.core.model.cfg.IStartNode;
import org.eclipse.cdt.codan.ui.cfgview.ControlFlowGraphPlugin;
@@ -131,10 +131,9 @@ public class ControlFlowGraphView extends ViewPart {
}
blocks.add(((IDecisionNode) parent).getMergeNode());
return blocks.toArray();
- } else if (parent instanceof ILabeledNode) {
- Collection<IBasicBlock> blocks = getFlat(
- ((ILabeledNode) parent).getOutgoing(),
- new ArrayList<IBasicBlock>());
+ } else if (parent instanceof IBranchNode) {
+ Collection<IBasicBlock> blocks = getFlat(((IBranchNode) parent)
+ .getOutgoing(), new ArrayList<IBasicBlock>());
return blocks.toArray();
}
return new Object[0];
@@ -143,6 +142,25 @@ public class ControlFlowGraphView extends ViewPart {
public boolean hasChildren(Object parent) {
return getChildren(parent).length > 0;
}
+
+ /**
+ * @param list
+ * @param startNode
+ * @return
+ */
+ public Collection<IBasicBlock> getFlat(IBasicBlock node,
+ Collection<IBasicBlock> list) {
+ list.add(node);
+ if (node instanceof IJumpNode)
+ return list;
+ if (node instanceof ISingleOutgoing) {
+ getFlat(((ISingleOutgoing) node).getOutgoing(), list);
+ } else if (node instanceof IDecisionNode) {
+ getFlat(((IDecisionNode) node).getMergeNode().getOutgoing(),
+ list);
+ }
+ return list;
+ }
}
class ViewLabelProvider extends LabelProvider {
@@ -154,13 +172,11 @@ public class ControlFlowGraphView extends ViewPart {
strdata = ((AbstractBasicBlock) obj).toStringData();
}
if (strdata == null || strdata.length() == 0) {
- if (obj instanceof ILabeledNode) {
- strdata = strdata+blockHexLabel(obj);
- } else if (obj instanceof IConnectorNode) {
+ if (obj instanceof IConnectorNode) {
strdata = blockHexLabel(obj);
} else if (obj instanceof IJumpNode) {
strdata = blockHexLabel(((IJumpNode) obj).getJumpNode());
- }
+ }
}
return obj.getClass().getSimpleName() + ": " + strdata;
}
@@ -184,7 +200,7 @@ public class ControlFlowGraphView extends ViewPart {
imageKey = "start.png";
else if (obj instanceof IJumpNode)
imageKey = "jump.png";
- else if (obj instanceof ILabeledNode)
+ else if (obj instanceof IBranchNode)
imageKey = "labeled.png";
else if (obj instanceof IConnectorNode)
imageKey = "connector.png";
@@ -200,29 +216,6 @@ public class ControlFlowGraphView extends ViewPart {
}
/**
- * @param list
- * @param startNode
- * @return
- */
- public Collection<IBasicBlock> getFlat(IBasicBlock node,
- Collection<IBasicBlock> list) {
- list.add(node);
- if (node instanceof IConnectorNode
- && !((IConnectorNode) node).hasBackwardIncoming() &&
- !(node instanceof ILabeledNode)) {
- return list;
- }
- if (node instanceof IJumpNode)
- return list;
- if (node instanceof ISingleOutgoing) {
- getFlat(((ISingleOutgoing) node).getOutgoing(), list);
- } else if (node instanceof IDecisionNode) {
- getFlat(((IDecisionNode) node).getMergeNode().getOutgoing(), list);
- }
- return list;
- }
-
- /**
* This is a callback that will allow us to create the viewer and initialize
* it.
*/

Back to the top