00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00026 #ifndef __vtkByteSwap_h
00027 #define __vtkByteSwap_h
00028
00029 #include "vtkObject.h"
00030
00031 class VTK_COMMON_EXPORT vtkByteSwap : public vtkObject
00032 {
00033 public:
00034 static vtkByteSwap *New();
00035 vtkTypeRevisionMacro(vtkByteSwap,vtkObject);
00036
00038
00039 static void Swap2LE(short *s);
00040 static void Swap2LE(unsigned short *s);
00042
00044
00045 static void Swap4LE(char *c);
00046 static void Swap4LE(float *p) { vtkByteSwap::Swap4LE((char *)p);};
00047 static void Swap4LE(int *i) { vtkByteSwap::Swap4LE((char *)i);};
00048 static void Swap4LE(unsigned int *i) { vtkByteSwap::Swap4LE((char *)i);};
00049 static void Swap4LE(long *i) { vtkByteSwap::Swap4LE((char *)i);};
00050 static void Swap4LE(unsigned long *i) { vtkByteSwap::Swap4LE((char *)i);};
00052
00054
00056 static void Swap8LE(char *c);
00057 static void Swap8LE(double *d) { vtkByteSwap::Swap8LE((char *)d);};
00059
00061
00063 static void Swap2LERange(char *c,int num);
00064 static void Swap2LERange(short *i,int num)
00065 { vtkByteSwap::Swap2LERange((char *)i,num);};
00067
00069
00071 static void Swap4LERange(char *c,int num);
00072 static void Swap4LERange(unsigned char *c,int num)
00073 { vtkByteSwap::Swap4LERange((char *)c,num);};
00074 static void Swap4LERange(float *p,int num)
00075 { vtkByteSwap::Swap4LERange((char *)p,num);};
00076 static void Swap4LERange(int *i,int num)
00077 { vtkByteSwap::Swap4LERange((char *)i,num);};
00078 static void Swap4LERange(unsigned int *i,int num)
00079 { vtkByteSwap::Swap4LERange((char *)i,num);};
00080 static void Swap4LERange(long *i,int num)
00081 { vtkByteSwap::Swap4LERange((char *)i,num);};
00082 static void Swap4LERange(unsigned long *i,int num)
00083 { vtkByteSwap::Swap4LERange((char *)i,num);};
00085
00087
00089 static void Swap8LERange(char *c, int num);
00090 static void Swap8LERange(double *d, int num)
00091 { vtkByteSwap::Swap8LERange((char *)d, num);};
00093
00095
00096 static void Swap2BE(short *s);
00097 static void Swap2BE(unsigned short *s);
00099
00101
00103 static void Swap4BE(char *c);
00104 static void Swap4BE(float *p) { vtkByteSwap::Swap4BE((char *)p);};
00105 static void Swap4BE(int *i) { vtkByteSwap::Swap4BE((char *)i);};
00106 static void Swap4BE(unsigned int *i) { vtkByteSwap::Swap4BE((char *)i);};
00107 static void Swap4BE(long *i) { vtkByteSwap::Swap4BE((char *)i);};
00108 static void Swap4BE(unsigned long *i) { vtkByteSwap::Swap4BE((char *)i);};
00110
00112
00114 static void Swap8BE(char *c);
00115 static void Swap8BE(double *d) { vtkByteSwap::Swap8BE((char *)d);};
00117
00119
00121 static void Swap2BERange(char *c,int num);
00122 static void Swap2BERange(short *i,int num)
00123 { vtkByteSwap::Swap2BERange((char *)i,num);};
00125
00127
00129 static void Swap4BERange(char *c,int num);
00130 static void Swap4BERange(float *p,int num)
00131 { vtkByteSwap::Swap4BERange((char *)p,num); };
00132 static void Swap4BERange(int *i,int num)
00133 { vtkByteSwap::Swap4BERange((char *)i,num); };
00134 static void Swap4BERange(unsigned int *i,int num)
00135 { vtkByteSwap::Swap4BERange((char *)i,num); };
00136 static void Swap4BERange(long *i,int num)
00137 { vtkByteSwap::Swap4BERange((char *)i,num); };
00138 static void Swap4BERange(unsigned long *i,int num)
00139 { vtkByteSwap::Swap4BERange((char *)i,num); };
00141
00142 #ifdef VTK_USE_64BIT_IDS
00143 static void Swap4BERange(vtkIdType *i,int num)
00144 { vtkByteSwap::Swap4BERange((char *)i,num); };
00145 #endif
00146
00148
00150 static void Swap8BERange(char *c,int num);
00151 static void Swap8BERange(double *d,int num)
00152 { vtkByteSwap::Swap8BERange((char *)d,num); };
00154
00156
00159 static void SwapWrite2BERange(char *c,int num,FILE *fp);
00160 static void SwapWrite2BERange(short *i,int num, FILE *fp)
00161 {vtkByteSwap::SwapWrite2BERange((char *)i,num,fp);};
00163
00165
00168 static void SwapWrite4BERange(char *c,int num,FILE *fp);
00169 static void SwapWrite4BERange(float *p,int num, FILE *fp)
00170 { vtkByteSwap::SwapWrite4BERange((char *)p,num,fp);};
00171 static void SwapWrite4BERange(int *i,int num,FILE *fp)
00172 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00173 static void SwapWrite4BERange(unsigned int *i,int num,FILE *fp)
00174 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00175 static void SwapWrite4BERange(unsigned long *i,int num, FILE *fp)
00176 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00177 static void SwapWrite4BERange(long *i,int num, FILE *fp)
00178 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00179 #ifdef VTK_USE_64BIT_IDS
00180 static void SwapWrite4BERange(vtkIdType *i,int num, FILE *fp)
00181 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00183 #endif
00184
00185
00188 static void SwapWrite8BERange(char *c,int num,FILE *fp);
00189 static void SwapWrite8BERange(double *d,int num, FILE *fp)
00190 { vtkByteSwap::SwapWrite8BERange((char *)d,num,fp);};
00192
00194
00197 static void SwapWrite2BERange(char *c,int num, ostream *fp);
00198 static void SwapWrite2BERange(short *i,int num, ostream *fp)
00199 {vtkByteSwap::SwapWrite2BERange((char *)i,num,fp);};
00201
00203
00206 static void SwapWrite4BERange(char *c,int num, ostream *fp);
00207 static void SwapWrite4BERange(float *p,int num, ostream *fp)
00208 { vtkByteSwap::SwapWrite4BERange((char *)p,num,fp);};
00209 static void SwapWrite4BERange(int *i,int num, ostream *fp)
00210 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00211 static void SwapWrite4BERange(unsigned int *i,int num, ostream *fp)
00212 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00213 static void SwapWrite4BERange(unsigned long *i,int num, ostream *fp)
00214 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00215 static void SwapWrite4BERange(long *i,int num, ostream *fp)
00216 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00217 #ifdef VTK_USE_64BIT_IDS
00218 static void SwapWrite4BERange(vtkIdType *i,int num, ostream *fp)
00219 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00221 #endif
00222
00223
00226 static void SwapWrite8BERange(char *c,int num, ostream *fp);
00227 static void SwapWrite8BERange(double *d,int num, ostream *fp)
00228 { vtkByteSwap::SwapWrite8BERange((char *)d,num,fp);};
00230
00233 static void SwapVoidRange(void *buffer, int numWords, int wordSize);
00234
00235
00236 protected:
00237 vtkByteSwap() {};
00238 ~vtkByteSwap() {};
00239
00240 private:
00242 static void Swap2Bytes(char* &data);
00243
00244 static void Swap4Bytes(char* &data);
00245
00246 static void Swap8Bytes(char* &data);
00247
00248 private:
00249 vtkByteSwap(const vtkByteSwap&);
00250 void operator=(const vtkByteSwap&);
00251 };
00252
00253
00254 inline void
00255 vtkByteSwap::Swap2Bytes(char* &data)
00256 {
00257 char one_byte;
00258 one_byte = data[0]; data[0] = data[1]; data[1] = one_byte;
00259 }
00260
00261 inline void
00262 vtkByteSwap::Swap4Bytes(char* &data)
00263 {
00264 char one_byte;
00265 one_byte = data[0]; data[0] = data[3]; data[3] = one_byte;
00266 one_byte = data[1]; data[1] = data[2]; data[2] = one_byte;
00267 }
00268
00269 inline void
00270 vtkByteSwap::Swap8Bytes(char* &data)
00271 {
00272 char one_byte;
00273 one_byte = data[0]; data[0] = data[7]; data[7] = one_byte;
00274 one_byte = data[1]; data[1] = data[6]; data[6] = one_byte;
00275 one_byte = data[2]; data[2] = data[5]; data[5] = one_byte;
00276 one_byte = data[3]; data[3] = data[4]; data[4] = one_byte;
00277 }
00278
00279 #endif