ctf: Throw CTFReaderException in the BitBuffer API
[deliverable/tracecompass.git] / org.eclipse.linuxtools.ctf.core / src / org / eclipse / linuxtools / ctf / core / event / types / EnumDefinition.java
index aef0446728f7866d34802ea33f04b53c457b12fb..82d5230989c4a78c3cfaf7fb6c359f765d1364e2 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * 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
@@ -33,6 +41,12 @@ public class EnumDefinition extends Definition {
     // 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);
@@ -41,24 +55,47 @@ public class EnumDefinition extends Definition {
 
         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;
     }
 
     // ------------------------------------------------------------------------
@@ -66,7 +103,8 @@ public class EnumDefinition extends Definition {
     // ------------------------------------------------------------------------
 
     @Override
-    public void read(BitBuffer input) {
+    public void read(BitBuffer input) throws CTFReaderException {
+        alignRead(input, this.declaration);
         integerValue.read(input);
         long val = integerValue.getValue();
 
@@ -75,4 +113,10 @@ public class EnumDefinition extends Definition {
         value = declaration.query(val);
     }
 
+    @Override
+    public String toString() {
+        return "{ value = " + getValue() + //$NON-NLS-1$
+                ", container = " + integerValue.toString() + //$NON-NLS-1$
+                " }"; //$NON-NLS-1$
+    }
 }
This page took 0.072264 seconds and 5 git commands to generate.