dispatch_table.h#

Per-(domain, op_type) dispatch table used by :cpp:func:onnx_optim::shapes::ShapesContext::ComputeShapeNode to forward each NodeProto to the matching ComputeShape* implementation.

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_NAMESPACE so both names resolve to the same namespace.

Symbol-visibility attribute for the public onnx-light C++ API.

Defined as empty because onnx-light does not require explicit __declspec(dllexport) or __attribute__((visibility("default"))) annotations — visibility is controlled at the shared-library level. The macro is provided so that vendored ONNX headers that decorate their declarations with ONNX_API compile without modification.

Namespace alias so that ONNX C++ code (and consumers such as onnxruntime) that refers to the literal onnx namespace — rather than the ONNX_NAMESPACE macro — resolves to the onnx-light namespace. The standard onnx package lives in namespace onnx; onnx-light uses onnx_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 from onnx.

namespace onnx_optim
namespace shapes

Typedefs

using ComputeShapeFn = std::function<void(ShapesContext&, const NodeProto&)>#

Signature of every per-operator ComputeShape* trampoline registered in :cpp:func:DispatchTable: it reads the node’s inputs from ctx and inserts the resulting output descriptors back into ctx.

Functions

const std::unordered_map<std::string, ComputeShapeFn> &DispatchTable()#

Returns the (normalised_domain, op_type) -> ComputeShape* dispatch table. Constructed on first use and shared across calls.

The dispatch key is the pair (domain, op_type) encoded as "<domain>:<op_type>"; the empty default ONNX domain must be normalised to kOnnxDomain before lookup. Adding a new operator only requires inserting one new entry in the table.