Stroika Library 3.0d25
 
Loading...
Searching...
No Matches
Variant/Reader.inl
1/*
2 * Copyright(c) Sophist Solutions, Inc. 1990-2026. All rights reserved
3 */
4#include "Stroika/Foundation/Streams/TextToBinary.h"
5
6namespace Stroika::Foundation::DataExchange::Variant {
7
8 /*
9 ********************************************************************************
10 ******************************* Variant::Reader ********************************
11 ********************************************************************************
12 */
13 inline Reader::Reader (const shared_ptr<const _IRep>& rep)
14 : fRep_{rep}
15 {
16 RequireNotNull (rep);
17 }
18 inline optional<filesystem::path> Reader::GetDefaultFileSuffix () const
19 {
20 AssertNotNull (fRep_);
21 return fRep_->GetDefaultFileSuffix ();
22 }
23 inline VariantValue Reader::Read (const Streams::InputStream::Ptr<byte>& in) const
24 {
25 AssertNotNull (fRep_);
26 return fRep_->Read (in);
27 }
28 inline VariantValue Reader::Read (const Streams::InputStream::Ptr<Characters::Character>& in) const
29 {
30 AssertNotNull (fRep_);
31 return fRep_->Read (in);
32 }
33 inline VariantValue Variant::Reader::Read (const Traversal::Iterable<Characters::Character>& in) const
34 {
35 return Read (_ToCharacterReader (in));
36 }
37 inline VariantValue Variant::Reader::Read (istream& in) const
38 {
39 return Read (_ToByteReader (in));
40 }
41 inline VariantValue Variant::Reader::Read (wistream& in) const
42 {
43 return Read (_ToCharacterReader (in));
44 }
45 inline const Reader::_IRep& Reader::_ConstGetRep () const
46 {
47 AssertNotNull (fRep_);
48 return *fRep_;
49 }
55 {
56 return Streams::TextToBinary::Reader::New (in);
57 }
62
63}
#define AssertNotNull(p)
Definition Assertions.h:336
#define RequireNotNull(p)
Definition Assertions.h:350
static Streams::InputStream::Ptr< byte > _ToByteReader(const Streams::InputStream::Ptr< byte > &in)
simple helper so subclasses can more easily provide varied Read overloads
static Streams::InputStream::Ptr< Characters::Character > _ToCharacterReader(const Streams::InputStream::Ptr< Characters::Character > &in)
simple helper so subclasses can more easily provide varied Read overloads
Simple variant-value (case variant union) object, with (variant) basic types analogous to a value in ...
InputStream<>::Ptr is Smart pointer (with abstract Rep) class defining the interface to reading from ...
Iterable<T> is a base class for containers which easily produce an Iterator<T> to traverse them.
Definition Iterable.h:234