33 #ifndef SBG_STREAM_BUFFER_LE_H
34 #define SBG_STREAM_BUFFER_LE_H
50 int16_t bytesValues[2];
67 #if (SBG_CONFIG_UNALIGNED_ACCESS_AUTH == 1) && (SBG_CONFIG_BIG_ENDIAN == 0)
78 return bytesValues[0];
89 #if (SBG_CONFIG_BIG_ENDIAN == 1)
90 return bytesValues[1] | (bytesValues[0] << 8);
92 return bytesValues[0] | (bytesValues[1] << 8);
119 uint16_t bytesValues[2];
136 #if (SBG_CONFIG_UNALIGNED_ACCESS_AUTH == 1) && (SBG_CONFIG_BIG_ENDIAN == 0)
140 bytesValues[0] = *((uint16_t*)pHandle->
pCurrentPtr);
147 return bytesValues[0];
158 #if (SBG_CONFIG_BIG_ENDIAN == 1)
159 return bytesValues[1] | (bytesValues[0] << 8);
161 return bytesValues[0] | (bytesValues[1] << 8);
210 #if (SBG_CONFIG_BIG_ENDIAN == 1)
229 return value.value >> (32-24);
276 #if (SBG_CONFIG_BIG_ENDIAN == 1)
295 return value.value >> (32-24);
320 int32_t bytesValues[4];
337 #if (SBG_CONFIG_UNALIGNED_ACCESS_AUTH == 1) && (SBG_CONFIG_BIG_ENDIAN == 0)
341 bytesValues[0] = *((int32_t*)pHandle->
pCurrentPtr);
348 return bytesValues[0];
361 #if (SBG_CONFIG_BIG_ENDIAN == 1)
362 return bytesValues[3] | (bytesValues[2] << 8) | (bytesValues[1] << 16) | (bytesValues[0] << 24);
364 return bytesValues[0] | (bytesValues[1] << 8) | (bytesValues[2] << 16) | (bytesValues[3] << 24);
391 uint32_t bytesValues[4];
408 #if (SBG_CONFIG_UNALIGNED_ACCESS_AUTH == 1) && (SBG_CONFIG_BIG_ENDIAN == 0)
412 bytesValues[0] = *((uint32_t*)pHandle->
pCurrentPtr);
419 return bytesValues[0];
432 #if (SBG_CONFIG_BIG_ENDIAN == 1)
433 return bytesValues[3] | (bytesValues[2] << 8) | (bytesValues[1] << 16) | (bytesValues[0] << 24);
435 return bytesValues[0] | (bytesValues[1] << 8) | (bytesValues[2] << 16) | (bytesValues[3] << 24);
484 #if (SBG_CONFIG_BIG_ENDIAN == 1)
507 return value.value >> (64-40);
554 #if (SBG_CONFIG_BIG_ENDIAN == 1)
577 return value.value >> (64-40);
624 #if (SBG_CONFIG_BIG_ENDIAN == 1)
649 return value.value >> (64-48);
696 #if (SBG_CONFIG_BIG_ENDIAN == 1)
721 return value.value >> (64-48);
768 #if (SBG_CONFIG_BIG_ENDIAN == 1)
795 return value.value >> (64-56);
842 #if (SBG_CONFIG_BIG_ENDIAN == 1)
869 return value.value >> (64-56);
912 #if (SBG_CONFIG_UNALIGNED_ACCESS_AUTH == 1) && (SBG_CONFIG_BIG_ENDIAN == 0)
934 #if (SBG_CONFIG_BIG_ENDIAN == 1)
935 return (lowPart << 32) | highPart;
937 return lowPart | (highPart << 32);
982 #if (SBG_CONFIG_UNALIGNED_ACCESS_AUTH == 1) && (SBG_CONFIG_BIG_ENDIAN == 0)
1004 #if (SBG_CONFIG_BIG_ENDIAN == 1)
1005 return (lowPart << 32) | highPart;
1007 return lowPart | (highPart << 32);
1063 assert((
sizeof(
size_t) == 8) || ((
sizeof(
size_t) == 4) && (size <= UINT32_MAX)));
1068 return (
size_t)size;
1101 return floatInt.valF;
1148 return doubleInt.valF;
1193 #if (SBG_CONFIG_UNALIGNED_ACCESS_AUTH == 1) && (SBG_CONFIG_BIG_ENDIAN == 0)
1207 #if (SBG_CONFIG_BIG_ENDIAN == 1)
1208 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 8);
1212 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 8);
1252 #if (SBG_CONFIG_UNALIGNED_ACCESS_AUTH == 1) && (SBG_CONFIG_BIG_ENDIAN == 0)
1266 #if (SBG_CONFIG_BIG_ENDIAN == 1)
1267 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 8);
1271 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 8);
1307 if ( (value >= SBG_MIN_INT_24) && (value <= SBG_MAX_INT_24) )
1317 #if (SBG_CONFIG_BIG_ENDIAN == 1)
1318 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 16);
1319 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 8);
1323 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 8);
1324 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 16);
1366 if (value <= SBG_MAX_UINT_24)
1376 #if (SBG_CONFIG_BIG_ENDIAN == 1)
1377 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 16);
1378 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 8);
1382 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 8);
1383 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 16);
1430 #if (SBG_CONFIG_UNALIGNED_ACCESS_AUTH == 1) && (SBG_CONFIG_BIG_ENDIAN == 0)
1444 #if (SBG_CONFIG_BIG_ENDIAN == 1)
1445 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 24);
1446 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 16);
1447 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 8);
1451 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 8);
1452 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 16);
1453 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 24);
1493 #if (SBG_CONFIG_UNALIGNED_ACCESS_AUTH == 1) && (SBG_CONFIG_BIG_ENDIAN == 0)
1507 #if (SBG_CONFIG_BIG_ENDIAN == 1)
1508 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 24);
1509 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 16);
1510 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 8);
1514 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 8);
1515 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 16);
1516 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 24);
1542 assert(value < ((uint64_t)1 << 48));
1557 #if (SBG_CONFIG_BIG_ENDIAN == 1)
1558 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 40);
1559 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 32);
1560 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 24);
1561 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 16);
1562 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 8);
1566 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 8);
1567 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 16);
1568 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 24);
1569 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 32);
1570 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 40);
1609 #if (SBG_CONFIG_UNALIGNED_ACCESS_AUTH == 1) && (SBG_CONFIG_BIG_ENDIAN == 0)
1623 #if (SBG_CONFIG_BIG_ENDIAN == 1)
1624 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 56);
1625 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 48);
1626 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 40);
1627 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 32);
1628 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 24);
1629 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 16);
1630 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 8);
1634 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 8);
1635 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 16);
1636 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 24);
1637 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 32);
1638 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 40);
1639 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 48);
1640 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 56);
1680 #if (SBG_CONFIG_UNALIGNED_ACCESS_AUTH == 1) && (SBG_CONFIG_BIG_ENDIAN == 0)
1694 #if (SBG_CONFIG_BIG_ENDIAN == 1)
1695 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 56);
1696 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 48);
1697 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 40);
1698 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 32);
1699 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 24);
1700 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 16);
1701 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 8);
1705 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 8);
1706 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 16);
1707 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 24);
1708 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 32);
1709 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 40);
1710 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 48);
1711 *(pHandle->
pCurrentPtr++) = (uint8_t)(value >> 56);
1741 assert(value <= UINT32_MAX);
1787 floatInt.valF = value;
1819 doubleInt.valF = value;
1841 size_t stringLength;
1845 assert(maxSize > 0);
1857 if (stringLength <= maxSize)
1867 SBG_LOG_ERROR(pHandle->
errorCode,
"Trying to store a string of %zu bytes into a buffer of %zu bytes.", stringLength, maxSize);
1883 size_t stringLength;
1897 stringLength = strlen(pString) + 1;
1899 if (stringLength <= UINT32_MAX)
1915 SBG_LOG_ERROR(pHandle->
errorCode,
"The provided string is too big to fit in a 32 bit size_t");
#define SBG_INLINE
Definition: sbgDefines.h:227
enum _SbgErrorCode SbgErrorCode
@ SBG_BUFFER_OVERFLOW
Definition: sbgErrorCodes.h:59
@ SBG_NO_ERROR
Definition: sbgErrorCodes.h:48
@ SBG_INVALID_PARAMETER
Definition: sbgErrorCodes.h:60
Used to read/write data from/to a memory buffer stream.
SBG_INLINE SbgErrorCode sbgStreamBufferReadBuffer(SbgStreamBuffer *pHandle, void *pBuffer, size_t numBytesToRead)
Definition: sbgStreamBufferCommon.h:624
SBG_INLINE SbgErrorCode sbgStreamBufferWriteBuffer(SbgStreamBuffer *pHandle, const void *pBuffer, size_t numBytesToWrite)
Definition: sbgStreamBufferCommon.h:794
SBG_INLINE size_t sbgStreamBufferGetSpace(const SbgStreamBuffer *pHandle)
Definition: sbgStreamBufferCommon.h:357
SBG_INLINE int64_t sbgStreamBufferReadUint40LE(SbgStreamBuffer *pHandle)
Definition: sbgStreamBufferLE.h:530
SBG_INLINE double sbgStreamBufferReadDoubleLE(SbgStreamBuffer *pHandle)
Definition: sbgStreamBufferLE.h:1124
SBG_INLINE int64_t sbgStreamBufferReadInt48LE(SbgStreamBuffer *pHandle)
Definition: sbgStreamBufferLE.h:600
SBG_INLINE SbgErrorCode sbgStreamBufferWriteUint24LE(SbgStreamBuffer *pHandle, uint32_t value)
Definition: sbgStreamBufferLE.h:1354
SBG_INLINE int64_t sbgStreamBufferReadInt40LE(SbgStreamBuffer *pHandle)
Definition: sbgStreamBufferLE.h:460
SBG_INLINE uint16_t sbgStreamBufferReadUint16LE(SbgStreamBuffer *pHandle)
Definition: sbgStreamBufferLE.h:117
SBG_INLINE SbgErrorCode sbgStreamBufferWriteInt64LE(SbgStreamBuffer *pHandle, int64_t value)
Definition: sbgStreamBufferLE.h:1592
SBG_INLINE SbgErrorCode sbgStreamBufferWriteUint64LE(SbgStreamBuffer *pHandle, uint64_t value)
Definition: sbgStreamBufferLE.h:1663
SBG_INLINE float sbgStreamBufferReadFloatLE(SbgStreamBuffer *pHandle)
Definition: sbgStreamBufferLE.h:1077
SBG_INLINE SbgErrorCode sbgStreamBufferWriteSizeT32LE(SbgStreamBuffer *pHandle, size_t value)
Definition: sbgStreamBufferLE.h:1734
SBG_INLINE uint64_t sbgStreamBufferReadUint48LE(SbgStreamBuffer *pHandle)
Definition: sbgStreamBufferLE.h:672
SBG_INLINE uint64_t sbgStreamBufferReadUint56LE(SbgStreamBuffer *pHandle)
Definition: sbgStreamBufferLE.h:818
SBG_INLINE uint32_t sbgStreamBufferReadUint24LE(SbgStreamBuffer *pHandle)
Definition: sbgStreamBufferLE.h:252
SBG_INLINE uint32_t sbgStreamBufferReadUint32LE(SbgStreamBuffer *pHandle)
Definition: sbgStreamBufferLE.h:389
SBG_INLINE SbgErrorCode sbgStreamBufferWriteInt24LE(SbgStreamBuffer *pHandle, int32_t value)
Definition: sbgStreamBufferLE.h:1295
SBG_INLINE SbgErrorCode sbgStreamBufferWriteInt32LE(SbgStreamBuffer *pHandle, int32_t value)
Definition: sbgStreamBufferLE.h:1413
SBG_INLINE int16_t sbgStreamBufferReadInt16LE(SbgStreamBuffer *pHandle)
Definition: sbgStreamBufferLE.h:48
SBG_INLINE uint64_t sbgStreamBufferReadUint64LE(SbgStreamBuffer *pHandle)
Definition: sbgStreamBufferLE.h:962
SBG_INLINE SbgErrorCode sbgStreamBufferWriteFloatLE(SbgStreamBuffer *pHandle, float value)
Definition: sbgStreamBufferLE.h:1773
SBG_INLINE SbgErrorCode sbgStreamBufferWriteUint32LE(SbgStreamBuffer *pHandle, uint32_t value)
Definition: sbgStreamBufferLE.h:1476
SBG_INLINE SbgErrorCode sbgStreamBufferWriteDoubleLE(SbgStreamBuffer *pHandle, double value)
Definition: sbgStreamBufferLE.h:1805
SBG_INLINE size_t sbgStreamBufferReadSizeT32LE(SbgStreamBuffer *pHandle)
Definition: sbgStreamBufferLE.h:1032
SBG_INLINE SbgErrorCode sbgStreamBufferWriteUint16LE(SbgStreamBuffer *pHandle, uint16_t value)
Definition: sbgStreamBufferLE.h:1235
SBG_INLINE size_t sbgStreamBufferReadSizeT64LE(SbgStreamBuffer *pHandle)
Definition: sbgStreamBufferLE.h:1049
SBG_INLINE SbgErrorCode sbgStreamBufferWriteUint48LE(SbgStreamBuffer *pHandle, uint64_t value)
Definition: sbgStreamBufferLE.h:1539
SBG_INLINE int32_t sbgStreamBufferReadInt24LE(SbgStreamBuffer *pHandle)
Definition: sbgStreamBufferLE.h:186
SBG_INLINE SbgErrorCode sbgStreamBufferWriteInt16LE(SbgStreamBuffer *pHandle, int16_t value)
Definition: sbgStreamBufferLE.h:1176
SBG_INLINE SbgErrorCode sbgStreamBufferWriteStringLE(SbgStreamBuffer *pHandle, const char *pString)
Definition: sbgStreamBufferLE.h:1881
SBG_INLINE SbgErrorCode sbgStreamBufferWriteSizeT64LE(SbgStreamBuffer *pHandle, size_t value)
Definition: sbgStreamBufferLE.h:1756
SBG_INLINE int64_t sbgStreamBufferReadInt56LE(SbgStreamBuffer *pHandle)
Definition: sbgStreamBufferLE.h:744
SBG_INLINE int64_t sbgStreamBufferReadInt64LE(SbgStreamBuffer *pHandle)
Definition: sbgStreamBufferLE.h:892
SBG_INLINE SbgErrorCode sbgStreamBufferReadStringLE(SbgStreamBuffer *pHandle, char *pString, size_t maxSize)
Definition: sbgStreamBufferLE.h:1839
SBG_INLINE int32_t sbgStreamBufferReadInt32LE(SbgStreamBuffer *pHandle)
Definition: sbgStreamBufferLE.h:318
Definition: sbgStreamBufferCommon.h:201
SbgErrorCode errorCode
Definition: sbgStreamBufferCommon.h:206
uint8_t * pCurrentPtr
Definition: sbgStreamBufferCommon.h:205
Definition: sbgTypes.h:149
Definition: sbgTypes.h:139
Definition: sbgTypes.h:103
Definition: sbgTypes.h:121
Definition: sbgTypes.h:112
Definition: sbgTypes.h:130