4#ifndef _Stroika_Foundation_Streams_MemoryStream_h_
5#define _Stroika_Foundation_Streams_MemoryStream_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
12#include "Stroika/Foundation/Common/Common.h"
23namespace Stroika::Foundation::Streams::MemoryStream {
25 using Characters::Character;
26 using Characters::String;
29 template <
typename ELEMENT_TYPE>
79 template <
typename ELEMENT_TYPE>
80 Ptr<ELEMENT_TYPE> New ();
81 template <
typename ELEMENT_TYPE,
size_t EXTENT>
82 Ptr<ELEMENT_TYPE> New (span<const ELEMENT_TYPE, EXTENT> copyFrom);
83 template <
typename ELEMENT_TYPE>
84 Ptr<ELEMENT_TYPE> New (
const Memory::BLOB& copyFrom)
85 requires (same_as<ELEMENT_TYPE, byte>);
88 template <
typename ELEMENT_TYPE>
97 template <
typename ELEMENT_TYPE>
113 Ptr (
const Ptr& from) =
default;
114 Ptr (
const shared_ptr<Private_::Rep_<ELEMENT_TYPE>>& from);
117 nonvirtual
Ptr& operator= (
const Ptr& rhs) =
default;
133 template <
typename T>
134 nonvirtual T
As () const
135 requires (same_as<T, vector<ELEMENT_TYPE>> or (same_as<ELEMENT_TYPE,
byte> and (same_as<T,
BLOB> or same_as<T,
string>)) or
148 nonvirtual const Private_::Rep_<ELEMENT_TYPE>& GetRepConstRef_ () const;
154 nonvirtual Private_::Rep_<ELEMENT_TYPE>& GetRepRWRef_ () const;
164#include "MemoryStream.inl"
String is like std::u32string, except it is much easier to use, often much more space efficient,...
nonvirtual String ToString() const