From c742792d03521abebd9e5cfbd910ee580fd5300a Mon Sep 17 00:00:00 2001 From: Timon Zijnge Date: Mon, 23 Feb 2026 10:50:10 +0100 Subject: [PATCH] #1258 Manchester coding * private memcpy alias --- include/etl/manchester.h | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/include/etl/manchester.h b/include/etl/manchester.h index 68e17fbd..86dbb4c6 100644 --- a/include/etl/manchester.h +++ b/include/etl/manchester.h @@ -164,6 +164,19 @@ namespace etl static const uint32_t inversion_mask = 0xFFFFFFFFUL; #endif }; + + //************************************************************************* + /// Alias for memcpy. etl::mem_copy is not suitable for the Manchester + /// algorithm. This is an alternative way to respect ETL_USING_BUILTIN_MEMCPY + //************************************************************************* + inline void* memcpy(void* dest, const void* src, std::size_t count) ETL_NOEXCEPT + { +#if ETL_USING_BUILTIN_MEMCPY + return __builtin_memcpy(dest, src, count); +#else + return ::memcpy(dest, src, count); +#endif + } } // namespace private_manchester //*************************************************************************** @@ -296,9 +309,9 @@ namespace etl for (size_t i = 0; i < decoded.size() / sizeof(TDecoded); ++i) { TDecoded decoded_value = 0; - memcpy(&decoded_value, &decoded[source_index], sizeof(TDecoded)); + etl::private_manchester::memcpy(&decoded_value, &decoded[source_index], sizeof(TDecoded)); const TEncoded encoded_value = encode(decoded_value); - memcpy(&encoded[dest_index], &encoded_value, sizeof(TEncoded)); + etl::private_manchester::memcpy(&encoded[dest_index], &encoded_value, sizeof(TEncoded)); source_index += sizeof(TDecoded); dest_index += sizeof(TEncoded); @@ -425,9 +438,9 @@ namespace etl for (size_t i = 0; i < encoded.size() / sizeof(TEncoded); ++i) { TChunk encoded_value = 0; - memcpy(&encoded_value, &encoded[source_index], sizeof(TEncoded)); + etl::private_manchester::memcpy(&encoded_value, &encoded[source_index], sizeof(TEncoded)); const TDecoded decoded_value = decode(encoded_value); - memcpy(&decoded[dest_index], &decoded_value, sizeof(TDecoded)); + etl::private_manchester::memcpy(&decoded[dest_index], &decoded_value, sizeof(TDecoded)); source_index += sizeof(TEncoded); dest_index += sizeof(TDecoded);