private void pushByDoubleMath(int seen, Item it, Item it2) { Item result; @SpecialKind int specialKind = Item.FLOAT_MATH; if ((it.getConstant() instanceof Double) && it2.getConstant() instanceof Double) { if (seen == Const.DADD) { result = new Item("D", Double.valueOf(constantToDouble(it2) + constantToDouble(it))); } else if (seen == Const.DSUB) { result = new Item("D", Double.valueOf(constantToDouble(it2) - constantToDouble(it))); } else if (seen == Const.DMUL) { result = new Item("D", Double.valueOf(constantToDouble(it2) * constantToDouble(it))); } else if (seen == Const.DDIV) { result = new Item("D", Double.valueOf(constantToDouble(it2) / constantToDouble(it))); } else if (seen == Const.DREM) { result = new Item("D", Double.valueOf(constantToDouble(it2) % constantToDouble(it))); } else { result = new Item("D"); // ? } } else { result = new Item("D"); if (seen == Const.DDIV) { specialKind = Item.NASTY_FLOAT_MATH; } } result.setSpecialKind(specialKind); push(result); }
public static final @SpecialKind int NOT_SPECIAL = 0; public static final @SpecialKind int SIGNED_BYTE = 1; public static final @SpecialKind int RANDOM_INT = 2; public static final @SpecialKind int LOW_8_BITS_CLEAR = 3; public static final @SpecialKind int HASHCODE_INT = 4; public static final @SpecialKind int INTEGER_SUM = 5; public static final @SpecialKind int AVERAGE_COMPUTED_USING_DIVISION = 6; public static final @SpecialKind int FLOAT_MATH = 7; public static final @SpecialKind int RANDOM_INT_REMAINDER = 8; public static final @SpecialKind int HASHCODE_INT_REMAINDER = 9;
private void pushByDoubleMath(int seen, Item it, Item it2) { Item result; @SpecialKind int specialKind = Item.FLOAT_MATH; if ((it.getConstant() instanceof Double) && it2.getConstant() instanceof Double) { if (seen == DADD) { result = new Item("D", Double.valueOf(constantToDouble(it2) + constantToDouble(it))); } else if (seen == DSUB) { result = new Item("D", Double.valueOf(constantToDouble(it2) - constantToDouble(it))); } else if (seen == DMUL) { result = new Item("D", Double.valueOf(constantToDouble(it2) * constantToDouble(it))); } else if (seen == DDIV) { result = new Item("D", Double.valueOf(constantToDouble(it2) / constantToDouble(it))); } else if (seen == DREM) { result = new Item("D", Double.valueOf(constantToDouble(it2) % constantToDouble(it))); } else { result = new Item("D"); // ? } } else { result = new Item("D"); if (seen == DDIV) { specialKind = Item.NASTY_FLOAT_MATH; } } result.setSpecialKind(specialKind); push(result); }
private void pushByFloatMath(int seen, Item it, Item it2) { Item result; @SpecialKind int specialKind = Item.FLOAT_MATH; if ((it.getConstant() instanceof Float) && it2.getConstant() instanceof Float) { if (seen == FADD) { result = new Item("F", Float.valueOf(constantToFloat(it2) + constantToFloat(it))); } else if (seen == FSUB) { result = new Item("F", Float.valueOf(constantToFloat(it2) - constantToFloat(it))); } else if (seen == FMUL) { result = new Item("F", Float.valueOf(constantToFloat(it2) * constantToFloat(it))); } else if (seen == FDIV) { result = new Item("F", Float.valueOf(constantToFloat(it2) / constantToFloat(it))); } else if (seen == FREM) { result = new Item("F", Float.valueOf(constantToFloat(it2) % constantToFloat(it))); } else { result = new Item("F"); } } else { result = new Item("F"); if (seen == DDIV) { specialKind = Item.NASTY_FLOAT_MATH; } } result.setSpecialKind(specialKind); push(result); }
static @SpecialKind int asSpecialKind(int kind) { return kind; }
/** * @param specialKind * The specialKind to set. */ public void setSpecialKind(@SpecialKind int specialKind) { this.specialKind = specialKind; }
public static @SpecialKind int defineNewSpecialKind(String name) { specialKindNames.put(nextSpecialKind, name); @SpecialKind int result = asSpecialKind( nextSpecialKind+1); nextSpecialKind = result; return result; }
/** * @return Returns the specialKind. */ public @SpecialKind int getSpecialKind() { return specialKind; }
public @SpecialKind int getSpecialKindForRemainder() { switch (getSpecialKind()) { case Item.HASHCODE_INT: return Item.HASHCODE_INT_REMAINDER; case Item.RANDOM_INT: return Item.RANDOM_INT_REMAINDER; default: return Item.NOT_SPECIAL; } }
public @SpecialKind int getSpecialKindForAbs() { switch (getSpecialKind()) { case Item.HASHCODE_INT: return Item.MATH_ABS_OF_HASHCODE; case Item.RANDOM_INT: return Item.MATH_ABS_OF_RANDOM; default: return Item.MATH_ABS; } }
public Item cloneAndSetSpecialKind(@SpecialKind int specialKind) { Item that = new Item(this); that.specialKind = specialKind; return that; }
public static final @SpecialKind int NOT_SPECIAL = 0; public static final @SpecialKind int SIGNED_BYTE = 1; public static final @SpecialKind int RANDOM_INT = 2; public static final @SpecialKind int LOW_8_BITS_CLEAR = 3; public static final @SpecialKind int HASHCODE_INT = 4; public static final @SpecialKind int INTEGER_SUM = 5; public static final @SpecialKind int AVERAGE_COMPUTED_USING_DIVISION = 6; public static final @SpecialKind int FLOAT_MATH = 7; public static final @SpecialKind int RANDOM_INT_REMAINDER = 8; public static final @SpecialKind int HASHCODE_INT_REMAINDER = 9;
private void pushByFloatMath(int seen, Item it, Item it2) { Item result; @SpecialKind int specialKind = Item.FLOAT_MATH; if ((it.getConstant() instanceof Float) && it2.getConstant() instanceof Float) { if (seen == Const.FADD) { result = new Item("F", Float.valueOf(constantToFloat(it2) + constantToFloat(it))); } else if (seen == Const.FSUB) { result = new Item("F", Float.valueOf(constantToFloat(it2) - constantToFloat(it))); } else if (seen == Const.FMUL) { result = new Item("F", Float.valueOf(constantToFloat(it2) * constantToFloat(it))); } else if (seen == Const.FDIV) { result = new Item("F", Float.valueOf(constantToFloat(it2) / constantToFloat(it))); } else if (seen == Const.FREM) { result = new Item("F", Float.valueOf(constantToFloat(it2) % constantToFloat(it))); } else { result = new Item("F"); } } else { result = new Item("F"); if (seen == Const.DDIV) { specialKind = Item.NASTY_FLOAT_MATH; } } result.setSpecialKind(specialKind); push(result); }
/** * Define new SpecialKind with given name, and return its {@code int} value * @param name * the name of new SpecialKind, can be null * @return * {@code int} value which expresses new SpecialKind * @see <a href="https://github.com/spotbugs/spotbugs/pull/23">Known bug</a> * @deprecated use {@link #defineSpecialKind(String)} instead. */ @Deprecated public static @SpecialKind int defineNewSpecialKind(String name) { specialKindNames.put(nextSpecialKind, name); @SpecialKind int result = asSpecialKind( nextSpecialKind+1); nextSpecialKind = result; return result; }
static @SpecialKind int asSpecialKind(int kind) { return kind; }
/** * @param specialKind * The specialKind to set. */ public void setSpecialKind(@SpecialKind int specialKind) { this.specialKind = specialKind; }
/** * @return Returns the specialKind. */ public @SpecialKind int getSpecialKind() { return specialKind; }
public @SpecialKind int getSpecialKindForRemainder() { switch (getSpecialKind()) { case Item.HASHCODE_INT: return Item.HASHCODE_INT_REMAINDER; case Item.RANDOM_INT: return Item.RANDOM_INT_REMAINDER; default: return Item.NOT_SPECIAL; } }
/** * @param specialKind special kind to get name * @return just a name of specified @{link SpecialKind}, or empty {@link Optional}. * @since 3.1.0 */ public static Optional<String> getSpecialKindName(@SpecialKind int specialKind) { return Optional.ofNullable(specialKindNames.get(Integer.valueOf(specialKind))); } }
public @SpecialKind int getSpecialKindForAbs() { switch (getSpecialKind()) { case Item.HASHCODE_INT: return Item.MATH_ABS_OF_HASHCODE; case Item.RANDOM_INT: return Item.MATH_ABS_OF_RANDOM; default: return Item.MATH_ABS; } }