aboutsummaryrefslogtreecommitdiff
path: root/zencore
diff options
context:
space:
mode:
Diffstat (limited to 'zencore')
-rw-r--r--zencore/include/zencore/stream.h48
-rw-r--r--zencore/stream.cpp19
2 files changed, 19 insertions, 48 deletions
diff --git a/zencore/include/zencore/stream.h b/zencore/include/zencore/stream.h
index 6d7e7d19f..54d7e1014 100644
--- a/zencore/include/zencore/stream.h
+++ b/zencore/include/zencore/stream.h
@@ -27,12 +27,29 @@ public:
m_Offset += ByteCount;
}
+ inline void Write(MemoryView Memory) { Write(Memory.GetData(), Memory.GetSize()); }
+
inline uint64_t CurrentOffset() const { return m_Offset; }
inline const uint8_t* Data() const { return m_Buffer.data(); }
inline const uint8_t* GetData() const { return m_Buffer.data(); }
inline uint64_t Size() const { return m_Buffer.size(); }
inline uint64_t GetSize() const { return m_Buffer.size(); }
+ void Reset();
+
+ inline MemoryView GetView(uint64_t Offset = 0) const
+ {
+ MemoryView View(m_Buffer.data(), m_Offset);
+ View.RightChopInline(Offset);
+ return View;
+ }
+
+ inline MutableMemoryView GetMutableView(uint64_t Offset = 0)
+ {
+ MutableMemoryView View(m_Buffer.data(), m_Offset);
+ View.RightChopInline(Offset);
+ return View;
+ }
private:
RwLock m_Lock;
@@ -49,37 +66,6 @@ MakeMemoryView(const BinaryWriter& Stream)
}
/**
- * Non thread-safe stream writer
- */
-
-class SimpleBinaryWriter
-{
- static constexpr uint32_t DefaultBlockSize = 64;
-
-public:
- SimpleBinaryWriter(uint32_t BlockSize = DefaultBlockSize) : m_BlockSize(BlockSize), m_Offset{0} {}
- ~SimpleBinaryWriter() = default;
-
- void Write(MemoryView Memory);
- void Write(const void* Data, size_t Size) { Write(MemoryView(Data, Size)); }
- void Clear();
-
- inline uint64_t CurrentOffset() const { return m_Offset; }
-
- inline const uint8_t* Data() const { return m_Buffer.data(); }
- inline const uint8_t* GetData() const { return m_Buffer.data(); }
- inline uint64_t Size() const { return m_Buffer.size(); }
- inline uint64_t GetSize() const { return m_Buffer.size(); }
-
- MemoryView GetView() const { return MemoryView(m_Buffer.data(), m_Offset); }
-
-private:
- std::vector<uint8_t> m_Buffer;
- uint64_t m_Offset;
- uint32_t m_BlockSize;
-};
-
-/**
* Binary stream reader
*/
diff --git a/zencore/stream.cpp b/zencore/stream.cpp
index 36953363f..8faf90af2 100644
--- a/zencore/stream.cpp
+++ b/zencore/stream.cpp
@@ -26,25 +26,10 @@ BinaryWriter::Write(const void* data, size_t ByteCount, uint64_t Offset)
}
void
-SimpleBinaryWriter::Write(MemoryView Memory)
+BinaryWriter::Reset()
{
- const uint64_t NeededSize = m_Offset + Memory.GetSize();
-
- if (NeededSize > m_Buffer.size())
- {
- const size_t NewCapacity = RoundUp(NeededSize, m_BlockSize);
-
- m_Buffer.resize(NewCapacity);
- }
-
- memcpy(m_Buffer.data() + m_Offset, Memory.GetData(), Memory.GetSize());
-
- m_Offset += Memory.GetSize();
-}
+ RwLock::ExclusiveLockScope _(m_Lock);
-void
-SimpleBinaryWriter::Clear()
-{
m_Buffer.clear();
m_Offset = 0;
}