| /******************************************************************************* |
| * 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.view.fields; |
| |
| import org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTTreeViewer; |
| import org.eclipse.linuxtools.internal.gprof.Messages; |
| import org.eclipse.linuxtools.internal.gprof.view.GmonView; |
| import org.eclipse.linuxtools.internal.gprof.view.histogram.TreeElement; |
| import org.eclipse.swt.graphics.Color; |
| |
| |
| /** |
| * Column "Samples" of displayed elements |
| * |
| * @author Xavier Raynaud <xavier.raynaud@st.com> |
| */ |
| public class SamplePerCallField extends SampleProfField { |
| |
| /** |
| * Constructor |
| * @param viewer the gmon viewer |
| */ |
| public SamplePerCallField(AbstractSTTreeViewer viewer) { |
| super(viewer); |
| } |
| |
| @Override |
| public int compare(Object obj1, Object obj2) { |
| TreeElement e1 = (TreeElement) obj1; |
| TreeElement e2 = (TreeElement) obj2; |
| int c1 = e1.getCalls(); |
| int c2 = e2.getCalls(); |
| if ((c1 == 0 || c1 == -1) && (c2 == 0 || c2 == -1)) { |
| return 0; |
| } |
| if (c1 == 0 || c1 == -1) { |
| return -1; |
| } |
| if (c2 == 0 || c2 == -1) { |
| return 1; |
| } |
| float f1 = (float)e1.getSamples()/(float)c1; |
| float f2 = (float)e2.getSamples()/(float)c2; |
| return Float.compare(f1, f2); |
| } |
| |
| @Override |
| public String getColumnHeaderText() { |
| return Messages.SamplePerCallField_TIME_CALL; |
| } |
| |
| @Override |
| public String getColumnHeaderTooltip() { |
| return Messages.SamplePerCallField_TIME_CALL_TOOLTIP; |
| } |
| |
| @Override |
| public String getValue(Object obj) { |
| TreeElement e = (TreeElement) obj; |
| int i = e.getSamples(); |
| int j = e.getCalls(); |
| if (i == -1 || j <= 0) { |
| return ""; //$NON-NLS-1$ |
| } |
| float k = (float)i/(float)j; |
| |
| double prof_rate = getProfRate(); |
| if(prof_rate != 0){ |
| return getValue(k, prof_rate); |
| }else { |
| return ""; //$NON-NLS-1$ |
| } |
| } |
| |
| @Override |
| public Color getBackground(Object element) { |
| return GmonView.getBackground(element); |
| } |
| |
| @Override |
| public Number getNumber(Object obj) { |
| TreeElement e = (TreeElement) obj; |
| int i = e.getSamples(); |
| int j = e.getCalls(); |
| if (i == -1 || j <= 0) { |
| return 0L; |
| } |
| float k = (float)i/(float)j; |
| |
| double prof_rate = getProfRate(); |
| if(prof_rate != 0){ |
| return k/prof_rate; |
| } else { |
| return 0L; |
| } |
| } |
| |
| |
| } |