Lines Matching refs:analysis

43  * which are built from the opcode map output, and an analysis engine
106 int analysis = analyze(compiler, stepOpCodePos, stepIndex);
110 walker = createDefaultWalker(compiler, stepOpCodePos, lpi, analysis);
115 // walker.setAnalysis(analysis);
136 public static boolean isSet(int analysis, int bits)
138 return (0 != (analysis & bits));
141 public static void diagnoseIterator(String name, int analysis, Compiler compiler)
144 + Integer.toBinaryString(analysis) + ", "
145 + getAnalysisString(analysis));
150 * returned is based on an analysis of the XPath operations.
167 int analysis = analyze(compiler, firstStepPos, 0);
168 boolean isOneStep = isOneStep(analysis);
172 if (isOneStep && walksSelfOnly(analysis) &&
173 isWild(analysis) && !hasPredicate(analysis))
176 diagnoseIterator("SelfIteratorNoPredicate", analysis, compiler);
180 iter = new SelfIteratorNoPredicate(compiler, opPos, analysis);
183 else if (walksChildrenOnly(analysis) && isOneStep)
187 if (isWild(analysis) && !hasPredicate(analysis))
190 diagnoseIterator("ChildIterator", analysis, compiler);
193 iter = new ChildIterator(compiler, opPos, analysis);
198 diagnoseIterator("ChildTestIterator", analysis, compiler);
201 iter = new ChildTestIterator(compiler, opPos, analysis);
205 else if (isOneStep && walksAttributes(analysis))
208 diagnoseIterator("AttributeIterator", analysis, compiler);
212 iter = new AttributeIterator(compiler, opPos, analysis);
214 else if(isOneStep && !walksFilteredList(analysis))
216 if( !walksNamespaces(analysis)
217 && (walksInDocOrder(analysis) || isSet(analysis, BIT_PARENT)))
220 diagnoseIterator("OneStepIteratorForward", analysis, compiler);
224 iter = new OneStepIteratorForward(compiler, opPos, analysis);
229 diagnoseIterator("OneStepIterator", analysis, compiler);
233 iter = new OneStepIterator(compiler, opPos, analysis);
250 // && getStepCount(analysis) <= 3
251 // && walksDescendants(analysis)
252 // && walksSubtreeOnlyFromRootOrContext(analysis)
256 diagnoseIterator("DescendantIterator", analysis, compiler);
258 iter = new DescendantIterator(compiler, opPos, analysis);
262 if(isNaturalDocOrder(compiler, firstStepPos, 0, analysis))
266 diagnoseIterator("WalkingIterator", analysis, compiler);
269 iter = new WalkingIterator(compiler, opPos, analysis, true);
274 // diagnoseIterator("MatchPatternIterator", analysis, compiler);
276 // return new MatchPatternIterator(compiler, opPos, analysis);
278 diagnoseIterator("WalkingIteratorSorted", analysis, compiler);
280 iter = new WalkingIteratorSorted(compiler, opPos, analysis, true);
673 int analysisResult = 0x00000000; // 32 bits of analysis
721 // Use a special bit to to make sure we get the right analysis of "//foo".
834 int analysis = analyze(compiler, stepOpCodePos, stepIndex);
838 step = createDefaultStepPattern(compiler, stepOpCodePos, mpi, analysis,
967 * @param analysis 32 bits of analysis, from which the type of AxesWalker
982 int analysis, StepPattern tail, StepPattern head)
1160 * @param analysis 32 bits of analysis, from which the type of AxesWalker
1167 WalkingIterator lpi, int analysis)
1182 int totalNumberWalkers = (analysis & BITS_COUNT);
1194 System.out.println("new walker: FilterExprWalker: " + analysis
1285 public static String getAnalysisString(int analysis)
1288 buf.append("count: ").append(getStepCount(analysis)).append(' ');
1289 if((analysis & BIT_NODETEST_ANY) != 0)
1293 if((analysis & BIT_PREDICATE) != 0)
1297 if((analysis & BIT_ANCESTOR) != 0)
1301 if((analysis & BIT_ANCESTOR_OR_SELF) != 0)
1305 if((analysis & BIT_ATTRIBUTE) != 0)
1309 if((analysis & BIT_CHILD) != 0)
1313 if((analysis & BIT_DESCENDANT) != 0)
1317 if((analysis & BIT_DESCENDANT_OR_SELF) != 0)
1321 if((analysis & BIT_FOLLOWING) != 0)
1325 if((analysis & BIT_FOLLOWING_SIBLING) != 0)
1329 if((analysis & BIT_NAMESPACE) != 0)
1333 if((analysis & BIT_PARENT) != 0)
1337 if((analysis & BIT_PRECEDING) != 0)
1341 if((analysis & BIT_PRECEDING_SIBLING) != 0)
1345 if((analysis & BIT_SELF) != 0)
1349 if((analysis & BIT_FILTER) != 0)
1353 if((analysis & BIT_ROOT) != 0)
1369 public static boolean hasPredicate(int analysis)
1371 return (0 != (analysis & BIT_PREDICATE));
1374 public static boolean isWild(int analysis)
1376 return (0 != (analysis & BIT_NODETEST_ANY));
1379 public static boolean walksAncestors(int analysis)
1381 return isSet(analysis, BIT_ANCESTOR | BIT_ANCESTOR_OR_SELF);
1384 public static boolean walksAttributes(int analysis)
1386 return (0 != (analysis & BIT_ATTRIBUTE));
1389 public static boolean walksNamespaces(int analysis)
1391 return (0 != (analysis & BIT_NAMESPACE));
1394 public static boolean walksChildren(int analysis)
1396 return (0 != (analysis & BIT_CHILD));
1399 public static boolean walksDescendants(int analysis)
1401 return isSet(analysis, BIT_DESCENDANT | BIT_DESCENDANT_OR_SELF);
1404 public static boolean walksSubtree(int analysis)
1406 return isSet(analysis, BIT_DESCENDANT | BIT_DESCENDANT_OR_SELF | BIT_CHILD);
1409 public static boolean walksSubtreeOnlyMaybeAbsolute(int analysis)
1411 return walksSubtree(analysis)
1412 && !walksExtraNodes(analysis)
1413 && !walksUp(analysis)
1414 && !walksSideways(analysis)
1418 public static boolean walksSubtreeOnly(int analysis)
1420 return walksSubtreeOnlyMaybeAbsolute(analysis)
1421 && !isAbsolute(analysis)
1425 public static boolean walksFilteredList(int analysis)
1427 return isSet(analysis, BIT_FILTER);
1430 public static boolean walksSubtreeOnlyFromRootOrContext(int analysis)
1432 return walksSubtree(analysis)
1433 && !walksExtraNodes(analysis)
1434 && !walksUp(analysis)
1435 && !walksSideways(analysis)
1436 && !isSet(analysis, BIT_FILTER)
1440 public static boolean walksInDocOrder(int analysis)
1442 return (walksSubtreeOnlyMaybeAbsolute(analysis)
1443 || walksExtraNodesOnly(analysis)
1444 || walksFollowingOnlyMaybeAbsolute(analysis))
1445 && !isSet(analysis, BIT_FILTER)
1449 public static boolean walksFollowingOnlyMaybeAbsolute(int analysis)
1451 return isSet(analysis, BIT_SELF | BIT_FOLLOWING_SIBLING | BIT_FOLLOWING)
1452 && !walksSubtree(analysis)
1453 && !walksUp(analysis)
1454 && !walksSideways(analysis)
1458 public static boolean walksUp(int analysis)
1460 return isSet(analysis, BIT_PARENT | BIT_ANCESTOR | BIT_ANCESTOR_OR_SELF);
1463 public static boolean walksSideways(int analysis)
1465 return isSet(analysis, BIT_FOLLOWING | BIT_FOLLOWING_SIBLING |
1469 public static boolean walksExtraNodes(int analysis)
1471 return isSet(analysis, BIT_NAMESPACE | BIT_ATTRIBUTE);
1474 public static boolean walksExtraNodesOnly(int analysis)
1476 return walksExtraNodes(analysis)
1477 && !isSet(analysis, BIT_SELF)
1478 && !walksSubtree(analysis)
1479 && !walksUp(analysis)
1480 && !walksSideways(analysis)
1481 && !isAbsolute(analysis)
1485 public static boolean isAbsolute(int analysis)
1487 return isSet(analysis, BIT_ROOT | BIT_FILTER);
1490 public static boolean walksChildrenOnly(int analysis)
1492 return walksChildren(analysis)
1493 && !isSet(analysis, BIT_SELF)
1494 && !walksExtraNodes(analysis)
1495 && !walksDescendants(analysis)
1496 && !walksUp(analysis)
1497 && !walksSideways(analysis)
1498 && (!isAbsolute(analysis) || isSet(analysis, BIT_ROOT))
1502 public static boolean walksChildrenAndExtraAndSelfOnly(int analysis)
1504 return walksChildren(analysis)
1505 && !walksDescendants(analysis)
1506 && !walksUp(analysis)
1507 && !walksSideways(analysis)
1508 && (!isAbsolute(analysis) || isSet(analysis, BIT_ROOT))
1512 public static boolean walksDescendantsAndExtraAndSelfOnly(int analysis)
1514 return !walksChildren(analysis)
1515 && walksDescendants(analysis)
1516 && !walksUp(analysis)
1517 && !walksSideways(analysis)
1518 && (!isAbsolute(analysis) || isSet(analysis, BIT_ROOT))
1522 public static boolean walksSelfOnly(int analysis)
1524 return isSet(analysis, BIT_SELF)
1525 && !walksSubtree(analysis)
1526 && !walksUp(analysis)
1527 && !walksSideways(analysis)
1528 && !isAbsolute(analysis)
1533 public static boolean walksUpOnly(int analysis)
1535 return !walksSubtree(analysis)
1536 && walksUp(analysis)
1537 && !walksSideways(analysis)
1538 && !isAbsolute(analysis)
1542 public static boolean walksDownOnly(int analysis)
1544 return walksSubtree(analysis)
1545 && !walksUp(analysis)
1546 && !walksSideways(analysis)
1547 && !isAbsolute(analysis)
1551 public static boolean walksDownExtraOnly(int analysis)
1553 return walksSubtree(analysis) && walksExtraNodes(analysis)
1554 && !walksUp(analysis)
1555 && !walksSideways(analysis)
1556 && !isAbsolute(analysis)
1560 public static boolean canSkipSubtrees(int analysis)
1562 return isSet(analysis, BIT_CHILD) | walksSideways(analysis);
1565 public static boolean canCrissCross(int analysis)
1568 if(walksSelfOnly(analysis))
1570 else if(walksDownOnly(analysis) && !canSkipSubtrees(analysis))
1572 else if(walksChildrenAndExtraAndSelfOnly(analysis))
1574 else if(walksDescendantsAndExtraAndSelfOnly(analysis))
1576 else if(walksUpOnly(analysis))
1578 else if(walksExtraNodesOnly(analysis))
1580 else if(walksSubtree(analysis)
1581 && (walksSideways(analysis)
1582 || walksUp(analysis)
1583 || canSkipSubtrees(analysis)))
1593 * @param analysis The general analysis of the pattern.
1599 static public boolean isNaturalDocOrder(int analysis)
1601 if(canCrissCross(analysis) || isSet(analysis, BIT_NAMESPACE) ||
1602 walksFilteredList(analysis))
1605 if(walksInDocOrder(analysis))
1619 * @param analysis The general analysis of the pattern.
1626 Compiler compiler, int stepOpCodePos, int stepIndex, int analysis)
1629 if(canCrissCross(analysis))
1634 if(isSet(analysis, BIT_NAMESPACE))
1643 if(isSet(analysis, BIT_FOLLOWING | BIT_FOLLOWING_SIBLING) &&
1644 isSet(analysis, BIT_PRECEDING | BIT_PRECEDING_SIBLING))
1650 // Unfortunately, we can't do this just via the analysis bits.
1723 public static boolean isOneStep(int analysis)
1725 return (analysis & BITS_COUNT) == 0x00000001;
1728 public static int getStepCount(int analysis)
1730 return (analysis & BITS_COUNT);