00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00044 #ifndef __vtkByteSwap_h
00045 #define __vtkByteSwap_h
00046
00047 #include "vtkObject.h"
00048
00049 class VTK_COMMON_EXPORT vtkByteSwap : public vtkObject
00050 {
00051 public:
00052 static vtkByteSwap *New();
00053 vtkTypeRevisionMacro(vtkByteSwap,vtkObject);
00054
00056
00057 static void Swap2LE(short *s);
00058 static void Swap2LE(unsigned short *s);
00060
00062
00063 static void Swap4LE(char *c);
00064 static void Swap4LE(float *p) { vtkByteSwap::Swap4LE((char *)p);};
00065 static void Swap4LE(int *i) { vtkByteSwap::Swap4LE((char *)i);};
00066 static void Swap4LE(unsigned int *i) { vtkByteSwap::Swap4LE((char *)i);};
00067 static void Swap4LE(long *i) { vtkByteSwap::Swap4LE((char *)i);};
00068 static void Swap4LE(unsigned long *i) { vtkByteSwap::Swap4LE((char *)i);};
00070
00072
00074 static void Swap8LE(char *c);
00075 static void Swap8LE(double *d) { vtkByteSwap::Swap8LE((char *)d);};
00077
00079
00081 static void Swap2LERange(char *c,int num);
00082 static void Swap2LERange(short *i,int num)
00083 { vtkByteSwap::Swap2LERange((char *)i,num);};
00085
00087
00089 static void Swap4LERange(char *c,int num);
00090 static void Swap4LERange(unsigned char *c,int num)
00091 { vtkByteSwap::Swap4LERange((char *)c,num);};
00092 static void Swap4LERange(float *p,int num)
00093 { vtkByteSwap::Swap4LERange((char *)p,num);};
00094 static void Swap4LERange(int *i,int num)
00095 { vtkByteSwap::Swap4LERange((char *)i,num);};
00096 static void Swap4LERange(unsigned int *i,int num)
00097 { vtkByteSwap::Swap4LERange((char *)i,num);};
00098 static void Swap4LERange(long *i,int num)
00099 { vtkByteSwap::Swap4LERange((char *)i,num);};
00100 static void Swap4LERange(unsigned long *i,int num)
00101 { vtkByteSwap::Swap4LERange((char *)i,num);};
00103
00105
00107 static void Swap8LERange(char *c, int num);
00108 static void Swap8LERange(double *d, int num)
00109 { vtkByteSwap::Swap8LERange((char *)d, num);};
00111
00113
00114 static void Swap2BE(short *s);
00115 static void Swap2BE(unsigned short *s);
00117
00119
00121 static void Swap4BE(char *c);
00122 static void Swap4BE(float *p) { vtkByteSwap::Swap4BE((char *)p);};
00123 static void Swap4BE(int *i) { vtkByteSwap::Swap4BE((char *)i);};
00124 static void Swap4BE(unsigned int *i) { vtkByteSwap::Swap4BE((char *)i);};
00125 static void Swap4BE(long *i) { vtkByteSwap::Swap4BE((char *)i);};
00126 static void Swap4BE(unsigned long *i) { vtkByteSwap::Swap4BE((char *)i);};
00128
00130
00132 static void Swap8BE(char *c);
00133 static void Swap8BE(double *d) { vtkByteSwap::Swap8BE((char *)d);};
00135
00137
00139 static void Swap2BERange(char *c,int num);
00140 static void Swap2BERange(short *i,int num)
00141 { vtkByteSwap::Swap2BERange((char *)i,num);};
00143
00145
00147 static void Swap4BERange(char *c,int num);
00148 static void Swap4BERange(float *p,int num)
00149 { vtkByteSwap::Swap4BERange((char *)p,num); };
00150 static void Swap4BERange(int *i,int num)
00151 { vtkByteSwap::Swap4BERange((char *)i,num); };
00152 static void Swap4BERange(unsigned int *i,int num)
00153 { vtkByteSwap::Swap4BERange((char *)i,num); };
00154 static void Swap4BERange(long *i,int num)
00155 { vtkByteSwap::Swap4BERange((char *)i,num); };
00156 static void Swap4BERange(unsigned long *i,int num)
00157 { vtkByteSwap::Swap4BERange((char *)i,num); };
00159
00160 #ifdef VTK_USE_64BIT_IDS
00161 static void Swap4BERange(vtkIdType *i,int num)
00162 { vtkByteSwap::Swap4BERange((char *)i,num); };
00163 #endif
00164
00166
00168 static void Swap8BERange(char *c,int num);
00169 static void Swap8BERange(double *d,int num)
00170 { vtkByteSwap::Swap8BERange((char *)d,num); };
00172
00174
00177 static void SwapWrite2BERange(char *c,int num,FILE *fp);
00178 static void SwapWrite2BERange(short *i,int num, FILE *fp)
00179 {vtkByteSwap::SwapWrite2BERange((char *)i,num,fp);};
00181
00183
00186 static void SwapWrite4BERange(char *c,int num,FILE *fp);
00187 static void SwapWrite4BERange(float *p,int num, FILE *fp)
00188 { vtkByteSwap::SwapWrite4BERange((char *)p,num,fp);};
00189 static void SwapWrite4BERange(int *i,int num,FILE *fp)
00190 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00191 static void SwapWrite4BERange(unsigned int *i,int num,FILE *fp)
00192 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00193 static void SwapWrite4BERange(unsigned long *i,int num, FILE *fp)
00194 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00195 static void SwapWrite4BERange(long *i,int num, FILE *fp)
00196 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00197 #ifdef VTK_USE_64BIT_IDS
00198 static void SwapWrite4BERange(vtkIdType *i,int num, FILE *fp)
00199 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00201 #endif
00202
00203
00206 static void SwapWrite8BERange(char *c,int num,FILE *fp);
00207 static void SwapWrite8BERange(double *d,int num, FILE *fp)
00208 { vtkByteSwap::SwapWrite8BERange((char *)d,num,fp);};
00210
00212
00215 static void SwapWrite2BERange(char *c,int num, ostream *fp);
00216 static void SwapWrite2BERange(short *i,int num, ostream *fp)
00217 {vtkByteSwap::SwapWrite2BERange((char *)i,num,fp);};
00219
00221
00224 static void SwapWrite4BERange(char *c,int num, ostream *fp);
00225 static void SwapWrite4BERange(float *p,int num, ostream *fp)
00226 { vtkByteSwap::SwapWrite4BERange((char *)p,num,fp);};
00227 static void SwapWrite4BERange(int *i,int num, ostream *fp)
00228 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00229 static void SwapWrite4BERange(unsigned int *i,int num, ostream *fp)
00230 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00231 static void SwapWrite4BERange(unsigned long *i,int num, ostream *fp)
00232 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00233 static void SwapWrite4BERange(long *i,int num, ostream *fp)
00234 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00235 #ifdef VTK_USE_64BIT_IDS
00236 static void SwapWrite4BERange(vtkIdType *i,int num, ostream *fp)
00237 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00239 #endif
00240
00241
00244 static void SwapWrite8BERange(char *c,int num, ostream *fp);
00245 static void SwapWrite8BERange(double *d,int num, ostream *fp)
00246 { vtkByteSwap::SwapWrite8BERange((char *)d,num,fp);};
00248
00251 static void SwapVoidRange(void *buffer, int numWords, int wordSize);
00252
00253
00254 protected:
00255 vtkByteSwap() {};
00256 ~vtkByteSwap() {};
00257
00258 private:
00260 static void Swap2Bytes(char* &data);
00261
00262 static void Swap4Bytes(char* &data);
00263
00264 static void Swap8Bytes(char* &data);
00265
00266 private:
00267 vtkByteSwap(const vtkByteSwap&);
00268 void operator=(const vtkByteSwap&);
00269 };
00270
00271
00272 inline void
00273 vtkByteSwap::Swap2Bytes(char* &data)
00274 {
00275 char one_byte;
00276 one_byte = data[0]; data[0] = data[1]; data[1] = one_byte;
00277 }
00278
00279 inline void
00280 vtkByteSwap::Swap4Bytes(char* &data)
00281 {
00282 char one_byte;
00283 one_byte = data[0]; data[0] = data[3]; data[3] = one_byte;
00284 one_byte = data[1]; data[1] = data[2]; data[2] = one_byte;
00285 }
00286
00287 inline void
00288 vtkByteSwap::Swap8Bytes(char* &data)
00289 {
00290 char one_byte;
00291 one_byte = data[0]; data[0] = data[7]; data[7] = one_byte;
00292 one_byte = data[1]; data[1] = data[6]; data[6] = one_byte;
00293 one_byte = data[2]; data[2] = data[5]; data[5] = one_byte;
00294 one_byte = data[3]; data[3] = data[4]; data[4] = one_byte;
00295 }
00296
00297 #endif