Decoded: OpenTTD (2003) v1.8 (2018) Source file: endian_func.hpp Line-by-line code walkthrough by MaiZure endian_func.cpp defines architecture specific endianness functions Original code: https://github.com/MaiZure/OpenTTD-1.8/blob/master/src/core/endian_func.hpp 1 COMMENT (*) 2 BLANK (-) 3 * 4 * 5 * 6 * 7 * 8 * 9 - 10 * 11 - 12 Header guard 13 Header guard 14 - 15 Include the OpenTTD core endian detection header 16 Include the OpenTTD core bitmath header 17 - 18 * 19 If machine is a big endian architecture 20 No conversion necessary for FROM_BE16 21 No conversion necessary for FROM_BE32 22 No conversion necessary for TO_BE32 23 No conversion necessary for TO_BE16 24 No conversion necessary for TO_BE32X 25 Define FROM_LE16 to use BSWAP16 defined in bitmath_func.hpp 26 Define FROM_LE32 to use BSWAP32 defined in bitmath_func.hpp 27 Define TO_LE16 to use BSWAP16 defined in bitmath_func.hpp 28 Define TO_LE32 to use BSWAP32 defined in bitmath_func.hpp 29 Define TO_LE32X to use BSWAP32 defined in bitmath_func.hpp 30 Otherwise this is a little endian architecture so... 31 Define FROM_BE16 to use BSWAP16 defined in bitmath_func.hpp 32 Define FROM_BE32 to use BSWAP32 defined in bitmath_func.hpp 33 Define TO_BE16 to use BSWAP16 defined in bitmath_func.hpp 34 Define TO_BE32 to use BSWAP32 defined in bitmath_func.hpp 35 Define TO_BE32X to use BSWAP32 defined in bitmath_func.hpp 36 No conversion necessary for FROM_LE16 37 No conversion necessary for FROM_LE32 38 No conversion necessary for TO_LE16 39 No conversion necessary for TO_LE32 40 No conversion necessary for TO_LE32X 41 End check for architecture endianness 42 - 43 Defines ReadLE16Aligned with one argument 44 BLOCK START - ReadLE16Aligned, convert 16-bit LE as needed 45 Returns a 16-bit value converted from LE 46 BLOCK END - ReadLE16Aligned 47 - 48 Defines ReadLE16Unaligned 49 BLOCK START - ReadLE16Unalighted, convert 16-bit LE considering alignment 50 If this architecture requires alignment... 51 Returns swapped bytes 52 Otherwise the architecture doesn't care about alignment 53 Returns a 16-bit value converted from LE 54 End check for alignment requirements 55 BLOCK END - ReadLE16Unalighted 56 - 57 Header guard