/*******************************************************************************
* 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;
}
}