/*******************************************************************************
* Copyright (c) 2009 STMicroelectronics.
* 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:
* Xavier Raynaud <xavier.raynaud@st.com> - initial API and implementation
*******************************************************************************/
package org.eclipse.linuxtools.internal.gprof.symbolManager;
import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.core.IBinaryParser.IBinaryObject;
import org.eclipse.core.resources.IProject;
import org.eclipse.linuxtools.binutils.utils.STSymbolManager;
/**
* Arc structure for call-graph.
*
* @author Xavier Raynaud <xavier.raynaud@st.com>
*/
public class CallGraphArc {
/** source vertice of arc. */
public final CallGraphNode parent;
/** dest vertice of arc. */
public final CallGraphNode child;
/** number of occurence */
private int count;
private final IProject project;
/** The location (source path) of the function call */
public String parentPath;
/** The location (line number) of the function call */
public int parentLine;
/**
* Constructor
*
* @param parent
* the caller node
* @param parentAddress
* the location of the function call
* @param child
* the callee node
* @param count
* how many function calls have been performed
* @param program
* the program
*/
public CallGraphArc(CallGraphNode parent, IAddress parentAddress, CallGraphNode child, int count,
IBinaryObject program, IProject project) {
this.parent = parent;
this.child = child;
this.count = count;
this.parentPath = STSymbolManager.sharedInstance.getFileName(program, parentAddress, project);
this.parentLine = STSymbolManager.sharedInstance.getLineNumber(program, parentAddress, project);
this.project = project;
}
/**
* @return the count
*/
public int getCount() {
return count;
}
/**
* @param count
* the count to set
*/
public void setCount(int count) {
this.count = count;
}
/**
* Print on System.out, for debugging purpose
*/
public void print() {
System.out.print(" "); //$NON-NLS-1$
System.out.print(this.parent.getSymbol().getName());
System.out.print(" -> "); //$NON-NLS-1$
System.out.print(this.child.getSymbol().getName());
System.out.print(" :: "); //$NON-NLS-1$
System.out.println(this.count);
}
public IProject getProject() {
return this.project;
}
}