C++ wrappers for OpenVX-1.x C API
Core ideas:
lightweight - minimal overhead vs standard C API
automatic references counting
exceptions instead of return codes
object-oriented design
(NYI) helpers for user-defined kernels & nodes
C++ 11 friendly
Quick start sample
The following short sample gives basic knowledges on the wrappers usage:
C++ API overview
The wrappers have header-only implementation that simplifies their integration to projects. All the API is inside ivx namespace (E.g. class ivx::Graph).
While the C++ API is pretty much the same for underlying OpenVX version 1.0 and 1.1, there are alternative code branches for some features implementation that are selected at compile time via #ifdef preprocessor directives. E.g. external ref-counting is implemented for 1.0 version and native OpenVX one is used (via vxRetainReference() and vxReleaseXYZ()) for version 1.1.
Also there are some C++ 11 features are used (e.g. rvalue ref-s) when their availability is detected at compile time.
C++ exceptions are used for errors indication instead of return codes. There are two types of exceptions are defined: RuntimeError is thrown when OpenVX C call returned unsuccessful result and WrapperError is thrown when a problem is occured in the wrappers code. Both exception calsses are derived from std::exception (actually from its inheritants).
The so called OpenVX objects (e.g. vx_image) are represented as C++ classes in wrappers. All these classes use automatic ref-counting that allows development of exception-safe code. All these classes have create() or createXYZ() static methods for instances creation. (E.g. Image::create(), Image::createVirtual() and Image::createFromHandle()) Most of the wrapped OpenVX functions are represented as methods of the corresponding C++ classes, but in most cases they still accept C "object" types (e.g. vx_image or vx_context) that allows mixing of C and C++ OpenVX API use. E.g.:
All the classes instances can automatically be converted to the corresponding C "object" types.
For more details please refer to C++ wrappers reference manual or directly to their source code.