From bccc2b49ab25551c6fc104a0b69f69121b76031d Mon Sep 17 00:00:00 2001 From: Martin Braun Date: Mon, 8 Nov 2021 11:41:11 +0100 Subject: rfnoc: Make chdr_w_to_bits() C++11-compatible This allows consumers of UHD compiling with C++11 to include this file (which is now included via noc_block_base) by turning a switch statement into a functionally equivalent (albeit less readable) nested ternary statement. --- host/include/uhd/rfnoc/rfnoc_types.hpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'host/include') diff --git a/host/include/uhd/rfnoc/rfnoc_types.hpp b/host/include/uhd/rfnoc/rfnoc_types.hpp index 606850a27..123bf82f1 100644 --- a/host/include/uhd/rfnoc/rfnoc_types.hpp +++ b/host/include/uhd/rfnoc/rfnoc_types.hpp @@ -20,6 +20,13 @@ enum chdr_w_t { CHDR_W_64 = 0, CHDR_W_128 = 1, CHDR_W_256 = 2, CHDR_W_512 = 3 }; //! Conversion from chdr_w_t to a number of bits constexpr size_t chdr_w_to_bits(chdr_w_t chdr_w) { + // clang-format off + // This switch statement is what this function is doing, but it requires all + // consumers of this file to use C++14, which we currently enforce. We + // therefore keep this switch statement for reference, and for future + // improvements of this code, but what we feed the compiler is the nested + // ternary statement below. + /* switch (chdr_w) { case CHDR_W_64: return 64; @@ -32,6 +39,14 @@ constexpr size_t chdr_w_to_bits(chdr_w_t chdr_w) default: return 0; } + */ + return + chdr_w == CHDR_W_64 ? 64 : + chdr_w == CHDR_W_128 ? 128 : + chdr_w == CHDR_W_256 ? 256 : + chdr_w == CHDR_W_512 ? 512 : + /* default */ 0 ; + // clang-format on } //! Stream Endpoint ID Type -- cgit v1.2.3