OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Member Functions | Private Member Functions | Private Attributes | List of all members
ossimEndian Class Reference

#include <ossimEndian.h>

Public Member Functions

 ossimEndian ()
 
void swap (ossim_sint8 &)
 
void swap (ossim_uint8 &)
 
void swap (ossim_int16 &data) const
 
void swap (ossim_uint16 &data) const
 
void swap (ossim_int32 &data) const
 
void swap (ossim_uint32 &data) const
 
void swap (ossim_uint64 &data) const
 
void swap (ossim_sint64 &data) const
 
void swap (ossim_float32 &data) const
 
void swap (ossim_float64 &data) const
 
void swap (ossimScalarType scalar, void *data, ossim_uint32 size) const
 
void swap (ossim_sint8 *data, ossim_uint32 size) const
 
void swap (ossim_uint8 *data, ossim_uint32 size) const
 
void swap (ossim_int16 *data, ossim_uint32 size) const
 
void swap (ossim_uint16 *data, ossim_uint32 size) const
 
void swap (ossim_int32 *data, ossim_uint32 size) const
 
void swap (ossim_uint32 *data, ossim_uint32 size) const
 
void swap (ossim_int64 *data, ossim_uint32 size) const
 
void swap (ossim_uint64 *data, ossim_uint32 size) const
 
void swap (ossim_float32 *data, ossim_uint32 size) const
 
void swap (ossim_float64 *data, ossim_uint32 size) const
 
void swapTwoBytes (void *data, ossim_uint32 size) const
 
void swapFourBytes (void *data, ossim_uint32 size) const
 
void swapEightBytes (void *data, ossim_uint32 size) const
 
ossimByteOrder getSystemEndianType () const
 

Private Member Functions

void swapTwoBytes (void *data) const
 
void swapFourBytes (void *data) const
 
void swapEightBytes (void *data) const
 
void swapPrivate (ossim_uint8 *c1, ossim_uint8 *c2) const
 

Private Attributes

ossimByteOrder theSystemEndianType
 

Detailed Description

Definition at line 18 of file ossimEndian.h.

Constructor & Destructor Documentation

◆ ossimEndian()

ossimEndian::ossimEndian ( )

Definition at line 15 of file ossimEndian.cpp.

References OSSIM_BIG_ENDIAN, OSSIM_LITTLE_ENDIAN, and theSystemEndianType.

16 {
17  ossim_uint16 test;
18  ossim_uint8 *testPtr=0;
19  test = 0x0001;
20 
21  testPtr = reinterpret_cast<unsigned char*>(&test);
23 }
unsigned short ossim_uint16
ossimByteOrder theSystemEndianType
Definition: ossimEndian.h:68
unsigned char ossim_uint8

Member Function Documentation

◆ getSystemEndianType()

ossimByteOrder ossimEndian::getSystemEndianType ( ) const
inline

Definition at line 78 of file ossimEndian.h.

References theSystemEndianType.

