1 | /* SPDX-License-Identifier: MIT OR MPL-2.0 OR LGPL-2.1-or-later OR GPL-2.0-or-later */ |
2 | /* Copyright 2010, SIL International, All rights reserved. */ |
3 | #pragma once |
4 | |
5 | #include <stddef.h> |
6 | |
7 | typedef unsigned char gr_uint8; |
8 | typedef gr_uint8 gr_byte; |
9 | typedef signed char gr_int8; |
10 | typedef unsigned short gr_uint16; |
11 | typedef short gr_int16; |
12 | typedef unsigned int gr_uint32; |
13 | typedef int gr_int32; |
14 | |
15 | enum gr_encform { |
16 | gr_utf8 = 1/*sizeof(uint8)*/, gr_utf16 = 2/*sizeof(uint16)*/, gr_utf32 = 4/*sizeof(uint32)*/ |
17 | }; |
18 | |
19 | |
20 | // Define API function declspec/attributes and how each supported compiler or OS |
21 | // allows us to specify them. |
22 | #if defined __GNUC__ |
23 | #define _gr2_and , |
24 | #define _gr2_tag_fn(a) __attribute__((a)) |
25 | #define _gr2_deprecated_flag deprecated |
26 | #define _gr2_export_flag visibility("default") |
27 | #define _gr2_import_flag visibility("default") |
28 | #define _gr2_static_flag visibility("hidden") |
29 | #endif |
30 | |
31 | #if defined _WIN32 || defined __CYGWIN__ |
32 | #if defined __GNUC__ // These three will be redefined for Windows |
33 | #undef _gr2_export_flag |
34 | #undef _gr2_import_flag |
35 | #undef _gr2_static_flag |
36 | #else // How MSVC sepcifies function level attributes adn deprecation |
37 | #define _gr2_and |
38 | #define _gr2_tag_fn(a) __declspec(a) |
39 | #define _gr2_deprecated_flag deprecated |
40 | #endif |
41 | #define _gr2_export_flag dllexport |
42 | #define _gr2_import_flag dllimport |
43 | #define _gr2_static_flag |
44 | #endif |
45 | |
46 | #if defined GRAPHITE2_STATIC |
47 | #define GR2_API _gr2_tag_fn(_gr2_static_flag) |
48 | #define GR2_DEPRECATED_API _gr2_tag_fn(_gr2_deprecated_flag _gr2_and _gr2_static_flag) |
49 | #elif defined GRAPHITE2_EXPORTING |
50 | #define GR2_API _gr2_tag_fn(_gr2_export_flag) |
51 | #define GR2_DEPRECATED_API _gr2_tag_fn(_gr2_deprecated_flag _gr2_and _gr2_export_flag) |
52 | #else |
53 | #define GR2_API _gr2_tag_fn(_gr2_import_flag) |
54 | #define GR2_DEPRECATED_API _gr2_tag_fn(_gr2_deprecated_flag _gr2_and _gr2_import_flag) |
55 | #endif |
56 | |