use of org.apache.xpath.functions.Function in project robovm by robovm.
the class Compiler method compileExtension.
/**
* Compile an extension function.
*
* @param opPos The current position in the m_opMap array.
*
* @return reference to {@link org.apache.xpath.functions.FuncExtFunction} instance.
*
* @throws TransformerException if a error occurs creating the Expression.
*/
private Expression compileExtension(int opPos) throws TransformerException {
int endExtFunc = opPos + getOp(opPos + 1) - 1;
opPos = getFirstChildPos(opPos);
java.lang.String ns = (java.lang.String) getTokenQueue().elementAt(getOp(opPos));
opPos++;
java.lang.String funcName = (java.lang.String) getTokenQueue().elementAt(getOp(opPos));
opPos++;
// We create a method key to uniquely identify this function so that we
// can cache the object needed to invoke it. This way, we only pay the
// reflection overhead on the first call.
Function extension = new FuncExtFunction(ns, funcName, String.valueOf(getNextMethodId()));
try {
int i = 0;
while (opPos < endExtFunc) {
int nextOpPos = getNextOpPos(opPos);
extension.setArg(this.compile(opPos), i);
opPos = nextOpPos;
i++;
}
} catch (WrongNumberArgsException wnae) {
// should never happen
;
}
return extension;
}
use of org.apache.xpath.functions.Function 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.Function in project j2objc by google.
the class Compiler method compileExtension.
/**
* Compile an extension function.
*
* @param opPos The current position in the m_opMap array.
*
* @return reference to {@link org.apache.xpath.functions.FuncExtFunction} instance.
*
* @throws TransformerException if a error occurs creating the Expression.
*/
private Expression compileExtension(int opPos) throws TransformerException {
int endExtFunc = opPos + getOp(opPos + 1) - 1;
opPos = getFirstChildPos(opPos);
java.lang.String ns = (java.lang.String) getTokenQueue().elementAt(getOp(opPos));
opPos++;
java.lang.String funcName = (java.lang.String) getTokenQueue().elementAt(getOp(opPos));
opPos++;
// We create a method key to uniquely identify this function so that we
// can cache the object needed to invoke it. This way, we only pay the
// reflection overhead on the first call.
Function extension = new FuncExtFunction(ns, funcName, String.valueOf(getNextMethodId()));
try {
int i = 0;
while (opPos < endExtFunc) {
int nextOpPos = getNextOpPos(opPos);
extension.setArg(this.compile(opPos), i);
opPos = nextOpPos;
i++;
}
} catch (WrongNumberArgsException wnae) {
// should never happen
;
}
return extension;
}
use of org.apache.xpath.functions.Function 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