IOLink  IOL_v1.2.0_release
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.