diff options
| author | Stefan Boberg <[email protected]> | 2021-09-28 21:01:03 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2021-09-28 21:27:00 +0200 |
| commit | 559147e7fe58fd5ddac3a9e0c042ee15074ca480 (patch) | |
| tree | 8bbd9061962f4bd83e66232bf0fb5bc223c89f0d /zencore/include | |
| parent | apply: Re-enabled environment variable setup for child processes (diff) | |
| download | zen-559147e7fe58fd5ddac3a9e0c042ee15074ca480.tar.xz zen-559147e7fe58fd5ddac3a9e0c042ee15074ca480.zip | |
Removing a bunch of no-longer-useful code from stream.h/cpp in preparation for a greater purge
Diffstat (limited to 'zencore/include')
| -rw-r--r-- | zencore/include/zencore/stream.h | 200 | ||||
| -rw-r--r-- | zencore/include/zencore/streamutil.h | 49 |
2 files changed, 29 insertions, 220 deletions
diff --git a/zencore/include/zencore/stream.h b/zencore/include/zencore/stream.h index a0e165bdc..bab349068 100644 --- a/zencore/include/zencore/stream.h +++ b/zencore/include/zencore/stream.h @@ -14,42 +14,16 @@ namespace zen { /** - * Basic byte stream interface - * - * This is intended as a minimal base class offering only the absolute minimum of functionality. - * - * IMPORTANT: To better support concurrency, this abstraction offers no "file pointer". Thus - * every read or write operation needs to specify the offset from which they wish to read. - * - * Most client code will likely want to use reader/writer classes like BinaryWriter/BinaryReader - * - */ -class OutStream : public RefCounted -{ -public: - virtual void Write(const void* Data, size_t ByteCount, uint64_t Offset) = 0; - virtual void Flush() = 0; -}; - -class InStream : public RefCounted -{ -public: - virtual void Read(void* DataPtr, size_t ByteCount, uint64_t Offset) = 0; - virtual uint64_t Size() const = 0; - uint64_t GetSize() const { return Size(); } -}; - -/** * Stream which writes into a growing memory buffer */ -class MemoryOutStream : public OutStream +class MemoryOutStream : public RefCounted { public: MemoryOutStream() = default; ~MemoryOutStream() = default; - virtual void Write(const void* DataPtr, size_t ByteCount, uint64_t Offset) override; - virtual void Flush() override; + void Write(const void* DataPtr, size_t ByteCount, uint64_t Offset); + void Flush(); 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(); } @@ -67,33 +41,13 @@ MakeMemoryView(const MemoryOutStream& Stream) } /** - * Stream which reads from a memory buffer - */ -class MemoryInStream : public InStream -{ -public: - MemoryInStream(const void* Buffer, size_t Size); - MemoryInStream(MemoryView View) : MemoryInStream(View.GetData(), View.GetSize()) {} - ~MemoryInStream() = default; - - virtual void Read(void* DataPtr, size_t ByteCount, uint64_t ReadOffset) override; - virtual uint64_t Size() const override { return m_Buffer.size(); } - inline const uint8_t* Data() const { return m_Buffer.data(); } - inline const uint8_t* GetData() const { return m_Buffer.data(); } - -private: - RwLock m_Lock; - std::vector<uint8_t> m_Buffer; -}; - -/** * Binary stream writer */ class BinaryWriter { public: - inline BinaryWriter(OutStream& Stream) : m_Stream(&Stream) {} + inline BinaryWriter(MemoryOutStream& Stream) : m_Stream(&Stream) {} ~BinaryWriter() = default; inline void Write(const void* DataPtr, size_t ByteCount) @@ -102,67 +56,33 @@ public: m_Offset += ByteCount; } - uint64_t CurrentOffset() const { return m_Offset; } + inline uint64_t CurrentOffset() const { return m_Offset; } private: - RefPtr<OutStream> m_Stream; - uint64_t m_Offset = 0; + RefPtr<MemoryOutStream> m_Stream; + uint64_t m_Offset = 0; }; -inline BinaryWriter& -operator<<(BinaryWriter& Writer, bool Value) -{ - Writer.Write(&Value, sizeof Value); - return Writer; -} -inline BinaryWriter& -operator<<(BinaryWriter& Writer, int8_t Value) -{ - Writer.Write(&Value, sizeof Value); - return Writer; -} -inline BinaryWriter& -operator<<(BinaryWriter& Writer, int16_t Value) -{ - Writer.Write(&Value, sizeof Value); - return Writer; -} -inline BinaryWriter& -operator<<(BinaryWriter& Writer, int32_t Value) -{ - Writer.Write(&Value, sizeof Value); - return Writer; -} -inline BinaryWriter& -operator<<(BinaryWriter& Writer, int64_t Value) -{ - Writer.Write(&Value, sizeof Value); - return Writer; -} -inline BinaryWriter& -operator<<(BinaryWriter& Writer, uint8_t Value) -{ - Writer.Write(&Value, sizeof Value); - return Writer; -} -inline BinaryWriter& -operator<<(BinaryWriter& Writer, uint16_t Value) -{ - Writer.Write(&Value, sizeof Value); - return Writer; -} -inline BinaryWriter& -operator<<(BinaryWriter& Writer, uint32_t Value) -{ - Writer.Write(&Value, sizeof Value); - return Writer; -} -inline BinaryWriter& -operator<<(BinaryWriter& Writer, uint64_t Value) +/** + * Stream which reads from a memory buffer + */ +class MemoryInStream : public RefCounted { - Writer.Write(&Value, sizeof Value); - return Writer; -} +public: + MemoryInStream(const void* Buffer, size_t Size); + MemoryInStream(MemoryView View) : MemoryInStream(View.GetData(), View.GetSize()) {} + ~MemoryInStream() = default; + + void Read(void* DataPtr, size_t ByteCount, uint64_t ReadOffset); + uint64_t Size() const { return m_Buffer.size(); } + uint64_t GetSize() const { return Size(); } + inline const uint8_t* Data() const { return m_Buffer.data(); } + inline const uint8_t* GetData() const { return m_Buffer.data(); } + +private: + RwLock m_Lock; + std::vector<uint8_t> m_Buffer; +}; /** * Binary stream reader @@ -171,7 +91,7 @@ operator<<(BinaryWriter& Writer, uint64_t Value) class BinaryReader { public: - inline BinaryReader(InStream& Stream) : m_Stream(&Stream) {} + inline BinaryReader(MemoryInStream& Stream) : m_Stream(&Stream) {} ~BinaryReader() = default; inline void Read(void* DataPtr, size_t ByteCount) @@ -196,8 +116,8 @@ public: inline uint64_t AvailableBytes() const { return m_Stream->Size() - m_Offset; } private: - RefPtr<InStream> m_Stream; - uint64_t m_Offset = 0; + RefPtr<MemoryInStream> m_Stream; + uint64_t m_Offset = 0; }; inline BinaryReader& @@ -255,68 +175,6 @@ operator>>(BinaryReader& Reader, uint64_t& Value) return Reader; } -/** - * Text stream writer - */ - -class TextWriter -{ -public: - ZENCORE_API TextWriter(OutStream& Stream); - ZENCORE_API ~TextWriter(); - - ZENCORE_API virtual void Write(const void* DataPtr, size_t ByteCount); - ZENCORE_API void Writef(const char* FormatString, ...); - - inline uint64_t CurrentOffset() const { return m_CurrentOffset; } - -private: - RefPtr<OutStream> m_Stream; - uint64_t m_CurrentOffset = 0; -}; - -ZENCORE_API TextWriter& operator<<(TextWriter& Writer, const char* Value); -ZENCORE_API TextWriter& operator<<(TextWriter& Writer, const std::string_view& Value); -ZENCORE_API TextWriter& operator<<(TextWriter& Writer, bool Value); -ZENCORE_API TextWriter& operator<<(TextWriter& Writer, int8_t Value); -ZENCORE_API TextWriter& operator<<(TextWriter& Writer, int16_t Value); -ZENCORE_API TextWriter& operator<<(TextWriter& Writer, int32_t Value); -ZENCORE_API TextWriter& operator<<(TextWriter& Writer, int64_t Value); -ZENCORE_API TextWriter& operator<<(TextWriter& Writer, uint8_t Value); -ZENCORE_API TextWriter& operator<<(TextWriter& Writer, uint16_t Value); -ZENCORE_API TextWriter& operator<<(TextWriter& Writer, uint32_t Value); -ZENCORE_API TextWriter& operator<<(TextWriter& Writer, uint64_t Value); - -class IndentTextWriter : public TextWriter -{ -public: - ZENCORE_API IndentTextWriter(OutStream& stream); - ZENCORE_API ~IndentTextWriter(); - - ZENCORE_API virtual void Write(const void* DataPtr, size_t ByteCount) override; - - inline void Indent(int Amount) { m_IndentAmount += Amount; } - - struct Scope - { - Scope(IndentTextWriter& Outer, int IndentAmount = 2) : m_Outer(Outer), m_IndentAmount(IndentAmount) - { - m_Outer.Indent(IndentAmount); - } - - ~Scope() { m_Outer.Indent(-m_IndentAmount); } - - private: - IndentTextWriter& m_Outer; - int m_IndentAmount; - }; - -private: - int m_IndentAmount = 0; - int m_LineCursor = 0; - char m_LineBuffer[2048]; -}; - void stream_forcelink(); // internal } // namespace zen diff --git a/zencore/include/zencore/streamutil.h b/zencore/include/zencore/streamutil.h index 190cd18eb..d9b6b5167 100644 --- a/zencore/include/zencore/streamutil.h +++ b/zencore/include/zencore/streamutil.h @@ -14,55 +14,6 @@ namespace zen { -ZENCORE_API BinaryWriter& operator<<(BinaryWriter& writer, const std::string_view& value); -ZENCORE_API BinaryReader& operator>>(BinaryReader& reader, std::string& value); - -ZENCORE_API BinaryWriter& operator<<(BinaryWriter& writer, const std::wstring_view& value); -ZENCORE_API BinaryReader& operator>>(BinaryReader& reader, std::wstring& value); -ZENCORE_API TextWriter& operator<<(TextWriter& writer, const std::wstring_view& value); - -inline BinaryWriter& -operator<<(BinaryWriter& writer, const SHA1& value) -{ - writer.Write(value.Hash, sizeof value.Hash); - return writer; -} -inline BinaryReader& -operator>>(BinaryReader& reader, SHA1& value) -{ - reader.Read(value.Hash, sizeof value.Hash); - return reader; -} -ZENCORE_API TextWriter& operator<<(TextWriter& writer, const zen::SHA1& value); - -inline BinaryWriter& -operator<<(BinaryWriter& writer, const BLAKE3& value) -{ - writer.Write(value.Hash, sizeof value.Hash); - return writer; -} -inline BinaryReader& -operator>>(BinaryReader& reader, BLAKE3& value) -{ - reader.Read(value.Hash, sizeof value.Hash); - return reader; -} -ZENCORE_API TextWriter& operator<<(TextWriter& writer, const BLAKE3& value); - -inline BinaryWriter& -operator<<(BinaryWriter& writer, const IoHash& value) -{ - writer.Write(value.Hash, sizeof value.Hash); - return writer; -} -inline BinaryReader& -operator>>(BinaryReader& reader, IoHash& value) -{ - reader.Read(value.Hash, sizeof value.Hash); - return reader; -} -ZENCORE_API TextWriter& operator<<(TextWriter& writer, const IoHash& value); - } // namespace zen ////////////////////////////////////////////////////////////////////////// |