| IOLink C# 1.11.0

Loading...
Searching...
No Matches
Overview

# Main concepts

By design, IOLink provides an easy and efficient way to manipulate data and exchange them between software modules, using an unique interface. This library should allow to unify and centralize data accesses. This should lead to a safer data access and simplification of existing internal code.

IOLink is a set of interfaces, so customers can use for their own implementations, and contains some default implementations for in-memory usage.

IOLink interface provides following components:

- basic types
- views
- factories
- accessors
- storages

Customer can use the provided interfaces to implement their own file readers/writers, or simply use the default implementation to work in memory.

# Basic types

Some basic types were needed for IOLink API use and are delivered for any other utilization:

- `ArrayX` to represent multi-dimensional arrays of any basic type, to contain raw image data for example.
- `Vector` and `VectorX`, to represent multi-dimensional arithmetic vectors of any basic type:
  - unsigned integers
  - signed integers
  - float
  - double The difference between them being that the `Vector` dimension is compile-time, and the `VectorX` dimension is runtime.
- `Region` and `RegionX` to represent multi-dimensional areas defined with an origin and asize. The difference between them being that the `Region` dimension is compile-time, and the `RegionX` dimension is runtime.
- `DataType` to provide introspective data types.

# Views

Main entry point to use IOLink. A view points toward a data, wherever its origin or format, and allows to access it.

> ‍Many views can access the same data, differently.

For example, you can have a view onto an image, and another one onto a part of the same image.

`View` is the main class of all views classes, and you can downcast a `View` instance into its actual kind.

A view is strongly typed and follow the RAII paradigm: a `View` cannot be created empty, and be initialized later.

As of now, IOLink focuses on images (N-dimension) by providing a specific view called `ImageView`.

For more details, please refer to the more detailed section.

# Factories

To follow the RAII paradigm all interfaces instances are created through factories and they always return a shared pointer to the object instance.

Usually factories return the type of interface their name is based on. For example, `ImageViewFactory` will return `ImageView` instances.