|
MUSX Document Model
|
Factory class for creating Details objects from XML.
More...
#include <PoolFactory.h>
Inheritance diagram for musx::factory::DetailsFactory:Static Public Member Functions | |
| static auto | extractFromXml (const XmlElementPtr &element, const dom::DocumentPtr &document, ElementLinker &elementLinker, const DetailsPoolPtr &pool) |
Extracts an OthersBase object from an XML element. | |
| static std::shared_ptr< PoolType > | create (const XmlElementPtr &element, const dom::DocumentPtr &document, ElementLinker &elementLinker) |
Creates a OthersPool object from an XML element. | |
Static Public Member Functions inherited from musx::factory::PoolFactory< DetailsFactory, dom::DetailsBase, dom::DetailsPool > | |
| static std::shared_ptr< dom::DetailsPool > | create (const XmlElementPtr &element, const dom::DocumentPtr &document, ElementLinker &elementLinker) |
Creates a OthersPool object from an XML element. | |
Additional Inherited Members | |
Static Protected Member Functions inherited from musx::factory::FactoryBase | |
| 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 Details objects from XML.
This class specializes PoolFactory to handle the creation of Others objects, representing various attributes stored in an OthersPool. It includes an XML parsing mechanism to extract and create these objects, which are used in the document model.
|
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.
|
inlinestatic |
Extracts an OthersBase object from an XML element.
Extracts an OthersBase derived object from the given XML element using the specified attributes cmper and inci. Throws an exception if a required attribute is missing.
| element | The XML element from which to extract the object. |
| document | The document object providing context for the XML parsing. |
| elementLinker | The ElementLinker instance that is used to resolve all internal connections after the document is created. |
| pool | The pool we are constructiong. (It hasn't been assigned to document yet.) |
| std::invalid_argument | if required attributes are missing. |