blob: 4b5874a3107bb70c4892cda66cc4377f439afdcd [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 Jesper Moller, and others
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Jesper Moller - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.xml.xpath2.api;
import java.util.Collection;
import org.eclipse.wst.xml.xpath2.api.typesystem.TypeDefinition;
/**
* Support for functions.
* @since 2.0
*/
public interface Function {
/**
* Support for QName interface.
*
* @return Result of QName operation.
*/
String getName();
/**
* Minimal number of allowed arguments.
*
* @return The smallest number of arguments possible
*/
int getMinArity();
/**
* Maximum number of allowed arguments.
*
* @return The highest number of arguments possible
*/
int getMaxArity();
/**
* Maximum number of allowed arguments.
*
* @return The highest number of arguments possible
*/
boolean isVariableArgument();
/**
* Checks if this function has an to the
*
* @param actual_arity
* @return
*/
boolean canMatchArity(int actualArity);
/**
* Gets the return type for the function.
*
* @return TypeDefinition for the argument
*/
TypeDefinition getResultType();
/**
* Returns the type of the argument at position index,
* starting at 0.
*
* @return TypeDefinition for the argument
*/
TypeDefinition getArgumentType(int index);
/**
* Name hint for the index'th argument,
* starting at 0.
*
* @return TypeDefinition for the argument
*/
String getArgumentNameHint(int index);
/**
* Evaluate arguments.
*
* @param args
* argument expressions.
* @return Result of evaluation.
*/
ResultSequence evaluate(Collection<ResultSequence> args, EvaluationContext evaluationContext);
/**
* Evaluate the exact result type.
*
* @param args
* argument expressions.
* @return Result of evaluation.
*/
TypeDefinition computeReturnType(Collection<TypeDefinition> args, StaticContext sc);
}