sicking%bigfoot.com 64ce860e2a Compiled XSLT stylesheets. Improves speed, implements forwards-compatible-parsing and handling of unknown extension-elements. Also fixes some random edgecasebugs such as recursive merged named-attribute-sets and empty strings in copy-of.
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
2003-03-26 01:10:14 +00:00

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;
}