1 /*========================================================================= 2 3 Program: GDCM (Grassroots DICOM). A DICOM library 4 5 Copyright (c) 2006-2011 Mathieu Malaterre 6 All rights reserved. 7 See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details. 8 9 This software is distributed WITHOUT ANY WARRANTY; without even 10 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 11 PURPOSE. See the above copyright notice for more information. 12 13 =========================================================================*/ 14 #ifndef GDCMSWAPPER_H 15 #define GDCMSWAPPER_H 16 17 #include "gdcmSwapCode.h" 18 19 namespace gdcm 20 { 21 22 23 #ifdef GDCM_WORDS_BIGENDIAN 24 class SwapperDoOp 25 { 26 public: Swap(T val)27 template <typename T> static T Swap(T val) {return val;} SwapArray(T *,unsigned int)28 template <typename T> static void SwapArray(T *, unsigned int ) {} 29 }; 30 31 class SwapperNoOp 32 { 33 public: 34 template <typename T> static T Swap(T val); 35 template <typename T> SwapArray(T * array,unsigned int n)36 static void SwapArray(T *array, unsigned int n) 37 { 38 // TODO: need to unroll loop: 39 for(unsigned int i = 0; i < n; ++i) 40 { 41 array[i] = Swap<T>(array[i]); 42 } 43 } 44 }; 45 #else 46 class SwapperNoOp 47 { 48 public: 49 template <typename T> static T Swap(T val) {return val;} 50 template <typename T> static void SwapArray(T *, size_t ) {} 51 }; 52 53 class SwapperDoOp 54 { 55 public: 56 template <typename T> static T Swap(T val); 57 template <typename T> 58 static void SwapArray(T *array, size_t n) 59 { 60 // TODO: need to unroll loop: 61 for(size_t i = 0; i < n; ++i) 62 { 63 array[i] = Swap<T>(array[i]); 64 } 65 } 66 }; 67 #endif 68 69 70 } // end namespace gdcm 71 72 #include "gdcmSwapper.txx" 73 74 #endif //GDCMSWAPPER_H 75