CodePorting.Translator Cs2Cpp
CodePorting.Translator.Cs2Cpp.Framework
zlib_base_stream.h
1
2#pragma once
3
4#include <system/io/stream.h>
5#include <system/io/seekorigin.h>
6#include <array>
7
8#include <system/io/compression/details/zlib_codec.h>
9#include <system/io/compression/details/zlib_constants.h>
10#include <system/io/compression/details/crc32.h>
11
12namespace Aspose { namespace Zip {
13
15class ASPOSECPP_SHARED_CLASS ZlibBaseStream : public System::IO::Stream
16{
18 RTTI_INFO(Aspose::Zip::ZlibBaseStream, ::System::BaseTypesInfo<System::IO::Stream>);
19
20public:
23
24 ZlibBaseStream() = delete;
25 ZlibBaseStream(const ZlibBaseStream&) = delete;
26
34 ASPOSECPP_SHARED_API ZlibBaseStream(const System::IO::Stream::Ptr& stream, CompressionMode mode,
35 CompressionLevel level, ZlibStreamFlavor flavor, bool leaveOpen,
36 bool initNow = true);
37
39 virtual ASPOSECPP_SHARED_API ~ZlibBaseStream();
40
43 virtual ASPOSECPP_SHARED_API FlushType get_FlushMode() const;
46 virtual ASPOSECPP_SHARED_API void set_FlushMode(FlushType value);
47
50 virtual ASPOSECPP_SHARED_API int get_BufferSize();
53 virtual ASPOSECPP_SHARED_API void set_BufferSize(int value);
54
57 virtual ASPOSECPP_SHARED_API CompressionStrategy get_Strategy() const;
60 virtual ASPOSECPP_SHARED_API void set_Strategy(CompressionStrategy value);
61
64 virtual ASPOSECPP_SHARED_API int64_t get_TotalIn();
67 virtual ASPOSECPP_SHARED_API int64_t get_TotalOut();
68
70 ASPOSECPP_SHARED_API bool get_CanRead() const override;
72 ASPOSECPP_SHARED_API bool get_CanSeek() const override;
74 ASPOSECPP_SHARED_API bool get_CanWrite() const override;
76 ASPOSECPP_SHARED_API int64_t get_Length() const override;
78 ASPOSECPP_SHARED_API int64_t get_Position() const override;
80 ASPOSECPP_SHARED_API void set_Position(int64_t value) override;
82 ASPOSECPP_SHARED_API void Close() override;
84 ASPOSECPP_SHARED_API void Flush() override;
86 ASPOSECPP_SHARED_API int32_t Read(const System::ArrayPtr<uint8_t>& buffer, int32_t offset, int32_t count) override;
88 ASPOSECPP_SHARED_API int32_t Read(const System::Span<uint8_t>& buffer) override;
90 ASPOSECPP_SHARED_API int64_t Seek(int64_t offset, System::IO::SeekOrigin origin) override;
92 ASPOSECPP_SHARED_API void SetLength(int64_t value) override;
94 ASPOSECPP_SHARED_API void Write(const System::ArrayPtr<uint8_t>& buffer, int32_t offset, int32_t count) override;
96 ASPOSECPP_SHARED_API void Write(const System::ReadOnlySpan<uint8_t>& buffer) override;
98 ASPOSECPP_SHARED_API int32_t Read(const System::Details::ArrayView<uint8_t>& buffer, int32_t offset,
99 int32_t count) override;
101 ASPOSECPP_SHARED_API void Write(const System::Details::ArrayView<uint8_t>& buffer, int32_t offset, int32_t count) override;
102
106 static ASPOSECPP_SHARED_API int FlavorToWinBits(ZlibStreamFlavor flavor);
107
108protected:
109
111 ZlibCodec::Ptr m_codec;
113 Stream::Ptr m_stream;
115 CompressionMode m_mode;
117 CompressionLevel m_level;
119 ZlibStreamFlavor m_flavor;
121 bool m_leaveOpen;
123 FlushType m_flushType;
125 CompressionStrategy m_strategy;
127 CRC32::Ptr m_crc32;
129 int m_bufferSize;
131 System::ByteArrayPtr m_buffer;
132
135 ASPOSECPP_SHARED_API bool IsCompress() const;
140 static ASPOSECPP_SHARED_API System::ByteArrayPtr CompressString(const System::String& str, ZlibStreamFlavor flavor);
145 static ASPOSECPP_SHARED_API System::ByteArrayPtr CompressBuffer(const System::ByteArrayPtr& buffer, ZlibStreamFlavor flavor);
150 static ASPOSECPP_SHARED_API System::String UncompressString(const System::ByteArrayPtr& compressed, ZlibStreamFlavor flavor);
155 static ASPOSECPP_SHARED_API System::ByteArrayPtr UncompressBuffer(const System::ByteArrayPtr& compressed, ZlibStreamFlavor flavor);
159 virtual void OnUpdateCodec(const ZlibCodec::Ptr& current_codec, const ZlibCodec::Ptr& new_codec)
160 {
161 ASPOSE_UNUSED(current_codec);
162 ASPOSE_UNUSED(new_codec);
163 }
164
165private:
167 void UpdateCodec();
169 void Init();
171 void SoftFinish() const /*noexcept*/;
172
173};
174
175}} // namespace Aspose::Zip
A base class for a variety of stream implementations. Objects of this class should only be allocated ...
Definition: stream.h:26
Forward to use within Span class.
Definition: span.h:404
Pointer class to wrap types being allocated on heap. Use it to manage memory for classes inheriting O...
Definition: smart_ptr.h:180
Represents a contiguous region of arbitrary memory similar to C++20's std::span.
Definition: span.h:364
String class used across the library. Is a substitute for C# System.String when translating code....
Definition: string.h:125
SeekOrigin
Specifies the reference position in the stream relative to which the position to seek to is specified...
Definition: seekorigin.h:11