Package org.erlide.engine.model.erlang

Source Code of org.erlide.engine.model.erlang.FunctionRef

package org.erlide.engine.model.erlang;

import org.erlide.util.erlang.Bindings;
import org.erlide.util.erlang.OtpErlang;

import com.ericsson.otp.erlang.OtpErlangObject;
import com.ericsson.otp.erlang.OtpErlangTuple;

public class FunctionRef {
    public final String module;
    public final String function;
    public final int arity;

    public FunctionRef(final String module, final String function, final int arity) {
        this.module = module;
        this.function = function;
        this.arity = arity;
    }

    @SuppressWarnings("boxing")
    public FunctionRef(final OtpErlangObject e) {
        if (e instanceof OtpErlangTuple) {
            final OtpErlangTuple t = (OtpErlangTuple) e;
            try {
                final Bindings bb = OtpErlang.match("{M:a, F:a, A:i}", t);
                final String m = bb.getAs("M", String.class);
                final String f = bb.getAs("F", String.class);
                final int a = bb.getAs("A", Integer.class);

                module = m;
                function = f;
                arity = a;
            } catch (final Exception e2) {
                throw new IllegalArgumentException();
            }

        } else {
            throw new IllegalArgumentException();
        }
    }

    public FunctionRef(final IErlFunction parent) {
        module = parent.getModuleName();
        function = parent.getName();
        arity = parent.getArity();
    }

    @Override
    public String toString() {
        return module + ":" + function + "/" + arity;
    }

}
TOP

Related Classes of org.erlide.engine.model.erlang.FunctionRef

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.