java.lang.Object
swim.structure.Item
swim.structure.Value
swim.structure.Expression
swim.structure.Selector
swim.structure.selector.DescendantsSelector
A
Selector
that, when evaluated
against some Interpreter
stack
, yields all of the "descendants" of the top
Item
in stack
. A "descendant" is recursively defined to be a Record's
children
and their descendants;
it has no definition for any other type.-
Method Summary
Modifier and TypeMethodDescriptionThe means to chainSelectors
.protected int
<T> Output<T>
boolean
<T> T
forSelected
(Interpreter interpreter, Selectee<T> callback) Invokesthen.forSelected()
against theInterpreter
containing each child, then moves onto each descendant.int
hashCode()
mapSelected
(Interpreter interpreter, Selectee<Item> transform) substitute
(Interpreter interpreter) then()
Returns theSelector
that thisSelector
uses to match sub-selections.int
Returns the heterogeneous sort order of thisItem
.Methods inherited from class swim.structure.Selector
children, compareTo, debug, descendants, evaluate, filter, filter, get, get, getAttr, getAttr, getItem, getItem, identity, invoke, isConstant, keys, literal, precedence, values
Methods inherited from class swim.structure.Expression
and, and, bitwiseAnd, bitwiseAnd, bitwiseNot, bitwiseOr, bitwiseOr, bitwiseXor, bitwiseXor, conditional, conditional, divide, divide, eq, eq, ge, ge, gt, gt, inverse, le, le, lt, lt, minus, minus, modulo, modulo, ne, ne, negative, not, or, or, plus, plus, positive, times, times
Methods inherited from class swim.structure.Value
absent, alias, body, booleanValue, booleanValue, branch, builder, byteValue, byteValue, charValue, charValue, commit, contains, containsKey, containsKey, containsValue, doubleValue, doubleValue, empty, extant, flattened, floatValue, floatValue, fromObject, getField, getField, getSlot, getSlot, head, header, headers, integerValue, integerValue, intValue, intValue, isAliased, isDefined, isDefinite, isDistinct, isMutable, key, keyEquals, lambda, length, longValue, longValue, numberValue, numberValue, removed, removed, shortValue, shortValue, stringValue, stringValue, tag, tail, target, toValue, unflattened
Methods inherited from class swim.structure.Item
appended, appended, appended, appended, appended, appended, appended, appended, cast, cast, coerce, coerce, concat, display, evaluate, globalScope, iterator, max, min, prepended, prepended, prepended, prepended, prepended, prepended, prepended, prepended, substitute, toString, updated, updated, updated, updated, updated, updated, updated, updated, updated, updated, updated, updated, updated, updated, updatedAttr, updatedAttr, updatedAttr, updatedAttr, updatedAttr, updatedAttr, updatedAttr, updatedAttr, updatedAttr, updatedAttr, updatedAttr, updatedAttr, updatedAttr, updatedAttr, updatedSlot, updatedSlot, updatedSlot, updatedSlot, updatedSlot, updatedSlot, updatedSlot, updatedSlot, updatedSlot, updatedSlot, updatedSlot, updatedSlot, updatedSlot, updatedSlot
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Method Details
-
then
Description copied from class:Selector
Returns theSelector
that thisSelector
uses to match sub-selections. -
forSelected
Invokesthen.forSelected()
against theInterpreter
containing each child, then moves onto each descendant.- Specified by:
forSelected
in classSelector
- Returns:
- the result of executing
callback
from the context of the lastSelector
in the chain formed bySelector then
fields.
-
mapSelected
- Specified by:
mapSelected
in classSelector
-
substitute
- Overrides:
substitute
in classItem
-
andThen
Description copied from class:Selector
The means to chainSelectors
. By intention, this is NOT a strict functional composition: for twoSelectors
s1
ands2
,s1.andThen(s2)
DOES NOT NECESSARILY return a newSelector
s3
such thats3.evaluate(args)
is equivalent tos2.evaluate(s1.evaluate(args))
.The reason for this is that for
Selectors
likeChildrenSelector
that yield (logical) collections, we wish to invoke the nextSelector
, say aGetSelector
, against every result. Under strict functional rules,ChildrenSelector.andThen(someGetSelector).evaluate(args)
would instead return at most one defined value regardless of the number of children. -
typeOrder
public int typeOrder()Description copied from class:Item
Returns the heterogeneous sort order of thisItem
. Used to impose a total order on the set of all items. When comparing two items of different types, the items order according to theirtypeOrder
. -
compareTo
-
equals
-
hashCode
public int hashCode() -
debugThen
-