package org.matheclipse.core.eval.interfaces;

import org.matheclipse.core.eval.exception.Validate;
import org.matheclipse.core.interfaces.IAST;
import org.matheclipse.core.interfaces.IComplex;
import org.matheclipse.core.interfaces.IComplexNum;
import org.matheclipse.core.interfaces.IExpr;
import org.matheclipse.core.interfaces.IFraction;
import org.matheclipse.core.interfaces.IInteger;
import org.matheclipse.core.interfaces.INum;
import org.matheclipse.core.interfaces.ISymbol;

/**
 * Evaluate a function with 1 argument.
 */
public abstract class AbstractArg1 extends AbstractFunctionEvaluator {

	@Override
	public IExpr evaluate(final IAST ast) {
		Validate.checkSize(ast, 2);
		// if (functionList.size() != 2) {
		// throw new WrongNumberOfArguments(functionList, 1, functionList.size()-1);
		// } else {
		final IExpr arg0 = ast.get(1);
		final IExpr result = e1ObjArg(arg0);

		if (result != null) {
			return result;
		}
		// argument dispatching
		if (arg0 instanceof IAST) {
			e1FunArg((IAST) arg0);
		}
		final int hier = ast.get(1).hierarchy();
		if (hier <= IExpr.INTEGERID) {
			if (hier <= IExpr.DOUBLECOMPLEXID) {
				if (hier == IExpr.DOUBLEID) {
					return e1DblArg((INum) ast.get(1));
				}
				return e1DblComArg((IComplexNum) ast.get(1));
			} else {
				return e1IntArg((IInteger) ast.get(1));
			}
		} else {
			if (hier <= IExpr.COMPLEXID) {
				if (hier == IExpr.FRACTIONID) {
					return e1FraArg((IFraction) ast.get(1));
				}
				return e1ComArg((IComplex) ast.get(1));
			} else {
				if (hier == IExpr.SYMBOLID) {
					return e1SymArg((ISymbol) ast.get(1));
				}
			}
		}
		// }

		return null;
	}

	public IExpr e1ObjArg(final IExpr o) {
		return null;
	}

	public IExpr e1DblArg(final INum d) {
		return null;
	}

	public IExpr e1DblComArg(final IComplexNum d) {
		return null;
	}

	public IExpr e1IntArg(final IInteger i) {
		return null;
	}

	public IExpr e1FraArg(final IFraction f) {
		return null;
	}

	public IExpr e1ComArg(final IComplex c) {
		return null;
	}

	public IExpr e1SymArg(final ISymbol s) {
		return null;
	}

	public IExpr e1FunArg(final IAST f) {
		return null;
	}

}

 

Ads help maintain this website.