1 /*******************************************************************************
2 * Copyright (c) 2011-2012 Ericsson, Ecole Polytechnique de Montreal and others
4 * All rights reserved. This program and the accompanying materials are made
5 * available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
9 * Contributors: Matthew Khouzam - Initial API and implementation
10 * Contributors: Simon Marchi - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.ctf
.core
.event
.types
;
15 import java
.util
.HashMap
;
16 import java
.util
.LinkedList
;
17 import java
.util
.List
;
20 * <b><u>StructDeclaration</u></b>
22 public class StructDeclaration
implements IDeclaration
{
24 // ------------------------------------------------------------------------
26 // ------------------------------------------------------------------------
28 private final HashMap
<String
, IDeclaration
> fields
= new HashMap
<String
, IDeclaration
>();
29 private final List
<String
> fieldsList
= new LinkedList
<String
>();
30 private long minAlign
;
32 // ------------------------------------------------------------------------
34 // ------------------------------------------------------------------------
36 public StructDeclaration(long minAlign
) {
37 this.minAlign
= minAlign
;
40 // ------------------------------------------------------------------------
41 // Getters/Setters/Predicates
42 // ------------------------------------------------------------------------
44 public long getMinAlign() {
48 public void setMinAlign(long minAlign
) {
49 this.minAlign
= minAlign
;
52 public boolean hasField(String name
) {
53 return this.fields
.containsKey(name
);
56 public HashMap
<String
, IDeclaration
> getFields() {
60 public List
<String
> getFieldsList() {
61 return this.fieldsList
;
64 // ------------------------------------------------------------------------
66 // ------------------------------------------------------------------------
69 public StructDefinition
createDefinition(IDefinitionScope definitionScope
,
71 return new StructDefinition(this, definitionScope
, fieldName
);
74 public void addField(String name
, IDeclaration declaration
) {
75 // TODO: update the minAlign to be the max of minAlign and the align
76 // value of the new field.
77 this.fields
.put(name
, declaration
);
78 this.fieldsList
.add(name
);
82 public String
toString() {
83 /* Only used for debugging */
84 return "[declaration] struct[" + Integer
.toHexString(hashCode()) + ']'; //$NON-NLS-1$