Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

dox/Common/vtkByteSwap.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkByteSwap.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 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&); // Not implemented. 00254 void operator=(const vtkByteSwap&); // Not implemented. 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