From d7fa2c3711efcbd635221c53b9f02e21434a828d 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 | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/resolve.h b/lib/resolve.h index f5db47c53..8fa3e8aa6 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; } @@ -133,6 +133,13 @@ static inline bool kr_rank_test(uint8_t rank, uint8_t kr_flag) 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. */ static inline void kr_rank_set(uint8_t *rank, uint8_t kr_flag) { -- 2.47.3