X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fdata%2Flogicsnapshot.cpp;h=825d2f1f51f6ea59d93883ec3178e68a11675e54;hb=611d50a5b44c0ffa914360f13b2737778def0f07;hp=a1beafb9c4e4e3e3c50a111077e62fd3c2d261d5;hpb=8cb717055ce13a6d6568ff384b3cd3932c41d1b0;p=pulseview.git diff --git a/pv/data/logicsnapshot.cpp b/pv/data/logicsnapshot.cpp index a1beafb..825d2f1 100644 --- a/pv/data/logicsnapshot.cpp +++ b/pv/data/logicsnapshot.cpp @@ -25,12 +25,11 @@ #include #include -#include - +#include "config.h" #include "logicsnapshot.h" -using boost::lock_guard; -using boost::recursive_mutex; +using std::lock_guard; +using std::recursive_mutex; using std::max; using std::min; using std::pair; @@ -58,12 +57,15 @@ LogicSnapshot::LogicSnapshot(const sr_datafeed_logic &logic, LogicSnapshot::~LogicSnapshot() { lock_guard lock(_mutex); - BOOST_FOREACH(MipMapLevel &l, _mip_map) + for (MipMapLevel &l : _mip_map) free(l.data); } uint64_t LogicSnapshot::unpack_sample(const uint8_t *ptr) const { +#ifdef HAVE_UNALIGNED_LITTLE_ENDIAN_ACCESS + return *(uint64_t*)ptr; +#else uint64_t value = 0; switch(_unit_size) { default: @@ -94,10 +96,14 @@ uint64_t LogicSnapshot::unpack_sample(const uint8_t *ptr) const break; } return value; +#endif } void LogicSnapshot::pack_sample(uint8_t *ptr, uint64_t value) { +#ifdef HAVE_UNALIGNED_LITTLE_ENDIAN_ACCESS + *(uint64_t*)ptr = value; +#else switch(_unit_size) { default: ptr[7] = value >> 56; @@ -126,6 +132,7 @@ void LogicSnapshot::pack_sample(uint8_t *ptr, uint64_t value) case 0: break; } +#endif } void LogicSnapshot::append_payload( @@ -155,7 +162,7 @@ void LogicSnapshot::get_samples(uint8_t *const data, lock_guard lock(_mutex); const size_t size = (end_sample - start_sample) * _unit_size; - memcpy(data, (const uint8_t*)_data + start_sample, size); + memcpy(data, (const uint8_t*)_data.data() + start_sample * _unit_size, size); } void LogicSnapshot::reallocate_mipmap_level(MipMapLevel &m) @@ -194,9 +201,9 @@ void LogicSnapshot::append_payload_to_mipmap() dest_ptr = (uint8_t*)m0.data + prev_length * _unit_size; // Iterate through the samples to populate the first level mipmap - const uint8_t *const end_src_ptr = (uint8_t*)_data + + const uint8_t *const end_src_ptr = (uint8_t*)_data.data() + m0.length * _unit_size * MipMapScaleFactor; - for (src_ptr = (uint8_t*)_data + + for (src_ptr = (uint8_t*)_data.data() + prev_length * _unit_size * MipMapScaleFactor; src_ptr < end_src_ptr;) { @@ -256,10 +263,9 @@ void LogicSnapshot::append_payload_to_mipmap() uint64_t LogicSnapshot::get_sample(uint64_t index) const { - assert(_data); assert(index < _sample_count); - return unpack_sample((uint8_t*)_data + index * _unit_size); + return unpack_sample((uint8_t*)_data.data() + index * _unit_size); } void LogicSnapshot::get_subsampled_edges(