Referenced by ossimGeneralRasterElevHandler::getHeightAboveMSLFileTemplate(), ossimGeneralRasterElevHandler::getHeightAboveMSLMemoryTemplate(), ossimGeoidNgsHeader::getHeightDelta(), ossimImageMpiMWriterSequenceConnection::getNextTile(), ossimNadconGridFile::getShiftAtLatLon(), ossimGeoidNgsHeader::initialize(), ossimGeneralRasterWriter::loadState(), ossimplugins::operator>>(), ossimGeneralRasterWriter::ossimGeneralRasterWriter(), ossimRpfCompressionLookupOffsetRecord::parseStream(), ossimRpfCompressionSectionSubheader::parseStream(), ossimRpfColorConverterOffsetRecord::parseStream(), ossimRpfColorGrayscaleOffsetRecord::parseStream(), ossimRpfAttributeOffsetRecord::parseStream(), ossimRpfColorConverterTable::parseStream(), ossimRpfMaskSubheader::parseStream(), ossimRpfColorConverterSubsection::parseStream(), ossimRpfImageDisplayParameterSubheader::parseStream(), ossimRpfAttributeSectionSubheader::parseStream(), ossimNitfVqCompressionOffsetTableData::parseStream(), ossimNitfImageHeaderV2_0::parseStream(), ossimRpfImageDescriptionSubheader::parseStream(), ossimRpfCompressionSection::parseStream(), ossimRpfFrameFileIndexRecord::parseStream(), ossimRpfPathnameRecord::parseStream(), ossimNitfVqCompressionHeader::parseStream(), ossimRpfFrame::populateMasks(), ossimNadconGridHeader::readHeader(), ossimNitf20Writer::writeBlockBandSeparate(), ossimNitfWriter::writeBlockBandSeparate(), ossimNitf20Writer::writeBlockBandSequential(), ossimNitfWriter::writeBlockBandSequential(), ossimAigStatistics::writeStream(), ossimAigBounds::writeStream(), ossimNitfImageDataMaskV2_1::writeStream(), ossimRpfFrameFileIndexRecord::writeStream(), ossimAigDataFileHeader::writeStream(), ossimRpfCoverageSection::writeStream(), ossimRpfPathnameRecord::writeStream(), ossimRpfBoundaryRectRecord::writeStream(), ossimRpfBoundaryRectSectionSubheader::writeStream(), ossimAigIndexFileHeader::writeStream(), and ossimAigHeader::writeStream().

79 {
80  return theSystemEndianType;
81 }
ossimByteOrder theSystemEndianType
Definition: ossimEndian.h:68

◆ swap() [1/21]

void ossimEndian::swap ( ossim_sint8 )
inline

Swap bytes methods that work on a single pixel.

Definition at line 26 of file ossimEndian.h.

