Make One Namespace
The MakeOneNamespace.hpp header imports all API namespaces into the main erbsland namespace.
This allows user code to access types from any module without qualifying them with their full namespace.
For example, after including this header, you can write erbsland::String instead of erbsland::text::String.
The standard-stream helper namespace erbsland::stream::io is folded as erbsland::io and therefore as el::io
when the short namespace alias is enabled.
System-domain types are also folded into erbsland.
The nested machine-information namespace erbsland::system::info is deliberately exposed as erbsland::sys_info
and el::sys_info instead of the ambiguous erbsland::info name.
Collapsing namespaces is enabled by default.
It can be controlled using the ERBSLAND_CORE_DO_NOT_FLATTEN_NS macro.
When defined, the flattened namespace is not created.
For unit tests and development builds, the namespaces are not collapsed.