Implicitly include config.h in all files
[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 <stdio.h>
33 #include <X11/Xdefs.h>
34 #include <X11/Xfuncproto.h>
35
36 extern void *
37 recalloc(void *ptr, size_t old_size, size_t new_size);
38
39 /*
40  * We sometimes malloc strings and then expose them as const char*'s. This
41  * macro is used when we free these strings in order to avoid -Wcast-qual
42  * errors.
43  */
44 #define UNCONSTIFY(const_ptr) ((void *)(uintptr_t)(const_ptr))
45
46 #define uTypedAlloc(t)              malloc(sizeof(t))
47 #define uTypedCalloc(n, t)          calloc((n), sizeof(t))
48 #define uTypedRealloc(pO, n, t)     realloc((pO), (n) * sizeof(t))
49 #define uTypedRecalloc(pO, o, n, t) recalloc((pO), (o) * sizeof(t), (n) * sizeof(t))
50
51 #define uDupString(s)          ((s) ? strdup(s) : NULL)
52 #define uStringText(s)         ((s) == NULL ? "<NullString>" : (s))
53 #define uStrCasePrefix(s1, s2) (strncasecmp((s1), (s2), strlen(s1)) == 0)
54
55 /***====================================================================***/
56
57 extern Bool
58 uSetErrorFile(char *name);
59
60 #define INFO                    uInformation
61
62 extern _X_ATTRIBUTE_PRINTF(1, 2) void
63 uInformation(const char *s, ...);
64
65 #define ACTION                  uAction
66
67 extern _X_ATTRIBUTE_PRINTF(1, 2) void
68 uAction(const char *s, ...);
69
70 #define WARN                    uWarning
71
72 extern _X_ATTRIBUTE_PRINTF(1, 2) void
73 uWarning(const char *s, ...);
74
75 #define ERROR                   uError
76
77 extern _X_ATTRIBUTE_PRINTF(1, 2) void
78 uError(const char *s, ...);
79
80 #define FATAL                   uFatalError
81
82 extern _X_ATTRIBUTE_PRINTF(1, 2) _X_NORETURN void
83 uFatalError(const char *s, ...);
84
85 /* WSGO stands for "Weird Stuff Going On" (wtf???) */
86 #define WSGO                    uInternalError
87
88 extern _X_ATTRIBUTE_PRINTF(1, 2) void
89 uInternalError(const char *s, ...);
90
91 #endif /* UTILS_H */