4#ifndef _Stroika_Foundation_DataExchange_Variant_Writer_h_
5#define _Stroika_Foundation_DataExchange_Variant_Writer_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
32namespace Stroika::Foundation::DataExchange::Variant {
45 explicit Writer (
const shared_ptr<_IRep>& rep);
51 nonvirtual optional<filesystem::path> GetDefaultFileSuffix ()
const;
82 nonvirtual _IRep& _GetRep ();
83 nonvirtual
const _IRep& _GetRep ()
const;
86 using _SharedPtrIRep = shared_ptr<_IRep>;
118 inline _SharedPtrIRep operator() (
const _IRep& t)
const;
123 SharedRepByValuePtr_ fRep_;
132 class Writer::_IRep {
134 virtual ~_IRep () =
default;
135 virtual _SharedPtrIRep Clone ()
const = 0;
136 virtual optional<filesystem::path> GetDefaultFileSuffix ()
const = 0;
String is like std::u32string, except it is much easier to use, often much more space efficient,...
abstract class specifying interface for writers VariantValue objects to serialized formats like JSON,...
nonvirtual String WriteAsString(const VariantValue &v) const
nonvirtual Memory::BLOB WriteAsBLOB(const VariantValue &v) const
static String _WriteAsStringHelper(const function< void(Streams::OutputStream::Ptr< Characters::Character >)> &f)
static Memory::BLOB _WriteAsBLOBHelper(const function< void(Streams::OutputStream::Ptr< byte >)> &f)
nonvirtual void Write(const VariantValue &v, const Streams::OutputStream::Ptr< byte > &out) const
static Streams::OutputStream::Ptr< Characters::Character > _WrapTextOutput(const Streams::OutputStream::Ptr< Characters::Character > &out)
static Streams::OutputStream::Ptr< byte > _WrapBinaryOutput(const Streams::OutputStream::Ptr< byte > &out)
Simple variant-value (case variant union) object, with (variant) basic types analogous to a value in ...
SharedByValue is a utility class to implement Copy-On-Write (aka COW) - sort of halfway between uniqu...
OutputStream<>::Ptr is Smart pointer to a stream-based sink of data.