BuiltinUnit.java 2.36 KB
/*
 * Decompiled with CFR 0_118.
 */
package com.adobe.xfa.formcalc;

import com.adobe.xfa.formcalc.Builtins;
import com.adobe.xfa.formcalc.CalcException;
import com.adobe.xfa.formcalc.CalcParser;
import com.adobe.xfa.formcalc.CalcSymbol;
import com.adobe.xfa.formcalc.Stack;
import com.adobe.xfa.ut.UnitSpan;

final class BuiltinUnit {
    private BuiltinUnit() {
    }

    static void UnitValue(CalcParser oParser, CalcSymbol[] oArgSym) {
        CalcSymbol oRetSym;
        block2 : {
            int nArgs = oArgSym.length;
            oRetSym = null;
            try {
                Builtins.minArgs(nArgs, 1);
                Builtins.maxArgs(nArgs, 2);
                Builtins.limitExceptionArgs(oArgSym);
                Builtins.limitNullArgs(oParser, nArgs, oArgSym);
                UnitSpan oUnit = new UnitSpan(oParser.getString(oArgSym[0]));
                int eCode = nArgs > 1 ? UnitSpan.stringToUnit(oParser.getString(oArgSym[1]), 3) : oUnit.units();
                double d = UnitSpan.valueToUnit(oUnit.valueAsUnit(eCode), eCode);
                oRetSym = new CalcSymbol(d);
            }
            catch (CalcException e) {
                oRetSym = e.getSymbol();
                if (oRetSym.getType() == 1) break block2;
                oParser.mbInThrow = true;
            }
        }
        oParser.mStack.push(oRetSym);
    }

    static void UnitType(CalcParser oParser, CalcSymbol[] oArgSym) {
        CalcSymbol oRetSym;
        block3 : {
            int nArgs = oArgSym.length;
            oRetSym = null;
            try {
                int nComma;
                Builtins.minArgs(nArgs, 1);
                Builtins.maxArgs(nArgs, 1);
                Builtins.limitExceptionArgs(oArgSym);
                Builtins.limitNullArgs(oParser, nArgs, oArgSym);
                UnitSpan oUnit = new UnitSpan(oParser.getString(oArgSym[0]));
                String sRes = null;
                if (oUnit.units() != 255 && (nComma = (sRes = UnitSpan.unitToString(oUnit.units())).indexOf(44)) >= 0) {
                    sRes = sRes.substring(0, nComma);
                }
                oRetSym = new CalcSymbol(sRes);
            }
            catch (CalcException e) {
                oRetSym = e.getSymbol();
                if (oRetSym.getType() == 1) break block3;
                oParser.mbInThrow = true;
            }
        }
        oParser.mStack.push(oRetSym);
    }
}