Referenced by ossimSrtmSupportData::computeMinMaxTemplate(), ossimPngReader::copyLines(), ossimPngReader::copyLinesWithAlpha(), ossim_hdf5::crossesDateline(), ossimHdf5Info::dumpNumerical(), ossimHdf5::floatTypeToString(), ossim_hdf5::getBilinearProjection(), ossimSrtmHandler::getHeightAboveMSLFileTemplate(), ossimGeneralRasterElevHandler::getHeightAboveMSLFileTemplate(), ossimSrtmHandler::getHeightAboveMSLMemoryTemplate(), ossimGeneralRasterElevHandler::getHeightAboveMSLMemoryTemplate(), ossimGeoidNgsHeader::getHeightDelta(), ossimImageMpiMWriterSequenceConnection::getNextTile(), ossimMpiMasterOverviewSequencer::getNextTile(), ossimNadconGridFile::getShiftAtLatLon(), ossimH5ImageDataset::getTileBuf(), ossimHdf5ImageDataset::getTileBuf(), ossim_hdf5::getValidBoundingRect(), ossimXmpInfo::getXmpApp1XmlBlock(), ossimGeoidNgsHeader::initialize(), ossimHdf5::intTypeToString(), ossimplugins::operator>>(), ossimRpfCompressionLookupOffsetRecord::parseStream(), ossimRpfColorConverterOffsetRecord::parseStream(), ossimRpfColorGrayscaleOffsetRecord::parseStream(), ossimRpfCompressionSectionSubheader::parseStream(), ossimRpfColorConverterTable::parseStream(), ossimRpfAttributeOffsetRecord::parseStream(), ossimRpfMaskSubheader::parseStream(), ossimRpfColorConverterSubsection::parseStream(), ossimRpfImageDisplayParameterSubheader::parseStream(), ossimRpfAttributeSectionSubheader::parseStream(), ossimNitfVqCompressionOffsetTableData::parseStream(), ossimNitfImageHeaderV2_0::parseStream(), ossimRpfImageDescriptionSubheader::parseStream(), ossimJ2kSizRecord::parseStream(), ossimJ2kSotRecord::parseStream(), ossimRpfCompressionSection::parseStream(), ossimRpfCoverageSection::parseStream(), ossimRpfFrameFileIndexRecord::parseStream(), ossimRpfPathnameRecord::parseStream(), ossimRpfBoundaryRectSectionSubheader::parseStream(), ossimJ2kTlmRecord::parseStream(), ossimRpfFrameFileIndexSectionSubheader::parseStream(), ossimRpfBoundaryRectRecord::parseStream(), ossimJ2kCodRecord::parseStream(), ossimNitfVqCompressionHeader::parseStream(), ossimRpfComponentLocationRecord::parseStream(), ossimRpfReplaceUpdateSectionSubheader::parseStream(), ossimRpfHeader::parseStream(), ossimRpfLocationSection::parseStream(), ossimRpfFrame::populateMasks(), ossimHdf5Info::print(), ossim_hdf5::printArrayType(), ossim_hdf5::printAttribute(), ossim_hdf5::printFloatType(), ossim_hdf5::printIntType(), ossimNadconGridHeader::readHeader(), ossimTiffInfo::readLong(), ossimTiffInfo::readLongLong(), ossimTiffInfo::readShort(), ossimJ2kInfo::readUInt16(), ossimJp2Info::readUInt32(), ossimJp2Info::readUInt64(), ossimNitfTileSource::scanForJpegBlockOffsets(), ossimHdf5ImageDataset::scanForValidImageRect(), ossimH5GridModel::setGridNodes(), ossimMpiSlaveOverviewSequencer::slaveProcessTiles(), ossimLasPointRecord3::swap(), ossimLasPointRecord0::swap(), ossimLasPointRecord1::swap(), ossimLasPointRecord4::swap(), ossimLasPointRecord2::swap(), ossimLasHdr::swap(), ossimNitf20Writer::writeBlockBandSeparate(), ossimNitfWriter::writeBlockBandSeparate(), ossimNitf20Writer::writeBlockBandSequential(), ossimNitfWriter::writeBlockBandSequential(), ossimOpjCompressor::writeGeotiffBox(), ossimOpjCompressor::writeGmlBox(), ossimKakaduCompressor::writeGmlBox(), ossimAigStatistics::writeStream(), ossimAigBounds::writeStream(), ossimNitfImageDataMaskV2_1::writeStream(), ossimJ2kSizRecord::writeStream(), ossimRpfFrameFileIndexRecord::writeStream(), ossimRpfCoverageSection::writeStream(), ossimAigDataFileHeader::writeStream(), ossimJ2kSotRecord::writeStream(), ossimRpfPathnameRecord::writeStream(), ossimRpfBoundaryRectSectionSubheader::writeStream(), ossimRpfBoundaryRectRecord::writeStream(), ossimRpfFrameFileIndexSectionSubheader::writeStream(), ossimJ2kTlmRecord::writeStream(), ossimAigIndexFileHeader::writeStream(), ossimAigHeader::writeStream(), ossimRpfComponentLocationRecord::writeStream(), ossimRpfReplaceUpdateSectionSubheader::writeStream(), ossimRpfHeader::writeStream(), and ossimRpfLocationSection::writeStream().

26 {}

◆ swap() [2/21]

void ossimEndian::swap ( ossim_uint8 )
inline

Definition at line 27 of file ossimEndian.h.

27 {}

◆ swap() [3/21]

void ossimEndian::swap ( ossim_int16 data) const
inline

Definition at line 95 of file ossimEndian.h.

References swapTwoBytes().

96 {
97  swapTwoBytes(reinterpret_cast<void*>(&data));
98 }
void swapTwoBytes(void *data, ossim_uint32 size) const
Definition: ossimEndian.h:238

◆ swap() [4/21]

void ossimEndian::swap ( ossim_uint16 data) const
inline

Definition at line 100 of file ossimEndian.h.

References swapTwoBytes().

101 {
102  swapTwoBytes(reinterpret_cast<void*>(&data));
103 }
void swapTwoBytes(void *data, ossim_uint32 size) const
Definition: ossimEndian.h:238

◆ swap() [5/21]

void ossimEndian::swap ( ossim_int32 data) const
inline

Definition at line 105 of file ossimEndian.h.

References swapFourBytes().

106 {
107  swapFourBytes(reinterpret_cast<void*>(&data));
108 }
void swapFourBytes(void *data, ossim_uint32 size) const
Definition: ossimEndian.h:247

◆ swap() [6/21]

void ossimEndian::swap ( ossim_uint32 data) const
inline

