4#include "Stroika/Foundation/Streams/TextToBinary.h"
6namespace Stroika::Foundation::DataExchange::Variant {
13 inline auto Reader::MakeSharedRep_ (
const _IRep& t) -> shared_ptr<_IRep>
17 inline Reader::Reader (
const shared_ptr<_IRep>& rep)
22 inline optional<filesystem::path> Reader::GetDefaultFileSuffix ()
const
25 return fRep_->GetDefaultFileSuffix ();
30 return fRep_->Read (in);
35 return fRep_->Read (in);
39 return Read (_ToCharacterReader (in));
41 inline VariantValue Variant::Reader::Read (istream& in)
const
43 return Read (_ToByteReader (in));
45 inline VariantValue Variant::Reader::Read (wistream& in)
const
47 return Read (_ToCharacterReader (in));
49 inline Reader::_IRep& Reader::_GetRep ()
53 return *fRep_.
rwget ();
55 inline const Reader::_IRep& Reader::_GetRep ()
const
58 return *fRep_.
cget ();
66 return Streams::TextToBinary::Reader::New (in);
#define RequireNotNull(p)
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 ...
nonvirtual const element_type * cget() const noexcept
nonvirtual element_type * rwget()
Iterable<T> is a base class for containers which easily produce an Iterator<T> to traverse them.