27#include "musx/factory/FactoryBase.h"
28#include "musx/dom/Header.h"
29#include "musx/xml/XmlInterface.h"
50 if (!headerDataElement) {
51 throw std::invalid_argument(
"Missing <headerData> element.");
54 auto header = std::make_shared<dom::header::Header>();
55 getFieldFromXml(headerDataElement,
"wordOrder", header->wordOrder, parseWordOrder);
56 getFieldFromXml(headerDataElement,
"textEncoding", header->textEncoding, parseTextEncoding);
57 getFieldFromXml(headerDataElement,
"created", header->created, parseFileInfo);
58 getFieldFromXml(headerDataElement,
"modified", header->modified, parseFileInfo);
73 std::string value = element->getText();
76 throw std::invalid_argument(
"Invalid word order value: " + value);
87 std::string value = element->getText();
101 std::string value = element->getText();
116 getFieldFromXml(element,
"year", fileInfo.
year, [](
auto element) { return element->template getTextAs<int>(); });
117 getFieldFromXml(element,
"month", fileInfo.
month, [](
auto element) { return element->template getTextAs<int>(); });
118 getFieldFromXml(element,
"day", fileInfo.
day, [](
auto element) { return element->template getTextAs<int>(); });
139 throw std::runtime_error(
"Missing version element.");
143 getFieldFromXml(element,
"major", version.
major, [](
auto element) { return element->template getTextAs<int>(); });
144 getFieldFromXml(element,
"minor", version.
minor, [](
auto element) { return element->template getTextAs<int>(); });
145 version.
maint = getOptionalChildTextAs<int>(element,
"maint");
147 version.
build = getOptionalChildTextAs<int>(element,
"build");
Factory base class.
Definition FactoryBase.h:132
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.
Definition FactoryBase.h:145
static XmlElementPtr getFirstChildElement(const XmlElementPtr &element, const std::string &childElementName)
Helper function to throw when child element does not exist.
Definition FactoryBase.h:160
std::shared_ptr< IXmlElement > XmlElementPtr
shared pointer to IXmlElement
Definition XmlInterface.h:121
object model for musx file (enigmaxml)
Definition BaseClasses.h:32