MUSX Document Model
Loading...
Searching...
No Matches
musx::factory::ElementLinker Class Reference

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.
 

Detailed Description

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.

Member Typedef Documentation

◆ Resolver

A callable type representing a deferred relationship resolver.

Each resolver encapsulates the logic to resolve relationships between elements once the document is fully constructed.

Member Function Documentation

◆ addResolver()

void musx::factory::ElementLinker::addResolver ( Resolver  resolver,
const std::string_view &  key 
)
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.

Parameters
resolverA callable object that resolves a relationship when invoked.
keyAn unique key for the resolver. Each resolver is added only once per key.

◆ resolveAll()

void musx::factory::ElementLinker::resolveAll ( const dom::DocumentPtr document)
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.

Parameters
documentThe document in which relationships are resolved.

< Clear resolvers after execution