Add skip predicate to node traversal. (#4222)
authorAlex Ozdemir <aozdemir@hmc.edu>
Sat, 11 Apr 2020 17:16:05 +0000 (10:16 -0700)
committerGitHub <noreply@github.com>
Sat, 11 Apr 2020 17:16:05 +0000 (12:16 -0500)
commit0073464e433e80311269ce07e0fa5de417b5eefc
treee42eafe127a7135057e98ca1c0222c548ac80975
parent4e310461b2e41f9ccf1426797b5d8b58e27bc1c7
Add skip predicate to node traversal. (#4222)

Sometime you want to skip specific sub-DAGs when traversing a node. For example, you might be doing a transformation with a cache, and want to skip sub-DAGs that you've already processed.

This PR would add a skipIf builder method to NodeDfsIterable, which allows the user to provide a predicate according to which nodes will be omitted from the subsequent traversal.
src/expr/node_traversal.cpp
src/expr/node_traversal.h
test/unit/expr/node_traversal_black.h