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
17namespace 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;
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
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 * getUserData(void)=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 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 uint8_t * getZeroCopyPtr()=0
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 ~IBufferedStream()=default