Interface Types#

itk-wasm execution pipelines support the following interface types:

These interfaces types are supported in the Emscripten interface, WASI embedding interfaces, and native or virtual filesystem IO. They are intended to be forward-compatible with the WebAssembly Component Model.


The following CLI11 itk::wasm::Pipeline components can be included in a C++ to ingest and produce these interface types. For Input types, use Get() to get the corresponding C++ object value after ITK_WASM_PARSE_ARGS is called. For Output types, use Set(value) to output the value before main exits. For example,

#include "itkPipeline.h"
#include "itkInputTextStream.h"
#include "itkOutputTextStream.h"

int main(argc, char * argv[])
{
  itk::wasm::Pipeline pipeline("test-pipeline", "A test ITK Wasm Pipeline", argc, argv);

  itk::wasm::InputTextStream inputTextStream;
  pipeline.add_option("InputText", inputTextStream,
    "The input text")->required()->type_name("INPUT_TEXT_STREAM");

  itk::wasm::OutputTextStream outputTextStream;
  pipeline.add_option("OutputText", outputTextStream,
    "The output text")->required()->type_name("OUTPUT_TEXT_STREAM");


  ITK_WASM_PARSE(pipeline);


  const std::string inputTextStreamContent{ std::istreambuf_iterator<char>(inputTextStream.Get()),
                                            std::istreambuf_iterator<char>() };

  outputTextStream.Get() << inputTextStreamContent;
}
itk::wasm::InputTextStream
A string. To reader this data type in C++, using the resulting std::istream.

todo: document remaining CLI11 input and output classes.

For binding generation, set the type_name an the options accordingly. The type names are:

  • INPUT_TEXT_FILE

  • OUTPUT_TEXT_FILE

  • INPUT_BINARY_FILE

  • OUTPUT_BINARY_FILE

  • INPUT_TEXT_STREAM

  • OUTPUT_TEXT_STREAM

  • INPUT_BINARY_STREAM

  • OUTPUT_BINARY_STREAM

  • INPUT_IMAGE

  • OUTPUT_IMAGE

  • INPUT_MESH

  • OUTPUT_MESH

  • INPUT_POLYDATA

  • OUTPUT_POLYDATA