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 int64_t Seek(int64_t offset, System::IO::SeekOrigin origin) override;
90 ASPOSECPP_SHARED_API void SetLength(int64_t value) override;
92 ASPOSECPP_SHARED_API void Write(const System::ArrayPtr<uint8_t>& buffer, int32_t offset, int32_t count) override;
94 ASPOSECPP_SHARED_API int32_t Read(const System::Details::ArrayView<uint8_t>& buffer, int32_t offset, int32_t count) override;
96 ASPOSECPP_SHARED_API void Write(const System::Details::ArrayView<uint8_t>& buffer, int32_t offset, int32_t count) override;
97
101 static ASPOSECPP_SHARED_API int FlavorToWinBits(ZlibStreamFlavor flavor);
102
103protected:
104
106 ZlibCodec::Ptr m_codec;
108 Stream::Ptr m_stream;
110 CompressionMode m_mode;
112 CompressionLevel m_level;
114 ZlibStreamFlavor m_flavor;
116 bool m_leaveOpen;
118 FlushType m_flushType;
120 CompressionStrategy m_strategy;
122 CRC32::Ptr m_crc32;
124 int m_bufferSize;
126 System::ByteArrayPtr m_buffer;
127
130 ASPOSECPP_SHARED_API bool IsCompress() const;
135 static ASPOSECPP_SHARED_API System::ByteArrayPtr CompressString(const System::String& str, ZlibStreamFlavor flavor);
140 static ASPOSECPP_SHARED_API System::ByteArrayPtr CompressBuffer(const System::ByteArrayPtr& buffer, ZlibStreamFlavor flavor);
145 static ASPOSECPP_SHARED_API System::String UncompressString(const System::ByteArrayPtr& compressed, ZlibStreamFlavor flavor);
150 static ASPOSECPP_SHARED_API System::ByteArrayPtr UncompressBuffer(const System::ByteArrayPtr& compressed, ZlibStreamFlavor flavor);
154 virtual void OnUpdateCodec(const ZlibCodec::Ptr& current_codec, const ZlibCodec::Ptr& new_codec)
155 {
156 ASPOSE_UNUSED(current_codec);
157 ASPOSE_UNUSED(new_codec);
158 }
159
160private:
162 void UpdateCodec();
164 void Init();
166 void SoftFinish() const /*noexcept*/;
167
168};
169
170}} // namespace Aspose::Zip
A base class for a variety of stream implementations. Objects of this class should only be allocated ...
Definition: stream.h:24
Pointer class to wrap types being allocated on heap. Use it to manage memory for classes inheriting O...
Definition: smart_ptr.h:180
String class used across the library. Is a substitute for C# System.String when translating code....
Definition: string.h:122
CompressionLevel
Specifies values that indicate whether a compression operation emphasizes speed or compression size.
Definition: compression_level.h:8
SeekOrigin
Specifies the reference position in the stream relative to which the position to seek to is specified...
Definition: seekorigin.h:11