diff -r a151135b0cf9 -r aa2539c91954 tracesrv/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/model/TraceParameter.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tracesrv/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/model/TraceParameter.java Fri Oct 08 14:56:39 2010 +0300 @@ -0,0 +1,249 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +* All trace objects may contain parameters +* +*/ +package com.nokia.tracecompiler.model; + +/** + * Traces may contain parameters + * + */ +public class TraceParameter extends TraceObject { + + /** + * The type of this parameter + */ + private String type; + + /** + * Hexadecimal (%p), pointer type + */ + public static final String POINTER = "void*"; //$NON-NLS-1$ + + /** + * Signed decimal (%d), 32-bit type + */ + public static final String SDEC32 = "int32"; //$NON-NLS-1$ + + /** + * Hexadecimal (%x), 32-bit type + */ + public static final String HEX32 = "hex32"; //$NON-NLS-1$ + + /** + * Unsigned decimal (%u), 32-bit type + */ + public static final String UDEC32 = "uint32"; //$NON-NLS-1$ + + /** + * Octal (%o), 32-bit type + */ + public static final String OCT32 = "oct32"; //$NON-NLS-1$ + + /** + * Signed decimal (%hd), 16-bit type + */ + public static final String SDEC16 = "int16"; //$NON-NLS-1$ + + /** + * Hexadecimal (%hx), 16-bit type + */ + public static final String HEX16 = "hex16"; //$NON-NLS-1$ + + /** + * Unsigned decimal (%hu), 16-bit type + */ + public static final String UDEC16 = "uint16"; //$NON-NLS-1$ + + /** + * Octal (%ho), 16-bit type + */ + public static final String OCT16 = "oct16"; //$NON-NLS-1$ + + /** + * Signed decimal (%hhd), 8-bit type + */ + public static final String SDEC8 = "int8"; //$NON-NLS-1$ + + /** + * Hexadecimal (%hhx), 8-bit type + */ + public static final String HEX8 = "hex8"; //$NON-NLS-1$ + + /** + * Unsigned decimal (%hhu), 8-bit type + */ + public static final String UDEC8 = "uint8"; //$NON-NLS-1$ + + /** + * Octal (%hho), 8-bit type + */ + public static final String OCT8 = "oct8"; //$NON-NLS-1$ + + /** + * Signed decimal (%ld), 64-bit type + */ + public static final String SDEC64 = "int64"; //$NON-NLS-1$ + + /** + * Time, 64-bit type + */ + public static final String TIME = "time"; //$NON-NLS-1$ + + /** + * Hexadecimal (%lx), 64-bit type + */ + public static final String HEX64 = "hex64"; //$NON-NLS-1$ + + /** + * Unsigned decimal (%lu), 64-bit type + */ + public static final String UDEC64 = "uint64"; //$NON-NLS-1$ + + /** + * Octal (%lo), 64-bit type + */ + public static final String OCT64 = "oct64"; //$NON-NLS-1$ + + /** + * Ascii string (%s) type + */ + public static final String ASCII = "ascii"; //$NON-NLS-1$ + + /** + * Unicode string (%S) type + */ + public static final String UNICODE = "unicode"; //$NON-NLS-1$ + + /** + * Fixed floating point (%f), 64-bit + */ + public static final String FLOAT_FIX = "ffix"; //$NON-NLS-1$ + + /** + * Exponent floating point (%e), 64-bit + */ + public static final String FLOAT_EXP = "fexp"; //$NON-NLS-1$ + + /** + * Fixed / exponential floating point (%g), 64-bit + */ + public static final String FLOAT_OPT = "fopt"; //$NON-NLS-1$ + + /** + * The trace this parameter belongs to + */ + private Trace owner; + + /** + * Constructor + * + * @param owner + * the object owning this parameter + */ + public TraceParameter(Trace owner) { + setModel(owner.getModel()); + owner.addParameter(this); + this.owner = owner; + } + + /** + * Constructor, which inserts the parameter into specified index + * + * @param owner + * the object owning this parameter + * @param index + * the parameter index + */ + TraceParameter(Trace owner, int index) { + setModel(owner.getModel()); + owner.insertParameter(index, this); + this.owner = owner; + } + + /** + * Gets the trace this parameter is associated to. + * + * @return the trace + */ + public Trace getTrace() { + return owner; + } + + /** + * Sets the parameter type. Generates propertyUpdated event to model + * listeners if type changes + * + * @see TraceModelListener#propertyUpdated(TraceObject, int) + * @param type + * the parameter type + * @throws TraceCompilerException + */ + public void setType(String type) throws TraceCompilerException { + if (!type.equals(this.type)) { + removeTableReference(); + this.type = type; + addTableReference(); + getModel().notifyPropertyUpdated(this, TraceModelListener.TYPE); + } + } + + /** + * Gets the parameter type + * + * @return the parameter type + */ + public String getType() { + return type; + } + + /* + * (non-Javadoc) + * + * @see com.nokia.tracecompiler.model.TraceObject#reset() + */ + @Override + void reset() { + removeTableReference(); + super.reset(); + } + + /** + * Adds a constant table reference + */ + private void addTableReference() { + if (type != null) { + TraceConstantTable table = getModel().findConstantTableByName(type); + if (table != null) { + table.addParameterReference(this); + } + } + } + + /** + * Removes the constant table reference + */ + private void removeTableReference() { + if (type != null) { + TraceConstantTable table = getModel().findConstantTableByName(type); + if (table != null) { + table.removeParameterReference(this); + } + } + } + +}