OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #ifndef PLATFORM_GLOBALS_H_ | 5 #ifndef PLATFORM_GLOBALS_H_ |
6 #define PLATFORM_GLOBALS_H_ | 6 #define PLATFORM_GLOBALS_H_ |
7 | 7 |
8 // __STDC_FORMAT_MACROS has to be defined before including <inttypes.h> to | 8 // __STDC_FORMAT_MACROS has to be defined before including <inttypes.h> to |
9 // enable platform independent printf format specifiers. | 9 // enable platform independent printf format specifiers. |
10 #ifndef __STDC_FORMAT_MACROS | 10 #ifndef __STDC_FORMAT_MACROS |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 #define PRIdPTR DART_PRINTF_PTR_PREFIX "d" | 123 #define PRIdPTR DART_PRINTF_PTR_PREFIX "d" |
124 #endif | 124 #endif |
125 | 125 |
126 #if !defined(PRIxPTR) | 126 #if !defined(PRIxPTR) |
127 #define PRIxPTR DART_PRINTF_PTR_PREFIX "x" | 127 #define PRIxPTR DART_PRINTF_PTR_PREFIX "x" |
128 #endif | 128 #endif |
129 | 129 |
130 #endif // defined(TARGET_OS_WINDOWS) | 130 #endif // defined(TARGET_OS_WINDOWS) |
131 | 131 |
132 | 132 |
| 133 // Short form printf format specifiers |
| 134 #define Pd PRIdPTR |
| 135 #define Pu PRIuPTR |
| 136 #define Px PRIxPTR |
| 137 #define Pd64 PRId64 |
| 138 #define Pu64 PRIu64 |
| 139 #define Px64 PRIx64 |
| 140 |
| 141 |
133 // Suffixes for 64-bit integer literals. | 142 // Suffixes for 64-bit integer literals. |
134 #ifdef _MSC_VER | 143 #ifdef _MSC_VER |
135 #define DART_INT64_C(x) x##I64 | 144 #define DART_INT64_C(x) x##I64 |
136 #define DART_UINT64_C(x) x##UI64 | 145 #define DART_UINT64_C(x) x##UI64 |
137 #else | 146 #else |
138 #define DART_INT64_C(x) x##LL | 147 #define DART_INT64_C(x) x##LL |
139 #define DART_UINT64_C(x) x##ULL | 148 #define DART_UINT64_C(x) x##ULL |
140 #endif | 149 #endif |
141 | 150 |
142 | 151 |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 // errors (type long int changed to int64_t and do/while split on | 361 // errors (type long int changed to int64_t and do/while split on |
353 // separate lines with body in {}s). | 362 // separate lines with body in {}s). |
354 # define TEMP_FAILURE_RETRY(expression) \ | 363 # define TEMP_FAILURE_RETRY(expression) \ |
355 ({ int64_t __result; \ | 364 ({ int64_t __result; \ |
356 do { \ | 365 do { \ |
357 __result = (int64_t) (expression); \ | 366 __result = (int64_t) (expression); \ |
358 } while (__result == -1L && errno == EINTR); \ | 367 } while (__result == -1L && errno == EINTR); \ |
359 __result; }) | 368 __result; }) |
360 #endif | 369 #endif |
361 | 370 |
| 371 |
| 372 #if defined(TARGET_OS_LINUX) || defined(TARGET_OS_MACOS) |
| 373 // |
| 374 // Tell the compiler to do printf format string checking if the |
| 375 // compiler supports it; see the 'format' attribute in |
| 376 // <http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gcc/Function-Attributes.html>. |
| 377 // |
| 378 // N.B.: As the GCC manual states, "[s]ince non-static C++ methods |
| 379 // have an implicit 'this' argument, the arguments of such methods |
| 380 // should be counted from two, not one." |
| 381 // |
| 382 #define PRINTF_ATTRIBUTE(string_index, first_to_check) \ |
| 383 __attribute__((__format__(__printf__, string_index, first_to_check))) |
| 384 #else |
| 385 #define PRINTF_ATTRIBUTE(string_index, first_to_check) |
| 386 #endif |
| 387 |
362 #endif // PLATFORM_GLOBALS_H_ | 388 #endif // PLATFORM_GLOBALS_H_ |
OLD | NEW |