00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00030 #ifndef __vtkByteSwap_h
00031 #define __vtkByteSwap_h
00032
00033 #include "vtkObject.h"
00034
00035 class VTK_COMMON_EXPORT vtkByteSwap : public vtkObject
00036 {
00037 public:
00038 static vtkByteSwap *New();
00039 vtkTypeRevisionMacro(vtkByteSwap,vtkObject);
00040
00042
00043 static void Swap2LE(short *s);
00044 static void Swap2LE(unsigned short *s);
00046
00048
00049 static void Swap4LE(char *c);
00050 static void Swap4LE(float *p) { vtkByteSwap::Swap4LE((char *)p);};
00051 static void Swap4LE(int *i) { vtkByteSwap::Swap4LE((char *)i);};
00052 static void Swap4LE(unsigned int *i) { vtkByteSwap::Swap4LE((char *)i);};
00053 static void Swap4LE(long *i) { vtkByteSwap::Swap4LE((char *)i);};
00054 static void Swap4LE(unsigned long *i) { vtkByteSwap::Swap4LE((char *)i);};
00056
00058
00060 static void Swap8LE(char *c);
00061 static void Swap8LE(double *d) { vtkByteSwap::Swap8LE((char *)d);};
00063
00065
00067 static void Swap2LERange(char *c,int num);
00068 static void Swap2LERange(short *i,int num)
00069 { vtkByteSwap::Swap2LERange((char *)i,num);};
00071
00073
00075 static void Swap4LERange(char *c,int num);
00076 static void Swap4LERange(unsigned char *c,int num)
00077 { vtkByteSwap::Swap4LERange((char *)c,num);};
00078 static void Swap4LERange(float *p,int num)
00079 { vtkByteSwap::Swap4LERange((char *)p,num);};
00080 static void Swap4LERange(int *i,int num)
00081 { vtkByteSwap::Swap4LERange((char *)i,num);};
00082 static void Swap4LERange(unsigned int *i,int num)
00083 { vtkByteSwap::Swap4LERange((char *)i,num);};
00084 static void Swap4LERange(long *i,int num)
00085 { vtkByteSwap::Swap4LERange((char *)i,num);};
00086 static void Swap4LERange(unsigned long *i,int num)
00087 { vtkByteSwap::Swap4LERange((char *)i,num);};
00089
00091
00093 static void Swap8LERange(char *c, int num);
00094 static void Swap8LERange(double *d, int num)
00095 { vtkByteSwap::Swap8LERange((char *)d, num);};
00097
00099
00100 static void Swap2BE(short *s);
00101 static void Swap2BE(unsigned short *s);
00103
00105
00107 static void Swap4BE(char *c);
00108 static void Swap4BE(float *p) { vtkByteSwap::Swap4BE((char *)p);};
00109 static void Swap4BE(int *i) { vtkByteSwap::Swap4BE((char *)i);};
00110 static void Swap4BE(unsigned int *i) { vtkByteSwap::Swap4BE((char *)i);};
00111 static void Swap4BE(long *i) { vtkByteSwap::Swap4BE((char *)i);};
00112 static void Swap4BE(unsigned long *i) { vtkByteSwap::Swap4BE((char *)i);};
00114
00116
00118 static void Swap8BE(char *c);
00119 static void Swap8BE(double *d) { vtkByteSwap::Swap8BE((char *)d);};
00121
00123
00125 static void Swap2BERange(char *c,int num);
00126 static void Swap2BERange(short *i,int num)
00127 { vtkByteSwap::Swap2BERange((char *)i,num);};
00129
00131
00133 static void Swap4BERange(char *c,int num);
00134 static void Swap4BERange(float *p,int num)
00135 { vtkByteSwap::Swap4BERange((char *)p,num); };
00136 static void Swap4BERange(int *i,int num)
00137 { vtkByteSwap::Swap4BERange((char *)i,num); };
00138 static void Swap4BERange(unsigned int *i,int num)
00139 { vtkByteSwap::Swap4BERange((char *)i,num); };
00140 static void Swap4BERange(long *i,int num)
00141 { vtkByteSwap::Swap4BERange((char *)i,num); };
00142 static void Swap4BERange(unsigned long *i,int num)
00143 { vtkByteSwap::Swap4BERange((char *)i,num); };
00145
00146 #ifdef VTK_USE_64BIT_IDS
00147 static void Swap4BERange(vtkIdType *i,int num)
00148 { vtkByteSwap::Swap4BERange((char *)i,num); };
00149 #endif
00150
00152
00154 static void Swap8BERange(char *c,int num);
00155 static void Swap8BERange(double *d,int num)
00156 { vtkByteSwap::Swap8BERange((char *)d,num); };
00158
00160
00163 static void SwapWrite2BERange(char *c,int num,FILE *fp);
00164 static void SwapWrite2BERange(short *i,int num, FILE *fp)
00165 {vtkByteSwap::SwapWrite2BERange((char *)i,num,fp);};
00167
00169
00172 static void SwapWrite4BERange(char *c,int num,FILE *fp);
00173 static void SwapWrite4BERange(float *p,int num, FILE *fp)
00174 { vtkByteSwap::SwapWrite4BERange((char *)p,num,fp);};
00175 static void SwapWrite4BERange(int *i,int num,FILE *fp)
00176 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00177 static void SwapWrite4BERange(unsigned int *i,int num,FILE *fp)
00178 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00179 static void SwapWrite4BERange(unsigned long *i,int num, FILE *fp)
00180 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00181 static void SwapWrite4BERange(long *i,int num, FILE *fp)
00182 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00183 #ifdef VTK_USE_64BIT_IDS
00184 static void SwapWrite4BERange(vtkIdType *i,int num, FILE *fp)
00185 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00187 #endif
00188
00189
00192 static void SwapWrite8BERange(char *c,int num,FILE *fp);
00193 static void SwapWrite8BERange(double *d,int num, FILE *fp)
00194 { vtkByteSwap::SwapWrite8BERange((char *)d,num,fp);};
00196
00198
00201 static void SwapWrite2BERange(char *c,int num, ostream *fp);
00202 static void SwapWrite2BERange(short *i,int num, ostream *fp)
00203 {vtkByteSwap::SwapWrite2BERange((char *)i,num,fp);};
00205
00207
00210 static void SwapWrite4BERange(char *c,int num, ostream *fp);
00211 static void SwapWrite4BERange(float *p,int num, ostream *fp)
00212 { vtkByteSwap::SwapWrite4BERange((char *)p,num,fp);};
00213 static void SwapWrite4BERange(int *i,int num, ostream *fp)
00214 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00215 static void SwapWrite4BERange(unsigned int *i,int num, ostream *fp)
00216 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00217 static void SwapWrite4BERange(unsigned long *i,int num, ostream *fp)
00218 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00219 static void SwapWrite4BERange(long *i,int num, ostream *fp)
00220 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00221 #ifdef VTK_USE_64BIT_IDS
00222 static void SwapWrite4BERange(vtkIdType *i,int num, ostream *fp)
00223 { vtkByteSwap::SwapWrite4BERange((char *)i,num,fp);};
00225 #endif
00226
00227
00230 static void SwapWrite8BERange(char *c,int num, ostream *fp);
00231 static void SwapWrite8BERange(double *d,int num, ostream *fp)
00232 { vtkByteSwap::SwapWrite8BERange((char *)d,num,fp);};
00234
00237 static void SwapVoidRange(void *buffer, int numWords, int wordSize);
00238
00239
00240 protected:
00241 vtkByteSwap() {};
00242 ~vtkByteSwap() {};
00243
00244 private:
00246 static void Swap2Bytes(char* &data);
00247
00248 static void Swap4Bytes(char* &data);
00249
00250 static void Swap8Bytes(char* &data);
00251
00252 private:
00253 vtkByteSwap(const vtkByteSwap&);
00254 void operator=(const vtkByteSwap&);
00255 };
00256
00257
00258 inline void
00259 vtkByteSwap::Swap2Bytes(char* &data)
00260 {
00261 char one_byte;
00262 one_byte = data[0]; data[0] = data[1]; data[1] = one_byte;
00263 }
00264
00265 inline void
00266 vtkByteSwap::Swap4Bytes(char* &data)
00267 {
00268 char one_byte;
00269 one_byte = data[0]; data[0] = data[3]; data[3] = one_byte;
00270 one_byte = data[1]; data[1] = data[2]; data[2] = one_byte;
00271 }
00272
00273 inline void
00274 vtkByteSwap::Swap8Bytes(char* &data)
00275 {
00276 char one_byte;
00277 one_byte = data[0]; data[0] = data[7]; data[7] = one_byte;
00278 one_byte = data[1]; data[1] = data[6]; data[6] = one_byte;
00279 one_byte = data[2]; data[2] = data[5]; data[5] = one_byte;
00280 one_byte = data[3]; data[3] = data[4]; data[4] = one_byte;
00281 }
00282
00283 #endif