00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef ATMODATA_FILE_COMMON_HXX
00025
00026 namespace AtmoData
00027 {
00028
00029 #define SWAP_4(a) ((a >> 24) & 0xFF) | ((a >> 8) & 0xFF00) | \
00030 ((a << 8) & 0x00FF0000) | ((a << 24) & 0xFF000000)
00031
00032 inline float swap(float& x)
00033 {
00034 return (*(unsigned *)&x = SWAP_4(*(unsigned *)&x));
00035 }
00036
00037 inline int swap(int& x)
00038 {
00039 return (*(unsigned *)&x = SWAP_4(*(unsigned *)&x));
00040 }
00041
00042 inline unsigned int swap(unsigned int& x)
00043 {
00044 return (*(unsigned *)&x = SWAP_4(*(unsigned *)&x));
00045 }
00046
00047 inline unsigned long swap(unsigned long& x)
00048 {
00049 return (*(unsigned *)&x = SWAP_4(*(unsigned *)&x));
00050 }
00051
00052 template <class T, int N>
00053 inline void swap(Array<T, N>& A)
00054 {
00055 for (int i=0; i<A.size(); i++)
00056 swap(A.data()[i]);
00057 }
00058
00059 }
00060
00061
00062 #define ATMODATA_FILE_COMMON_HXX
00063 #endif