Meta-Programming Utilities

The utilities library provides several template meta-programming tools for type manipulation and compile-time computations.

MHO_Meta

File

MHO_Meta.hh

Category

Meta-Programming

Template Parameters

Variadic template parameters for type manipulation

Primary Functionality

Template meta-programming utilities and type manipulation

Key Features

Tuple access and modification utilities
Type counting and identification
Runtime-indexed tuple access
Complex type detection and switching

The MHO_Meta.hh header provides template meta-programming tools, such as tuple manipulation, type counting, runtime-indexed tuple access, and type detection capabilities.

MHO_ClassIdentity

Class

MHO_ClassIdentity

Category

Meta-Programming

Template Parameters

Template methods for class type identification

Primary Functionality

Runtime class name extraction and UUID generation

Key Features

Template-based class name deduction
MD5-based UUID generation from class names
Type identification for serialization
Class version error reporting

The MHO_ClassIdentity class provides runtime class name extraction and UUID generation for type identification in serialization and file operations.

MHO_TemplateTypenameDeduction

File

MHO_TemplateTypenameDeduction.hh

Category

Meta-Programming

Template Parameters

Template functions for type name extraction

Configuration Parameters

Compiler-specific (Clang/GCC support)

Primary Functionality

Compile-time type name extraction with runtime processing

Key Features

Cross-compiler type name deduction
String cleanup for readable class names
Special handling for std::string types
Namespace prefix removal

The MHO_TemplateTypenameDeduction.hh header provides compile-time type name extraction with runtime string processing to generate consistent class names across different compilers. These class names are used for object type identification via MD5 hashing, which is used for file key (MHO_FileKey) generation during the object serialization.

MHO_Types

File

MHO_Types.hh

Category

Meta-Programming

Compile time parameters

ENSURE_PORTABILITY flag (enabled by default)

Primary Functionality

Type size validation for data portability

Key Features

Static assertions for type size validation
Ensures consistent data layout across platforms
Prevents compilation on non-portable systems

The MHO_Types.hh header provides type size validation through static assertions to ensure data portability. Triggers a compile time error on non-compatible platforms/compilers.