Search in sources :

Example 1 with FuncExtFunctionAvailable

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;
    }
}
Also used : FuncExtFunction(org.apache.xpath.functions.FuncExtFunction) Function(org.apache.xpath.functions.Function) WrongNumberArgsException(org.apache.xpath.functions.WrongNumberArgsException) FuncExtFunctionAvailable(org.apache.xpath.functions.FuncExtFunctionAvailable) XString(org.apache.xpath.objects.XString) TransformerException(javax.xml.transform.TransformerException)

Example 2 with FuncExtFunctionAvailable

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;
    }
}
Also used : FuncExtFunction(org.apache.xpath.functions.FuncExtFunction) Function(org.apache.xpath.functions.Function) WrongNumberArgsException(org.apache.xpath.functions.WrongNumberArgsException) FuncExtFunctionAvailable(org.apache.xpath.functions.FuncExtFunctionAvailable) XString(org.apache.xpath.objects.XString) TransformerException(javax.xml.transform.TransformerException)

Aggregations

TransformerException (javax.xml.transform.TransformerException)2 FuncExtFunction (org.apache.xpath.functions.FuncExtFunction)2 FuncExtFunctionAvailable (org.apache.xpath.functions.FuncExtFunctionAvailable)2 Function (org.apache.xpath.functions.Function)2 WrongNumberArgsException (org.apache.xpath.functions.WrongNumberArgsException)2 XString (org.apache.xpath.objects.XString)2