Definition at line 110 of file ossimEndian.h.

References swapFourBytes().

111 {
112  swapFourBytes(reinterpret_cast<void*>(&data));
113 }
void swapFourBytes(void *data, ossim_uint32 size) const
Definition: ossimEndian.h:247

◆ swap() [7/21]

void ossimEndian::swap ( ossim_uint64 data) const
inline

Definition at line 115 of file ossimEndian.h.

References swapEightBytes().

116 {
117  swapEightBytes(reinterpret_cast<void*>(&data));
118 }
void swapEightBytes(void *data, ossim_uint32 size) const
Definition: ossimEndian.h:260

◆ swap() [8/21]

void ossimEndian::swap ( ossim_sint64 data) const
inline

Definition at line 120 of file ossimEndian.h.

References swapEightBytes().

121 {
122  swapEightBytes(reinterpret_cast<void*>(&data));
123 }
void swapEightBytes(void *data, ossim_uint32 size) const
Definition: ossimEndian.h:260

◆ swap() [9/21]

void ossimEndian::swap ( ossim_float32 data) const
inline

Definition at line 125 of file ossimEndian.h.

References swapFourBytes().

126 {
127  swapFourBytes(reinterpret_cast<void*>(&data));
128 }
void swapFourBytes(void *data, ossim_uint32 size) const
Definition: ossimEndian.h:247

◆ swap() [10/21]

void ossimEndian::swap ( ossim_float64 data) const
inline

Definition at line 130 of file ossimEndian.h.

References swapEightBytes().

131 {
132  swapEightBytes(reinterpret_cast<void*>(&data));
133 }
void swapEightBytes(void *data, ossim_uint32 size) const
Definition: ossimEndian.h:260

◆ swap() [11/21]

void ossimEndian::swap ( ossimScalarType  scalar,
void *  data,
ossim_uint32  size 
) const
inline

Swap bytes methods that work on arrays of pixels.

Note
size is number of pixels, not number of bytes.

Definition at line 168 of file ossimEndian.h.

References OSSIM_DOUBLE, OSSIM_FLOAT, OSSIM_NORMALIZED_DOUBLE, OSSIM_NORMALIZED_FLOAT, OSSIM_SSHORT16, OSSIM_USHORT11, OSSIM_USHORT12, OSSIM_USHORT13, OSSIM_USHORT14, OSSIM_USHORT15, OSSIM_USHORT16, size, swapEightBytes(), swapFourBytes(), and swapTwoBytes().

170 {
171  switch (scalar)
172  {
173  case OSSIM_USHORT16:
174  case OSSIM_SSHORT16:
175  case OSSIM_USHORT11:
176  case OSSIM_USHORT12:
177  case OSSIM_USHORT13:
178  case OSSIM_USHORT14:
179  case OSSIM_USHORT15:
180  swapTwoBytes(data, size);
181  return;
182 
183  case OSSIM_FLOAT:
185  swapFourBytes(data, size);
186  return;
187 
188  case OSSIM_DOUBLE:
190  swapEightBytes(data, size);
191  break;
192 
193  default:
194  return;
195  }
196 }
16 bit unsigned integer (15 bits used)
void swapFourBytes(void *data, ossim_uint32 size) const
Definition: ossimEndian.h:247
void swapTwoBytes(void *data, ossim_uint32 size) const
Definition: ossimEndian.h:238
void swapEightBytes(void *data, ossim_uint32 size) const
Definition: ossimEndian.h:260
16 bit unsigned integer (14 bits used)
16 bit unsigned integer (13 bits used)
yy_size_t size
32 bit normalized floating point
64 bit normalized floating point
16 bit unsigned integer (11 bits used)
32 bit floating point
16 bit unsigned iteger
64 bit floating point
16 bit signed integer
16 bit unsigned integer (12 bits used)

◆ swap() [12/21]

void ossimEndian::swap ( ossim_sint8 data,
ossim_uint32  size 
) const
inline

Definition at line 83 of file ossimEndian.h.

85 {
86  //intentionally left blank
87 }

◆ swap() [13/21]

void ossimEndian::swap ( ossim_uint8 data,
ossim_uint32  size 
) const
inline

