// Near Infinity - An Infinity Engine Browser and Editor
// Copyright (C) 2001 - 2005 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
import java.nio.ByteBuffer;
import org.infinity.resource.StructEntry;
import org.infinity.util.IdsMapCache;
import org.infinity.util.IdsMapEntry;
import org.infinity.util.LongIntegerHashMap;
public final class IdsFlag extends Flag
{
public IdsFlag(ByteBuffer buffer, int offset, int length, String name, String resource)
{
this(null, buffer, offset, length, name, resource);
}
public IdsFlag(StructEntry parent, ByteBuffer buffer, int offset, int length, String name, String resource)
{
super(parent, buffer, offset, length, name);
LongIntegerHashMap<IdsMapEntry> idsmap = IdsMapCache.get(resource).getMap();
IdsMapEntry entry = idsmap.get(0L);
setEmptyDesc((entry != null) ? entry.getString() : null);
// fetching flag labels from IDS
String[] stable = new String[8 * length];
for (int i = 0; i < stable.length; i++) {
entry = idsmap.get(Long.valueOf(1L << i));
stable[i] = (entry != null) ? entry.getString() : null;
}
setFlagDescriptions(length, stable, 0, ';');
}
}