package com.googlecode.aviator; import java.math.MathContext; /** * Aviator Evaluator Configuration options. * * @author dennis * */ public enum Options { /** * Always use double as BigDecimal, default is false. * * @since 2.3.4 */ ALWAYS_USE_DOUBLE_AS_DECIMAL, /** * Optimize level, default is {@link AviatorEvaluator#EVA} * * @see AviatorEvaluator#EVAL * @see AviatorEvaluator#COMPILE */ OPTIMIZE_LEVEL, /** * Math context for decimal, default is {@link MathContext.DECIMAL128} * * @see MathContext */ MATH_CONTEXT, /** * Whether to trace code generation,default is false. */ TRACE; public boolean isValidValue(Object val) { switch (this) { case ALWAYS_USE_DOUBLE_AS_DECIMAL: case TRACE: return val instanceof Boolean; case OPTIMIZE_LEVEL: return (val instanceof Integer) && (((Integer) val).intValue() == AviatorEvaluator.EVAL || ((Integer) val).intValue() == AviatorEvaluator.COMPILE); case MATH_CONTEXT: return val instanceof MathContext; } return false; } /** * Returns the default value of option. * * @return */ public Object getDefaultValue() { switch (this) { case ALWAYS_USE_DOUBLE_AS_DECIMAL: return false; case OPTIMIZE_LEVEL: return AviatorEvaluator.EVAL; case MATH_CONTEXT: return MathContext.DECIMAL128; case TRACE: return Boolean.valueOf(System.getProperty("aviator.asm.trace", "false")); } return null; } }