endian.c revision e0e0c19eefceaf5d4ec40f9466b58a771f50e799
70N/A#include "chromium.h"
70N/A#include "cr_endian.h"
70N/A
70N/Achar crDetermineEndianness( void )
493N/A{
70N/A union {
70N/A struct {
70N/A char c1;
70N/A char c2;
70N/A char c3;
70N/A char c4;
70N/A } c;
70N/A unsigned int i;
70N/A } e_test;
70N/A
70N/A e_test.c.c1 = 1;
70N/A e_test.c.c2 = 2;
70N/A e_test.c.c3 = 3;
70N/A e_test.c.c4 = 4;
70N/A
70N/A if (e_test.i == 0x01020304)
70N/A {
70N/A return CR_BIG_ENDIAN;
70N/A }
70N/A return CR_LITTLE_ENDIAN;
70N/A}
70N/A
70N/Adouble SWAPDOUBLE( double d )
70N/A{
70N/A CR64BitType *ptr = (CR64BitType *) (&d);
70N/A#ifdef __STDC__
70N/A CR64BitType swapped;
493N/A SWAP64( *ptr );
70N/A swapped = *ptr;
70N/A#else
70N/A CR64BitType swapped = SWAP64( *ptr );
493N/A#endif
70N/A return *((double *) (&swapped));
70N/A}
493N/A