summaryrefslogtreecommitdiff
path: root/src/mem/io-stream.h
blob: ba3b6207aa8e409c5ab33c4decae23ea34a7be7d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#pragma once

#include <stddef.h>

struct mem_io;

struct mem_io_istream {
   size_t (*read)(const struct mem_io_istream *stream, void *ptr, const size_t size);
   void *backing;
};

struct mem_io_istream
mem_io_istream_from_file(FILE *file);

size_t
mem_io_write_from_stream(const struct mem_io *io, const struct mem_io_istream *stream, const size_t offset, const size_t size);

struct mem_io_ostream {
   size_t (*write)(const struct mem_io_ostream *stream, const void *ptr, const size_t size);
   void *backing;
};

struct mem_io_ostream
mem_io_ostream_from_file(FILE *file);

size_t
mem_io_read_to_stream(const struct mem_io *io, const struct mem_io_ostream *stream, const size_t offset, const size_t size);