Check the type of bit ordering (big or little endian) of the running architecture.
Logical output: true is the running architecture uses little endian ordering, false otherwise.
Check if the type of the bit ordering of the running architecture is little endian.
subroutine check_endian()
!---------------------------------------------------------------------------------------------------------------------------------
!< Check the type of bit ordering (big or little endian) of the running architecture.
!<
!> @note The result is stored into the *endian* global variable.
!---------------------------------------------------------------------------------------------------------------------------------
!---------------------------------------------------------------------------------------------------------------------------------
if (is_little_endian()) then
endian = endianL
else
endian = endianB
endif
return
!---------------------------------------------------------------------------------------------------------------------------------
contains
pure function is_little_endian() result(is_little)
!-------------------------------------------------------------------------------------------------------------------------------
!< Check if the type of the bit ordering of the running architecture is little endian.
!-------------------------------------------------------------------------------------------------------------------------------
logical :: is_little !< Logical output: true is the running architecture uses little endian ordering, false otherwise.
integer(I1P) :: int1(1:4) !< One byte integer array for casting 4 bytes integer.
!-------------------------------------------------------------------------------------------------------------------------------
!-------------------------------------------------------------------------------------------------------------------------------
int1 = transfer(1_I4P, int1)
is_little = (int1(1)==1_I1P)
return
!-------------------------------------------------------------------------------------------------------------------------------
endfunction is_little_endian
endsubroutine check_endian