ConstTransform a single node pre-order, the dual of this.transformObjectPreOrder with the same type specification as this.transformNodeSpecific: Similar to TransformerTyped.transformNodePreOrder, but also allowing you to target the subTypes: the node is transformed before its descendants, and we iterate into the result of that transformation, making it the tool of choice for nodes that have to travel deeper into the tree, like a filter pushdown.
Contrary to this.transformNodeSpecific, a callback does not just return the value taking the place of the node, it returns a PreOrderMappingReturn: that value, plus the TransformContext of that value, so there is no separate preVisitor. Also contrary to this.transformNodeSpecific, the descendants of the node given to the callback are not transformed yet: they are the nodes of the input tree itself.
the object from which we will start the transformation, potentially visiting and transforming its descendants along the way.
a dictionary mapping the various node types to a mapper. The mapper allows you to manipulate the copy of the current node, and expects you to return the value that should take the current nodes place, together with the context of that value. That context steers how we iterate into the returned value.
Same as nodeCallBacks but using an additional level of indirection to indicate the subType.
the result of transforming the startObject and the descendants of its rewrites.
the object from which we will start the transformation, potentially visiting and transforming its descendants along the way.
a dictionary mapping the various operation types to a mapper. The mapper allows you to manipulate the copy of the current operation, and expects you to return the value that should take the current operations place, together with the context of that value. That context steers how we iterate into the returned value.
Transform a single operation pre-order, similar to mapOperationPreOrder, but also allowing you to target subTypes - it is to mapOperationSub what mapOperationPreOrder is to mapOperation. e.g. replacing every aggregate expression, and iterating into the operator expression it becomes:
Just like mapOperationSub, a callback registered for the subType of an operation takes precedence over the one registered for its type. The same caveats as on mapOperationPreOrder apply: the callback returns the value taking the place of the operation together with the TransformContext of that value, and the descendants it is handed are those of the input tree. They are documented in detail on TransformerSubTyped.transformNodeSpecificPreOrder.