> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/holoscan/sdk-user-guide/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/holoscan/sdk-user-guide/_mcp/server.

# holoscan::OperatorSpec

> Class to define the specification of an operator.

Class to define the specification of an operator.

```cpp showLineNumbers={false}
#include <holoscan/operator_spec.hpp>
```

**Inherits from:** `holoscan::ComponentSpec` (public)

---

## Constructors

### OperatorSpec \[#operatorspec]

```cpp showLineNumbers={false}
holoscan::OperatorSpec::OperatorSpec(
    Fragment *fragment = nullptr
)
```

Construct a new `OperatorSpec` object.

**Parameters**

**`fragment`** `Fragment *` — default: nullptr

The pointer to the fragment that contains this operator.

---

### Destructor \[#destructor]

### \~OperatorSpec

```cpp showLineNumbers={false}
virtual holoscan::OperatorSpec::~OperatorSpec() = default
```

---

## Methods

### inputs \[#inputs]

```cpp showLineNumbers={false}
std::unordered_map<std::string, std::shared_ptr<IOSpec>> & holoscan::OperatorSpec::inputs()
```

Get input specifications of this operator.

**Returns:** The reference to the input specifications of this operator.

### input \[#input]

#### Define an input specification for this operator

```cpp showLineNumbers={false}
template <typename DataT>
IOSpec & holoscan::OperatorSpec::input()
```

Define an input specification for this operator.

**Returns:** The reference to the input specification.

**Template parameters**

**`DataT`** `typename`

The type of the input data.

---

#### Define an input specification for this operator (with name and size and policy)

```cpp showLineNumbers={false}
template <typename DataT>
IOSpec & holoscan::OperatorSpec::input(
    std::string name,
    IOSpec::IOSize size = IOSpec::kSizeOne,
    std::optional<IOSpec::QueuePolicy> policy = std::nullopt
)
```

Define an input specification for this operator.

Note: The 'size' parameter is used for initializing the queue size of the input port. The queue size can be set by this method or by the 'IOSpec::queue\_size(int64\_t)' method. If the queue size is set to 'any size' (IOSpec::kAnySize in C++ or IOSpec.ANY\_SIZE in Python), the connector/condition settings will be ignored. If the queue size is set to other values, the default connector (DoubleBufferReceiver/UcxReceiver) and condition ([MessageAvailableCondition](messageavailablecondition)) will use the queue size for initialization ('capacity' for the connector and 'min\_size' for the condition) if they are not set.

