File indexing completed on 2026-04-09 07:49:42
0001 #pragma once
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #include <cstddef>
0014 #include <cstdint>
0015
0016 #include "SYSRAP_API_EXPORT.hh"
0017
0018 class SYSRAP_API SPack {
0019 public:
0020 union uif_t {
0021 unsigned u ;
0022 int i ;
0023 float f ;
0024 };
0025
0026 union ui16_t {
0027 uint16_t u ;
0028 int16_t i ;
0029 };
0030
0031
0032 public:
0033 static bool IsLittleEndian();
0034 static unsigned Encode(unsigned x, unsigned y, unsigned z, unsigned w);
0035 static void Decode( const unsigned int value, unsigned& x, unsigned& y, unsigned& z, unsigned& w );
0036
0037 static unsigned Encode(unsigned char x, unsigned char y, unsigned char z, unsigned char w);
0038 static unsigned Encode(const unsigned char* ptr, const unsigned num);
0039
0040 static void Decode( const unsigned value, unsigned char& x, unsigned char& y, unsigned char& z, unsigned char& w );
0041 static void Decode( const unsigned value, unsigned char* ptr, const unsigned num);
0042
0043 public:
0044 static unsigned Encode13(unsigned char c, unsigned int ccc);
0045 static void Decode13( const unsigned int value, unsigned char& c, unsigned int& ccc );
0046
0047 public:
0048 static unsigned Encode22(unsigned a, unsigned b);
0049 static void Decode22( const unsigned value, unsigned& a, unsigned& b);
0050 static unsigned Decode22a( const unsigned value );
0051 static unsigned Decode22b( const unsigned value );
0052 public:
0053 static unsigned Encode22hilo( int a, int b );
0054 static void Decode22hilo( const unsigned packed, int& a, int& b );
0055 static int Decode22hi( const unsigned packed );
0056 static int Decode22lo( const unsigned packed );
0057 public:
0058 static float int_as_float( const int i );
0059 static int int_from_float( const float f );
0060 static float uint_as_float( const unsigned f );
0061 static unsigned uint_from_float( const float f );
0062
0063 static float unsigned_as_float( const unsigned u ) ;
0064 static unsigned float_as_unsigned( const float f ) ;
0065
0066
0067 template <int NUM_BITS>
0068 static int unsigned_as_int(unsigned value);
0069
0070 static int unsigned_as_int_32(unsigned value);
0071 static int unsigned_as_int_16(unsigned value);
0072
0073 static double unsigned_as_double( const unsigned x, const unsigned y ) ;
0074 static void double_as_unsigned(unsigned& x, unsigned& y, const double d ) ;
0075
0076
0077
0078 };
0079
0080