Grok  10.0.3
IBufferedStream.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016-2022 Grok Image Compression Inc.
3  *
4  * This source code is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Affero General Public License, version 3,
6  * as published by the Free Software Foundation.
7  *
8  * This source code is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU Affero General Public License for more details.
12  *
13  */
14 
15 #pragma once
16 
17 namespace grk
18 {
20 {
21  virtual ~IBufferedStream() = default;
22 
23  virtual uint32_t getStatus(void) = 0;
24  virtual void* getUserData(void) = 0;
25  virtual void setUserData(void* data, grk_stream_free_user_data_fn freeUserDataFun) = 0;
26  virtual void setUserDataLength(uint64_t len) = 0;
27  virtual void setReadFunction(grk_stream_read_fn fn) = 0;
29  virtual void setWriteFunction(grk_stream_write_fn fn) = 0;
30  virtual void setSeekFunction(grk_stream_seek_fn fn) = 0;
31 
32  virtual bool supportsZeroCopy() = 0;
33  virtual uint8_t* getZeroCopyPtr() = 0;
44  virtual size_t read(uint8_t* buffer, size_t p_size) = 0;
45 
46  // low level write methods
47  virtual bool writeShort(uint16_t value) = 0;
48  virtual bool write24(uint32_t value) = 0;
49  virtual bool writeInt(uint32_t value) = 0;
50  virtual bool write64(uint64_t value) = 0;
51 
52  virtual bool writeByte(uint8_t value) = 0;
60  virtual size_t writeBytes(const uint8_t* buffer, size_t p_size) = 0;
61 
66  virtual bool flush() = 0;
67 
74  virtual bool skip(int64_t p_size) = 0;
75 
80  virtual uint64_t tell(void) = 0;
81 
86  virtual uint64_t numBytesLeft(void) = 0;
87 
94  virtual bool seek(uint64_t offset) = 0;
95 
102  virtual bool hasSeek() = 0;
103 
104  virtual void setFormat(GRK_CODEC_FORMAT format) = 0;
105  virtual GRK_CODEC_FORMAT getFormat(void) = 0;
106 };
107 
108 } // namespace grk
enum _GRK_CODEC_FORMAT GRK_CODEC_FORMAT
Supported JPEG 2000 formats.
size_t(* grk_stream_read_fn)(uint8_t *buffer, size_t numBytes, void *user_data)
Definition: grok_private.h:29
bool(* grk_stream_seek_fn)(uint64_t numBytes, void *user_data)
Definition: grok_private.h:38
void(* grk_stream_free_user_data_fn)(void *user_data)
Definition: grok_private.h:42
size_t(* grk_stream_write_fn)(const uint8_t *buffer, size_t numBytes, void *user_data)
Definition: grok_private.h:34
Copyright (C) 2016-2022 Grok Image Compression Inc.
Definition: ICacheable.h:20
size_t(* grk_stream_zero_copy_read_fn)(void **buffer, size_t numBytes, void *user_data)
Definition: MemStream.h:30
HWY_DLLEXPORT HWY_NORETURN void int const char * format
Definition: base.h:848
Definition: IBufferedStream.h:20
virtual void setReadFunction(grk_stream_read_fn fn)=0
virtual void setFormat(GRK_CODEC_FORMAT format)=0
virtual void setWriteFunction(grk_stream_write_fn fn)=0
virtual bool write64(uint64_t value)=0
virtual uint8_t * getZeroCopyPtr()=0
virtual uint32_t getStatus(void)=0
virtual void setUserDataLength(uint64_t len)=0
virtual bool writeInt(uint32_t value)=0
virtual bool supportsZeroCopy()=0
virtual size_t read(uint8_t *buffer, size_t p_size)=0
Reads some bytes from the stream.
virtual bool skip(int64_t p_size)=0
Skip bytes in stream, forward or reverse.
virtual uint64_t numBytesLeft(void)=0
Get number of bytes left before end of the stream.
virtual GRK_CODEC_FORMAT getFormat(void)=0
virtual void setSeekFunction(grk_stream_seek_fn fn)=0
virtual bool hasSeek()=0
Check if stream is seekable.
virtual bool seek(uint64_t offset)=0
Seek to absolute offset in stream.
virtual uint64_t tell(void)=0
Tell byte offset in stream (similar to ftell).
virtual size_t writeBytes(const uint8_t *buffer, size_t p_size)=0
Write bytes to the stream.
virtual bool flush()=0
Flush write stream to disk.
virtual bool writeByte(uint8_t value)=0
virtual void setZeroCopyReadFunction(grk_stream_zero_copy_read_fn fn)=0
virtual void setUserData(void *data, grk_stream_free_user_data_fn freeUserDataFun)=0
virtual bool write24(uint32_t value)=0
virtual bool writeShort(uint16_t value)=0
virtual void * getUserData(void)=0
virtual ~IBufferedStream()=default