blob: b24c1effed656597f71e6cf78e15699fd80cff14 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2014 Ericsson, Ecole Polytechnique de Montreal and others
*
* All rights reserved. This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors: Matthew Khouzam - Initial API and implementation
* Contributors: Simon Marchi - Initial API and implementation
*******************************************************************************/
package org.eclipse.tracecompass.ctf.core.event.types;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.tracecompass.ctf.core.event.scope.IDefinitionScope;
/**
* A CTF enum definition.
*
* The definition of a enum point basic data type. It will take the data from a
* trace and store it (and make it fit) as an integer and a string.
*
* @version 1.0
* @author Matthew Khouzam
* @author Simon Marchi
*/
public final class EnumDefinition extends SimpleDatatypeDefinition {
// ------------------------------------------------------------------------
// Attributes
// ------------------------------------------------------------------------
private final IntegerDefinition fInteger;
private final String fValue;
// ------------------------------------------------------------------------
// Constructors
// ------------------------------------------------------------------------
/**
* Constructor
*
* @param declaration
* the parent declaration
* @param definitionScope
* the parent scope
* @param fieldName
* the field name
* @param intValue
* the value of the enum
*/
public EnumDefinition(@NonNull EnumDeclaration declaration,
IDefinitionScope definitionScope, @NonNull String fieldName, IntegerDefinition intValue) {
super(declaration, definitionScope, fieldName);
fInteger = intValue;
fValue = declaration.query(fInteger.getValue());
}
// ------------------------------------------------------------------------
// Getters/Setters/Predicates
// ------------------------------------------------------------------------
/**
* Gets the value of the enum in string format so
* "Enum a{DAY="0", NIGHT="1"}; will return "DAY"
*
* @return the value of the enum.
*/
public String getValue() {
return fValue;
}
@Override
public String getStringValue() {
return getValue();
}
/**
* Gets the value of the enum in string format so
* "Enum a{DAY="0", NIGHT="1"}; will return 0
*
* @return the value of the enum.
*/
@Override
public Long getIntegerValue() {
return fInteger.getValue();
}
@Override
public EnumDeclaration getDeclaration() {
return (EnumDeclaration) super.getDeclaration();
}
@Override
public long size() {
return fInteger.size();
}
@Override
public byte[] getBytes() {
return fInteger.getBytes();
}
// ------------------------------------------------------------------------
// Operations
// ------------------------------------------------------------------------
@Override
public String toString() {
return "{ value = " + getValue() + //$NON-NLS-1$
", container = " + fInteger.getValue()+ //$NON-NLS-1$
" }"; //$NON-NLS-1$
}
}