tvm_ffi.structural_walk#
- tvm_ffi.structural_walk(root, callbacks=(), with_def_region_kind=(), order='pre')[source]#
Walk a value structurally and invoke the first matching typed callback.
- Parameters:
root (
Any) – Root value to traverse.callbacks (
tuple|Sequence|Callable, default:()) –Normal callbacks. These callbacks receive one argument:
value. Callback entries are tried in order.May be one of:
A single callback, used as a
typing.Anycatch-all.A
(type, callback)entry.A grouped
((type1, type2, ...), callback)entry.A sequence of entries.
Types may be builtins, registered FFI object classes, or
typing.Any/objectas a catch-all.with_def_region_kind (
tuple|Sequence|Callable, default:()) – Def-region-aware callbacks. These callbacks receive two arguments:(value, def_region_kind). They accept the same callback entry forms ascallbacks.order (
str|WalkOrder, default:"pre") –"pre"/WalkOrder.PREORDERto invoke callbacks before children, or"post"/WalkOrder.POSTORDERto invoke callbacks after children.
- Return type:
- Returns:
result –
Noneif traversal completed, otherwise aVisitInterruptreturned by a callback.
Examples
visited = [] uses = [] result = tvm_ffi.structural_walk( node, ((int, float), lambda value: visited.append(("leaf", value))), with_def_region_kind=( Var, lambda var, kind: ( uses.append(var) if kind == tvm_ffi.DefRegionKind.NONE else None ), ), )