Grok  7.6.3
MemStream.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016-2021 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  * You should have received a copy of the GNU Affero General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  */
17 
18 #pragma once
19 namespace grk {
20 
21 #ifdef _WIN32
22 typedef void* grk_handle;
23 #else
24 typedef int32_t grk_handle;
25 #endif
26 
27 /*
28  * Callback function prototype for zero copy read function
29  */
30 typedef size_t (*grk_stream_zero_copy_read_fn)(void **p_buffer, size_t nb_bytes,
31  void *user_data);
32 
33 
34 struct MemStream {
35  MemStream(uint8_t *buffer, size_t offset, size_t length, bool owns);
36  MemStream();
37  ~MemStream() ;
38  uint8_t *buf;
39  size_t off;
40  size_t len;
41  grk_handle fd; // for file mapping
42  bool ownsBuffer;
43 };
44 
45 void set_up_mem_stream(grk_stream *l_stream, size_t len,
46  bool is_read_stream);
47 grk_stream * create_mem_stream(uint8_t *buf, size_t len, bool ownsBuffer,
48  bool is_read_stream);
49 size_t get_mem_stream_offset( grk_stream *stream);
50 
51 
52 }
grk_stream_set_read_function
GRK_API void GRK_CALLCONV grk_stream_set_read_function(grk_stream *stream, grk_stream_read_fn p_function)
Set the given function to be used as a read function.
Definition: BufferedStream.cpp:432
grk::MemStream::buf
uint8_t * buf
Definition: MemStream.h:38
grk::BufferedStream
Byte input-output stream.
Definition: BufferedStream.h:38
grk::MemStream::off
size_t off
Definition: MemStream.h:39
grk::seek_from_mem
static bool seek_from_mem(uint64_t nb_bytes, MemStream *src)
Definition: MemStream.cpp:89
grk::set_up_mem_stream
void set_up_mem_stream(grk_stream *l_stream, size_t len, bool is_read_stream)
Definition: MemStream.cpp:114
grk::get_mem_stream_offset
size_t get_mem_stream_offset(grk_stream *stream)
Definition: MemStream.cpp:127
grk::MemStream::ownsBuffer
bool ownsBuffer
Definition: MemStream.h:42
grk_stream_read_fn
size_t(* grk_stream_read_fn)(void *p_buffer, size_t nb_bytes, void *user_data)
Definition: grok.h:803
grk_stream_set_write_function
GRK_API void GRK_CALLCONV grk_stream_set_write_function(grk_stream *stream, grk_stream_write_fn p_function)
Set the given function to be used as a write function.
Definition: BufferedStream.cpp:446
grk::grk_handle
int32_t grk_handle
Definition: MemStream.h:24
grk::MemStream::~MemStream
~MemStream()
Definition: MemStream.cpp:29
grk::grk_stream_zero_copy_read_fn
size_t(* grk_stream_zero_copy_read_fn)(void **p_buffer, size_t nb_bytes, void *user_data)
Definition: MemStream.h:30
grk::grk_stream_set_zero_copy_read_function
static void grk_stream_set_zero_copy_read_function(grk_stream *stream, grk_stream_zero_copy_read_fn p_function)
Set the given function to be used as a zero copy read function.
Definition: MemStream.cpp:106
grk::zero_copy_read_from_mem
static size_t zero_copy_read_from_mem(void **p_buffer, size_t nb_bytes, MemStream *p_source_buffer)
Definition: MemStream.cpp:40
grk
Copyright (C) 2016-2021 Grok Image Compression Inc.
Definition: BitIO.cpp:23
GROK_STREAM_STATUS_INPUT
#define GROK_STREAM_STATUS_INPUT
Definition: BufferedStream.h:31
grk_includes.h
grk_stream_seek_fn
bool(* grk_stream_seek_fn)(uint64_t nb_bytes, void *user_data)
Definition: grok.h:817
grk::free_mem
static void free_mem(void *user_data)
Definition: MemStream.cpp:34
grk_stream_set_user_data
GRK_API void GRK_CALLCONV grk_stream_set_user_data(grk_stream *stream, void *data, grk_stream_free_user_data_fn p_function)
Set the given data to be used as a user data for the stream.
Definition: BufferedStream.cpp:455
grk::MemStream::MemStream
MemStream()
Definition: MemStream.cpp:27
grk_stream_write_fn
size_t(* grk_stream_write_fn)(void *p_buffer, size_t nb_bytes, void *user_data)
Definition: grok.h:811
grk_stream
void * grk_stream
Definition: grok.h:827
grk::create_mem_stream
grk_stream * create_mem_stream(uint8_t *buf, size_t len, bool ownsBuffer, bool is_read_stream)
Definition: MemStream.cpp:138
grk::read_from_mem
static size_t read_from_mem(void *p_buffer, size_t nb_bytes, MemStream *p_source_buffer)
Definition: MemStream.cpp:54
grk_stream_set_seek_function
GRK_API void GRK_CALLCONV grk_stream_set_seek_function(grk_stream *stream, grk_stream_seek_fn p_function)
Set the given function to be used as a seek function, the stream is then seekable.
Definition: BufferedStream.cpp:440
grk::MemStream::len
size_t len
Definition: MemStream.h:40
grk::MemStream::fd
grk_handle fd
Definition: MemStream.h:41
grk::write_to_mem
static size_t write_to_mem(void *dest, size_t nb_bytes, MemStream *src)
Definition: MemStream.cpp:78
grk_stream_set_user_data_length
GRK_API void GRK_CALLCONV grk_stream_set_user_data_length(grk_stream *stream, uint64_t data_length)
Set the length of the user data for the stream.
Definition: BufferedStream.cpp:463
grk::MemStream
Definition: MemStream.h:34