package railo.runtime.type;
import railo.runtime.ComponentImpl;
import railo.runtime.PageContext;
import railo.runtime.exp.PageException;
// FUTURE add to interface UDF
public interface UDFPlus extends UDF {
public static final int RETURN_FORMAT_JAVA=5;
/**
* call user defined Funcion with a struct
* @param pageContext
* @param values named values
* @param doIncludePath
* @return return value of the function
* @throws PageException
*/
public abstract Object callWithNamedValues(PageContext pageContext,Collection.Key calledName,Struct values, boolean doIncludePath) throws PageException;
/**
* call user defined Funcion with parameters as Object Array
* @param pageContext
* @param args parameters for the function
* @param doIncludePath
* @return return value of the function
* @throws PageException
*/
public abstract Object call(PageContext pageContext, Collection.Key calledName, Object[] args, boolean doIncludePath) throws PageException;
public Object getDefaultValue(PageContext pc, int index, Object defaultValue) throws PageException;
public int getIndex();
// !!!!!! do not move to public interface, make for example a interface calle UDFMod
public void setOwnerComponent(ComponentImpl component);
public void setAccess(int access);
public abstract int getReturnFormat(int defaultFormat);
}