Loading...
Searching...
No Matches
Go to the documentation of this file.
7#ifndef PXR_BASE_ARCH_PRAGMAS_H
8#define PXR_BASE_ARCH_PRAGMAS_H
17#include "pxr/base/arch/defines.h"
19#if defined(ARCH_COMPILER_GCC)
21 #define ARCH_PRAGMA_PUSH \
22 _Pragma("GCC diagnostic push")
24 #define ARCH_PRAGMA_POP \
25 _Pragma("GCC diagnostic pop")
27 #define ARCH_PRAGMA(x) _Pragma(#x)
29 #define ARCH_PRAGMA_PUSH_MACRO(macro_name) \
30 ARCH_PRAGMA(push_macro(#macro_name))
32 #define ARCH_PRAGMA_POP_MACRO(macro_name) \
33 ARCH_PRAGMA(pop_macro(#macro_name))
39 #define ARCH_PRAGMA_MAYBE_UNINITIALIZED \
40 _Pragma("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
42 #define ARCH_PRAGMA_MACRO_REDEFINITION \
43 _Pragma("GCC diagnostic ignored \"-Wbuiltin-macro-redefined\"")
45 #define ARCH_PRAGMA_WRITE_STRINGS \
46 _Pragma("GCC diagnostic ignored \"-Wwrite-strings\"")
48 #define ARCH_PRAGMA_UNUSED_FUNCTION \
49 _Pragma("GCC diagnostic ignored \"-Wunused-function\"")
51 #define ARCH_PRAGMA_STRINGOP_OVERFLOW \
52 _Pragma("GCC diagnostic ignored \"-Wstringop-overflow=\"")
54#elif defined(ARCH_COMPILER_CLANG)
56 #define ARCH_PRAGMA_PUSH \
57 _Pragma("clang diagnostic push")
59 #define ARCH_PRAGMA_POP \
60 _Pragma("clang diagnostic pop")
62 #define ARCH_PRAGMA(x) _Pragma(#x)
64 #define ARCH_PRAGMA_PUSH_MACRO(macro_name) \
65 ARCH_PRAGMA(push_macro(#macro_name))
67 #define ARCH_PRAGMA_POP_MACRO(macro_name) \
68 ARCH_PRAGMA(pop_macro(#macro_name))
70 #define ARCH_PRAGMA_MACRO_REDEFINITION \
71 _Pragma("clang diagnostic ignored \"-Wbuiltin-macro-redefined\"")
73 #define ARCH_PRAGMA_UNDEFINED_VAR_TEMPLATE \
74 _Pragma("clang diagnostic ignored \"-Wundefined-var-template\"")
76 #define ARCH_PRAGMA_WRITE_STRINGS \
77 _Pragma("clang diagnostic ignored \"-Wwrite-strings\"")
79 #define ARCH_PRAGMA_UNUSED_FUNCTION \
80 _Pragma("clang diagnostic ignored \"-Wunused-function\"")
82 #define ARCH_PRAGMA_UNUSED_PRIVATE_FIELD \
83 _Pragma("clang diagnostic ignored \"-Wunused-private-field\"")
85 #define ARCH_PRAGMA_INSTANTIATION_AFTER_SPECIALIZATION \
86 _Pragma("clang diagnostic ignored \"-Winstantiation-after-specialization\"")
88 #define ARCH_PRAGMA_INSTANCE_METHOD_NOT_FOUND \
89 _Pragma("clang diagnostic ignored \"-Wobjc-method-access\"")
91 #define ARCH_PRAGMA_SELF_MOVE \
92 _Pragma("clang diagnostic ignored \"-Wself-move\"")
94 #define ARCH_PRAGMA_SELF_ASSIGN_OVERLOADED \
95 _Pragma("clang diagnostic ignored \"-Wself-assign-overloaded\"")
97#elif defined(ARCH_COMPILER_MSVC)
99 #define ARCH_PRAGMA_PUSH \
100 __pragma(warning(push))
102 #define ARCH_PRAGMA_POP \
103 __pragma(warning(pop))
105 #define ARCH_PRAGMA(x) __pragma(x)
107 #define ARCH_PRAGMA_PUSH_MACRO(macro_name) \
108 __pragma(push_macro(#macro_name))
110 #define ARCH_PRAGMA_POP_MACRO(macro_name) \
111 __pragma(pop_macro(#macro_name))
113 #define ARCH_PRAGMA_MACRO_TOO_FEW_ARGUMENTS \
114 __pragma(warning(disable:4003))
116 #define ARCH_PRAGMA_MACRO_REDEFINITION \
117 __pragma(warning(disable:4005))
119 #define ARCH_PRAGMA_UNUSED_FUNCTION \
120 __pragma(warning(disable:4505))
122 #define ARCH_PRAGMA_QUALIFIER_HAS_NO_MEANING \
123 __pragma(warning(disable:4180))
125 #define ARCH_PRAGMA_ZERO_SIZED_STRUCT \
126 __pragma(warning(disable:4200))
128 #define ARCH_PRAGMA_NEEDS_EXPORT_INTERFACE \
129 __pragma(warning(disable:4251))
131 #define ARCH_PRAGMA_CONVERSION_FROM_SIZET \
132 __pragma(warning(disable:4267))
134 #define ARCH_PRAGMA_MAY_NOT_BE_ALIGNED \
135 __pragma(warning(disable:4316))
137 #define ARCH_PRAGMA_SHIFT_TO_64_BITS \
138 __pragma(warning(disable:4334))
140 #define ARCH_PRAGMA_DESTRUCTOR_IMPLICIT_DEFINE \
141 __pragma(warning(disable:4624))
143 #define ARCH_PRAGMA_DEPRECATED_POSIX_NAME \
144 __pragma(warning(disable:4996))
146 #define ARCH_PRAGMA_FORCING_TO_BOOL \
147 __pragma(warning(disable:4800))
149 #define ARCH_PRAGMA_UNSAFE_USE_OF_BOOL \
150 __pragma(warning(disable:4804))
152 #define ARCH_PRAGMA_UNARY_MINUS_ON_UNSIGNED \
153 __pragma(warning(disable:4146))
155 #define ARCH_PRAGMA_NON_EXPORTED_BASE_CLASS \
156 __pragma(warning(disable:4275))
160#if !defined ARCH_PRAGMA_PUSH
161 #define ARCH_PRAGMA_PUSH
164#if !defined ARCH_PRAGMA_POP
165 #define ARCH_PRAGMA_POP
168#if !defined ARCH_PRAGMA
172#if !defined ARCH_PRAGMA_PUSH_MACRO
173 #define ARCH_PRAGMA_PUSH_MACRO
176#if !defined ARCH_PRAGMA_POP_MACRO
177 #define ARCH_PRAGMA_POP_MACRO
180#if !defined ARCH_PRAGMA_MAYBE_UNINITIALIZED
181 #define ARCH_PRAGMA_MAYBE_UNINITIALIZED
184#if !defined ARCH_PRAGMA_MACRO_REDEFINITION
185 #define ARCH_PRAGMA_MACRO_REDEFINITION
188#if !defined ARCH_PRAGMA_WRITE_STRINGS
189 #define ARCH_PRAGMA_WRITE_STRINGS
192#if !defined ARCH_PRAGMA_UNUSED_FUNCTION
193 #define ARCH_PRAGMA_UNUSED_FUNCTION
196#if !defined ARCH_PRAGMA_STRINGOP_OVERFLOW
197 #define ARCH_PRAGMA_STRINGOP_OVERFLOW
200#if !defined ARCH_PRAGMA_UNUSED_PRIVATE_FIELD
201 #define ARCH_PRAGMA_UNUSED_PRIVATE_FIELD
204#if !defined ARCH_PRAGMA_MACRO_TOO_FEW_ARGUMENTS
205 #define ARCH_PRAGMA_MACRO_TOO_FEW_ARGUMENTS
208#if !defined ARCH_PRAGMA_QUALIFIER_HAS_NO_MEANING
209 #define ARCH_PRAGMA_QUALIFIER_HAS_NO_MEANING
212#if !defined ARCH_PRAGMA_ZERO_SIZED_STRUCT
213 #define ARCH_PRAGMA_ZERO_SIZED_STRUCT
216#if !defined ARCH_PRAGMA_NEEDS_EXPORT_INTERFACE
217 #define ARCH_PRAGMA_NEEDS_EXPORT_INTERFACE
220#if !defined ARCH_PRAGMA_CONVERSION_FROM_SIZET
221 #define ARCH_PRAGMA_CONVERSION_FROM_SIZET
224#if !defined ARCH_PRAGMA_MAY_NOT_BE_ALIGNED
225 #define ARCH_PRAGMA_MAY_NOT_BE_ALIGNED
228#if !defined ARCH_PRAGMA_SHIFT_TO_64_BITS
229 #define ARCH_PRAGMA_SHIFT_TO_64_BITS
232#if !defined ARCH_PRAGMA_DESTRUCTOR_IMPLICIT_DEFINE
233 #define ARCH_PRAGMA_DESTRUCTOR_IMPLICIT_DEFINE
236#if !defined ARCH_PRAGMA_DEPRECATED_POSIX_NAME
237 #define ARCH_PRAGMA_DEPRECATED_POSIX_NAME
240#if !defined ARCH_PRAGMA_FORCING_TO_BOOL
241 #define ARCH_PRAGMA_FORCING_TO_BOOL
244#if !defined ARCH_PRAGMA_UNSAFE_USE_OF_BOOL
245 #define ARCH_PRAGMA_UNSAFE_USE_OF_BOOL
248#if !defined ARCH_PRAGMA_UNARY_MINUS_ON_UNSIGNED
249 #define ARCH_PRAGMA_UNARY_MINUS_ON_UNSIGNED
252#if !defined ARCH_PRAGMA_INSTANTIATION_AFTER_SPECIALIZATION
253 #define ARCH_PRAGMA_INSTANTIATION_AFTER_SPECIALIZATION
256#if !defined ARCH_PRAGMA_UNDEFINED_VAR_TEMPLATE
257 #define ARCH_PRAGMA_UNDEFINED_VAR_TEMPLATE
260#if !defined ARCH_PRAGMA_INSTANCE_METHOD_NOT_FOUND
261 #define ARCH_PRAGMA_INSTANCE_METHOD_NOT_FOUND
264#if !defined ARCH_PRAGMA_NON_EXPORTED_BASE_CLASS
265 #define ARCH_PRAGMA_NON_EXPORTED_BASE_CLASS
268#if !defined ARCH_PRAGMA_SELF_MOVE
269 #define ARCH_PRAGMA_SELF_MOVE
272#if !defined ARCH_PRAGMA_SELF_ASSIGN_OVERLOADED
273 #define ARCH_PRAGMA_SELF_ASSIGN_OVERLOADED