controlflow/utils.h#
Control-flow schema helpers for shape inference, including
onnx_light::IfInferenceFunction(), onnx_light::LoopInferenceFunction(),
and onnx_light::ScanInferenceFunction().
Declares control-flow shape-inference helpers shared by If, Loop, and Scan.
This header exposes utility routines used by control-flow operator schemas to validate axes, clear inferred shapes, and propagate shape/type information.
-
namespace onnx_light
Alias that makes onnx-light headers compatible with code that references
ONNX_LIGHT_NAMESPACE(the macro used in the standard onnx package).Set to
ONNX_LIGHT_NAMESPACEso both names resolve to the same namespace.Symbol-visibility attribute for the public onnx-light C++ API.
Maps the upstream compatibility macro to onnx-light’s explicit proto ABI annotation. This keeps declarations from vendored ONNX headers visible when
lib_onnx_protouses hidden visibility by default.Namespace alias so that ONNX C++ code (and consumers such as onnxruntime) that refers to the literal
onnxnamespace — rather than theONNX_NAMESPACEmacro — resolves to the onnx-light namespace. The standard onnx package lives innamespace onnx; onnx-light usesonnx_light(via ONNX_LIGHT_NAMESPACE), so this alias keeps onnx-light a true drop-in. It is only introduced when the onnx-light namespace differs fromonnx.Functions
-
size_t ValidateScanCountsAndGetNumLoopStateVars(size_t num_inputs, size_t num_scan_inputs, size_t num_outputs)#
Validates the Scan input/output counts against the declared
num_scan_inputsand returns the number of loop-state variables.Guards both subtractions against
size_tunderflow (GHSA-qrhj-v62m-vmpf): whennum_scan_inputsexceeds the input count the subtractionnum_inputs - num_scan_inputswraps around; when the resulting loop-state-variable count exceeds the output count the second subtraction wraps around. Both conditions callfail_shape_inferenceinstead of producing a huge index.Used by
ScanInferenceFunction(opset 9+) andScanInferenceFunction_opset9. Opset 8 has an extrasequence_lensoffset and is handled inline inScanInferenceFunction_opset8.
-
void IfInferenceFunction(InferenceContext &ctx)#
-
void LoopInferenceFunction(InferenceContext &ctx)#
-
void ScanInferenceFunction(InferenceContext &ctx)#
-
size_t ValidateScanCountsAndGetNumLoopStateVars(size_t num_inputs, size_t num_scan_inputs, size_t num_outputs)#