MUSX Document Model
|
A utility class for managing deferred relationships between elements during document construction. More...
#include <FactoryBase.h>
Public Types | |
using | Resolver = std::function< void(const dom::DocumentPtr &)> |
A callable type representing a deferred relationship resolver. | |
Public Member Functions | |
void | addResolver (Resolver resolver, const std::string_view &key) |
Adds a resolver function to the linker. | |
void | resolveAll (const dom::DocumentPtr &document) |
Resolves all deferred relationships. | |
A utility class for managing deferred relationships between elements during document construction.
This class allows capturing relationships that cannot be resolved immediately during factory creation. The relationships are stored as resolver functions, which are executed later when all elements have been created. It also provides a mechanism to ensure that specific resolvers are added only once by using unique keys.
A callable type representing a deferred relationship resolver.
Each resolver encapsulates the logic to resolve relationships between elements once the document is fully constructed.
|
inline |
Adds a resolver function to the linker.
This function captures the logic for resolving relationships that cannot be resolved immediately. Optionally, a unique key can be provided to ensure that the resolver is only added once.
resolver | A callable object that resolves a relationship when invoked. |
key | An unique key for the resolver. Each resolver is added only once per key. |
|
inline |
Resolves all deferred relationships.
Executes all stored resolver functions, establishing relationships between elements. Clears the internal storage of resolvers and registered keys after execution.
document | The document in which relationships are resolved. |
< Clear resolvers after execution