From 5ccb625fbbd1e774636a9fdbe0bf1c3d38e085d5 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 4 Oct 2022 18:10:41 +0900 Subject: Use `roomof` macro for rounding up divisions --- internal/numeric.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'internal/numeric.h') diff --git a/internal/numeric.h b/internal/numeric.h index 19069cb3bc..89bc54b307 100644 --- a/internal/numeric.h +++ b/internal/numeric.h @@ -35,12 +35,16 @@ enum ruby_num_rounding_mode { RUBY_NUM_ROUND_DEFAULT = ROUND_DEFAULT, }; +/* same as internal.h */ +#define numberof(array) ((int)(sizeof(array) / sizeof((array)[0]))) +#define roomof(x, y) (((x) + (y) - 1) / (y)) +#define type_roomof(x, y) roomof(sizeof(x), sizeof(y)) + #if SIZEOF_DOUBLE <= SIZEOF_VALUE typedef double rb_float_value_type; #else typedef struct { - VALUE values[(SIZEOF_DOUBLE + SIZEOF_VALUE - 1) / SIZEOF_VALUE]; - /* roomof() needs internal.h, and the order of some macros may matter */ + VALUE values[roomof(SIZEOF_DOUBLE, SIZEOF_VALUE)]; } rb_float_value_type; #endif -- cgit v1.2.1