CodePorting.Translator Cs2Cpp
CodePorting.Translator.Cs2Cpp.Framework
brotli_stream.h
1
2#pragma once
3
4#include <system/exceptions.h>
5#include <system/io/stream.h>
6#include <system/io/compression/compression_level.h>
7#include <system/io/compression/compression_mode.h>
8
9//#include <system/io/compression/details/flush_type.h>
10
11namespace Aspose { namespace Brotli {
12
14class ASPOSECPP_SHARED_CLASS BrotliStream final : public System::IO::Stream
15{
17 RTTI_INFO(Aspose::Brotli::BrotliStream, ::System::BaseTypesInfo<System::IO::Stream>);
18
19public:
22
26 static ASPOSECPP_SHARED_API System::ArrayPtr<uint8_t> CompressBuffer(const System::ArrayPtr<uint8_t>& b);
30 static ASPOSECPP_SHARED_API size_t UncompressBuffer(const System::ArrayPtr<uint8_t>& compressed,
31 System::ArrayPtr<uint8_t>& destination);
32 BrotliStream() = delete;
33 BrotliStream(const BrotliStream&) = delete;
34
38 ASPOSECPP_SHARED_API BrotliStream(const System::IO::Stream::Ptr& stream,
39 System::IO::Compression::CompressionMode mode);
44 ASPOSECPP_SHARED_API BrotliStream(const System::IO::Stream::Ptr& stream,
45 System::IO::Compression::CompressionMode mode, bool leaveOpen);
50 ASPOSECPP_SHARED_API BrotliStream(const System::IO::Stream::Ptr& stream,
51 System::IO::Compression::CompressionLevel level, bool leaveOpen = false);
57 ASPOSECPP_SHARED_API BrotliStream(const System::IO::Stream::Ptr& stream,
58 System::IO::Compression::CompressionMode mode,
59 System::IO::Compression::CompressionLevel level, bool leaveOpen = false);
60
62 ASPOSECPP_SHARED_API ~BrotliStream();
63
69 ASPOSECPP_SHARED_API int32_t Read(const System::ArrayPtr<uint8_t>& buffer, int32_t offset, int32_t count) override;
75 ASPOSECPP_SHARED_API int32_t Read(const System::Details::ArrayView<uint8_t>& buffer, int32_t offset, int32_t count) override;
80 ASPOSECPP_SHARED_API void Write(const System::ArrayPtr<uint8_t>& buffer, int32_t offset, int32_t count) override;
85 ASPOSECPP_SHARED_API void Write(const System::Details::ArrayView<uint8_t>& buffer, int32_t offset, int32_t count) override;
90 ASPOSECPP_SHARED_API int64_t Seek(int64_t offset, System::IO::SeekOrigin origin) override;
93 ASPOSECPP_SHARED_API void SetLength(int64_t value) override;
95 ASPOSECPP_SHARED_API void Flush() override;
96
99 ASPOSECPP_SHARED_API System::StreamPtr get_BaseStream() const;
102 ASPOSECPP_SHARED_API bool get_CanSeek() const override;
105 ASPOSECPP_SHARED_API bool get_CanRead() const override;
108 ASPOSECPP_SHARED_API bool get_CanWrite() const override;
111 ASPOSECPP_SHARED_API void set_Position(int64_t value) override;
114 ASPOSECPP_SHARED_API int64_t get_Position() const override;
117 ASPOSECPP_SHARED_API int64_t get_Length() const override;
120 ASPOSECPP_SHARED_API void SetQuality(int quality);
123 ASPOSECPP_SHARED_API void SetMode(int mode);
126 ASPOSECPP_SHARED_API void SetWindow(int windowSize);
128 ASPOSECPP_SHARED_API void Close() override;
129
130private:
131 Stream::Ptr m_stream;
132 System::IO::Compression::CompressionMode m_mode;
134 System::ByteArrayPtr m_buffer = nullptr;
135 int m_bufferOffset = 0;
136 int m_bufferCount = 0;
137 bool m_leaveOpen;
138 bool m_disposed;
139 int m_lastDecoderState;
140 std::unique_ptr<void, std::function<const void(void*)>> m_encoderState;
141 std::unique_ptr<void, std::function<const void(void*)>> m_decoderState;
142
143 void Dispose(bool disposing) override;
144 void EnsureNotDisposed();
145 void ValidateParameters(System::Details::ArrayView<uint8_t> buffer, int offset, int count);
146 void FlushCompress(bool finish);
147 void WriteCore(const System::ArrayPtr<uint8_t>& buffer, int offset, int count, int operation);
148 void WriteCore(System::Details::ArrayView<uint8_t> buffer, int offset, int count, int operation);
149 int QualityFromCompressionLevel(System::IO::Compression::CompressionLevel level);
150};
151
152}} // namespace Aspose::Brotli
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
Aspose::Brotli::BrotliStream BrotliStream
An alias for Aspose::Brotli::BrotliStream.
Definition: brotli_stream.h:9
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