package com.jpexs.decompiler.flash.abc.avm2; public class NumberContext { public static final int ROUND_CEILING = 0; public static final int ROUND_UP = 1; public static final int ROUND_HALF_UP = 2; public static final int ROUND_HALF_EVEN = 3; public static final int ROUND_HALF_DOWN = 4; public static final int ROUND_DOWN = 5; public static final int ROUND_FLOOR = 6; public static final int USE_NUMBER = 0; public static final int USE_DECIMAL = 1; public static final int USE_DOUBLE = 2; public static final int USE_INT = 3; public static final int USE_UINT = 4; private int usage = USE_NUMBER; private int precision = 34; private int rounding = ROUND_HALF_EVEN; public NumberContext(int usage, int precision, int rounding) { this.usage = usage; this.precision = precision; this.rounding = rounding; } public NumberContext(int param) { this.usage = param & 7; this.rounding = (param >> 3) & 7; this.precision = param >> 6; } public void setUsage(int usage) { if (usage > 6 || usage < 0) { throw new IllegalArgumentException("Invalid usage value :" + usage); } this.usage = usage; } public int getUsage() { return usage; } public int getPrecision() { return precision; } public void setPrecision(int precision) { if (precision > 34) { throw new IllegalArgumentException("Maximum value of precision is 34"); } this.precision = precision; } public int toParam() { int ret = usage; if (usage == USE_NUMBER || usage == USE_DECIMAL) { ret |= (rounding << 3); if (precision < 34) { ret |= (precision << 6); } } return ret; } }