Definition at line 89 of file ossimEndian.h.

91 {
92  //intentionally left blank
93 }

◆ swap() [14/21]

void ossimEndian::swap ( ossim_int16 data,
ossim_uint32  size 
) const
inline

Definition at line 198 of file ossimEndian.h.

References size, and swapTwoBytes().

199 {
200  swapTwoBytes(data, size);
201 }
void swapTwoBytes(void *data, ossim_uint32 size) const
Definition: ossimEndian.h:238
yy_size_t size

◆ swap() [15/21]

void ossimEndian::swap ( ossim_uint16 data,
ossim_uint32  size 
) const
inline

Definition at line 203 of file ossimEndian.h.

References size, and swapTwoBytes().

204 {
205  swapTwoBytes(data, size);
206 }
void swapTwoBytes(void *data, ossim_uint32 size) const
Definition: ossimEndian.h:238
yy_size_t size

◆ swap() [16/21]

void ossimEndian::swap ( ossim_int32 data,
ossim_uint32  size 
) const
inline

Definition at line 208 of file ossimEndian.h.

References size, and swapFourBytes().

209 {
210  swapFourBytes(data, size);
211 }
void swapFourBytes(void *data, ossim_uint32 size) const
Definition: ossimEndian.h:247
yy_size_t size

◆ swap() [17/21]

void ossimEndian::swap ( ossim_uint32 data,
ossim_uint32  size 
) const
inline

Definition at line 213 of file ossimEndian.h.

References size, and swapFourBytes().

214 {
215  swapFourBytes(data, size);
216 }
void swapFourBytes(void *data, ossim_uint32 size) const
Definition: ossimEndian.h:247
yy_size_t size

◆ swap() [18/21]

void ossimEndian::swap ( ossim_int64 data,
ossim_uint32  size 
) const
inline

Definition at line 218 of file ossimEndian.h.

References size, and swapEightBytes().

219 {
220  swapEightBytes(data, size);
221 }
void swapEightBytes(void *data, ossim_uint32 size) const
Definition: ossimEndian.h:260
yy_size_t size

◆ swap() [19/21]

void ossimEndian::swap ( ossim_uint64 data,
ossim_uint32  size 
) const
inline

Definition at line 223 of file ossimEndian.h.

References size, and swapEightBytes().

224 {
225  swapEightBytes(data, size);
226 }
void swapEightBytes(void *data, ossim_uint32 size) const
Definition: ossimEndian.h:260
yy_size_t size

◆ swap() [20/21]

void ossimEndian::swap ( ossim_float32 data,
ossim_uint32  size 
) const
inline

Definition at line 228 of file ossimEndian.h.

References size, and swapFourBytes().

229 {
230  swapFourBytes(data, size);
231 }
void swapFourBytes(void *data, ossim_uint32 size) const
Definition: ossimEndian.h:247
yy_size_t size

◆ swap() [21/21]

void ossimEndian::swap ( ossim_float64 data,
ossim_uint32  size 
) const
inline

Definition at line 233 of file ossimEndian.h.

References size, and swapEightBytes().

234 {
235  swapEightBytes(data, size);
236 }
void swapEightBytes(void *data, ossim_uint32 size) const
Definition: ossimEndian.h:260
yy_size_t size

◆ swapEightBytes() [1/2]

void ossimEndian::swapEightBytes ( void *  data,
ossim_uint32  size 
) const
inline

Definition at line 260 of file ossimEndian.h.

References size.

Referenced by swap(), and ossimTiffInfo::swapBytes().

261 {
262  ossim_uint64* buf = reinterpret_cast<ossim_uint64*>(data);
263  for (ossim_uint32 i=0; i<size; ++i)
264  {
265  buf[i]
266  = ( ((buf[i] & 0xff00000000000000ull) >> 56)
267  | ((buf[i] & 0x00ff000000000000ull) >> 40)
268  | ((buf[i] & 0x0000ff0000000000ull) >> 24)
269  | ((buf[i] & 0x000000ff00000000ull) >> 8)
270  | ((buf[i] & 0x00000000ff000000ull) << 8)
271  | ((buf[i] & 0x0000000000ff0000ull) << 24)
272  | ((buf[i] & 0x000000000000ff00ull) << 40)
273  | ((buf[i] & 0x00000000000000ffull) << 56));
274  }
275 }
yy_size_t size
unsigned long long ossim_uint64
unsigned int ossim_uint32

