01: // Copyright (c) 2003 Per M.A. Bothner.
02: // This is free software; for terms and warranty disclaimer see ./COPYING.
03:
04: package gnu.kawa.xml;
05:
06: import gnu.lists.*;
07:
08: /** Used to implement a following:: step in a path expression. */
09:
10: public class FollowingAxis extends TreeScanner {
11: public static FollowingAxis make(NodePredicate type) {
12: FollowingAxis axis = new FollowingAxis();
13: axis.type = type;
14: return axis;
15: }
16:
17: public void scan(AbstractSequence seq, int ipos,
18: PositionConsumer out) {
19: int limit = seq.endPos();
20: ipos = seq.nextPos(ipos);
21: if (ipos != 0 && type.isInstancePos(seq, ipos))
22: out.writePosition(seq, ipos);
23: for (;;) {
24: ipos = seq.nextMatching(ipos, type, limit, true);
25: if (ipos == 0)
26: break;
27: out.writePosition(seq, ipos);
28: }
29: }
30: }
|