mikroSDK Reference Manual
lv_types.h
Go to the documentation of this file.
1
6#ifndef LV_TYPES_H
7#define LV_TYPES_H
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
13/*********************
14 * INCLUDES
15 *********************/
16#include <stdint.h>
17
18/*********************
19 * DEFINES
20 *********************/
21
22// If __UINTPTR_MAX__ or UINTPTR_MAX are available, use them to determine arch size
23#if defined(__UINTPTR_MAX__) && __UINTPTR_MAX__ > 0xFFFFFFFF
24#define LV_ARCH_64
25
26#elif defined(UINTPTR_MAX) && UINTPTR_MAX > 0xFFFFFFFF
27#define LV_ARCH_64
28
29// Otherwise use compiler-dependent means to determine arch size
30#elif defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__) || defined (__aarch64__)
31#define LV_ARCH_64
32
33#endif
34
35/**********************
36 * TYPEDEFS
37 **********************/
38
42enum {
43 LV_RES_INV = 0, /*Typically indicates that the object is deleted (become invalid) in the action
44 function or an operation was failed*/
45 LV_RES_OK, /*The object is valid (no deleted) after the action*/
46};
47typedef uint8_t lv_res_t;
48
49#if defined(__cplusplus) || __STDC_VERSION__ >= 199901L
50// If c99 or newer, use the definition of uintptr_t directly from <stdint.h>
51typedef uintptr_t lv_uintptr_t;
52
53#else
54
55// Otherwise, use the arch size determination
56#ifdef LV_ARCH_64
57typedef uint64_t lv_uintptr_t;
58#else
59typedef uint32_t lv_uintptr_t;
60#endif
61
62#endif
63
64/**********************
65 * GLOBAL PROTOTYPES
66 **********************/
67
68/**********************
69 * MACROS
70 **********************/
71
72#define LV_UNUSED(x) ((void)x)
73
74#define _LV_CONCAT(x, y) x ## y
75#define LV_CONCAT(x, y) _LV_CONCAT(x, y)
76
77#define _LV_CONCAT3(x, y, z) x ## y ## z
78#define LV_CONCAT3(x, y, z) _LV_CONCAT3(x, y, z)
79
80#if defined(PYCPARSER) || defined(__CC_ARM)
81#define LV_FORMAT_ATTRIBUTE(fmtstr, vararg)
82#elif defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 4) || __GNUC__ > 4)
83#define LV_FORMAT_ATTRIBUTE(fmtstr, vararg) __attribute__((format(gnu_printf, fmtstr, vararg)))
84#elif (defined(__clang__) || defined(__GNUC__) || defined(__GNUG__))
85#define LV_FORMAT_ATTRIBUTE(fmtstr, vararg) __attribute__((format(printf, fmtstr, vararg)))
86#else
87#define LV_FORMAT_ATTRIBUTE(fmtstr, vararg)
88#endif
89
90#ifdef __cplusplus
91} /*extern "C"*/
92#endif
93
94#endif /*LV_TYPES_H*/