// SPDX-License-Identifier: MIT /** Copyright (c) 2015 - 2022 Beckhoff Automation GmbH & Co. KG */ #pragma once #include #include namespace bhf { namespace ads { #if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) template inline T letoh(const void* buffer) { const auto bytes = reinterpret_cast(buffer); T result = 0; for (size_t i = 0; i < sizeof(T); ++i) { result += (bytes[i] << (8 * i)); } return result; } #else template inline T letoh(const void* buffer) { return *reinterpret_cast(buffer); } #endif template inline T letoh(const T& value) { return letoh(reinterpret_cast(&value)); } template T htole(const T value) { return letoh(value); } } }