4#ifndef _Stroika_Foundation_DataExchange_XML_Providers_IProvider_h_
5#define _Stroika_Foundation_DataExchange_XML_Providers_IProvider_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
10#include "Stroika/Foundation/DataExchange/XML/DOM.h"
13#include "Stroika/Foundation/Execution/LazyInitialized.h"
25namespace Stroika::Foundation::DataExchange::XML::Providers {
34 struct ISchemaProvider :
public virtual IProvider {
35 virtual ~ISchemaProvider () =
default;
39 struct IDOMProvider :
public virtual IProvider {
40 virtual ~IDOMProvider () =
default;
43 const Schema::Ptr& schemaToValidateAgainstWhileReading)
const = 0;
45 struct ISAXProvider :
public virtual IProvider {
46 virtual ~ISAXProvider () =
default;
48 const Schema::Ptr& schema)
const = 0;
50 struct IXMLProvider : ISchemaProvider, IDOMProvider, ISAXProvider {};
52#if qStroika_Foundation_DataExchange_XML_SupportParsing and qStroika_Foundation_DataExchange_XML_SupportSchema and qStroika_Foundation_DataExchange_XML_SupportDOM
54 const IXMLProvider* GetDefaultProvider_ ();
61#if qStroika_Foundation_DataExchange_XML_SupportParsing and qStroika_Foundation_DataExchange_XML_SupportSchema and qStroika_Foundation_DataExchange_XML_SupportDOM
62 inline const Foundation::Execution::LazyInitialized<const IXMLProvider*> kDefaultProvider{Private_::GetDefaultProvider_};