From 3515f6a7ee4b994633bb01cab0f0e2e5f5a3af81 Mon Sep 17 00:00:00 2001
From: f4exb <f4exb06@gmail.com>
Date: Wed, 20 Jul 2022 09:57:59 +0200
Subject: [PATCH] Even more M17 library code cleanup

---
 modemm17/Convolution.h     |  1 -
 modemm17/Golay24.h         |  1 -
 modemm17/LinkSetupFrame.h  |  1 -
 modemm17/M17Demodulator.h  |  1 -
 modemm17/M17Synchronizer.h |  1 -
 modemm17/SymbolEvm.h       |  1 -
 modemm17/Util.h            | 88 +++++++++++++++++++++++++-------------
 modemm17/Viterbi.h         |  2 +-
 modemm17/ax25_frame.h      |  4 +-
 9 files changed, 60 insertions(+), 40 deletions(-)

diff --git a/modemm17/Convolution.h b/modemm17/Convolution.h
index 29b1c8ab6..26f5d5532 100644
--- a/modemm17/Convolution.h
+++ b/modemm17/Convolution.h
@@ -2,7 +2,6 @@
 
 #pragma once
 
-#include <bit>
 #include <cstdint>
 #include <cstddef>
 
diff --git a/modemm17/Golay24.h b/modemm17/Golay24.h
index c6fbe5bdd..9d9e14cb1 100644
--- a/modemm17/Golay24.h
+++ b/modemm17/Golay24.h
@@ -4,7 +4,6 @@
 #pragma once
 
 #include <array>
-#include <bit>
 #include <cstdint>
 #include <algorithm>
 #include <utility>
diff --git a/modemm17/LinkSetupFrame.h b/modemm17/LinkSetupFrame.h
index a56d66f6c..f37bed6cc 100644
--- a/modemm17/LinkSetupFrame.h
+++ b/modemm17/LinkSetupFrame.h
@@ -5,7 +5,6 @@
 #include <array>
 #include <cstdint>
 #include <cmath>
-// #include <string_view> // Don't have std::span in C++17.
 #include <stdexcept>
 #include <algorithm>
 
diff --git a/modemm17/M17Demodulator.h b/modemm17/M17Demodulator.h
index a18790c00..dd65ede8a 100644
--- a/modemm17/M17Demodulator.h
+++ b/modemm17/M17Demodulator.h
@@ -15,7 +15,6 @@
 #include <algorithm>
 #include <array>
 #include <functional>
-#include <optional>
 #include <tuple>
 
 #include "export.h"
diff --git a/modemm17/M17Synchronizer.h b/modemm17/M17Synchronizer.h
index 7c4f50b35..030aa91f0 100644
--- a/modemm17/M17Synchronizer.h
+++ b/modemm17/M17Synchronizer.h
@@ -2,7 +2,6 @@
 
 #pragma once
 
-#include <bit>
 #include <cstdint>
 
 #include "Util.h"
diff --git a/modemm17/SymbolEvm.h b/modemm17/SymbolEvm.h
index 5c38b7d94..89a087942 100644
--- a/modemm17/SymbolEvm.h
+++ b/modemm17/SymbolEvm.h
@@ -7,7 +7,6 @@
 #include <array>
 #include <algorithm>
 #include <numeric>
-#include <optional>
 #include <tuple>
 
 namespace modemm17
