00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00024
00025
00026 #include <stdio.h>
00027 #include "mips_swap.h"
00028 #include "general.h"
00029
00030 void *rr_fwrite(char *ptr, int elsize, int n_elem, FILE *fp, char *header)
00031 {
00032 int n_written, i;
00033
00034 if (n_elem > 0) {
00035
00036 if (elsize == sizeof(int)) {
00037 for (i=0; i<n_elem; i++) {
00038 SWAPWORD(ptr+(elsize*i));
00039 }
00040 }
00041 else if (elsize == sizeof(short)) {
00042 for (i=0; i<n_elem; i++) {
00043 SWAPHALF(ptr+(elsize*i));
00044 }
00045 }
00046 else if (elsize == sizeof(double)) {
00047 for (i=0; i<n_elem; i++) {
00048 SWAPDOUBLE(ptr+(elsize*i));
00049 }
00050 }
00051
00052 n_written = fwrite(ptr,elsize,n_elem,fp);
00053
00054 if (elsize == sizeof(int)) {
00055 for (i=0; i<n_elem; i++) {
00056 SWAPWORD(ptr+(elsize*i));
00057 }
00058 }
00059 else if (elsize == sizeof(short)) {
00060 for (i=0; i<n_elem; i++) {
00061 SWAPHALF(ptr+(elsize*i));
00062 }
00063 }
00064 else if (elsize == sizeof(double)) {
00065 for (i=0; i<n_elem; i++) {
00066 SWAPDOUBLE(ptr+(elsize*i));
00067 }
00068 }
00069
00070 if (n_written != n_elem) quit(-1,
00071 "rr_fwrite: problems writing %s. Only %d of %d elements were written\n",
00072 header, n_written, n_elem);
00073 }
00074
00075 return(0);
00076
00077 }