Note: For input ports, a queue size greater than 1 will also set the default [MessageAvailableCondition](messageavailablecondition) `min_size` to the same value unless you override the port condition. This enables batched execution. Holoscan emits a warning in the default-condition case. If you only want buffering without batching, explicitly set `min_size=1`. Holoscan plans to introduce an explicit `batch_size` configuration and change `size` to control queue capacity only; setting `min_size` explicitly now will make future migration straightforward. Please refer to the [Holoscan SDK User Guide](https://docs.nvidia.com/holoscan/sdk-user-guide/holoscan_create_operator.html#receiving-any-number-of-inputs-c) to see how to receive any number of inputs in C++.

Note: The 'policy' parameter controls the queue's behavior if a message arrives when the queue is already full. By default, a DownstreamAffordableCondition is added to output ports to prevent an upstream operator from sending a message if there is no available queue space. However, if such a condition is not present (e.g., by calling `condition(ConditionType::kNone)` on [`IOSpec`](iospec) object), a message may still arrive when the queue is already full. In that case, the possible policies are:

* IOSpec::QueuePolicy::kPop - Replace the oldest message in the queue with the new one.
* IOSpec::QueuePolicy::kReject - Reject (discard) the new message.
* IOSpec::QueuePolicy::kFault - Log a warning and reject the new item.

**Returns:** The reference to the input specification.

**Template parameters**

**`DataT`** `typename`

The type of the input data.

---

**Parameters**

**`name`** `std::string`

The name of the input specification.

---

**`size`** `IOSpec::IOSize` — default: IOSpec::kSizeOne

The size of the queue for the input port.

---

**`policy`** `std::optional<IOSpec::QueuePolicy>` — default: std::nullopt

The queue policy used for the input port.

---

#### Define an input specification for this operator (with name and policy)

```cpp showLineNumbers={false}
template <typename DataT>
IOSpec & holoscan::OperatorSpec::input(
    std::string name,
    std::optional<IOSpec::QueuePolicy> policy
)
```

Define an input specification for this operator.

**Returns:** The reference to the input specification.

**Template parameters**

**`DataT`** `typename`

The type of the input data.

---

**Parameters**

**`name`** `std::string`

The name of the input specification.

---

**`policy`** `std::optional<IOSpec::QueuePolicy>`

The queue policy used for the input port.

---

### multi\_port\_condition \[#multiportcondition]

```cpp showLineNumbers={false}
void holoscan::OperatorSpec::multi_port_condition(
    ConditionType kind,
    const std::vector<std::string> &port_names,
    ArgList args
)
```

Add a [Condition](condition) that depends on the status of multiple input ports.

**Parameters**

**`kind`** `ConditionType`

The type of multi-message condition (currently only kMultiMessageAvailable)

---

**`port_names`** `const std::vector<std::string> &`

The names of the input ports the condition will apply to

---

**`args`** `ArgList`

[ArgList](arglist) of arguments to pass to the [MultiMessageAvailableCondition](multimessageavailablecondition)

---

### multi\_port\_conditions \[#multiportconditions]

```cpp showLineNumbers={false}
std::vector<MultiMessageConditionInfo> & holoscan::OperatorSpec::multi_port_conditions()
```

### or\_combine\_port\_conditions \[#orcombineportconditions]

```cpp showLineNumbers={false}
void holoscan::OperatorSpec::or_combine_port_conditions(
    const std::vector<std::string> &port_names
)
```

Assign the conditions on the specified input ports to be combined with an OR operation.

This is intended to allow using OR instead of AND combination of single-port conditions like [MessageAvailableCondition](messageavailablecondition) for the specified input ports.

**Parameters**

**`port_names`** `const std::vector<std::string> &`

The names of the input ports whose conditions will be OR combined.

---

### or\_combiner\_port\_names \[#orcombinerportnames]

```cpp showLineNumbers={false}
std::vector<std::vector<std::string>> & holoscan::OperatorSpec::or_combiner_port_names()
```

vector of the names of ports for each [OrConditionCombiner](orconditioncombiner)

### device\_input \[#deviceinput]

#### Overload 1

```cpp showLineNumbers={false}
IOSpec & holoscan::OperatorSpec::device_input(
    std::string name,
    size_t memory_block_size
)
```

Define an input specification for this operator with a memory block size.

It is only applicable for GPU-resident operators.

The executor will allocate a shared device memory buffer of the specified size for this port and the connected output port. Both ports will map to the same device memory address. Integer literals (e.g. `0`, `1024`) and `size_t` values resolve to this overload.

**Returns:** The reference to the input specification.

**Parameters**

**`name`** `std::string`

The name of the input specification.

---

**`memory_block_size`** `size_t`

The device memory block size in bytes.

---

#### Overload 2

```cpp showLineNumbers={false}
template <typename T>
std::enable_if_t<std::is_same_v<std::decay_t<T>, CUdeviceptr>||std::is_same_v<std::decay_t<T>, void *>, IOSpec &> holoscan::OperatorSpec::device_input(
    std::string name,
    T device_ptr
)
```

Define an input specification for this operator with an externally managed device memory pointer.

It is only applicable for GPU-resident operators.

Use this overload when the operator allocates and manages its own device memory (e.g. via `cudaMalloc`). The executor will use this pointer directly instead of allocating a buffer. Both this port and the connected output port will map to the supplied device pointer.

This overload is applied in overload resolution when the second argument is of type `CUdeviceptr` or `void*`.

**Returns:** The reference to the input specification.

**Template parameters**

**`T`** `typename`

The device pointer type (`CUdeviceptr` or `void*`).

---

**Parameters**

**`name`** `std::string`

The name of the input specification.

---

**`device_ptr`** `T`

The device pointer for the input specification (must be non-null).

---

### outputs \[#outputs]

```cpp showLineNumbers={false}
std::unordered_map<std::string, std::shared_ptr<IOSpec>> & holoscan::OperatorSpec::outputs()
```

Get output specifications of this operator.

**Returns:** The reference to the output specifications of this operator.

### input\_output\_unique\_id \[#inputoutputuniqueid]

```cpp showLineNumbers={false}
const std::string & holoscan::OperatorSpec::input_output_unique_id(
    const std::string &name
) const
```

Return the unique\_id for a port name by checking inputs first, then outputs.

If a port with the same name exists in both inputs and outputs, an exception is thrown. If the port does not exist in either, an exception is thrown.

**Returns:** const std::string& The unique\_id corresponding to the found port.

**Parameters**

**`name`** `const std::string &`

The port name to look up.

---

### output \[#output]

#### Define an output specification for this operator

```cpp showLineNumbers={false}
template <typename DataT>
IOSpec & holoscan::OperatorSpec::output()
```

Define an output specification for this operator.

**Returns:** The reference to the output specification.

**Template parameters**

**`DataT`** `typename`

The type of the output data.

---

#### Define an output specification for this operator (with name and size and policy)

```cpp showLineNumbers={false}
template <typename DataT>
IOSpec & holoscan::OperatorSpec::output(
    std::string name,
    IOSpec::IOSize size = IOSpec::kSizeOne,
    std::optional<IOSpec::QueuePolicy> policy = std::nullopt
)
```

Define an output specification for this operator.

Note: The 'policy' parameter controls the queue's behavior if a message is emitted when the output queue is already full. The possible policies are:

* IOSpec::QueuePolicy::kPop - Replace the oldest message in the queue with the new one.
* IOSpec::QueuePolicy::kReject - Reject (discard) the new message.
* IOSpec::QueuePolicy::kFault - Log a warning and reject the new item.

**Returns:** The reference to the output specification.

**Template parameters**

**`DataT`** `typename`

The type of the output data.

---

**Parameters**

**`name`** `std::string`

The name of the output specification.

---

**`size`** `IOSpec::IOSize` — default: IOSpec::kSizeOne

The size of the queue for the output port.

---

**`policy`** `std::optional<IOSpec::QueuePolicy>` — default: std::nullopt

The queue policy used for the output port.

---

#### Define an output specification for this operator (with name and policy)

```cpp showLineNumbers={false}
template <typename DataT>
IOSpec & holoscan::OperatorSpec::output(
    std::string name,
    std::optional<IOSpec::QueuePolicy> policy
)
```

Define an output specification for this operator.

**Returns:** The reference to the output specification.

**Template parameters**

**`DataT`** `typename`

The type of the output data.

---

**Parameters**

**`name`** `std::string`

The name of the output specification.

---

**`policy`** `std::optional<IOSpec::QueuePolicy>`

The queue policy used for the output port.

---

### device\_output \[#deviceoutput]

#### Overload 1

```cpp showLineNumbers={false}
IOSpec & holoscan::OperatorSpec::device_output(
    std::string name,
    size_t memory_block_size
)
```

Define an output specification for this operator with a memory block size.

It is only applicable for GPU-resident operators.

The executor will allocate a shared device memory buffer of the specified size for this port and the connected input port. Both ports will map to the same device memory address. Integer literals (e.g. `0`, `1024`) and `size_t` values resolve to this overload.

**Returns:** The reference to the output specification.

**Parameters**

**`name`** `std::string`

The name of the output specification.

---

**`memory_block_size`** `size_t`

The device memory block size in bytes.

---

#### Overload 2

```cpp showLineNumbers={false}
template <typename T>
std::enable_if_t<std::is_same_v<std::decay_t<T>, CUdeviceptr>||std::is_same_v<std::decay_t<T>, void *>, IOSpec &> holoscan::OperatorSpec::device_output(
    std::string name,
    T device_ptr
)
```

Define an output specification for this operator with an externally managed device pointer.

It is only applicable for GPU-resident operators.

Use this overload when the operator allocates and manages its own device memory (e.g. via `cudaMalloc`). The executor will use this pointer directly instead of allocating a buffer. Both this port and the connected input port will map to the supplied device pointer.

This overload is applied in overload resolution when the second argument is of type `CUdeviceptr` or `void*`.

**Returns:** The reference to the output specification.

**Template parameters**

**`T`** `typename`

The device pointer type (`CUdeviceptr` or `void*`).

---

**Parameters**

**`name`** `std::string`

The name of the output specification.

---

**`device_ptr`** `T`

The device pointer for the output specification (must be non-null).

---

### param \[#param]

#### Define an IOSpec\* parameter for this operator (with flag)

inline

```cpp showLineNumbers={false}
void holoscan::OperatorSpec::param(
    Parameter<holoscan::IOSpec *> &parameter,
    const char *key,
    const char *headline,
    const char *description,
    ParameterFlag flag = ParameterFlag::kNone
)
```

Define an IOSpec\* parameter for this operator.

**Parameters**

**`parameter`** `Parameter<holoscan::IOSpec *> &`

The parameter to define.

---

**`key`** `const char *`

The key (name) of the parameter.

---

**`headline`** `const char *`

The headline of the parameter.

---

**`description`** `const char *`

The description of the parameter.

---

**`flag`** `ParameterFlag` — default: ParameterFlag::kNone

The flag of the parameter (default: ParameterFlag::kNone).

---

#### Define an IOSpec\* parameter for this operator (with init list)

inline

```cpp showLineNumbers={false}
void holoscan::OperatorSpec::param(
    Parameter<holoscan::IOSpec *> &parameter,
    const char *key,
    const char *headline,
    const char *description,
    std::initializer_list<void *> init_list
)
```

Define an IOSpec\* parameter for this operator.

This method is to catch the following case:

Otherwise, `{}` will be treated as `ParameterFlag::kNone` instead of `std::initializer_list`.

**Parameters**

**`parameter`** `Parameter<holoscan::IOSpec *> &`

The parameter to define.

---

**`key`** `const char *`

The key (name) of the parameter.

---

**`headline`** `const char *`

The headline of the parameter.

---

**`description`** `const char *`

The description of the parameter.

---

**`init_list`** `std::initializer_list<void *>`

The initializer list of the parameter.

---

**Example**

```cpp showLineNumbers={false}
...
    spec.param(iospec1_, "iospec1", "IO Spec", "Example IO Spec.", {});
...
private:
 Parameter<holoscan::IOSpec*> iospec1_;
```

#### Overload 3

inline

```cpp showLineNumbers={false}
void holoscan::OperatorSpec::param(
    Parameter<holoscan::IOSpec *> &parameter,
    const char *key,
    const char *headline,
    const char *description,
    holoscan::IOSpec *default_value,
    ParameterFlag flag = ParameterFlag::kNone
)
```

Define an IOSpec\* parameter with a default value for this operator.

**Parameters**

**`parameter`** `Parameter<holoscan::IOSpec *> &`

The parameter to define.

---

**`key`** `const char *`

The key (name) of the parameter.

---

**`headline`** `const char *`

The headline of the parameter.

---

**`description`** `const char *`

The description of the parameter.

---

**`default_value`** `holoscan::IOSpec *`

The default value of the parameter.

---

**`flag`** `ParameterFlag` — default: ParameterFlag::kNone

The flag of the parameter (default: ParameterFlag::kNone).

---

#### Overload 4

inline

```cpp showLineNumbers={false}
void holoscan::OperatorSpec::param(
    Parameter<std::vector<holoscan::IOSpec *>> &parameter,
    const char *key,
    const char *headline,
    const char *description,
    ParameterFlag flag = ParameterFlag::kNone
)
```

Define a IOSpec\* vector parameter for this operator.

**Parameters**

**`parameter`** `Parameter<std::vector<holoscan::IOSpec *>> &`

The parameter to define.

---

**`key`** `const char *`

The key (name) of the parameter.

---

**`headline`** `const char *`

The headline of the parameter.

---

**`description`** `const char *`

The description of the parameter.

---

**`flag`** `ParameterFlag` — default: ParameterFlag::kNone

The flag of the parameter (default: ParameterFlag::kNone).

---

#### Overload 5

inline

```cpp showLineNumbers={false}
void holoscan::OperatorSpec::param(
    Parameter<std::vector<holoscan::IOSpec *>> &parameter,
    const char *key,
    const char *headline,
    const char *description,
    std::initializer_list<holoscan::IOSpec *> init_list
)
```

Define a IOSpec\* vector parameter for this operator.

This method is to catch the following case:

Otherwise, `{}` will be treated as `ParameterFlag::kNone` instead of `std::initializer_list`.

**Parameters**

**`parameter`** `Parameter<std::vector<holoscan::IOSpec *>> &`

The parameter to define.

---

**`key`** `const char *`

The key (name) of the parameter.

---

**`headline`** `const char *`

The headline of the parameter.

---

**`description`** `const char *`

The description of the parameter.

---

**`init_list`** `std::initializer_list<holoscan::IOSpec *>`

The initializer list of the parameter.

---

**Example**

```cpp showLineNumbers={false}
...
    spec.param(iospec1_, "iospec1", "IO Spec", "Example IO Spec.", {});
...
private:
 Parameter<std::vector<holoscan::IOSpec*>> iospec1_;
```

#### Overload 6

inline

```cpp showLineNumbers={false}
void holoscan::OperatorSpec::param(
    Parameter<std::vector<holoscan::IOSpec *>> &parameter,
    const char *key,
    const char *headline,
    const char *description,
    const std::vector<holoscan::IOSpec *> &default_value,
    ParameterFlag flag = ParameterFlag::kNone
)
```

Define an IOSpec\* parameter with a default value for this operator.

**Parameters**

**`parameter`** `Parameter<std::vector<holoscan::IOSpec *>> &`

The parameter to define.

---

**`key`** `const char *`

The key (name) of the parameter.

---

**`headline`** `const char *`

The headline of the parameter.

---

**`description`** `const char *`

The description of the parameter.

---

**`default_value`** `const std::vector<holoscan::IOSpec *> &`

The default value of the parameter.

---

**`flag`** `ParameterFlag` — default: ParameterFlag::kNone

The flag of the parameter (default: ParameterFlag::kNone).

---

#### Define a parameter for this component (with flag)

inline

```cpp showLineNumbers={false}
template <typename typeT>
void holoscan::ComponentSpec::param(
    Parameter<typeT> &parameter,
    const char *key,
    ParameterFlag flag = ParameterFlag::kNone
)
```

Define a parameter for this component.

**Template parameters**

**`typeT`** `typename`

The type of the parameter.

---

**Parameters**

**`parameter`** `Parameter<typeT> &`

The parameter to define.

---

**`key`** `const char *`

The key (name) of the parameter.

---

**`flag`** `ParameterFlag` — default: ParameterFlag::kNone

The flag of the parameter (default: ParameterFlag::kNone).

---

#### Define a parameter for this component (with flag and headline)

inline

```cpp showLineNumbers={false}
template <typename typeT>
void holoscan::ComponentSpec::param(
    Parameter<typeT> &parameter,
    const char *key,
    const char *headline,
    ParameterFlag flag = ParameterFlag::kNone
)
```

Define a parameter for this component.

**Template parameters**

**`typeT`** `typename`

The type of the parameter.

---

**Parameters**

**`parameter`** `Parameter<typeT> &`

The parameter to define.

---

**`key`** `const char *`

The key (name) of the parameter.

---

**`headline`** `const char *`

The headline of the parameter.

---

**`flag`** `ParameterFlag` — default: ParameterFlag::kNone

The flag of the parameter (default: ParameterFlag::kNone).

---

#### Define a parameter for this component (with flag and headline and description)

```cpp showLineNumbers={false}
template <typename typeT>
void holoscan::ComponentSpec::param(
    Parameter<typeT> &parameter,
    const char *key,
    const char *headline,
    const char *description,
    ParameterFlag flag = ParameterFlag::kNone
)
```

Define a parameter for this component.

**Template parameters**

**`typeT`** `typename`

The type of the parameter.

---

**Parameters**

**`parameter`** `Parameter<typeT> &`

The parameter to define.

---

**`key`** `const char *`

The key (name) of the parameter.

---

**`headline`** `const char *`

The headline of the parameter.

---

**`description`** `const char *`

The description of the parameter.

---

**`flag`** `ParameterFlag` — default: ParameterFlag::kNone

The flag of the parameter (default: ParameterFlag::kNone).

---

#### Define a parameter for this component (with headline and description and init list)

```cpp showLineNumbers={false}
template <typename typeT>
void holoscan::ComponentSpec::param(
    Parameter<typeT> &parameter,
    const char *key,
    const char *headline,
    const char *description,
    std::initializer_list<void *> init_list
)
```

Define a parameter for this component.

This method is to catch the following case:

Otherwise, `{}` will be treated as `ParameterFlag::kNone` instead of `std::initializer_list`.

**Template parameters**

**`typeT`** `typename`

The type of the parameter.

---

**Parameters**

**`parameter`** `Parameter<typeT> &`

The parameter to define.

---

**`key`** `const char *`

The key (name) of the parameter.

---

**`headline`** `const char *`

The headline of the parameter.

---

**`description`** `const char *`

The description of the parameter.

---

**`init_list`** `std::initializer_list<void *>`

The initializer list of the parameter.

---

**Example**

```cpp showLineNumbers={false}
...
    spec.param(int64_value_, "int64_param", "int64_t param", "Example int64_t parameter.", {});
...
private:
 Parameter<int64_t> int64_param_;
```

#### Define a parameter that has a default value (1)

```cpp showLineNumbers={false}
template <typename typeT>
void holoscan::ComponentSpec::param(
    Parameter<typeT> &parameter,
    const char *key,
    const char *headline,
    const char *description,
    const typeT &default_value,
    ParameterFlag flag = ParameterFlag::kNone
)
```

Define a parameter that has a default value.

**Template parameters**

**`typeT`** `typename`

The type of the parameter.

---

**Parameters**

**`parameter`** `Parameter<typeT> &`

The parameter to get.

---

**`key`** `const char *`

The key (name) of the parameter.

---

**`headline`** `const char *`

The headline of the parameter.

---

**`description`** `const char *`

The description of the parameter.

---

**`default_value`** `const typeT &`

The default value of the parameter.

---

**`flag`** `ParameterFlag` — default: ParameterFlag::kNone

The flag of the parameter (default: ParameterFlag::kNone).

---

#### Define a parameter that has a default value (2)

```cpp showLineNumbers={false}
template <typename typeT>
void holoscan::ComponentSpec::param(
    Parameter<typeT> &parameter,
    const char *key,
    const char *headline,
    const char *description,
    typeT &&default_value,
    ParameterFlag flag = ParameterFlag::kNone
)
```

Define a parameter that has a default value.

**Template parameters**

**`typeT`** `typename`

The type of the parameter.

---

**Parameters**

**`parameter`** `Parameter<typeT> &`

The parameter to get.

---

**`key`** `const char *`

The key (name) of the parameter.

---

**`headline`** `const char *`

The headline of the parameter.

---

**`description`** `const char *`

The description of the parameter.

---

**`default_value`** `typeT &&`

The default value of the parameter.

---

**`flag`** `ParameterFlag` — default: ParameterFlag::kNone

The flag of the parameter (default: ParameterFlag::kNone).

---

### to\_yaml\_node \[#toyamlnode]

```cpp showLineNumbers={false}
YAML::Node holoscan::OperatorSpec::to_yaml_node() const override
```

Get a `YAML` representation of the operator spec.

**Returns:** `YAML` node including the inputs, outputs, and parameters of this operator.

### fragment \[#fragment]

#### Overload 1

```cpp showLineNumbers={false}
void holoscan::OperatorSpec::fragment(
    Fragment *fragment
)
```

Set the pointer to the fragment that contains this component.

**Parameters**

**`fragment`** `Fragment *`

The pointer to the fragment that contains this component.

---

#### Overload 2

```cpp showLineNumbers={false}
Fragment * holoscan::OperatorSpec::fragment()
```

Get the pointer to the fragment that contains this component.

**Returns:** The pointer to the fragment that contains this component.

### params \[#params]

```cpp showLineNumbers={false}
std::unordered_map<std::string, ParameterWrapper> & holoscan::OperatorSpec::params()
```

Get the parameters of this component.

**Returns:** The reference to the parameters of this component.

### description \[#description]

```cpp showLineNumbers={false}
std::string holoscan::OperatorSpec::description() const
```

Get a description of the component spec.

**Returns:** `YAML` string.

**See also:**
to\_yaml\_node()

---

## Member variables

| Name                      | Type                                                           | Description                                               |
| ------------------------- | -------------------------------------------------------------- | --------------------------------------------------------- |
| `inputs_`                 | `std::unordered_map< std::string, std::shared_ptr< IOSpec > >` | Input specs.                                              |
| `outputs_`                | `std::unordered_map< std::string, std::shared_ptr< IOSpec > >` | Outputs specs.                                            |
| `multi_port_conditions_`  | `std::vector< MultiMessageConditionInfo >`                     |                                                           |
| `or_combiner_port_names_` | `std::vector< std::vector< std::string > >`                    |                                                           |
| `receivers_params_`       | `std::list< Parameter< std::vector< IOSpec * > > >`            | Container for receivers parameters.                       |
| `fragment_`               | `Fragment *`                                                   | The pointer to the fragment that contains this component. |
| `params_`                 | `std::unordered_map< std::string, ParameterWrapper >`          | The parameters of this component.                         |