diff --git a/modemm17/Util.h b/modemm17/Util.h
index 295fe0d41..337a1b2b5 100644
--- a/modemm17/Util.h
+++ b/modemm17/Util.h
@@ -18,18 +18,18 @@ namespace modemm17
 
 namespace detail {
 
-template<std::size_t...Is, class Tuple>
-constexpr std::bitset<sizeof...(Is)> make_bitset(std::index_sequence<Is...>, Tuple&& tuple)
-{
-    constexpr auto size = sizeof...(Is);
-    std::bitset<size> result;
-    using expand = int[];
-    for (size_t i = 0; i != size; ++i)
-    {
-        void(expand {0, result[Is] = std::get<Is>(tuple)...});
-    }
-    return result;
-}
+// template<std::size_t...Is, class Tuple>
+// constexpr std::bitset<sizeof...(Is)> make_bitset(std::index_sequence<Is...>, Tuple&& tuple)
+// {
+//     constexpr auto size = sizeof...(Is);
+//     std::bitset<size> result;
+//     using expand = int[];
+//     for (size_t i = 0; i != size; ++i)
+//     {
+//         void(expand {0, result[Is] = std::get<Is>(tuple)...});
+//     }
+//     return result;
+// }
 
 /**
  * This is the max value for the LLR based on size N.
@@ -104,12 +104,12 @@ constexpr std::array<std::tuple<float, std::tuple<int8_t, int8_t>>, llr_size<LLR
 
 }
 
-template<class...Bools>
-constexpr auto make_bitset(Bools&&...bools)
-{
-    return detail::make_bitset(std::make_index_sequence<sizeof...(Bools)>(),
-        std::make_tuple(bool(bools)...));
-}
+// template<class...Bools>
+// constexpr auto make_bitset(Bools&&...bools)
+// {
+//     return detail::make_bitset(std::make_index_sequence<sizeof...(Bools)>(),
+//         std::make_tuple(bool(bools)...));
+// }
 
 inline int from_4fsk(int symbol)
 {
@@ -144,7 +144,10 @@ auto llr(float sample)
 }
 
 template <size_t M, typename T, size_t N, typename U, size_t IN>
-auto depunctured(std::array<T, N> puncture_matrix, std::array<U, IN> in)
+std::array<U, M> depunctured(
+    std::array<T, N> puncture_matrix,
+    std::array<U, IN> in
+)
 {
     static_assert(M % N == 0, "M must be an integer multiple of N");
 
@@ -167,8 +170,11 @@ auto depunctured(std::array<T, N> puncture_matrix, std::array<U, IN> in)
 }
 
 template <size_t IN, size_t OUT, size_t P>
-size_t depuncture(const std::array<int8_t, IN>& in,
-    std::array<int8_t, OUT>& out, const std::array<int8_t, P>& p)
+size_t depuncture(
+    const std::array<int8_t, IN>& in,
+    std::array<int8_t, OUT>& out,
+    const std::array<int8_t, P>& p
+)
 {
     size_t index = 0;
     size_t pindex = 0;
@@ -191,8 +197,11 @@ size_t depuncture(const std::array<int8_t, IN>& in,
 
 
 template <typename T, size_t IN, typename U, size_t OUT, size_t P>
-size_t puncture(const std::array<T, IN>& in,
-    std::array<U, OUT>& out, const std::array<int8_t, P>& p)
+size_t puncture(
+    const std::array<T, IN>& in,
+    std::array<U, OUT>& out,
+    const std::array<int8_t, P>& p
+)
 {
     size_t index = 0;
     size_t pindex = 0;
@@ -211,7 +220,10 @@ size_t puncture(const std::array<T, IN>& in,
 }
 
 template <size_t N>
-constexpr bool get_bit_index(const std::array<uint8_t, N>& input, size_t index)
+constexpr bool get_bit_index(
+    const std::array<uint8_t, N>& input,
+    size_t index
+)
 {
     auto byte_index = index >> 3;
     assert(byte_index < N);
@@ -221,7 +233,10 @@ constexpr bool get_bit_index(const std::array<uint8_t, N>& input, size_t index)
 }
 
 template <size_t N>
-void set_bit_index(std::array<uint8_t, N>& input, size_t index)
+void set_bit_index(
+    std::array<uint8_t, N>& input,
+    size_t index
+)
 {
     auto byte_index = index >> 3;
     assert(byte_index < N);
@@ -230,7 +245,10 @@ void set_bit_index(std::array<uint8_t, N>& input, size_t index)
 }
 
 template <size_t N>
-void reset_bit_index(std::array<uint8_t, N>& input, size_t index)
+void reset_bit_index(
+    std::array<uint8_t, N>& input,
+    size_t index
+)
 {
     auto byte_index = index >> 3;
     assert(byte_index < N);
@@ -239,7 +257,11 @@ void reset_bit_index(std::array<uint8_t, N>& input, size_t index)
 }
 
 template <size_t N>
-void assign_bit_index(std::array<uint8_t, N>& input, size_t index, bool value)
+void assign_bit_index(
+    std::array<uint8_t, N>& input,
+    size_t index,
+    bool value
+)
 {
     if (value) set_bit_index(input, index);
     else reset_bit_index(input, index);
@@ -247,8 +269,11 @@ void assign_bit_index(std::array<uint8_t, N>& input, size_t index, bool value)
 
 
 template <size_t IN, size_t OUT, size_t P>
-size_t puncture_bytes(const std::array<uint8_t, IN>& in,
-    std::array<uint8_t, OUT>& out, const std::array<int8_t, P>& p)
+size_t puncture_bytes(
+    const std::array<uint8_t, IN>& in,
+    std::array<uint8_t, OUT>& out,
+    const std::array<int8_t, P>& p
+)
 {
     size_t index = 0;
     size_t pindex = 0;
@@ -298,7 +323,10 @@ constexpr auto to_byte_array(std::array<T, N> in)
 }
 
 template <typename T, size_t N>
-constexpr void to_byte_array(std::array<T, N> in, std::array<uint8_t, (N + 7) / 8>& out)
+constexpr void to_byte_array(
+    std::array<T, N> in,
+    std::array<uint8_t, (N + 7) / 8>& out
+)
 {
     size_t i = 0;
     size_t b = 0;
diff --git a/modemm17/Viterbi.h b/modemm17/Viterbi.h
index 525fe04db..4058486f2 100644
--- a/modemm17/Viterbi.h
+++ b/modemm17/Viterbi.h
@@ -160,7 +160,7 @@ struct Viterbi
      * @return path metric for estimating BER.
      */
     template <size_t IN, size_t OUT>
-    size_t decode(std::array<int8_t, IN> const& in, std::array<uint8_t, OUT>& out)
+    size_t decode(const std::array<int8_t, IN>& in, std::array<uint8_t, OUT>& out)
     {
         static_assert(sizeof(history_) >= IN / 2, "Invalid size");
 
diff --git a/modemm17/ax25_frame.h b/modemm17/ax25_frame.h
index 5a68d9daa..b44a518ed 100644
--- a/modemm17/ax25_frame.h
+++ b/modemm17/ax25_frame.h
@@ -10,7 +10,6 @@
 #include <iomanip>
 #include <iostream>
 #include <iterator>
-#include <optional>
 #include <sstream>
 #include <stdexcept>
 #include <string>
@@ -168,8 +167,7 @@ private:
         {
             std::string repeater = frame.substr(index, ADDRESS_LENGTH);
             index += ADDRESS_LENGTH;
-            more = fixup_address(repeater)
-                and (index + ADDRESS_LENGTH) < frame.length();
+            more = fixup_address(repeater) && ((index + ADDRESS_LENGTH) < frame.length());
             result.push_back(repeater);
         }