/******************************************************************************* * Copyright (c) 2004, 2008, 2009 Red Hat, Inc. * 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: * Keith Seitz <keiths@redhat.com> - initial API and implementation * Kent Sebastian <ksebasti@redhat.com> *******************************************************************************/ package org.eclipse.linuxtools.internal.oprofile.core.model; /** * A class which represents an image (executables, * libraries, modules) profile by OProfile. */ public class OpModelImage { public static final int IMAGE_PARSE_ERROR = -1; //The count of all samples from this image private int count; //the count for all dependent images -- needed? private int depcount; //The name of this image (the full path, where applicable) private String name; //The symbols profiled in this image private OpModelSymbol[] symbols; //Any dependent images on this image (usually shared libs, kernel modules) private OpModelImage[] dependents; private String printTabs = ""; //for nice output //$NON-NLS-1$ public OpModelImage() { name = ""; //$NON-NLS-1$ count = 0; depcount = 0; symbols = null; dependents = null; } public int getCount() { return count; } public int getDepCount() { return depcount; } public String getName() { return name; } public OpModelSymbol[] getSymbols() { return symbols; } public OpModelImage[] getDependents() { return dependents; } public boolean hasDependents() { return (dependents == null || dependents.length == 0 ? false : true); } /** * This method is not meant to be called publicly, used only * from the XML processors * @param count */ public void setCount(int count) { this.count = count; } /** * This method is not meant to be called publicly, used only * from the XML processors * @param depcount */ public void setDepCount(int depcount) { this.depcount = depcount; } /** * This method is not meant to be called publicly, used only * from the XML processors * @param name */ public void setName(String name) { this.name = name; } /** * This method is not meant to be called publicly, used only * from the XML processors * @param symbols */ public void setSymbols(OpModelSymbol[] symbols) { this.symbols = symbols; } /** * This method is not meant to be called publicly, used only * from the XML processors * @param dependents */ public void setDependents(OpModelImage[] dependents) { this.dependents = dependents; } public String toString(String tabs) { printTabs = tabs; String s = toString(); printTabs = ""; //$NON-NLS-1$ return s; } @Override public String toString() { String s = name + ", Count: " + count + (depcount !=0 ? ", Dependent Count: " + depcount + "\n" : "\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ if (symbols != null) { for (int i = 0; i < symbols.length; i++) { s += printTabs + "Symbols: "; //$NON-NLS-1$ s += symbols[i].toString(printTabs + "\t"); //$NON-NLS-1$ } } if (dependents != null) { for (int i = 0; i < dependents.length; i++) { s += printTabs + "Dependent Image: "; //$NON-NLS-1$ s += dependents[i].toString(printTabs + "\t"); //$NON-NLS-1$ } } return s; } }