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 {
52 explicit Writer (
const shared_ptr<const _IRep>& rep);
58 nonvirtual optional<filesystem::path> GetDefaultFileSuffix ()
const;
89 nonvirtual
const _IRep& _ConstGetRep ()
const;
120 shared_ptr<const _IRep> fRep_;
129 class Writer::_IRep {
131 virtual ~_IRep () =
default;
132 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 Streams::OutputStream::Ptr< Characters::Character > _WrapTextOutput(const Streams::OutputStream::Ptr< Characters::Character > &out)
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< byte > _WrapBinaryOutput(const Streams::OutputStream::Ptr< byte > &out)
Simple variant-value (case variant union) object, with (variant) basic types analogous to a value in ...
OutputStream<>::Ptr is Smart pointer to a stream-based sink of data.