RetroZilla/extensions/transformiix/source/xslt/functions/CurrentFunctionCall.cpp
2015-10-20 23:03:22 -04:00

50 lines
1.1 KiB
C++

#include "txAtoms.h"
#include "XSLTFunctions.h"
#include "txExecutionState.h"
/*
Implementation of XSLT 1.0 extension function: current
*/
/**
* Creates a new current function call
**/
CurrentFunctionCall::CurrentFunctionCall()
{
}
/*
* Evaluates this Expr
*
* @return NodeSet containing the context node used for the complete
* Expr or Pattern.
*/
nsresult
CurrentFunctionCall::evaluate(txIEvalContext* aContext, txAExprResult** aResult)
{
*aResult = nsnull;
if (!requireParams(0, 0, aContext))
return NS_ERROR_XPATH_BAD_ARGUMENT_COUNT;
txExecutionState* es =
NS_STATIC_CAST(txExecutionState*, aContext->getPrivateContext());
if (!es) {
NS_ASSERTION(0,
"called xslt extension function \"current\" with wrong context");
return NS_ERROR_UNEXPECTED;
}
return aContext->recycler()->getNodeSet(
es->getEvalContext()->getContextNode(), aResult);
}
#ifdef TX_TO_STRING
nsresult
CurrentFunctionCall::getNameAtom(nsIAtom** aAtom)
{
*aAtom = txXSLTAtoms::current;
NS_ADDREF(*aAtom);
return NS_OK;
}
#endif