MCPcopy Create free account
hub / github.com/BaseXdb/basex / next

Method next

basex-core/src/main/java/org/basex/query/expr/IterMap.java:45–91  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

43 int pos;
44
45 @Override
46 public Item next() throws QueryException {
47 qc.checkStop();
48
49 final QueryFocus qf = qc.focus;
50 Item item = null;
51 try {
52 do {
53 qf.value = values[pos];
54 Iter iter = iters[pos];
55 if(items[pos]) {
56 // item-based processing
57 if(iter == Empty.ITER) {
58 iters[pos--] = null;
59 } else {
60 item = exprs[pos].item(qc, info);
61 if(item == Empty.VALUE) {
62 item = null;
63 pos--;
64 } else {
65 iters[pos] = Empty.ITER;
66 if(pos < el) {
67 values[++pos] = item;
68 item = null;
69 }
70 }
71 }
72 } else {
73 // iterative processing
74 if(iter == null) {
75 iter = exprs[pos].iter(qc);
76 iters[pos] = iter;
77 }
78 item = iter.next();
79 if(item == null) {
80 iters[pos--] = null;
81 } else if(pos < el) {
82 values[++pos] = item;
83 item = null;
84 }
85 }
86 } while(item == null && pos != -1);
87 return item;
88 } finally {
89 qf.value = values[0];
90 }
91 }
92 };
93 }
94

Callers

nothing calls this directly

Calls 4

nextMethod · 0.95
iterMethod · 0.65
checkStopMethod · 0.45
itemMethod · 0.45

Tested by

no test coverage detected