use of org.apache.xpath.functions.FuncExtFunctionAvailable in project robovm by robovm.
the class Compiler method compileFunction.
/**
* Compile a built-in XPath function.
*
* @param opPos The current position in the m_opMap array.
*
* @return reference to {@link org.apache.xpath.functions.Function} instance.
*
* @throws TransformerException if a error occurs creating the Expression.
*/
Expression compileFunction(int opPos) throws TransformerException {
int endFunc = opPos + getOp(opPos + 1) - 1;
opPos = getFirstChildPos(opPos);
int funcID = getOp(opPos);
opPos++;
if (-1 != funcID) {
Function func = m_functionTable.getFunction(funcID);
if (func instanceof FuncExtFunctionAvailable)
((FuncExtFunctionAvailable) func).setFunctionTable(m_functionTable);
func.postCompileStep(this);
try {
int i = 0;
for (int p = opPos; p < endFunc; p = getNextOpPos(p), i++) {
// System.out.println("argPos: "+ p);
// System.out.println("argCode: "+ m_opMap[p]);
func.setArg(compile(p), i);
}
func.checkNumberArgs(i);
} catch (WrongNumberArgsException wnae) {
java.lang.String name = m_functionTable.getFunctionName(funcID);
m_errorHandler.fatalError(new TransformerException(XSLMessages.createXPATHMessage(XPATHErrorResources.ER_ONLY_ALLOWS, new Object[] { name, wnae.getMessage() }), m_locator));
//"name + " only allows " + wnae.getMessage() + " arguments", m_locator));
}
return func;
} else {
//"function token not found.");
error(XPATHErrorResources.ER_FUNCTION_TOKEN_NOT_FOUND, null);
return null;
}
}
use of org.apache.xpath.functions.FuncExtFunctionAvailable in project j2objc by google.
the class Compiler method compileFunction.
/**
* Compile a built-in XPath function.
*
* @param opPos The current position in the m_opMap array.
*
* @return reference to {@link org.apache.xpath.functions.Function} instance.
*
* @throws TransformerException if a error occurs creating the Expression.
*/
Expression compileFunction(int opPos) throws TransformerException {
int endFunc = opPos + getOp(opPos + 1) - 1;
opPos = getFirstChildPos(opPos);
int funcID = getOp(opPos);
opPos++;
if (-1 != funcID) {
Function func = m_functionTable.getFunction(funcID);
if (func instanceof FuncExtFunctionAvailable)
((FuncExtFunctionAvailable) func).setFunctionTable(m_functionTable);
func.postCompileStep(this);
try {
int i = 0;
for (int p = opPos; p < endFunc; p = getNextOpPos(p), i++) {
// System.out.println("argPos: "+ p);
// System.out.println("argCode: "+ m_opMap[p]);
func.setArg(compile(p), i);
}
func.checkNumberArgs(i);
} catch (WrongNumberArgsException wnae) {
java.lang.String name = m_functionTable.getFunctionName(funcID);
m_errorHandler.fatalError(new TransformerException(XSLMessages.createXPATHMessage(XPATHErrorResources.ER_ONLY_ALLOWS, new Object[] { name, wnae.getMessage() }), m_locator));
// "name + " only allows " + wnae.getMessage() + " arguments", m_locator));
}
return func;
} else {
// "function token not found.");
error(XPATHErrorResources.ER_FUNCTION_TOKEN_NOT_FOUND, null);
return null;
}
}
Aggregations