blob: 97a17bb689a43994a18b43c66aad66102f3ae313 [file] [log] [blame]
Eric Fiselier38236b52016-01-19 21:52:04 +00001//===----------------------------------------------------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
Eric Fiselier6fe361c2015-02-05 23:01:40 +00009#ifndef SUPPORT_NASTY_MACROS_HPP
10#define SUPPORT_NASTY_MACROS_HPP
11
12#define NASTY_MACRO This should not be expanded!!!
13#define _A NASTY_MACRO
14#define _B NASTY_MACRO
15#define _C NASTY_MACRO
16#define _D NASTY_MACRO
17#define _E NASTY_MACRO
18#define _F NASTY_MACRO
19#define _G NASTY_MACRO
20#define _H NASTY_MACRO
21#define _I NASTY_MACRO
22#define _J NASTY_MACRO
23#define _K NASTY_MACRO
24#define _L NASTY_MACRO
Dimitry Andricc7510aa2018-08-15 17:30:32 +000025// Because FreeBSD uses _M in its <sys/types.h>, and it is hard to avoid
26// including that header, only define _M for other operating systems.
27#ifndef __FreeBSD__
Eric Fiselier6fe361c2015-02-05 23:01:40 +000028#define _M NASTY_MACRO
Dimitry Andricc7510aa2018-08-15 17:30:32 +000029#endif
Eric Fiselier6fe361c2015-02-05 23:01:40 +000030#define _N NASTY_MACRO
31#define _O NASTY_MACRO
32#define _P NASTY_MACRO
33#define _Q NASTY_MACRO
34#define _R NASTY_MACRO
35#define _S NASTY_MACRO
36#define _T NASTY_MACRO
37#define _U NASTY_MACRO
38#define _V NASTY_MACRO
39#define _W NASTY_MACRO
40#define _X NASTY_MACRO
41#define _Y NASTY_MACRO
42#define _Z NASTY_MACRO
43
Eric Fiselierf9645c32017-05-31 21:39:54 +000044// tchar.h defines these macros on Windows.
45#define _UI NASTY_MACRO
46#define _PUC NASTY_MACRO
47#define _CPUC NASTY_MACRO
48#define _PC NASTY_MACRO
49#define _CRPC NASTY_MACRO
50#define _CPC NASTY_MACRO
Eric Fiselier89918ca2017-05-31 21:20:18 +000051
Eric Fiselier5741d862017-01-07 11:27:06 +000052// Test that libc++ doesn't use names reserved by WIN32 API Macros.
53// NOTE: Obviously we can only define these on non-windows platforms.
54#ifndef _WIN32
55#define __deallocate NASTY_MACRO
56#define __out NASTY_MACRO
57#endif
58
Alexander Richardson42bfedd2017-11-14 11:14:25 +000059#define __output NASTY_MACRO
60#define __input NASTY_MACRO
61
Eric Fiselier6fe361c2015-02-05 23:01:40 +000062#endif // SUPPORT_NASTY_MACROS_HPP