Stroika Library 3.0d23
 
Loading...
Searching...
No Matches
Variant/Writer.inl
1/*
2 * Copyright(c) Sophist Solutions, Inc. 1990-2026. All rights reserved
3 */
4
5namespace Stroika::Foundation::DataExchange::Variant {
6
7 /*
8 ********************************************************************************
9 ***************************** DataExchange::Writer *****************************
10 ********************************************************************************
11 */
12 inline auto Writer::CloneAsShared_ (const _IRep& t) -> _SharedPtrIRep
13 {
14 return t.Clone ();
15 }
16 inline Writer::Writer (const shared_ptr<_IRep>& rep)
17 : fRep_{rep}
18 {
19 }
20 inline optional<filesystem::path> Writer::GetDefaultFileSuffix () const
21 {
22 return fRep_->GetDefaultFileSuffix ();
23 }
24 inline void Writer::Write (const VariantValue& v, const Streams::OutputStream::Ptr<byte>& out) const
25 {
26 fRep_->Write (v, out);
27 }
29 {
30 fRep_->Write (v, out);
31 }
32 inline void Variant::Writer::Write (const VariantValue& v, ostream& out) const
33 {
34 Write (v, _WrapBinaryOutput (out));
35 }
36 inline void Variant::Writer::Write (const VariantValue& v, wostream& out) const
37 {
38 Write (v, _WrapTextOutput (out));
39 }
40 inline Writer::_IRep& Writer::_GetRep ()
41 {
42 EnsureNotNull (fRep_.rwget ());
43 return *fRep_.rwget ();
44 }
45 inline const Writer::_IRep& Writer::_GetRep () const
46 {
47 EnsureNotNull (fRep_.cget ());
48 return *fRep_.cget ();
49 }
50 inline Streams::OutputStream::Ptr<byte> _WrapBinaryOutput (const Streams::OutputStream::Ptr<byte>& out)
51 {
52 return out;
53 }
54 inline Streams::OutputStream::Ptr<Characters::Character> _WrapTextOutput (const Streams::OutputStream::Ptr<Characters::Character>& out)
55 {
56 return out;
57 }
58
59}
#define EnsureNotNull(p)
Definition Assertions.h:341
nonvirtual void Write(const VariantValue &v, const Streams::OutputStream::Ptr< byte > &out) const
Simple variant-value (case variant union) object, with (variant) basic types analogous to a value in ...
nonvirtual const element_type * cget() const noexcept
OutputStream<>::Ptr is Smart pointer to a stream-based sink of data.