Merge branch 'ps/parse-options-integers'
Update parse-options API to catch mistakes to pass address of an integral variable of a wrong type/size. * ps/parse-options-integers: parse-options: detect mismatches in integer signedness parse-options: introduce precision handling for `OPTION_UNSIGNED` parse-options: introduce precision handling for `OPTION_INTEGER` parse-options: rename `OPT_MAGNITUDE()` to `OPT_UNSIGNED()` parse-options: support unit factors in `OPT_INTEGER()` global: use designated initializers for options parse: fix off-by-one for minimum signed values
This commit is contained in:
@@ -93,12 +93,19 @@ DISABLE_WARNING(-Wsign-compare)
|
||||
# define BARF_UNLESS_COPYABLE(dst, src) \
|
||||
BUILD_ASSERT_OR_ZERO(__builtin_types_compatible_p(__typeof__(*(dst)), \
|
||||
__typeof__(*(src))))
|
||||
|
||||
# define BARF_UNLESS_SIGNED(var) BUILD_ASSERT_OR_ZERO(((__typeof__(var)) -1) < 0)
|
||||
# define BARF_UNLESS_UNSIGNED(var) BUILD_ASSERT_OR_ZERO(((__typeof__(var)) -1) > 0)
|
||||
#else
|
||||
# define BARF_UNLESS_AN_ARRAY(arr) 0
|
||||
# define BARF_UNLESS_COPYABLE(dst, src) \
|
||||
BUILD_ASSERT_OR_ZERO(0 ? ((*(dst) = *(src)), 0) : \
|
||||
sizeof(*(dst)) == sizeof(*(src)))
|
||||
|
||||
# define BARF_UNLESS_SIGNED(var) 0
|
||||
# define BARF_UNLESS_UNSIGNED(var) 0
|
||||
#endif
|
||||
|
||||
/*
|
||||
* ARRAY_SIZE - get the number of elements in a visible array
|
||||
* @x: the array whose size you want.
|
||||
|
||||
Reference in New Issue
Block a user