diff options
Diffstat (limited to 'tools/samples/org.eclipse.ptp.pldt.sampleCDTstaticAnalysis/src/org/eclipse/ptp/pldt/sampleCDTstaticAnalysis/handlers/BuildCFGraphHandler.java')
-rw-r--r-- | tools/samples/org.eclipse.ptp.pldt.sampleCDTstaticAnalysis/src/org/eclipse/ptp/pldt/sampleCDTstaticAnalysis/handlers/BuildCFGraphHandler.java | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/tools/samples/org.eclipse.ptp.pldt.sampleCDTstaticAnalysis/src/org/eclipse/ptp/pldt/sampleCDTstaticAnalysis/handlers/BuildCFGraphHandler.java b/tools/samples/org.eclipse.ptp.pldt.sampleCDTstaticAnalysis/src/org/eclipse/ptp/pldt/sampleCDTstaticAnalysis/handlers/BuildCFGraphHandler.java deleted file mode 100644 index 624ad8eb2..000000000 --- a/tools/samples/org.eclipse.ptp.pldt.sampleCDTstaticAnalysis/src/org/eclipse/ptp/pldt/sampleCDTstaticAnalysis/handlers/BuildCFGraphHandler.java +++ /dev/null @@ -1,135 +0,0 @@ -package org.eclipse.ptp.pldt.sampleCDTstaticAnalysis.handlers; - -import java.util.Iterator; - -import org.eclipse.cdt.core.dom.ast.IASTStatement; -import org.eclipse.core.commands.AbstractHandler; -import org.eclipse.core.commands.ExecutionEvent; -import org.eclipse.core.commands.ExecutionException; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.ptp.pldt.mpi.analysis.cdt.graphs.GraphCreator; -import org.eclipse.ptp.pldt.mpi.analysis.cdt.graphs.IBlock; -import org.eclipse.ptp.pldt.mpi.analysis.cdt.graphs.ICallGraph; -import org.eclipse.ptp.pldt.mpi.analysis.cdt.graphs.ICallGraphNode; -import org.eclipse.ptp.pldt.mpi.analysis.cdt.graphs.IControlFlowGraph; -import org.eclipse.ptp.pldt.mpi.analysis.cdt.graphs.impl.ControlFlowGraph; -import org.eclipse.ui.ISelectionListener; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.handlers.HandlerUtil; - -/** - * Build Control Flow Graph - * - * @author Beth Tibbitts tibbitts@us.ibm.com - * - * @see org.eclipse.core.commands.IHandler - * @see org.eclipse.core.commands.AbstractHandler - * @see org.eclipse.ptp.pldt.mpi.analysis.cdt.graphs.GraphCreator - */ -public class BuildCFGraphHandler extends AbstractHandler implements - ISelectionListener { - private IStructuredSelection selection; - protected ICallGraph callGraph; - protected GraphCreator graphCreator; - protected IWorkbenchWindow window; - - /** - * The constructor. - */ - public BuildCFGraphHandler() { - graphCreator = new GraphCreator(); - - } - - /** - * Execute the command: extract extract the needed information from the - * application context. <br> - * A new call graph is constructed for the selected resources. - * - * @param event - * @return the result of the execution. Reserved for future use by IHandler - * interface, must be <code>null</code>. - */ - public Object execute(ExecutionEvent event) throws ExecutionException { - window = HandlerUtil.getActiveWorkbenchWindowChecked(event); - System.out.println("BuildCFGraphHandler.execute()"); - // create an empty call graph to begin with - callGraph = graphCreator.initCallGraph(); - // Get the current selection - if (selection == null) { - ISelection sel = HandlerUtil.getCurrentSelection(event); - if (sel instanceof IStructuredSelection) { - selection = (IStructuredSelection) sel; - } - if (selection == null) { - message("No selection detected. Please select a file, folder, or project in the Projects View."); - selection=null; - return null; - } - } - - // We iterate here only to handle the possibility of multiple-selection. - // graphCreator will descend into child nodes. - /*final*/ IResource res=null; - for (Iterator iter = selection.iterator(); iter.hasNext();) { - Object obj = (Object) iter.next(); - // It can be a Project, Folder, File, etc... - if (obj instanceof IAdaptable) { - IAdaptable iad = (IAdaptable) obj; - res = (IResource) iad.getAdapter(IResource.class); - // Note: put this in a Job or WorkspaceModifyOperation if resources - // will be changed. - if (res != null) { - callGraph = graphCreator.initCallGraph(res); - } else { - message("Please select a file, folder, or project in the Projects view"); - selection=null; - return null; - } - } - } - - graphCreator.computeCallGraph(callGraph); - // get the first node - ICallGraphNode topNode = callGraph.topEntry(); - String topName=topNode.getFuncName(); - - ICallGraphNode firstNode=callGraph.getAllNodes().get(0); - String firstName=firstNode.getFuncName(); - // get a node by function name - ICallGraphNode namedNode = callGraph.getNode(res.getName(), "foo"); - String namedName=""; - if(namedNode!=null) { - namedName=namedNode.getFuncName(); - } - - ICallGraphNode node = topNode; - IASTStatement funcBody=node.getFuncDef().getBody(); - IControlFlowGraph cfg = new ControlFlowGraph(funcBody); - cfg.buildCFG(); - - IBlock entryBlock = cfg.getEntry(); - for (IBlock block= cfg.getEntry(); block!=null; block = block.getTopNext()) { - block.print(); - } - return null; - } - - public void selectionChanged(IWorkbenchPart part, ISelection selection) { - if (selection instanceof IStructuredSelection) { - this.selection = (IStructuredSelection) selection; - System.out.println("BuildCallGraphHandler got selection"); - } - - } - - public void message(String msg) { - MessageDialog.openInformation(window.getShell(), - "Houston, we have a problem", msg); - } -} |