dispatch_table.h#
Registers every onnx_shapes ComputeShape* shape function (the built-in ai.onnx/ai.onnx.ml/… operator set) with the generic dispatch table owned by onnx_core (:cpp:func:core::shapes::DispatchTable).
The shape functions themselves (e.g. math::ComputeShapeAbs) stay in onnx_shapes, one per onnx_extensions/shapes/shapes/<domain>/shape_<domain>.cc file, and this translation unit is the single place that wires all of them into the shared registry via :cpp:func:RegisterShapeFunctions. Keeping the registration here (instead of in onnx_core) preserves the onnx_shapes -> onnx_core dependency direction: onnx_core never needs to know about onnx_shapes’s operator implementations.
-
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.-
namespace onnx_shapes#
Functions
-
void RegisterShapeFunctions()#
Registers every built-in
onnx_shapesshape function with :cpp:func:core::shapes::RegisterComputeShapeFn. Idempotent and cheap to call more than once (the actual registration work only happens once, guarded by a function-local static).Unlike
onnx_lib’sOpSchemaRegistry::map()(which can lazily self-register because both the accessor and the registration functions live in the same library),core::shapes::DispatchTable()cannot do this:onnx_coremust not depend on or call intoonnx_shapes.lib_onnx_shapeis also a plain static archive, so a file-scope static object with no externally-referenced symbol is not reliably linked in either. Every entry point that uses the shape-inference engine (Python bindings, C++ unit tests, examples, fuzzers, …) must therefore call this function explicitly before calling :cpp:func:core::shapes::InferShapesModelor :cpp:func:core::shapes::ShapesContext::ComputeShapeNode.
-
void RegisterPeakMemoryFunctions()#
Registers every built-in
onnx_shapespeak-memory function with :cpp:func:core::shapes::RegisterComputePeakMemoryFn. Mirrors :cpp:func:RegisterShapeFunctionsfor the peak-memory dispatch table: idempotent, guarded by a function-local static, and must be called explicitly before :cpp:func:core::shapes::ComputePeakMemorycan resolve a built-in operator (operators without a registered function report0).
-
void RegisterShapeFunctions()#
-
namespace onnx_shapes#