◆ swapEightBytes() [2/2]

void ossimEndian::swapEightBytes ( void *  data) const
inlineprivate

Definition at line 150 of file ossimEndian.h.

References swapPrivate().

151 {
152  unsigned char *c = reinterpret_cast<unsigned char*>(data);
153 
154  swapPrivate(&c[0], &c[7]);
155  swapPrivate(&c[1], &c[6]);
156  swapPrivate(&c[2], &c[5]);
157  swapPrivate(&c[3], &c[4]);
158 }
void swapPrivate(ossim_uint8 *c1, ossim_uint8 *c2) const
Definition: ossimEndian.h:160

◆ swapFourBytes() [1/2]

void ossimEndian::swapFourBytes ( void *  data,
ossim_uint32  size 
) const
inline

Definition at line 247 of file ossimEndian.h.

References size.

Referenced by swap(), and ossimTiffInfo::swapBytes().

248 {
249  ossim_uint32* buf = reinterpret_cast<ossim_uint32*>(data);
250  for (ossim_uint32 i=0; i<size; ++i)
251  {
252  buf[i]
253  = ( ((buf[i] & 0xff000000) >> 24)
254  | ((buf[i] & 0x00ff0000) >> 8)
255  | ((buf[i] & 0x0000ff00) << 8)
256  | ((buf[i] & 0x000000ff) << 24));
257  }
258 }
yy_size_t size
unsigned int ossim_uint32

◆ swapFourBytes() [2/2]

void ossimEndian::swapFourBytes ( void *  data) const
inlineprivate

Definition at line 142 of file ossimEndian.h.

References swapPrivate().

143 {
144  unsigned char *c = reinterpret_cast<unsigned char*>(data);
145 
146  swapPrivate(&c[0], &c[3]);
147  swapPrivate(&c[1], &c[2]);
148 }
void swapPrivate(ossim_uint8 *c1, ossim_uint8 *c2) const
Definition: ossimEndian.h:160

◆ swapPrivate()

void ossimEndian::swapPrivate ( ossim_uint8 c1,
ossim_uint8 c2 
) const
inlineprivate

Definition at line 160 of file ossimEndian.h.

Referenced by swapEightBytes(), swapFourBytes(), and swapTwoBytes().

162 {
163  ossim_uint8 temp_c = *c1;
164  *c1 = *c2;
165  *c2 = temp_c;
166 }
unsigned char ossim_uint8

◆ swapTwoBytes() [1/2]

void ossimEndian::swapTwoBytes ( void *  data,
ossim_uint32  size 
) const
inline

Definition at line 238 of file ossimEndian.h.

References size.

Referenced by swap(), and ossimTiffInfo::swapBytes().

239 {
240  ossim_uint16* buf = reinterpret_cast<ossim_uint16*>(data);
241  for (ossim_uint32 i=0; i<size; ++i)
242  {
243  buf[i] = ((buf[i] & 0x00ff) << 8) | ((buf[i] & 0xff00) >> 8);
244  }
245 }
unsigned short ossim_uint16
yy_size_t size
unsigned int ossim_uint32

◆ swapTwoBytes() [2/2]

void ossimEndian::swapTwoBytes ( void *  data) const
inlineprivate

Definition at line 135 of file ossimEndian.h.

References swapPrivate().

136 {
137  unsigned char *c = reinterpret_cast<unsigned char*>(data);
138 
139  swapPrivate(&c[0], &c[1]);
140 }
void swapPrivate(ossim_uint8 *c1, ossim_uint8 *c2) const
Definition: ossimEndian.h:160

Member Data Documentation

◆ theSystemEndianType

ossimByteOrder ossimEndian::theSystemEndianType
private

Definition at line 68 of file ossimEndian.h.

Referenced by getSystemEndianType(), and ossimEndian().


The documentation for this class was generated from the following files: