diff options
Diffstat (limited to 'gcc/system.h')
-rw-r--r-- | gcc/system.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/gcc/system.h b/gcc/system.h index 100feb5..ba32821 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -1208,4 +1208,29 @@ void gcc_stablesort (void *, size_t, size_t, #undef qsort #define qsort(...) PP_5th (__VA_ARGS__, gcc_qsort, 3, 2, qsort, 0) (__VA_ARGS__) +#define ONE_K 1024 +#define ONE_M (ONE_K * ONE_K) + +/* Display a number as an integer multiple of either: + - 1024, if said integer is >= to 10 K (in base 2) + - 1024 * 1024, if said integer is >= 10 M in (base 2) + */ +#define SIZE_SCALE(x) (((x) < 10 * ONE_K \ + ? (x) \ + : ((x) < 10 * ONE_M \ + ? (x) / ONE_K \ + : (x) / ONE_M))) + +/* For a given integer, display either: + - the character 'k', if the number is higher than 10 K (in base 2) + but strictly lower than 10 M (in base 2) + - the character 'M' if the number is higher than 10 M (in base2) + - the charcter ' ' if the number is strictly lower than 10 K */ +#define SIZE_LABEL(x) ((x) < 10 * ONE_K ? ' ' : ((x) < 10 * ONE_M ? 'k' : 'M')) + +/* Display an integer amount as multiple of 1K or 1M (in base 2). + Display the correct unit (either k, M, or ' ') after the amount, as + well. */ +#define SIZE_AMOUNT(size) SIZE_SCALE (size), SIZE_LABEL (size) + #endif /* ! GCC_SYSTEM_H */ |