+ else if itkWriteRawBytesAfterSwappingMacro( double, DOUBLE );
+#else
+#define itkWriteRawBytesAfterSwappingMacro(StrongType, WeakType) \
+ ( this->GetComponentType() == WeakType ) \
+ { \
+ using InternalByteSwapperType = itk::ByteSwapper<StrongType>; \
+ const SizeValueType numberOfPixels = numberOfBytes/(sizeof(StrongType)); \
+ if ( m_ByteOrder == LittleEndian ) \
+ { \
+ StrongType *tempBuffer = new StrongType[numberOfPixels]; \
+ memcpy((char *)tempBuffer, buffer, numberOfBytes); \
+ InternalByteSwapperType::SwapRangeFromSystemToLittleEndian( \
+ (StrongType *)tempBuffer, numberOfComponents); \
+ file.write((char *)tempBuffer, numberOfBytes); \
+ delete[] tempBuffer; \
+ } \
+ else if ( m_ByteOrder == BigEndian ) \
+ { \
+ StrongType *tempBuffer = new StrongType[numberOfPixels]; \
+ memcpy((char *)tempBuffer, buffer, numberOfBytes); \
+ InternalByteSwapperType::SwapRangeFromSystemToBigEndian( \
+ (StrongType *)tempBuffer, numberOfComponents); \
+ file.write((char *)tempBuffer, numberOfBytes); \
+ delete[] tempBuffer; \
+ } \
+ else \
+ { \
+ file.write(static_cast< const char * >( buffer ), numberOfBytes); \
+ } \
+ }
+
+ // Swap bytes if necessary
+ if itkWriteRawBytesAfterSwappingMacro(unsigned short, USHORT)
+ else if itkWriteRawBytesAfterSwappingMacro(short, SHORT)
+ else if itkWriteRawBytesAfterSwappingMacro(char, CHAR)
+ else if itkWriteRawBytesAfterSwappingMacro(unsigned char, UCHAR)
+ else if itkWriteRawBytesAfterSwappingMacro(unsigned int, UINT)
+ else if itkWriteRawBytesAfterSwappingMacro(int, INT)
+ else if itkWriteRawBytesAfterSwappingMacro(long, LONG)
+ else if itkWriteRawBytesAfterSwappingMacro(unsigned long, ULONG)
+ else if itkWriteRawBytesAfterSwappingMacro(float, FLOAT)
+ else if itkWriteRawBytesAfterSwappingMacro(double, DOUBLE)
+#endif