neuray API Programmer's Manual

Base API Include Files

Base API offers two sets of include files.

One set consists of the single mi/base.h include file, which provides the full functionality of Base API. The other set consists of several include files named mi/base/<functional-name>.h, which provide individual parts of Base API grouped by functionality. In fact, the mi/base.h include file just includes all the other include files.

Include files are self-contained. Internal dependencies are resolved automatically. As a consequence, their inclusion is order independent.

Main Include File

Description

mi/base.h

Includes all sub-include files of Base API.

Include Files Grouped by Component

Description

Documentation

mi/base/version.h

Version number for Base API.

Versioning of the Base API

mi/base/config.h

Configuration support, such as compiler, platform, and operating system detection.

Configuration of the Base API

mi/base/assert.h

Assertions and static assertions.

Base API Assertions

mi/base/types.h

Basic types of known bit sizes and small functions on them, such as three-valued comparisons, min and max.

Basic Types

mi/base/uuid.h

Universally unique identifiers (UUID).

Basic Types

mi/base/enums.h

Basic enums, as for example used by the logger.

Basic Types

mi/base/atom.h

32-bit unsigned counter mi::base::Atom32 with atomic arithmetic, increments, and decrements.

Multithreading Support

mi/base/condition.h

Multithreading conditions, see mi::base::Condition.

Multithreading Support

mi/base/lock.h

Multithreading locks, see mi::base::Lock.

Multithreading Support

mi/base/iinterface.h

The basic extensible interface mi::base::IInterface, helper mixin class templates to define and implement interfaces, and UUID classes.

Interface Framework Technology

mi/base/interface_declare.h

Mixin class template for deriving new interface declarations, see mi::base::Interface_declare.

Interface Framework Technology

mi/base/interface_implement.h

Mixin class template for deriving new interface implementations, see mi::base::Interface_implement.

Interface Framework Technology

mi/base/handle.h

Handle class template for interfaces, see mi::base::Handle.

Interface Framework Technology

mi/base/iallocator.h

mi::base::IAllocator interface to dynamically allocate and deallocate memory.

Memory Management

mi/base/default_allocator.h

Default implementation for mi::base::IAllocator interface based on global new and delete.

Memory Management

mi/base/std_allocator.h

Standard STL allocator implementation based on an mi::base::IAllocator interface

Memory Management

mi/base/ilogger.h

mi::base::ILogger interface class that supports message logging.

Logging

mi/base/plugin.h

mi::base::Plugin interface for support of dynamically loaded plugins.

Plugin Support

There may be include files that are not documented here. They are automatically included if needed and their independent use is not supported. Their naming and organization might change in the future.