nidas v1.2.3
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Static Private Member Functions | Static Private Attributes | List of all members
nidas::util::FlipConverter Class Reference

EndianConverter that flips bytes, used for conversion of little-to-big and big-to-little. More...

#include <EndianConverter.h>

Inheritance diagram for nidas::util::FlipConverter:
Inheritance graph
[legend]

Public Types

enum  endianness { EC_UNKNOWN_ENDIAN , EC_BIG_ENDIAN , EC_LITTLE_ENDIAN }
 

Public Member Functions

virtual ~FlipConverter ()
 
double doubleValue (const void *p) const
 Get 8 byte double at address, do endian conversion.
 
double doubleValue (const double &p) const
 
float floatValue (const void *p) const
 Get 4 byte float at address, do endian conversion.
 
float floatValue (const float &p) const
 
int64_t int64Value (const void *p) const
 Get 8 byte int64_t at address, do endian conversion.
 
int64_t int64Value (const int64_t &p) const
 
int32_t int32Value (const void *p) const
 Get 4 byte int32 at address, do endian conversion.
 
int32_t int32Value (const int32_t &p) const
 
uint32_t uint32Value (const void *p) const
 Get 4 byte unsigned int32_t at address, do endian conversion.
 
uint32_t uint32Value (const uint32_t &p) const
 
int16_t int16Value (const void *p) const
 
int16_t int16Value (const int16_t &p) const
 
uint16_t uint16Value (const void *p) const
 
uint16_t uint16Value (const uint16_t &p) const
 
void doubleCopy (const double &v, void *p) const
 Copy 8 byte double to the given address, doing endian conversion.
 
void floatCopy (const float &v, void *p) const
 Copy 4 byte float to the given address, doing endian conversion.
 
void int64Copy (const int64_t &v, void *p) const
 Copy 8 byte int64_t to the given address, doing endian conversion.
 
void int32Copy (const int32_t &v, void *p) const
 Copy 4 byte int to the given address, doing endian conversion.
 
void uint32Copy (const uint32_t &v, void *p) const
 Copy 4 byte unsigned int to the given address, doing endian conversion.
 
void int16Copy (const int16_t &v, void *p) const
 
void uint16Copy (const uint16_t &v, void *p) const
 

Static Public Member Functions

static endianness getHostEndianness ()
 Return endianness value for this host.
 
static const EndianConvertergetConverter (endianness input, endianness output)
 Return an EndianConverter for converting from one endian to another.
 
static const EndianConvertergetConverter (endianness input)
 Return an EndianConverter for converting from an endian represenation to the endian representation of th host.
 

Static Public Attributes

static endianness hostEndianness = EndianConverter::EC_UNKNOWN_ENDIAN
 

Static Private Member Functions

static endianness privGetHostEndianness ()
 

Static Private Attributes

static EndianConverterflipConverter = 0
 
static EndianConverternoflipConverter = 0
 
static Mutex staticInitMutex = Mutex()
 

Detailed Description

EndianConverter that flips bytes, used for conversion of little-to-big and big-to-little.

Member Enumeration Documentation

◆ endianness

Enumerator
EC_UNKNOWN_ENDIAN 
EC_BIG_ENDIAN 
EC_LITTLE_ENDIAN 

Constructor & Destructor Documentation

◆ ~FlipConverter()

virtual nidas::util::FlipConverter::~FlipConverter ( )
inlinevirtual

Member Function Documentation

◆ doubleCopy()

void nidas::util::FlipConverter::doubleCopy ( const double & ,
void *  ) const
inlinevirtual

Copy 8 byte double to the given address, doing endian conversion.

Pointer to address does not need to be 8-byte aligned.

Implements nidas::util::EndianConverter.

References nidas::util::flipDoubleOut().

◆ doubleValue() [1/2]

double nidas::util::FlipConverter::doubleValue ( const double & p) const
inlinevirtual

◆ doubleValue() [2/2]

double nidas::util::FlipConverter::doubleValue ( const void * ) const
inlinevirtual

Get 8 byte double at address, do endian conversion.

Pointer to address does not need to be 8-byte aligned.

Implements nidas::util::EndianConverter.

References nidas::util::flipDoubleIn().

◆ floatCopy()

void nidas::util::FlipConverter::floatCopy ( const float & ,
void *  ) const
inlinevirtual

Copy 4 byte float to the given address, doing endian conversion.

Pointer to address does not need to be 4-byte aligned.

Implements nidas::util::EndianConverter.

References nidas::util::flipFloatOut().

◆ floatValue() [1/2]

float nidas::util::FlipConverter::floatValue ( const float & p) const
inlinevirtual

◆ floatValue() [2/2]

float nidas::util::FlipConverter::floatValue ( const void * ) const
inlinevirtual

Get 4 byte float at address, do endian conversion.

Pointer to address does not need to be 4-byte aligned.

Implements nidas::util::EndianConverter.

References nidas::util::flipFloatIn().

◆ getConverter() [1/2]

