Added method converting int to BitSet to BitSetUtils.

This commit is contained in:
Evgeny Gerashchenko
2012-06-14 20:44:05 +04:00
parent 5541488ca0
commit e26d7fb75e
3 changed files with 14 additions and 10 deletions
@@ -21,6 +21,7 @@ import com.intellij.psi.PsiClass;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.resolve.java.JvmStdlibNames; import org.jetbrains.jet.lang.resolve.java.JvmStdlibNames;
import org.jetbrains.jet.utils.BitSetUtils;
import java.util.BitSet; import java.util.BitSet;
@@ -45,12 +46,7 @@ public class JetClassAnnotation extends PsiAnnotationWrapper {
private BitSet flags = null; private BitSet flags = null;
public BitSet flags() { public BitSet flags() {
if (flags == null) { if (flags == null) {
int flagsValue = getIntAttribute(JvmStdlibNames.JET_CLASS_FLAGS_FIELD, JvmStdlibNames.FLAGS_DEFAULT_VALUE); flags = BitSetUtils.toBitSet(getIntAttribute(JvmStdlibNames.JET_CLASS_FLAGS_FIELD, JvmStdlibNames.FLAGS_DEFAULT_VALUE));
flags = new BitSet(JvmStdlibNames.FLAGS_BITS);
for (int bit = 0; bit < JvmStdlibNames.FLAGS_BITS; bit++) {
flags.set(bit, (flagsValue & (1 << bit)) != 0);
}
} }
return flags; return flags;
} }
@@ -21,6 +21,7 @@ import com.intellij.psi.PsiMethod;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.resolve.java.JvmStdlibNames; import org.jetbrains.jet.lang.resolve.java.JvmStdlibNames;
import org.jetbrains.jet.utils.BitSetUtils;
import java.util.BitSet; import java.util.BitSet;
@@ -42,10 +43,7 @@ public class JetMethodAnnotation extends PsiAnnotationWrapper {
flagsValue = getIntAttribute(JvmStdlibNames.JET_METHOD_KIND_FIELD, JvmStdlibNames.FLAGS_DEFAULT_VALUE); flagsValue = getIntAttribute(JvmStdlibNames.JET_METHOD_KIND_FIELD, JvmStdlibNames.FLAGS_DEFAULT_VALUE);
} }
flags = new BitSet(JvmStdlibNames.FLAGS_BITS); flags = BitSetUtils.toBitSet(flagsValue);
for (int bit = 0; bit < JvmStdlibNames.FLAGS_BITS; bit++) {
flags.set(bit, (flagsValue & (1 << bit)) != 0);
}
} }
return flags; return flags;
} }
@@ -35,4 +35,14 @@ public class BitSetUtils {
} }
return intValue; return intValue;
} }
public static BitSet toBitSet(int value) {
BitSet bitSet = new BitSet();
int bit = 0;
while (value > 0) {
bitSet.set(bit++, value % 2 == 1);
value >>= 1;
}
return bitSet;
}
} }