/* Copyright 2012, UCAR/Unidata.
See the LICENSE file for more information.
*/
package dap4.dap4shared;
import dap4.core.data.*;
import dap4.core.dmr.DapStructure;
public class D4DataStructure extends D4DataVariable implements DataStructure
{
//////////////////////////////////////////////////
// Type Decls
/*
static class Field
{
DapVariable field;
StructureMembers.Member member;
int index;
public Field(DapVariable field, int index, StructureMembers.Member member)
{
this.field = field;
this.member = member;
this.index = index;
}
}
*/
//////////////////////////////////////////////////
// Instance variables
protected D4DataCompoundArray parent = null;
//Coverity[FB.URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD]
protected int index = 0;
protected D4DataVariable[] fielddata = null;
//////////////////////////////////////////////////
// Constructors
public D4DataStructure(D4DSP dsp, DapStructure dap, D4DataCompoundArray parent, int index)
throws DataException
{
super(dsp, dap);
this.parent = parent;
this.index = index;
this.fielddata = new D4DataVariable[dap.getFields().size()];
}
//////////////////////////////////////////////////
// Accessors
public void
addField(int mindex, D4DataVariable ddv)
{
if(fielddata[mindex] != null)
throw new IllegalStateException("duplicate fields");
fielddata[mindex] = ddv;
}
//////////////////////////////////////////////////
// DataStructure Interface
@Override
public DataVariable readfield(String name) throws DataException
{
int index = ((DapStructure)this.getTemplate()).indexByName(name);
return readfield(index);
}
@Override
public DataVariable readfield(int index)
throws DataException
{
D4DataVariable ddv = fielddata[index];
return ddv;
}
}