Use xkb_group_index_t for group variables throughout
[platform/upstream/libxkbcommon.git] / src / utils.h
1 #ifndef UTILS_H
2 #define UTILS_H 1
3
4 /*\
5  *
6  *                          COPYRIGHT 1990
7  *                    DIGITAL EQUIPMENT CORPORATION
8  *                       MAYNARD, MASSACHUSETTS
9  *                        ALL RIGHTS RESERVED.
10  *
11  * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
12  * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
13  * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE
14  * FOR ANY PURPOSE.  IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED
15  * WARRANTY.
16  *
17  * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT
18  * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN
19  * ADDITION TO THAT SET FORTH ABOVE.
20  *
21  * Permission to use, copy, modify, and distribute this software and its
22  * documentation for any purpose and without fee is hereby granted, provided
23  * that the above copyright notice appear in all copies and that both that
24  * copyright notice and this permission notice appear in supporting
25  * documentation, and that the name of Digital Equipment Corporation not be
26  * used in advertising or publicity pertaining to distribution of the
27  * software without specific, written prior permission.
28  \*/
29
30 /***====================================================================***/
31
32 #include <stdbool.h>
33 #include <stdio.h>
34 #include <stdlib.h>
35
36 #include <X11/Xfuncproto.h>
37
38 /*
39  * We sometimes malloc strings and then expose them as const char*'s. This
40  * macro is used when we free these strings in order to avoid -Wcast-qual
41  * errors.
42  */
43 #define UNCONSTIFY(const_ptr)  ((void *) (uintptr_t) (const_ptr))
44
45 #define uTypedAlloc(t)         ((t *) malloc(sizeof(t)))
46 #define uTypedCalloc(n, t)     ((t *) calloc((n), sizeof(t)))
47
48 #define uDupString(s)          ((s) ? strdup(s) : NULL)
49 #define uStringText(s)         ((s) == NULL ? "<NullString>" : (s))
50 #define uStrCasePrefix(s1, s2) (strncasecmp((s1), (s2), strlen(s1)) == 0)
51
52 /***====================================================================***/
53
54 extern bool
55 uSetErrorFile(char *name);
56
57 #define INFO uInformation
58
59 extern _X_ATTRIBUTE_PRINTF(1, 2) void
60 uInformation(const char *s, ...);
61
62 #define ACTION uAction
63
64 extern _X_ATTRIBUTE_PRINTF(1, 2) void
65 uAction(const char *s, ...);
66
67 #define WARN uWarning
68
69 extern _X_ATTRIBUTE_PRINTF(1, 2) void
70 uWarning(const char *s, ...);
71
72 #define ERROR uError
73
74 extern _X_ATTRIBUTE_PRINTF(1, 2) void
75 uError(const char *s, ...);
76
77 #define FATAL uFatalError
78
79 extern _X_ATTRIBUTE_PRINTF(1, 2) _X_NORETURN void
80 uFatalError(const char *s, ...);
81
82 /* WSGO stands for "Weird Stuff Going On" (wtf???) */
83 #define WSGO uInternalError
84
85 extern _X_ATTRIBUTE_PRINTF(1, 2) void
86 uInternalError(const char *s, ...);
87
88 #endif /* UTILS_H */