From: Vladimír Čunát Date: Mon, 11 Jun 2018 08:14:47 +0000 (+0200) Subject: kr_rank_test*: avoid code duplication X-Git-Tag: v2.4.0~19^2~14 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=86ed2db7e89d9da7a0d457d0c5aa3031d866c4e6;p=thirdparty%2Fknot-resolver.git kr_rank_test*: avoid code duplication --- diff --git a/lib/resolve.h b/lib/resolve.h index 37fc40d90..dbfbe9759 100644 --- a/lib/resolve.h +++ b/lib/resolve.h @@ -121,10 +121,10 @@ enum kr_rank { /** Check that a rank value is valid. Meant for assertions. */ bool kr_rank_check(uint8_t rank) KR_PURE; -/** Test the presence of any flag/state in a rank, i.e. including KR_RANK_AUTH. */ -static inline bool kr_rank_test(uint8_t rank, uint8_t kr_flag) +/** kr_rank_test() except that `rank` may be rubbish (don't assert that). */ +static inline bool kr_rank_test_noassert(uint8_t rank, uint8_t kr_flag) { - assert(kr_rank_check(rank) && kr_rank_check(kr_flag)); + assert(kr_rank_check(kr_flag)); if (kr_flag == KR_RANK_AUTH) { return rank & KR_RANK_AUTH; } @@ -132,12 +132,11 @@ static inline bool kr_rank_test(uint8_t rank, uint8_t kr_flag) /* The rest are exclusive values - exactly one has to be set. */ return (rank & ~KR_RANK_AUTH) == kr_flag; } -static inline bool kr_rank_test_noassert(uint8_t rank, uint8_t kr_flag) -{ // TODO: copy&paste - if (kr_flag == KR_RANK_AUTH) { - return rank & KR_RANK_AUTH; - } - return (rank & ~KR_RANK_AUTH) == kr_flag; +/** Test the presence of any flag/state in a rank, i.e. including KR_RANK_AUTH. */ +static inline bool kr_rank_test(uint8_t rank, uint8_t kr_flag) +{ + assert(kr_rank_check(rank)); + return kr_rank_test_noassert(rank, kr_flag); } /** Set the rank state. The _AUTH flag is kept as it was. */