Patch mainly by sicking, but large parts also by Pike and peterv. Tracker is bug 185797. r=Pike/sicking rs=peterv. git-svn-id: svn://10.0.0.236/trunk@140310 18797224-902f-48f8-a5cc-f745e15eee43
42 lines
985 B
C++
42 lines
985 B
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.
|
|
*/
|
|
ExprResult* CurrentFunctionCall::evaluate(txIEvalContext* aContext)
|
|
{
|
|
txExecutionState* es =
|
|
NS_STATIC_CAST(txExecutionState*, aContext->getPrivateContext());
|
|
if (!es) {
|
|
NS_ASSERTION(0,
|
|
"called xslt extension function \"current\" with wrong context");
|
|
// Just return an empty nodeset, this at least has the right
|
|
// result type.
|
|
return new NodeSet();
|
|
}
|
|
return new NodeSet(es->getEvalContext()->getContextNode());
|
|
}
|
|
|
|
nsresult CurrentFunctionCall::getNameAtom(nsIAtom** aAtom)
|
|
{
|
|
*aAtom = txXSLTAtoms::current;
|
|
NS_ADDREF(*aAtom);
|
|
return NS_OK;
|
|
}
|