// Near Infinity - An Infinity Engine Browser and Editor
// Copyright (C) 2001 - 2005 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.var;
import java.nio.ByteBuffer;
import org.infinity.datatype.DecNumber;
import org.infinity.datatype.TextString;
import org.infinity.resource.AbstractStruct;
import org.infinity.resource.AddRemovable;
import org.infinity.util.io.StreamUtils;
final class Entry extends AbstractStruct implements AddRemovable
{
// GAM-specific field labels
public static final String VAR_ENTRY = "Variable";
public static final String VAR_ENTRY_TYPE = "Type";
public static final String VAR_ENTRY_NAME = "Name";
public static final String VAR_ENTRY_VALUE = "Value";
Entry() throws Exception
{
super(null, VAR_ENTRY, StreamUtils.getByteBuffer(44), 0);
}
Entry(AbstractStruct superStruct, ByteBuffer buffer, int offset, int nr) throws Exception
{
super(superStruct, VAR_ENTRY + " " + nr, buffer, offset);
}
//--------------------- Begin Interface AddRemovable ---------------------
@Override
public boolean canRemove()
{
return true;
}
//--------------------- End Interface AddRemovable ---------------------
@Override
public int read(ByteBuffer buffer, int offset) throws Exception
{
addField(new TextString(buffer, offset, 8, VAR_ENTRY_TYPE));
addField(new TextString(buffer, offset + 8, 32, VAR_ENTRY_NAME));
addField(new DecNumber(buffer, offset + 40, 4, VAR_ENTRY_VALUE));
return offset + 44;
}
}