CallIndirect

class hugr.ops.CallIndirect(_signature: FunctionType | None = None)[source]

Bases: DataflowOp, _PartialOp

Higher order evaluation of a FunctionType value.

Methods

name

Name of the operation.

outer_signature

The external signature of this operation.

port_kind

Get the kind of the given port.

port_type

Get the type of the given dataflow port from the signature of the operation.

Attributes

num_out

The number of output ports for this operation.

signature

The signature of the function being called.

name() str[source]

Name of the operation.

property num_out: int

The number of output ports for this operation.

Example

>>> op = Const(val.TRUE)
>>> op.num_out
1
outer_signature() FunctionType[source]

The external signature of this operation. Defines the valid external connectivity of the node the operation belongs to.

Raises:

IncompleteOp – If the operation’s inputs and outputs have not been set.

port_kind(port: InPort | OutPort) ValueKind | ConstKind | FunctionKind | CFKind | OrderKind

Get the kind of the given port.

Example

>>> op = Const(val.TRUE)
>>> op.port_kind(OutPort(Node(0), 0))
ConstKind(Bool)
port_type(port: InPort | OutPort) Type

Get the type of the given dataflow port from the signature of the operation.

Example

>>> op = Input([tys.Bool])
>>> op.port_type(OutPort(Node(0), 0))
Bool
property signature: FunctionType

The signature of the function being called.

Raises: IncompleteOp: If the signature has not been set.