/*******************************************************************************
- * Copyright (c) 2011-2012 Ericsson, Ecole Polytechnique de Montreal and others
+ * Copyright (c) 2011, 2013 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 v1.0 which
package org.eclipse.linuxtools.ctf.core.event.types;
import org.eclipse.linuxtools.ctf.core.event.io.BitBuffer;
+import org.eclipse.linuxtools.ctf.core.trace.CTFReaderException;
/**
- * <b><u>EnumDefinition</u></b>
+ * 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 class EnumDefinition extends Definition {
+public class EnumDefinition extends SimpleDatatypeDefinition {
// ------------------------------------------------------------------------
// Attributes
// Constructors
// ------------------------------------------------------------------------
+ /**
+ * Constructor
+ * @param declaration the parent declaration
+ * @param definitionScope the parent scope
+ * @param fieldName the field name
+ */
public EnumDefinition(EnumDeclaration declaration,
IDefinitionScope definitionScope, String fieldName) {
super(definitionScope, fieldName);
integerValue = declaration.getContainerType().createDefinition(
definitionScope, fieldName);
- value = ((Long) integerValue.getValue()).toString();
+ value = declaration.query(integerValue.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 value;
}
- public long getIntegerValue() {
+ @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 integerValue.getValue();
}
- public void setIntegerValue(long Value) {
- integerValue.setValue(Value);
- value = ((Long) integerValue.getValue()).toString();
+ /**
+ * Sets the value of the enum in string format so "Enum a{DAY="0", NIGHT="1"}; will set 0
+ * @param value The value of the enum.
+ */
+ public void setIntegerValue(long value) {
+ integerValue.setValue(value);
+ this.value = declaration.query(value);
+ }
+
+ @Override
+ public EnumDeclaration getDeclaration() {
+ return declaration;
}
// ------------------------------------------------------------------------
// ------------------------------------------------------------------------
@Override
- public void read(BitBuffer input) {
+ public void read(BitBuffer input) throws CTFReaderException {
+ alignRead(input, this.declaration);
integerValue.read(input);
long val = integerValue.getValue();
value = declaration.query(val);
}
+ @Override
+ public String toString() {
+ return "{ value = " + getValue() + //$NON-NLS-1$
+ ", container = " + integerValue.toString() + //$NON-NLS-1$
+ " }"; //$NON-NLS-1$
+ }
}