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 text stream input. To read this data type in C++, use the resulting std::istream from
Get(). itk::wasm::OutputTextStream- A text stream output. To write to this data type in C++, use the resulting std::ostream from
Get(). itk::wasm::InputBinaryStream- A binary stream input. To read this data type in C++, use the resulting std::istream from
Get(). itk::wasm::OutputBinaryStream- A binary stream output. To write to this data type in C++, use the resulting std::ostream from
Get(). itk::wasm::InputImage<TImage>- An input image of type
TImage. To access the image in C++, useGet()to get a pointer to theTImage. itk::wasm::OutputImage<TImage>- An output image of type
TImage. To set the output image in C++, useSet(image)with a pointer to theTImage. itk::wasm::InputMesh<TMesh>- An input mesh of type
TMesh. To access the mesh in C++, useGet()to get a pointer to theTMesh. itk::wasm::OutputMesh<TMesh>- An output mesh of type
TMesh. To set the output mesh in C++, useSet(mesh)with a pointer to theTMesh. itk::wasm::InputPointSet<TPointSet>- An input point set of type
TPointSet. To access the point set in C++, useGet()to get a pointer to theTPointSet. itk::wasm::OutputPointSet<TPointSet>- An output point set of type
TPointSet. To set the output point set in C++, useSet(pointSet)with a pointer to theTPointSet. itk::wasm::InputPolyData<TPolyData>- An input polydata of type
TPolyData. To access the polydata in C++, useGet()to get a pointer to theTPolyData. itk::wasm::OutputPolyData<TPolyData>- An output polydata of type
TPolyData. To set the output polydata in C++, useSet(polyData)with a pointer to theTPolyData. itk::wasm::InputTransform<TTransform>- An input transform of type
TTransform. To access the transform in C++, useGet()to get a pointer to theTTransform. itk::wasm::OutputTransform<TTransform>- An output transform of type
TTransform. To set the output transform in C++, useSet(transform)with a pointer to theTTransform. std::string(for files)- File paths for input and output files. Use the type names
INPUT_TEXT_FILE,OUTPUT_TEXT_FILE,INPUT_BINARY_FILE, orOUTPUT_BINARY_FILE. The string contains the file path that can be used with standard file I/O operations. itk::wasm::InputTextStream(for JSON)- JSON input data. Use the type name
INPUT_JSON. To read the JSON data in C++, use the resulting std::istream fromGet()and parse the JSON content. itk::wasm::OutputTextStream(for JSON)- JSON output data. Use the type name
OUTPUT_JSON. To write JSON data in C++, use the resulting std::ostream fromGet()and write the JSON content.
For binding generation, set the type_name an the options accordingly. The type names are:
INPUT_TEXT_FILEOUTPUT_TEXT_FILEINPUT_BINARY_FILEOUTPUT_BINARY_FILEINPUT_TEXT_STREAMOUTPUT_TEXT_STREAMINPUT_BINARY_STREAMOUTPUT_BINARY_STREAMINPUT_IMAGEOUTPUT_IMAGEINPUT_MESHOUTPUT_MESHINPUT_POINTSETOUTPUT_POINTSETINPUT_POLYDATAOUTPUT_POLYDATAINPUT_TRANSFORMOUTPUT_TRANSFORMINPUT_JSONOUTPUT_JSON