|
Isis 3.0 Developer's Reference (API) |
Home |
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