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