20 package net.sf.gridarta.model.archetypetype;
22 import java.util.ArrayList;
23 import java.util.Collection;
24 import java.util.HashMap;
25 import java.util.List;
30 import org.apache.log4j.Category;
31 import org.apache.log4j.Logger;
32 import org.jetbrains.annotations.NotNull;
33 import org.jetbrains.annotations.Nullable;
60 private final List<String>
bitName =
new ArrayList<>();
72 private final Map<String, Integer>
namedValues =
new HashMap<>();
78 private final Map<Integer, String>
encodings =
new HashMap<>();
84 private final Map<Integer, String>
names =
new HashMap<>();
122 return Integer.toString(value);
125 final StringBuilder sb =
new StringBuilder();
127 if (sb.length() > 0) {
132 return sb.toString();
146 private Iterable<String>
encodeValueAsList(
final int value, @NotNull
final Map<Integer, String> strings) {
149 final Collection<String> negResult =
new ArrayList<>();
150 negResult.add(
"all");
152 if (value == moveAll) {
155 final Collection<String> result =
new ArrayList<>();
157 final String str = strings.get(0);
158 result.add(str ==
null ?
"0" : str);
168 for (
int i = moveAll; i != 0; i >>= 1) {
169 final String strNull = strings.get(1 << count);
170 final String str = strNull ==
null ? Integer.toString(1 << count) : strNull;
171 if ((value & (1 << count)) == 0) {
172 negResult.add(
"-" + str);
179 if ((value & ~moveAll) != 0) {
180 result.add(Integer.toString(value & ~moveAll));
188 return count >= 4 && allCount <= 1 ? negResult : result;
201 if (encodedValue.isEmpty()) {
207 final boolean negated;
209 if (word.startsWith(
"-")) {
211 name = word.substring(1);
216 final Integer integerValue =
namedValues.get(name);
218 if (integerValue ==
null) {
220 value = Integer.parseInt(name);
221 }
catch (
final NumberFormatException ignored) {
222 LOG.warn(
"Ignoring unknown bitmask value: " + name);
226 value = integerValue;
242 return (1 <<
bitName.size()) - 1;
268 public void addName(@NotNull
final String name,
final int value) {
269 names.put(value, name);
297 public boolean addBitName(
final int bitValue, @NotNull
final String name) {
298 if (bitValue >=
bitName.size()) {
301 }
while (bitValue >=
bitName.size());
302 }
else if (
bitName.get(bitValue) !=
null) {