Closed Lypsolon closed 2 months ago
We need a standardised namespace setup with rules and tools around it for better organisational
Each accepted namespace is documented in definition.md and implemented using macros in namespace_macros.h.
definition.md
namespace_macros.h
All code under an accepted namespace must use its corresponding namespace macro to define its scope.
Foundational functions and classes designed for abstract functionality without external dependencies. Ideal for header-only implementations.
Classes and functions supporting C/C++ software development are excluded from release builds through macros.
ynput::dt:
ynput::dt::trace: Functions specifically for tracing purposes.
Self-contained libraries with abstract interfaces (pure virtual classes), thorough documentation, defined behaviour, internal exception handling, and versioning.
ynput::lib:
ynput::lib::logging: Functions dedicated to logging.
Tools or collections of tools targeting specific problems offering less abstraction than libraries.
ynput::tool:
ynput::tool::usd: Example: a specific tool interacting with Ayon-Server to build USD files.
Namespaces for standalone applications within the Ynput ecosystem require startup procedures and do not compile to a static or dynamic library.
No response
done
Is there an existing issue for this?
Please describe the feature you have in mind and explain what the current shortcomings are?
We need a standardised namespace setup with rules and tools around it for better organisational
How would you imagine the implementation of the feature?
Overview
Top-Level Namespace
Standard Sub-Layer Namespaces
Registering a Namespace
Each accepted namespace is documented in
definition.md
and implemented using macros innamespace_macros.h
.All code under an accepted namespace must use its corresponding namespace macro to define its scope.
Description
Core Libraries
Foundational functions and classes designed for abstract functionality without external dependencies. Ideal for header-only implementations.
Nested Standard Namespaces
Developer Tooling
Classes and functions supporting C/C++ software development are excluded from release builds through macros.
ynput::dt:
ynput::dt::trace: Functions specifically for tracing purposes.
Libraries
Self-contained libraries with abstract interfaces (pure virtual classes), thorough documentation, defined behaviour, internal exception handling, and versioning.
ynput::lib:
ynput::lib::logging: Functions dedicated to logging.
Tool Modules
Tools or collections of tools targeting specific problems offering less abstraction than libraries.
ynput::tool:
ynput::tool::usd: Example: a specific tool interacting with Ayon-Server to build USD files.
Application Modules
Namespaces for standalone applications within the Ynput ecosystem require startup procedures and do not compile to a static or dynamic library.
Nested Standard Namespaces
Are there any labels you wish to add?
Describe alternatives you've considered:
No response
Additional context:
No response