44 if (whence == SEEK_CUR) {
47 else if (whence == SEEK_SET) {
50 else if (whence == SEEK_END) {
51 new_pos = mem->
length + offset;
57 if (new_pos < 0 || new_pos > mem->
length) {
74 mem->
data = (
const char *)data;
Wrapper for reading from various sources (e.g. raw files, compressed files, memory....
bool BLI_mmap_read(BLI_mmap_file *file, void *dest, size_t offset, size_t length) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_mmap_free(BLI_mmap_file *file) ATTR_NONNULL(1)
BLI_mmap_file * BLI_mmap_open(int fd) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
size_t BLI_mmap_get_length(const BLI_mmap_file *file) ATTR_WARN_UNUSED_RESULT
Read Guarded memory(de)allocation.
static void memory_close_mmap(FileReader *reader)
static int64_t memory_read_mmap(FileReader *reader, void *buffer, size_t size)
static void memory_close_raw(FileReader *reader)
static off64_t memory_seek(FileReader *reader, off64_t offset, int whence)
FileReader * BLI_filereader_new_mmap(int filedes)
static int64_t memory_read_raw(FileReader *reader, void *buffer, size_t size)
FileReader * BLI_filereader_new_memory(const void *data, size_t len)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)