USGS

Isis 3.0 Developer's Reference (API)

Home

Endian.h

Go to the documentation of this file.
00001 
00024 #ifndef Endian_h
00025 #define Endian_h
00026 
00027 #include <QString>
00028 
00029 namespace Isis {
00059   enum ByteOrder {
00060     NoByteOrder = 0,
00061     Lsb,
00062     Msb
00063   };
00064 
00065   inline QString ByteOrderName(Isis::ByteOrder byteOrder) {
00066     if(byteOrder == Isis::NoByteOrder) return "None";
00067     if(byteOrder == Isis::Lsb) return "Lsb";
00068     if(byteOrder == Isis::Msb) return "Msb";
00069     return "Error";
00070   }
00071 
00072   inline Isis::ByteOrder ByteOrderEnumeration(const QString &order) {
00073     QString temp = order.toUpper();
00074     if(temp == "LSB") return Isis::Lsb;
00075     if(temp == "MSB") return Isis::Msb;
00076     return Isis::NoByteOrder;
00077   }
00078 
00084   inline bool IsLsb() {
00085     union {
00086       short a;
00087       char b[2];
00088     } test;
00089 
00090     test.a = 1;
00091     if(test.b[0] == 0) return false;
00092     return true;
00093   }
00094 
00100   inline bool IsMsb() {
00101     return !Isis::IsLsb();
00102   }
00103 
00111   inline bool IsLittleEndian() {
00112     return IsLsb();
00113   }
00114 
00122   inline bool IsBigEndian() {
00123     return !Isis::IsLsb();
00124   }
00125 }
00126 
00127 #endif
00128