AFC - Abacus Formula Compiler for Java

Decompiled Code For HLOOKUP( C117, D$114:G$116, D117, false )

The expression

=HLOOKUP( C117, D$114:G$116, D117, false )

is compiled to the following class(es):

package org.formulacompiler.gen;
import org.formulacompiler.runtime.Computation;
import org.formulacompiler.runtime.FormulaException;
import org.formulacompiler.runtime.internal.Environment;
import org.formulacompiler.runtime.internal.Runtime_v2;
import org.formulacompiler.tests.reference.base.Inputs;
import org.formulacompiler.tests.reference.base.Outputs;

final class $Root extends Outputs implements Computation
{
    private final Inputs $inputs;
    final Environment $environment;
    private String[] $constarr$0;

    $Root(Inputs inputs, Environment environment) {
        $environment = environment;
        $inputs = inputs;
    }

    final String get$0() {
        return get$3((double) Runtime_v2.fun_MATCH_Exact(get$1(),
                                                         $constarr$0()));
    }

    public final String str() {
        return get$0();
    }

    final String get$3(double d) {
        switch ((int) Runtime_v2.checkDouble(get$2())) {
        case 1:
            return $idx$0((int) Runtime_v2.checkDouble(d) - 1);
        case 2:
            return $idx$1((int) Runtime_v2.checkDouble(d) - 1);
        case 3:
            return $idx$2((int) Runtime_v2.checkDouble(d) - 1);
        default:
            Runtime_v2.fun_ERROR
                ("#VALUE/REF! because index is out of range in H/VLOOKUP");
            return null;
        }
    }

    final String $idx$0(int i) {
        switch (i) {
        case 0:
            return "one";
        case 1:
            return "two";
        case 2:
            return "three";
        case 3:
            return "four";
        default:
            throw new FormulaException
                      ("#VALUE/REF! because index is out of range in INDEX");
        }
    }

    final String $idx$1(int i) {
        switch (i) {
        case 0:
            return "\u043e\u0434\u0438\u043d";
        case 1:
            return "\u0434\u0432\u0430";
        case 2:
            return "\u0442\u0440\u0438";
        case 3:
            return "\u0447\u0435\u0442\u044b\u0440\u0435";
        default:
            throw new FormulaException
                      ("#VALUE/REF! because index is out of range in INDEX");
        }
    }

    final String $idx$2(int i) {
        switch (i) {
        case 0:
            return "eins";
        case 1:
            return "zwei";
        case 2:
            return "drei";
        case 3:
            return "vier";
        default:
            throw new FormulaException
                      ("#VALUE/REF! because index is out of range in INDEX");
        }
    }

    final String[] $constarr$0() {
        if ($constarr$0 == null)
            $constarr$0 = new String[] { "one", "two", "three", "four" };
        return $constarr$0;
    }

    final String get$1() {
        return Runtime_v2.stringFromString($inputs.str(0));
    }

    final double get$2() {
        return $inputs.dbl(1);
    }
}