PLCnext API Documentation  21.0.0.35466
MultiXmlConfigDocument.hpp
1 //
3 // Copyright PHOENIX CONTACT Electronics GmbH
4 //
6 #pragma once
7 #include "Arp/System/Core/Arp.h"
8 #include "Arp/System/Commons/Xml/XmlConfigDocument.hpp"
9 #include "Arp/System/Commons/Diagnostics/Logging/Logger.hxx"
10 #include "Arp/System/Commons/Configuration/ConfigurationSettings.hpp"
11 #include <deque>
12 #include <list>
13 
14 namespace Arp { namespace System { namespace Commons { namespace Xml
15 {
16 
17 // TContent policy: implement IXmlSerializable and default contructable
26 {
27 public: // typedef/usings
28  using Base = XmlConfigDocument;
29  using Files = std::deque<String>;
30  using IncludedFiles = std::list<String>;
32 
33 public: // construction/destruction
37  MultiXmlConfigDocument(const String& documentXmlElementName, IXmlSerializable& content);
39  virtual ~MultiXmlConfigDocument(void) = default;
40 
41 public: // operations
42  void AddFile(const String& path); // TODO:SDK make this private
43 
45  void Load(const String& documentPath);
46 
48  void Load(const ConfigurationSettings& configSettings);
49 
52  bool TryLoad(const String& documentPath);
53 
56  bool TryLoad(const ConfigurationSettings& configSettings);
57 
58 protected: // overridden methods
59  void ReadDocument(XmlReader& reader)override;
60 
61 private: // methods
62  bool TryLoad(const String& documentPath, String& errorMessage);
63  bool TryLoad(const ConfigurationSettings& configSettings, String& errorMessage);
64 
65 private: // deleted methods
69  MultiXmlConfigDocument& operator=(const MultiXmlConfigDocument& arg) = delete;
70 
71 private: // fields
72  Files files;
73  IncludedFiles includedFiles;
74 };
75 
77 // inline methods of class MultiXmlConfigDocument
78 inline MultiXmlConfigDocument::MultiXmlConfigDocument(const String& documentXmlNameArg, IXmlSerializable& contentArg)
79  : Base(documentXmlNameArg, contentArg)
80 {
81 }
82 
83 }}}} // end of namespace Arp::System::Commons::Xml
Definition: ConfigurationSettings.hpp:13
special version of XmlConfigDocument to include xml configuration data from other xml files inside a ...
Definition: MultiXmlConfigDocument.hpp:25
void Load(const String &documentPath)
Loads the document from specified <paramref="documentPath"/>
Interface for all classes which should be serializable for xml
Definition: IXmlSerializable.hpp:17
MultiXmlConfigDocument(const String &documentXmlElementName, IXmlSerializable &content)
Constructs an MultiXmlConfigDocument instance.
Definition: MultiXmlConfigDocument.hpp:78
Class handle xml configuration documents
Definition: XmlConfigDocument.hpp:20
XmlConfigDocument(const String &documentXmlElementName, IXmlSerializable &content)
Constructs an XmlConfigDocument instance.
Root namespace for the PLCnext API
Class to read an XML File. Non buffered reader, can only read forward
Definition: XmlReader.hpp:22
virtual ~MultiXmlConfigDocument(void)=default
Destructs this instance and frees all resouces.
System components used by the System, Device, Plc or Io domains.
bool TryLoad(const String &documentPath)