99ef322f72fc6f8e11be8f94edd4ef7506957d4f
[pcsx_rearmed.git] / deps / libchdr / include / libchdr / coretypes.h
1 #ifndef __CORETYPES_H__
2 #define __CORETYPES_H__
3
4 #include <stdint.h>
5 #include <stdio.h>
6
7 #ifdef USE_LIBRETRO_VFS
8 #include <streams/file_stream_transforms.h>
9 #endif
10
11 #define ARRAY_LENGTH(x) (sizeof(x)/sizeof(x[0]))
12
13 typedef uint64_t UINT64;
14 typedef uint32_t UINT32;
15 typedef uint16_t UINT16;
16 typedef uint8_t UINT8;
17
18 typedef int64_t INT64;
19 typedef int32_t INT32;
20 typedef int16_t INT16;
21 typedef int8_t INT8;
22
23 #ifdef USE_LIBRETRO_VFS
24 #define core_file RFILE
25 #define core_fopen(file) rfopen(file, "rb")
26 #define core_fseek rfseek
27 #define core_ftell rftell
28 #define core_fread(fc, buff, len) rfread(buff, 1, len, fc)
29 #define core_fclose rfclose
30 #else
31 #define core_file FILE
32 #define core_fopen(file) fopen(file, "rb")
33 #if defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(__WIN64__)
34         #define core_fseek _fseeki64
35         #define core_ftell _ftelli64
36 #elif defined(_LARGEFILE_SOURCE) && defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64
37         #define core_fseek fseeko64
38         #define core_ftell ftello64
39 #else
40         #define core_fseek fseeko
41         #define core_ftell ftello
42 #endif
43 #define core_fread(fc, buff, len) fread(buff, 1, len, fc)
44 #define core_fclose fclose
45 #endif
46
47 #ifdef __GNUC__
48 __attribute__ ((unused))
49 #endif
50 static UINT64 core_fsize(core_file *f)
51 {
52     UINT64 rv;
53     UINT64 p = core_ftell(f);
54     core_fseek(f, 0, SEEK_END);
55     rv = core_ftell(f);
56     core_fseek(f, p, SEEK_SET);
57     return rv;
58 }
59
60 #endif