CFG#

class hugr.ops.CFG(inputs: list[Type], _outputs: list[Type] | None = None)[source]#

Bases: DataflowOp

Parent operation of a control flow graph.

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.

outputs

Output types of the operation, if set.

signature

Dataflow signature of the CFG operation.

inputs

Inputs types of the operation.

inputs: list[Type]#

Inputs types of the operation.

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.

property outputs: list[Type]#

Output types of the operation, if set.

Raises:

IncompleteOp – If the 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#

Dataflow signature of the CFG operation.

Raises:

IncompleteOp – If the outputs have not been set.