cmocka  1.1.5
Unit testing library with mock support
Loading...
Searching...
No Matches
cmocka_private.h
1/*
2 * Copyright 2008 Google Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef CMOCKA_PRIVATE_H_
18#define CMOCKA_PRIVATE_H_
19
20#ifdef HAVE_CONFIG_H
21#include "config.h"
22#endif
23
24#include <stdint.h>
25
26#ifdef _WIN32
27#include <windows.h>
28
29# ifdef _MSC_VER
30# include <stdio.h> /* _snprintf */
31
32# undef inline
33# define inline __inline
34
35# ifndef va_copy
36# define va_copy(dest, src) (dest = src)
37# endif
38
39# define strcasecmp _stricmp
40# define strncasecmp _strnicmp
41
42# if defined(HAVE__SNPRINTF_S)
43# undef snprintf
44# define snprintf(d, n, ...) _snprintf_s((d), (n), _TRUNCATE, __VA_ARGS__)
45# else /* HAVE__SNPRINTF_S */
46# if defined(HAVE__SNPRINTF)
47# undef snprintf
48# define snprintf _snprintf
49# else /* HAVE__SNPRINTF */
50# if !defined(HAVE_SNPRINTF)
51# error "no snprintf compatible function found"
52# endif /* HAVE_SNPRINTF */
53# endif /* HAVE__SNPRINTF */
54# endif /* HAVE__SNPRINTF_S */
55
56# if defined(HAVE__VSNPRINTF_S)
57# undef vsnprintf
58# define vsnprintf(s, n, f, v) _vsnprintf_s((s), (n), _TRUNCATE, (f), (v))
59# else /* HAVE__VSNPRINTF_S */
60# if defined(HAVE__VSNPRINTF)
61# undef vsnprintf
62# define vsnprintf _vsnprintf
63# else
64# if !defined(HAVE_VSNPRINTF)
65# error "No vsnprintf compatible function found"
66# endif /* HAVE_VSNPRINTF */
67# endif /* HAVE__VSNPRINTF */
68# endif /* HAVE__VSNPRINTF_S */
69# endif /* _MSC_VER */
70
71/*
72 * Backwards compatibility with headers shipped with Visual Studio 2005 and
73 * earlier.
74 */
75WINBASEAPI BOOL WINAPI IsDebuggerPresent(VOID);
76
77#ifndef PRIdS
78# define PRIdS "Id"
79#endif
80
81#ifndef PRIu64
82# define PRIu64 "I64u"
83#endif
84
85#ifndef PRIuMAX
86# define PRIuMAX PRIu64
87#endif
88
89#ifndef PRIxMAX
90#define PRIxMAX "I64x"
91#endif
92
93#ifndef PRIXMAX
94#define PRIXMAX "I64X"
95#endif
96
97#else /* _WIN32 */
98
99#ifndef __PRI64_PREFIX
100# if __WORDSIZE == 64
101# define __PRI64_PREFIX "l"
102# else
103# define __PRI64_PREFIX "ll"
104# endif
105#endif
106
107#ifndef PRIdS
108# define PRIdS "zd"
109#endif
110
111#ifndef PRIu64
112# define PRIu64 __PRI64_PREFIX "u"
113#endif
114
115#ifndef PRIuMAX
116# define PRIuMAX __PRI64_PREFIX "u"
117#endif
118
119#ifndef PRIxMAX
120#define PRIxMAX __PRI64_PREFIX "x"
121#endif
122
123#ifndef PRIXMAX
124#define PRIXMAX __PRI64_PREFIX "X"
125#endif
126
127#endif /* _WIN32 */
128
130#define SAFE_FREE(x) do { if ((x) != NULL) {free(x); x=NULL;} } while(0)
131
133#define ZERO_STRUCT(x) memset((char *)&(x), 0, sizeof(x))
134
136#define ZERO_STRUCTP(x) do { if ((x) != NULL) memset((char *)(x), 0, sizeof(*(x))); } while(0)
137
139#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))
140
142#define BURN_STRING(x) do { if ((x) != NULL) memset((x), 'X', strlen((x))); } while(0)
143
156#define discard_const(ptr) ((void *)((uintptr_t)(ptr)))
157
161#define discard_const_p(type, ptr) ((type *)discard_const(ptr))
162
163#endif /* CMOCKA_PRIVATE_H_ */