IOLink
IOL_v1.2.0_release
|
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:
Customer can use the provided interfaces to implement their own file readers/writers, or simply use the default implementation to work in memory.
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: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.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.
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.