Stroika Library 3.0d16
 
Loading...
Searching...
No Matches
DataExchange/XML/Schema.inl
1/*
2 * Copyright(c) Sophist Solutions, Inc. 1990-2025. All rights reserved
3 */
5
7
8namespace Stroika::Foundation::DataExchange::XML::Schema {
9
10 /*
11 ********************************************************************************
12 ************************************* Schema::Ptr ******************************
13 ********************************************************************************
14 */
15 inline Ptr::Ptr (nullptr_t)
16 {
17 }
18 inline Ptr::Ptr (shared_ptr<IRep> s)
19 : fRep_{s}
20 {
21 }
22 inline optional<URI> Ptr::GetTargetNamespace () const
23 {
24 return fRep_->GetTargetNamespace ();
25 }
26 inline shared_ptr<IRep> Ptr::GetRep () const
27 {
28 return fRep_;
29 }
30#if qStroika_Foundation_DataExchange_XML_SupportDOM
31 template <>
32 XML::DOM::Document::Ptr Ptr::As ();
33#endif
34 template <typename AS_T>
35 AS_T Ptr::As ()
36#if !qCompilerAndStdLib_RequiresNotMatchInlineOutOfLineForTemplateClassBeingDefined_Buggy
37 requires (same_as<AS_T, String>
38#if qStroika_Foundation_DataExchange_XML_SupportDOM
39 or same_as<AS_T, XML::DOM::Document::Ptr>
40#endif
41 or same_as<AS_T, Memory::BLOB>)
42#endif
43 {
44 if constexpr (same_as<AS_T, String>) {
45 return Streams::BinaryToText::Reader::New (fRep_->GetData ()).ReadAll ();
46 }
47 else if constexpr (same_as<AS_T, Memory::BLOB>) {
48 return fRep_->GetData ();
49 }
50 }
51 template <typename AS_T>
52 AS_T Ptr::As (const Providers::ISchemaProvider& p)
53 requires (same_as<AS_T, XML::Schema::Ptr>)
54 {
55 if constexpr (same_as<AS_T, XML::Schema::Ptr>) {
56 return New (p, fRep_->GetData (), fRep_->GetResolver ());
57 }
58 }
59 template <>
60 XML::DOM::Document::Ptr Ptr::As (const Providers::IDOMProvider& p);
61
62}
Document::Ptr is create with Document::New, and is a smart pointer to a DOM document object.
Definition DOM.h:651