1 #ifndef _SD_MEMREADER_H
2 #define _SD_MEMREADER_H
3 
4 #include <stdint.h>
5 #include "shadowdive/internal/reader.h"
6 
7 typedef struct sd_mreader_t {
8     char *buf;
9     int owned;
10     long len;
11     long pos;
12 } sd_mreader;
13 
14 sd_mreader* sd_mreader_open(char *buf, long len);
15 sd_mreader* sd_mreader_open_from_reader(sd_reader *reader, int len);
16 void sd_mreader_close(sd_mreader *reader);
17 long sd_mreader_size(const sd_mreader *reader);
18 long sd_mreader_pos(const sd_mreader *reader);
19 void sd_mreader_xor(sd_mreader *reader, uint8_t key);
20 
21 int sd_mread_buf(sd_mreader *reader, char *buf, int len);
22 uint8_t sd_mread_ubyte(sd_mreader *reader);
23 uint16_t sd_mread_uword(sd_mreader *reader);
24 uint32_t sd_mread_udword(sd_mreader *reader);
25 int8_t sd_mread_byte(sd_mreader *reader);
26 int16_t sd_mread_word(sd_mreader *reader);
27 int32_t sd_mread_dword(sd_mreader *reader);
28 float sd_mread_float(sd_mreader *reader);
29 void sd_mskip(sd_mreader *reader, unsigned int nbytes);
30 
31 #endif // _SD_MEMREADER_H
32