Skip to content

Commit 5f27dd6

Browse files
Merge pull request #9 from viktor-av/minor-fixes
Minor fixes for buffer handling
2 parents 61d9ab4 + 73e4bce commit 5f27dd6

2 files changed

Lines changed: 10 additions & 17 deletions

File tree

include/ixblue_stdbin_decoder/memory_block_parser.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ boost::asio::const_buffer& operator>>(boost::asio::const_buffer& buf,
1616
{
1717
for(auto& b : res)
1818
{
19-
const auto byte = boost::asio::buffer(buf, 1);
20-
b = *boost::asio::buffer_cast<const uint8_t*>(byte);
19+
b = *boost::asio::buffer_cast<const uint8_t*>(buf);
2120
buf = buf + sizeof(uint8_t);
2221
}
2322
return buf;

src/memory_block_parser.cpp

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
#include <stdexcept>
22

3-
#include <boost/endian/conversion.hpp>
4-
53
#include <ixblue_stdbin_decoder/memory_block_parser.h>
64

5+
#include <boost/endian/conversion.hpp>
6+
77
namespace ixblue_stdbin_decoder
88
{
99

@@ -14,7 +14,7 @@ void MemoryBlockParser::parse(boost::asio::const_buffer& buffer, const tBitMask&
1414
if(mask.test(offsetInMask))
1515
{
1616
// And there is enough bytes in buffer we can parse it :
17-
if(boost::asio::buffer_size(buffer) >= bytesCount)
17+
if(buffer.size() >= bytesCount)
1818
{
1919
parse(buffer, outBinaryNav);
2020
}
@@ -28,50 +28,44 @@ void MemoryBlockParser::parse(boost::asio::const_buffer& buffer, const tBitMask&
2828

2929
boost::asio::const_buffer& operator>>(boost::asio::const_buffer& buf, double& res)
3030
{
31-
uint64_t bytes = *boost::asio::buffer_cast<const uint64_t*>(buf);
32-
boost::endian::big_to_native_inplace(bytes);
31+
uint64_t bytes = boost::endian::big_to_native(*boost::asio::buffer_cast<const uint64_t*>(buf));
3332
std::memcpy(&res, &bytes, sizeof(double));
3433
buf = buf + sizeof(double);
3534
return buf;
3635
}
3736

3837
boost::asio::const_buffer& operator>>(boost::asio::const_buffer& buf, float& res)
3938
{
40-
uint32_t bytes = *boost::asio::buffer_cast<const uint32_t*>(buf);
41-
boost::endian::big_to_native_inplace(bytes);
39+
uint32_t bytes = boost::endian::big_to_native(*boost::asio::buffer_cast<const uint32_t*>(buf));
4240
std::memcpy(&res, &bytes, sizeof(float));
4341
buf = buf + sizeof(float);
4442
return buf;
4543
}
4644

4745
boost::asio::const_buffer& operator>>(boost::asio::const_buffer& buf, int32_t& res)
4846
{
49-
res = *boost::asio::buffer_cast<const int32_t*>(buf);
50-
boost::endian::big_to_native_inplace(res);
47+
res = boost::endian::big_to_native(*boost::asio::buffer_cast<const int32_t*>(buf));
5148
buf = buf + sizeof(int32_t);
5249
return buf;
5350
}
5451

5552
boost::asio::const_buffer& operator>>(boost::asio::const_buffer& buf, uint64_t& res)
5653
{
57-
res = *boost::asio::buffer_cast<const uint64_t*>(buf);
58-
boost::endian::big_to_native_inplace(res);
54+
res = boost::endian::big_to_native(*boost::asio::buffer_cast<const uint64_t*>(buf));
5955
buf = buf + sizeof(uint64_t);
6056
return buf;
6157
}
6258

6359
boost::asio::const_buffer& operator>>(boost::asio::const_buffer& buf, uint32_t& res)
6460
{
65-
res = *boost::asio::buffer_cast<const uint32_t*>(buf);
66-
boost::endian::big_to_native_inplace(res);
61+
res = boost::endian::big_to_native(*boost::asio::buffer_cast<const uint32_t*>(buf));
6762
buf = buf + sizeof(uint32_t);
6863
return buf;
6964
}
7065

7166
boost::asio::const_buffer& operator>>(boost::asio::const_buffer& buf, uint16_t& res)
7267
{
73-
res = *boost::asio::buffer_cast<const uint16_t*>(buf);
74-
boost::endian::big_to_native_inplace(res);
68+
res = boost::endian::big_to_native(*boost::asio::buffer_cast<const uint16_t*>(buf));
7569
buf = buf + sizeof(uint16_t);
7670
return buf;
7771
}

0 commit comments

Comments
 (0)