Stroika Library 3.0d16
 
Loading...
Searching...
No Matches
Writer.inl
1/*
2 * Copyright(c) Sophist Solutions, Inc. 1990-2025. All rights reserved
3 */
4
5namespace Stroika::Foundation::DataExchange::Variant {
6
7 /*
8 ********************************************************************************
9 ********************** DataExchange::Writer::_Rep_Cloner ***********************
10 ********************************************************************************
11 */
12 inline Writer::_SharedPtrIRep Writer::_Rep_Cloner::operator() (const _IRep& t) const
13 {
14 return t.Clone ();
15 }
16
17 /*
18 ********************************************************************************
19 ***************************** DataExchange::Writer *****************************
20 ********************************************************************************
21 */
22 inline Writer::Writer (const shared_ptr<_IRep>& rep)
23 : fRep_{rep}
24 {
25 }
26 inline optional<filesystem::path> Writer::GetDefaultFileSuffix () const
27 {
28 return fRep_->GetDefaultFileSuffix ();
29 }
30 inline void Writer::Write (const VariantValue& v, const Streams::OutputStream::Ptr<byte>& out) const
31 {
32 fRep_->Write (v, out);
33 }
35 {
36 fRep_->Write (v, out);
37 }
38 inline void Variant::Writer::Write (const VariantValue& v, ostream& out) const
39 {
40 Write (v, _WrapBinaryOutput (out));
41 }
42 inline void Variant::Writer::Write (const VariantValue& v, wostream& out) const
43 {
44 Write (v, _WrapTextOutput (out));
45 }
46 inline Writer::_IRep& Writer::_GetRep ()
47 {
48 EnsureNotNull (fRep_.rwget ());
49 return *fRep_.rwget ();
50 }
51 inline const Writer::_IRep& Writer::_GetRep () const
52 {
53 EnsureNotNull (fRep_.cget ());
54 return *fRep_.cget ();
55 }
56 inline Streams::OutputStream::Ptr<byte> _WrapBinaryOutput (const Streams::OutputStream::Ptr<byte>& out)
57 {
58 return out;
59 }
60 inline Streams::OutputStream::Ptr<Characters::Character> _WrapTextOutput (const Streams::OutputStream::Ptr<Characters::Character>& out)
61 {
62 return out;
#define EnsureNotNull(p)
Definition Assertions.h:340
nonvirtual void Write(const VariantValue &v, const Streams::OutputStream::Ptr< byte > &out) const
Definition Writer.inl:30
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.