37 static constexpr size_t ChunkSize =
44 std::array<uint8_t, ChunkSize>
Data;
45 size_t BytesUsed { 0 };
60 void AppendByte(
char data);
61 void AppendData(
const void* data,
const size_t length);
65 const void* GetData()
const;
66 const size_t GetSize() const noexcept;
68 bool IsEmpty() const noexcept;
89 bool mShowLinearPart {
false };
auto operator*(PffftAlignedCount x, Integral y) -> std::enable_if_t< std::is_unsigned_v< Integral > &&sizeof(Integral)<=sizeof(size_t), PffftAlignedCount >
Append(Adapt< My >([](My &table) { return(WaveChannelSubViews::numFactories() > 1) ? std::make_unique< Entry >("MultiView", Entry::CheckItem, OnMultiViewID, XXO("&Multi-view"), POPUP_MENU_FN(OnMultiView), table, [](PopupMenuHandler &handler, wxMenu &menu, int id){ auto &table=static_cast< WaveTrackMenuTable & >(handler);auto &track=table.FindWaveTrack();const auto &view=WaveChannelView::GetFirst(track);menu.Check(id, view.GetMultiView());}) :nullptr;}))
bool operator==(const WaveTrackLocation &a, const WaveTrackLocation &b)
bool operator!=(const WaveTrackLocation &a, const WaveTrackLocation &b)
A low overhead memory stream with O(1) append, low heap fragmentation and a linear memory view.
std::pair< const void *, size_t > StreamChunk
std::list< Chunk > ChunksList
std::vector< uint8_t > StreamData
MemoryStream(MemoryStream &&)=default
const char * end(const char *str) noexcept
const char * begin(const char *str) noexcept
std::array< uint8_t, ChunkSize > Data
Iterator(const Iterator &)=default
ChunksList::const_iterator mListIterator
A convenience for defining iterators that return rvalue types, so that they cooperate correctly with ...