Lines Matching refs:context
78 windows_file_open(SDL_RWops * context, const char *filename, const char *mode) in windows_file_open() argument
86 if (!context) in windows_file_open()
89 context->hidden.windowsio.h = INVALID_HANDLE_VALUE; /* mark this as unusable */ in windows_file_open()
90 context->hidden.windowsio.buffer.data = NULL; in windows_file_open()
91 context->hidden.windowsio.buffer.size = 0; in windows_file_open()
92 context->hidden.windowsio.buffer.left = 0; in windows_file_open()
112 context->hidden.windowsio.buffer.data = in windows_file_open()
114 if (!context->hidden.windowsio.buffer.data) { in windows_file_open()
134 SDL_free(context->hidden.windowsio.buffer.data); in windows_file_open()
135 context->hidden.windowsio.buffer.data = NULL; in windows_file_open()
139 context->hidden.windowsio.h = h; in windows_file_open()
140 context->hidden.windowsio.append = a_mode ? SDL_TRUE : SDL_FALSE; in windows_file_open()
146 windows_file_size(SDL_RWops * context) in windows_file_size() argument
150 if (!context || context->hidden.windowsio.h == INVALID_HANDLE_VALUE) { in windows_file_size()
154 if (!GetFileSizeEx(context->hidden.windowsio.h, &size)) { in windows_file_size()
162 windows_file_seek(SDL_RWops * context, Sint64 offset, int whence) in windows_file_seek() argument
167 if (!context || context->hidden.windowsio.h == INVALID_HANDLE_VALUE) { in windows_file_seek()
172 if (whence == RW_SEEK_CUR && context->hidden.windowsio.buffer.left) { in windows_file_seek()
173 offset -= (long)context->hidden.windowsio.buffer.left; in windows_file_seek()
175 context->hidden.windowsio.buffer.left = 0; in windows_file_seek()
192 …if (!SetFilePointerEx(context->hidden.windowsio.h, windowsoffset, &windowsoffset, windowswhence)) { in windows_file_seek()
199 windows_file_read(SDL_RWops * context, void *ptr, size_t size, size_t maxnum) in windows_file_read() argument
208 if (!context || context->hidden.windowsio.h == INVALID_HANDLE_VALUE in windows_file_read()
212 if (context->hidden.windowsio.buffer.left > 0) { in windows_file_read()
213 void *data = (char *) context->hidden.windowsio.buffer.data + in windows_file_read()
214 context->hidden.windowsio.buffer.size - in windows_file_read()
215 context->hidden.windowsio.buffer.left; in windows_file_read()
217 SDL_min(total_need, context->hidden.windowsio.buffer.left); in windows_file_read()
219 context->hidden.windowsio.buffer.left -= read_ahead; in windows_file_read()
231 (context->hidden.windowsio.h, context->hidden.windowsio.buffer.data, in windows_file_read()
237 SDL_memcpy(ptr, context->hidden.windowsio.buffer.data, read_ahead); in windows_file_read()
238 context->hidden.windowsio.buffer.size = byte_read; in windows_file_read()
239 context->hidden.windowsio.buffer.left = byte_read - read_ahead; in windows_file_read()
243 (context->hidden.windowsio.h, ptr, (DWORD)total_need, &byte_read, NULL)) { in windows_file_read()
253 windows_file_write(SDL_RWops * context, const void *ptr, size_t size, in windows_file_write() argument
263 if (!context || context->hidden.windowsio.h == INVALID_HANDLE_VALUE in windows_file_write()
267 if (context->hidden.windowsio.buffer.left) { in windows_file_write()
268 SetFilePointer(context->hidden.windowsio.h, in windows_file_write()
269 -(LONG)context->hidden.windowsio.buffer.left, NULL, in windows_file_write()
271 context->hidden.windowsio.buffer.left = 0; in windows_file_write()
275 if (context->hidden.windowsio.append) { in windows_file_write()
276 if (SetFilePointer(context->hidden.windowsio.h, 0L, NULL, FILE_END) == in windows_file_write()
284 (context->hidden.windowsio.h, ptr, (DWORD)total_bytes, &byte_written, NULL)) { in windows_file_write()
294 windows_file_close(SDL_RWops * context) in windows_file_close() argument
297 if (context) { in windows_file_close()
298 if (context->hidden.windowsio.h != INVALID_HANDLE_VALUE) { in windows_file_close()
299 CloseHandle(context->hidden.windowsio.h); in windows_file_close()
300 context->hidden.windowsio.h = INVALID_HANDLE_VALUE; /* to be sure */ in windows_file_close()
302 SDL_free(context->hidden.windowsio.buffer.data); in windows_file_close()
303 context->hidden.windowsio.buffer.data = NULL; in windows_file_close()
304 SDL_FreeRW(context); in windows_file_close()
351 stdio_size(SDL_RWops * context) in stdio_size() argument
355 pos = SDL_RWseek(context, 0, RW_SEEK_CUR); in stdio_size()
359 size = SDL_RWseek(context, 0, RW_SEEK_END); in stdio_size()
361 SDL_RWseek(context, pos, RW_SEEK_SET); in stdio_size()
366 stdio_seek(SDL_RWops * context, Sint64 offset, int whence) in stdio_seek() argument
390 if (fseek(context->hidden.stdio.fp, (fseek_off_t)offset, stdiowhence) == 0) { in stdio_seek()
391 Sint64 pos = ftell(context->hidden.stdio.fp); in stdio_seek()
401 stdio_read(SDL_RWops * context, void *ptr, size_t size, size_t maxnum) in stdio_read() argument
405 nread = fread(ptr, size, maxnum, context->hidden.stdio.fp); in stdio_read()
406 if (nread == 0 && ferror(context->hidden.stdio.fp)) { in stdio_read()
413 stdio_write(SDL_RWops * context, const void *ptr, size_t size, size_t num) in stdio_write() argument
417 nwrote = fwrite(ptr, size, num, context->hidden.stdio.fp); in stdio_write()
418 if (nwrote == 0 && ferror(context->hidden.stdio.fp)) { in stdio_write()
425 stdio_close(SDL_RWops * context) in stdio_close() argument
428 if (context) { in stdio_close()
429 if (context->hidden.stdio.autoclose) { in stdio_close()
431 if (fclose(context->hidden.stdio.fp) != 0) { in stdio_close()
435 SDL_FreeRW(context); in stdio_close()
444 mem_size(SDL_RWops * context) in mem_size() argument
446 return (Sint64)(context->hidden.mem.stop - context->hidden.mem.base); in mem_size()
450 mem_seek(SDL_RWops * context, Sint64 offset, int whence) in mem_seek() argument
456 newpos = context->hidden.mem.base + offset; in mem_seek()
459 newpos = context->hidden.mem.here + offset; in mem_seek()
462 newpos = context->hidden.mem.stop + offset; in mem_seek()
467 if (newpos < context->hidden.mem.base) { in mem_seek()
468 newpos = context->hidden.mem.base; in mem_seek()
470 if (newpos > context->hidden.mem.stop) { in mem_seek()
471 newpos = context->hidden.mem.stop; in mem_seek()
473 context->hidden.mem.here = newpos; in mem_seek()
474 return (Sint64)(context->hidden.mem.here - context->hidden.mem.base); in mem_seek()
478 mem_read(SDL_RWops * context, void *ptr, size_t size, size_t maxnum) in mem_read() argument
489 mem_available = (context->hidden.mem.stop - context->hidden.mem.here); in mem_read()
494 SDL_memcpy(ptr, context->hidden.mem.here, total_bytes); in mem_read()
495 context->hidden.mem.here += total_bytes; in mem_read()
501 mem_write(SDL_RWops * context, const void *ptr, size_t size, size_t num) in mem_write() argument
503 if ((context->hidden.mem.here + (num * size)) > context->hidden.mem.stop) { in mem_write()
504 num = (context->hidden.mem.stop - context->hidden.mem.here) / size; in mem_write()
506 SDL_memcpy(context->hidden.mem.here, ptr, num * size); in mem_write()
507 context->hidden.mem.here += num * size; in mem_write()
512 mem_writeconst(SDL_RWops * context, const void *ptr, size_t size, size_t num) in mem_writeconst() argument
519 mem_close(SDL_RWops * context) in mem_close() argument
521 if (context) { in mem_close()
522 SDL_FreeRW(context); in mem_close()
784 SDL_RWsize(SDL_RWops *context) in SDL_RWsize() argument
786 return context->size(context); in SDL_RWsize()
790 SDL_RWseek(SDL_RWops *context, Sint64 offset, int whence) in SDL_RWseek() argument
792 return context->seek(context, offset, whence); in SDL_RWseek()
796 SDL_RWtell(SDL_RWops *context) in SDL_RWtell() argument
798 return context->seek(context, 0, RW_SEEK_CUR); in SDL_RWtell()
802 SDL_RWread(SDL_RWops *context, void *ptr, size_t size, size_t maxnum) in SDL_RWread() argument
804 return context->read(context, ptr, size, maxnum); in SDL_RWread()
808 SDL_RWwrite(SDL_RWops *context, const void *ptr, size_t size, size_t num) in SDL_RWwrite() argument
810 return context->write(context, ptr, size, num); in SDL_RWwrite()
814 SDL_RWclose(SDL_RWops *context) in SDL_RWclose() argument
816 return context->close(context); in SDL_RWclose()