From 86ed2db7e89d9da7a0d457d0c5aa3031d866c4e6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Mon, 11 Jun 2018 10:14:47 +0200 Subject: [PATCH] kr_rank_test*: avoid code duplication --- lib/resolve.h | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) 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. */ -- 2.47.2