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

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