const EndianConverter * EndianConverter::getConverter ( EndianConverter::endianness input)
staticinherited

Return an EndianConverter for converting from an endian represenation to the endian representation of th host.

If both are the same, then the converter that is returned just does memcpy's and does not change the representation. It is a const pointer since all its methods are const, and the pointer is owned by EndianConverter.

References nidas::util::EndianConverter::getConverter(), and nidas::util::EndianConverter::getHostEndianness().

◆ getConverter() [2/2]

const EndianConverter * EndianConverter::getConverter ( EndianConverter::endianness input,
EndianConverter::endianness output )
staticinherited

Return an EndianConverter for converting from one endian to another.

If both are the same, then the converter that is returned just does memcpy's and does not change the representation. It is a const pointer since all its methods are const, and the pointer is owned by EndianConverter.

References nidas::util::EndianConverter::flipConverter, nidas::util::EndianConverter::noflipConverter, and nidas::util::EndianConverter::staticInitMutex.

Referenced by nidas::util::EndianConverter::getConverter().

◆ getHostEndianness()

EndianConverter::endianness EndianConverter::getHostEndianness ( )
staticinherited

◆ int16Copy()

void nidas::util::FlipConverter::int16Copy ( const int16_t & v,
void * p ) const
inlinevirtual

◆ int16Value() [1/2]

int16_t nidas::util::FlipConverter::int16Value ( const int16_t & p) const
inlinevirtual

◆ int16Value() [2/2]

int16_t nidas::util::FlipConverter::int16Value ( const void * p) const
inlinevirtual

◆ int32Copy()

void nidas::util::FlipConverter::int32Copy ( const int32_t & ,
void *  ) const
inlinevirtual

Copy 4 byte int to the given address, doing endian conversion.

Pointer to address does not need to be 4-byte aligned.

Implements nidas::util::EndianConverter.

References nidas::util::flipInt32Out().

◆ int32Value() [1/2]

int32_t nidas::util::FlipConverter::int32Value ( const int32_t & p) const
inlinevirtual

◆ int32Value() [2/2]

int32_t nidas::util::FlipConverter::int32Value ( const void * ) const
inlinevirtual

Get 4 byte int32 at address, do endian conversion.

Pointer to address does not need to be 4-byte aligned.

Implements nidas::util::EndianConverter.

References nidas::util::flipInt32In().

◆ int64Copy()

void nidas::util::FlipConverter::int64Copy ( const int64_t & ,
void *  ) const
inlinevirtual

Copy 8 byte int64_t to the given address, doing endian conversion.

Pointer to address does not need to be 8-byte aligned.

Implements nidas::util::EndianConverter.

References nidas::util::flipInt64Out().

◆ int64Value() [1/2]

int64_t nidas::util::FlipConverter::int64Value ( const int64_t & p) const
inlinevirtual

◆ int64Value() [2/2]

int64_t nidas::util::FlipConverter::int64Value ( const void * ) const
inlinevirtual

Get 8 byte int64_t at address, do endian conversion.

Pointer to address does not need to be 8-byte aligned.

Implements nidas::util::EndianConverter.

References nidas::util::flipInt64In().

◆ privGetHostEndianness()

EndianConverter::endianness EndianConverter::privGetHostEndianness ( )
staticprivateinherited

◆ uint16Copy()

void nidas::util::FlipConverter::uint16Copy ( const uint16_t & v,
void * p ) const
inlinevirtual

◆ uint16Value() [1/2]

uint16_t nidas::util::FlipConverter::uint16Value ( const uint16_t & p) const
inlinevirtual

◆ uint16Value() [2/2]

uint16_t nidas::util::FlipConverter::uint16Value ( const void * p) const
inlinevirtual

◆ uint32Copy()

void nidas::util::FlipConverter::uint32Copy ( const uint32_t & ,
void *  ) const
inlinevirtual

Copy 4 byte unsigned int to the given address, doing endian conversion.

Pointer to address does not need to be 4-byte aligned.

Implements nidas::util::EndianConverter.

References nidas::util::flipUint32Out().

◆ uint32Value() [1/2]

uint32_t nidas::util::FlipConverter::uint32Value ( const uint32_t & p) const
inlinevirtual

◆ uint32Value() [2/2]

uint32_t nidas::util::FlipConverter::uint32Value ( const void * ) const
inlinevirtual

Get 4 byte unsigned int32_t at address, do endian conversion.

Pointer to address does not need to be 4-byte aligned.

Implements nidas::util::EndianConverter.

References nidas::util::flipUint32In().

Member Data Documentation

◆ flipConverter

EndianConverter * EndianConverter::flipConverter = 0
staticprivateinherited

◆ hostEndianness

EndianConverter::endianness EndianConverter::hostEndianness = EndianConverter::EC_UNKNOWN_ENDIAN
staticinherited

◆ noflipConverter

EndianConverter * EndianConverter::noflipConverter = 0
staticprivateinherited

◆ staticInitMutex

Mutex EndianConverter::staticInitMutex = Mutex()
staticprivateinherited

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