Changeset 33648 for trunk/Ohana/src/libfits/matrix/F_write_M.c
- Timestamp:
- Apr 1, 2012, 2:22:08 PM (14 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/libfits/matrix/F_write_M.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/libfits/matrix/F_write_M.c
r27435 r33648 36 36 nbytes = FT_RECORD_SIZE * ((off_t) (matrix[0].datasize / FT_RECORD_SIZE)); 37 37 38 # define DOSWAP(A,B) { char tmp = A; A = B; B = tmp; } 39 38 40 /* this is a bit cumbersome: swap all words, write out file, then swap back... */ 39 41 # ifdef BYTE_SWAP 40 42 { 41 43 off_t i; 42 unsigned char *byte0, *byte1, *byte2, *byte3, *byte4, *byte5, *byte6, *byte7 , tmp;44 unsigned char *byte0, *byte1, *byte2, *byte3, *byte4, *byte5, *byte6, *byte7; 43 45 int perpix; 44 46 … … 55 57 if (perpix == 2) { 56 58 for (i = 0; i < nbytes; i+=2, byte0 += 2, byte1 += 2) { 57 tmp = *byte0; 58 *byte0 = *byte1; 59 *byte1 = tmp; 59 DOSWAP(*byte0, *byte1); 60 60 } 61 61 } 62 62 if (perpix == 4) { 63 63 for (i = 0; i < nbytes; i+=4, byte0 += 4, byte1 += 4, byte2 += 4, byte3 += 4) { 64 tmp = *byte0; 65 *byte0 = *byte3; 66 *byte3 = tmp; 67 tmp = *byte1; 68 *byte1 = *byte2; 69 *byte2 = tmp; 64 DOSWAP (*byte0, *byte3); 65 DOSWAP (*byte1, *byte2); 70 66 } 71 67 } 72 68 if (perpix == 8) { 73 69 for (i = 0; i < nbytes; i+=8, byte0 += 8, byte1 += 8, byte2 += 8, byte3 += 8, byte4 += 8, byte5 += 8, byte6 += 8, byte7 += 8) { 74 tmp = *byte0; 75 *byte0 = *byte7; 76 *byte7 = tmp; 77 tmp = *byte1; 78 *byte1 = *byte6; 79 *byte6 = tmp; 80 tmp = *byte1; 81 *byte2 = *byte5; 82 *byte5 = tmp; 83 tmp = *byte1; 84 *byte3 = *byte4; 85 *byte4 = tmp; 70 DOSWAP (*byte0, *byte7); 71 DOSWAP (*byte1, *byte6); 72 DOSWAP (*byte2, *byte5); 73 DOSWAP (*byte3, *byte4); 86 74 } 87 75 } … … 98 86 { 99 87 off_t i; 100 unsigned char *byte0, *byte1, *byte2, *byte3, *byte4, *byte5, *byte6, *byte7 , tmp;88 unsigned char *byte0, *byte1, *byte2, *byte3, *byte4, *byte5, *byte6, *byte7; 101 89 int perpix; 102 90 … … 113 101 if (perpix == 2) { 114 102 for (i = 0; i < nbytes; i+=2, byte0 += 2, byte1 += 2) { 115 tmp = *byte0; 116 *byte0 = *byte1; 117 *byte1 = tmp; 103 DOSWAP(*byte0, *byte1); 118 104 } 119 105 } 120 106 if (perpix == 4) { 121 107 for (i = 0; i < nbytes; i+=4, byte0 += 4, byte1 += 4, byte2 += 4, byte3 += 4) { 122 tmp = *byte0; 123 *byte0 = *byte3; 124 *byte3 = tmp; 125 tmp = *byte1; 126 *byte1 = *byte2; 127 *byte2 = tmp; 108 DOSWAP (*byte0, *byte3); 109 DOSWAP (*byte1, *byte2); 128 110 } 129 111 } 130 112 if (perpix == 8) { 131 113 for (i = 0; i < nbytes; i+=8, byte0 += 8, byte1 += 8, byte2 += 8, byte3 += 8, byte4 += 8, byte5 += 8, byte6 += 8, byte7 += 8) { 132 tmp = *byte0; 133 *byte0 = *byte7; 134 *byte7 = tmp; 135 tmp = *byte1; 136 *byte1 = *byte6; 137 *byte6 = tmp; 138 tmp = *byte1; 139 *byte2 = *byte5; 140 *byte5 = tmp; 141 tmp = *byte1; 142 *byte3 = *byte4; 143 *byte4 = tmp; 114 DOSWAP (*byte0, *byte7); 115 DOSWAP (*byte1, *byte6); 116 DOSWAP (*byte2, *byte5); 117 DOSWAP (*byte3, *byte4); 144 118 } 145 119 }
Note:
See TracChangeset
for help on using the changeset viewer.
