/** * Called when an item ceases to be the current item */ public void endCurrentItem(Item item) { ((TraceListener)a).endCurrentItem(item); ((TraceListener)b).endCurrentItem(item); }
private void notifyListener(String label, Value val, XPathContext context) { InstructionDetails info = (InstructionDetails)getInstructionInfo(); info.setConstructType(Location.TRACE_CALL); info.setNamespaceResolver(resolver); info.setProperty("label", label); info.setProperty("value", val); TraceListener listener = context.getController().getTraceListener(); listener.enter(info, context); listener.leave(info); }
return null; listener.startCurrentItem(item); TailCall tc = ((TailCallReturner)action).processLeavingTail(c2); listener.endCurrentItem(item); return tc; } else { break; listener.startCurrentItem(item); action.process(c2); listener.endCurrentItem(item);
/** * Called when an item becomes current */ public void startCurrentItem(Item item) { ((TraceListener)a).startCurrentItem(item); ((TraceListener)b).startCurrentItem(item); }
private void notifyListener(String label, Value val, XPathContext context) { InstructionDetails info = (InstructionDetails)getInstructionInfo(); info.setConstructType(Location.TRACE_CALL); info.setNamespaceResolver(resolver); info.setProperty("label", label); info.setProperty("value", val); TraceListener listener = context.getController().getTraceListener(); listener.enter(info, context); listener.leave(info); }
public TailCall processLeavingTail(XPathContext context) throws XPathException { Controller controller = context.getController(); SequenceIterator iter = select.iterate(context); XPathContextMajor c2 = context.newContext(); c2.setOrigin(this); c2.setCurrentIterator(iter); c2.setCurrentTemplateRule(null); if (controller.isTracing()) { TraceListener listener = controller.getTraceListener(); while(true) { Item item = iter.next(); if (item == null) { break; } listener.startCurrentItem(item); action.process(c2); listener.endCurrentItem(item); } } else { while(true) { Item item = iter.next(); if (item == null) { break; } action.process(c2); } } return null; }
/** * Called when an item becomes current */ public void startCurrentItem(Item item) { ((TraceListener)a).startCurrentItem(item); ((TraceListener)b).startCurrentItem(item); }
/** * Execute this instruction, with the possibility of returning tail calls if there are any. * This outputs the trace information via the registered TraceListener, * and invokes the instruction being traced. * @param context the dynamic execution context * @return either null, or a tail call that the caller must invoke on return * @throws net.sf.saxon.trans.XPathException */ public TailCall processLeavingTail(XPathContext context) throws XPathException { Controller controller = context.getController(); TraceListener listener = controller.getTraceListener(); if (controller.isTracing()) { listener.enter(getInstructionInfo(), context); } // Don't attempt tail call optimization when tracing, the results are too confusing child.process(context); if (controller.isTracing()) { listener.leave(getInstructionInfo()); } return null; }
public TailCall processLeavingTail(XPathContext context) throws XPathException { Controller controller = context.getController(); GroupIterator groupIterator = getGroupIterator(context); XPathContextMajor c2 = context.newContext(); c2.setOrigin(this); c2.setCurrentIterator(groupIterator); c2.setCurrentGroupIterator(groupIterator); c2.setCurrentTemplateRule(null); if (controller.isTracing()) { TraceListener listener = controller.getTraceListener(); while (true) { Item item = groupIterator.next(); if (item == null) { break; } listener.startCurrentItem(item); action.process(c2); listener.endCurrentItem(item); } } else { while (true) { Item item = groupIterator.next(); if (item == null) { break; } action.process(c2); } } return null; }
/** * Called when an item becomes current */ public void startCurrentItem(Item item) { ((TraceListener)a).startCurrentItem(item); ((TraceListener)b).startCurrentItem(item); }