MUSX Document Model
|
Factory class for creating a dom::ObjectPool
from XML.
More...
#include <PoolFactory.h>
Static Public Member Functions | |
static std::shared_ptr< PoolType > | create (const XmlElementPtr &element, const dom::DocumentPtr &document, ElementLinker &elementLinker) |
Creates a OthersPool object from an XML element. | |
Additional Inherited Members | |
![]() | |
template<typename DataType , typename ParserFunc > | |
static void | getFieldFromXml (const XmlElementPtr &element, const std::string &nodeName, DataType &dataField, ParserFunc parserFunc, bool expected=false) |
Helper function to check if a child exists and populate it if so. | |
static XmlElementPtr | getFirstChildElement (const XmlElementPtr &element, const std::string &childElementName) |
Helper function to throw when child element does not exist. | |
static std::optional< std::string > | getOptionalChildText (const XmlElementPtr &element, const std::string &childElementName) |
Helper function to return std::nullopt when child element does not exist. | |
template<typename T > | |
static std::optional< T > | getOptionalChildTextAs (const XmlElementPtr &element, const std::string &childElementName, T defaultValue={}) |
Helper function to return std::nullopt when child element does not exist. | |
Factory class for creating a dom::ObjectPool
from XML.
This factory class uses CRTP (Curiously Recurring Template Pattern) to implement a polymorphic factory for creating ObjectPool
objects from an XML representation. The derived classes are responsible for specifying their own creation mechanisms by providing appropriate specializations.
DerivedType | The derived type for CRTP, which will implement specific extraction behavior from XML. |
ObjectBase | The base type of the objects that are stored in the pool, providing a common interface. |
PoolType | The type of the pool that stores the objects, such as a collection of ObjectBase derived objects. |
|
inlinestatic |
Creates a OthersPool
object from an XML element.
This function creates an object pool by parsing the XML element representing the <others>
node. It iterates over each child element of the XML element, extracts relevant information using DerivedType::extractFromXml
, and adds the created objects to the pool.
element | The XML element representing the <others> node. |
document | The document object providing context for the XML parsing. |
elementLinker | A class for storing deferred linkage commands. |
ObjectPoolType
object.