vs.link(i); vs.getStackFrame(), 0, true); if(null == vs.elementAt(i)) vs.setGlobalVariable(i, xobj);
/** * Reset the parameters to a null list. */ public void clearParameters() { synchronized (m_reentryGuard) { VariableStack varstack = new VariableStack(); m_xcontext.setVarStack(varstack); m_userParams = null; } }
int thisFrame = vars.getStackFrame(); int nextFrame = vars.link(m_frameSize); vars.clearLocalSlots(0, m_inArgsSize); vars.setStackFrame(thisFrame); NodeList children = this.getChildNodes(); if (children.item(i) instanceof ElemParam) { ElemParam param = (ElemParam)children.item(i); vars.setLocalVariable(param.getIndex(), args[i], nextFrame); vars.setStackFrame(nextFrame); vars.setStackFrame(nextFrame); transformer.executeChildTemplates(this, true); vars.unlink(thisFrame);
int savedStart = vars.getStackFrame(); vars.setStackFrame(m_stackFrame); vars.setStackFrame(savedStart);
VariableStack vars = xctxt.getVarStack(); int nParams = getParamElemCount(); int thisframe = vars.getStackFrame(); argsFrame = vars.link(nParams); vars.setStackFrame(thisframe); XObject obj = ewp.getValue(transformer, sourceNode); vars.setLocalVariable(i, obj, argsFrame); vars.setStackFrame(argsFrame); currentFrameBottom = vars.getStackFrame(); // See comment with unlink, below vars.link(template.m_frameSize); XObject obj = vars.getLocalVariable(i, argsFrame); vars.setLocalVariable(paramIndex, obj); break; vars.setLocalVariable(paramIndex, null); vars.unlink(currentFrameBottom); xctxt.popRTFContext(); vars.unlink(thisframe); xctxt.popSAXLocator(); if (pushContextNodeListFlag) xctxt.popContextNodeList();
/** * Execute a variable declaration and push it onto the variable stack. * @see <a href="http://www.w3.org/TR/xslt#variables">variables in XSLT Specification</a> * * @param transformer non-null reference to the the current transform-time state. * * @throws TransformerException */ public void execute(TransformerImpl transformer) throws TransformerException { VariableStack vars = transformer.getXPathContext().getVarStack(); if(!vars.isLocalSet(m_index)) { int sourceNode = transformer.getXPathContext().getCurrentNode(); XObject var = getValue(transformer, sourceNode); // transformer.getXPathContext().getVarStack().pushVariable(m_qname, var); transformer.getXPathContext().getVarStack().setLocalVariable(m_index, var); } }
return getLocalVariable(xctxt, vvar.getIndex()); return getGlobalVariable(xctxt, vvar.getIndex());
result = xctxt.getVarStack().getGlobalVariable(xctxt, m_index, destructiveOK); else result = xctxt.getVarStack().getLocalVariable(xctxt, m_index, destructiveOK); result = xctxt.getVarStack().getVariableOrParam(xctxt,m_qname);
int currentFrame = vars.getStackFrame(); vars.link(velem.m_frameSize); XObject var = velem.getValue(m_transformer, m_context); m_doneEval = true; vars.unlink(currentFrame);
/** * Set a parameter for the templates. * * @param name The name of the parameter. * @param namespace The namespace of the parameter. * @param value The value object. This can be any valid Java object * -- it's up to the processor to provide the proper * coersion to the object, or simply pass it on for use * in extensions. */ public void setParameter(String name, String namespace, Object value) { VariableStack varstack = getXPathContext().getVarStack(); QName qname = new QName(namespace, name); XObject xobject = XObject.create(value, getXPathContext()); StylesheetRoot sroot = m_stylesheetRoot; Vector vars = sroot.getVariablesAndParamsComposed(); int i = vars.size(); while (--i >= 0) { ElemVariable variable = (ElemVariable)vars.elementAt(i); if(variable.getXSLToken() == Constants.ELEMNAME_PARAMVARIABLE && variable.getName().equals(qname)) { varstack.setGlobalVariable(i, xobject); } } }
/** * Get a variable based on it's qualified name. * @param qname The qualified name of the variable. * @return The evaluated value of the variable. * @throws javax.xml.transform.TransformerException */ public final XObject getVariableOrParam(org.apache.xml.utils.QName qname) throws javax.xml.transform.TransformerException { return m_variableStacks.getVariableOrParam(XPathContext.this, qname); }
/** * Initialize the context values for this expression * after it is cloned. * * @param context The XPath runtime context for this * transformation. */ public void setRoot(int context, Object environment) { m_context = context; XPathContext xctxt = (XPathContext)environment; m_execContext = xctxt; m_cdtm = xctxt.getDTM(context); m_currentContextNode = context; // only if top level? // Yech, shouldn't have to do this. -sb if(null == m_prefixResolver) m_prefixResolver = xctxt.getNamespaceContext(); m_lastFetched = DTM.NULL; m_foundLast = false; m_pos = 0; m_length = -1; if (m_isTopLevel) this.m_stackFrame = xctxt.getVarStack().getStackFrame(); // reset(); }
VariableStack vars = xctxt.getVarStack(); int nParams = getParamElemCount(); int thisframe = vars.getStackFrame(); StackGuard guard = transformer.getStackGuard(); boolean check = (guard.getRecursionLimit() > -1) ? true : false; argsFrame = vars.link(nParams); vars.setStackFrame(thisframe); vars.setLocalVariable(i, obj, argsFrame); vars.setStackFrame(argsFrame); currentFrameBottom = vars.getStackFrame(); // See comment with unlink, below vars.link(template.m_frameSize); XObject obj = vars.getLocalVariable(i, argsFrame); vars.setLocalVariable(paramIndex, obj); break; vars.setLocalVariable(paramIndex, null); vars.unlink(currentFrameBottom); xctxt.popRTFContext(); vars.unlink(thisframe); xctxt.popSAXLocator(); if (pushContextNodeListFlag) xctxt.popContextNodeList();
/** * Execute a variable declaration and push it onto the variable stack. * @see <a href="http://www.w3.org/TR/xslt#variables">variables in XSLT Specification</a> * * @param transformer non-null reference to the the current transform-time state. * * @throws TransformerException */ public void execute(TransformerImpl transformer) throws TransformerException { if (transformer.getDebug()) transformer.getTraceManager().fireTraceEvent(this); VariableStack vars = transformer.getXPathContext().getVarStack(); if(!vars.isLocalSet(m_index)) { int sourceNode = transformer.getXPathContext().getCurrentNode(); XObject var = getValue(transformer, sourceNode); // transformer.getXPathContext().getVarStack().pushVariable(m_qname, var); transformer.getXPathContext().getVarStack().setLocalVariable(m_index, var); } if (transformer.getDebug()) transformer.getTraceManager().fireTraceEndEvent(this); }
return getLocalVariable(xctxt, vvar.getIndex()); return getGlobalVariable(xctxt, vvar.getIndex());
result = xctxt.getVarStack().getGlobalVariable(xctxt, m_index, destructiveOK); else result = xctxt.getVarStack().getLocalVariable(xctxt, m_index, destructiveOK); result = xctxt.getVarStack().getVariableOrParam(xctxt,m_qname);
int savedStart = vars.getStackFrame(); vars.setStackFrame(m_stackFrame); vars.setStackFrame(savedStart);
int currentFrame = vars.getStackFrame(); vars.link(velem.m_frameSize); XObject var = velem.getValue(m_transformer, m_context); m_doneEval = true; vars.unlink(currentFrame);
/** * Set a parameter for the templates. * * @param name The name of the parameter. * @param namespace The namespace of the parameter. * @param value The value object. This can be any valid Java object * -- it's up to the processor to provide the proper * coersion to the object, or simply pass it on for use * in extensions. */ public void setParameter(String name, String namespace, Object value) { VariableStack varstack = getXPathContext().getVarStack(); QName qname = new QName(namespace, name); XObject xobject = XObject.create(value, getXPathContext()); StylesheetRoot sroot = m_stylesheetRoot; Vector vars = sroot.getVariablesAndParamsComposed(); int i = vars.size(); while (--i >= 0) { ElemVariable variable = (ElemVariable)vars.elementAt(i); if(variable.getXSLToken() == Constants.ELEMNAME_PARAMVARIABLE && variable.getName().equals(qname)) { varstack.setGlobalVariable(i, xobject); } } }