#include <assert.h>
#include <string.h>
#include <stdlib.h>
-#include <math.h>
+#include <cmath>
#include "logicsegment.hpp"
-#include <libsigrok/libsigrok.hpp>
+#include <libsigrokcxx/libsigrokcxx.hpp>
using std::lock_guard;
using std::recursive_mutex;
const uint64_t LogicSegment::MipMapDataUnit = 64*1024; // bytes
LogicSegment::LogicSegment(shared_ptr<Logic> logic, uint64_t samplerate,
- const uint64_t expected_num_samples) :
+ const uint64_t expected_num_samples) :
Segment(samplerate, logic->unit_size()),
last_append_sample_(0)
{
return *(uint64_t*)ptr;
#else
uint64_t value = 0;
- switch(unit_size_) {
+ switch (unit_size_) {
default:
value |= ((uint64_t)ptr[7]) << 56;
/* FALLTHRU */
#ifdef HAVE_UNALIGNED_LITTLE_ENDIAN_ACCESS
*(uint64_t*)ptr = value;
#else
- switch(unit_size_) {
+ switch (unit_size_) {
default:
ptr[7] = value >> 56;
/* FALLTHRU */
{
const uint64_t new_data_length = ((m.length + MipMapDataUnit - 1) /
MipMapDataUnit) * MipMapDataUnit;
- if (new_data_length > m.data_length)
- {
+ if (new_data_length > m.data_length) {
m.data_length = new_data_length;
// Padding is added to allow for the uint64_t write word
const uint8_t *const end_src_ptr = (uint8_t*)data_.data() +
m0.length * unit_size_ * MipMapScaleFactor;
for (src_ptr = (uint8_t*)data_.data() +
- prev_length * unit_size_ * MipMapScaleFactor;
- src_ptr < end_src_ptr;)
- {
+ prev_length * unit_size_ * MipMapScaleFactor;
+ src_ptr < end_src_ptr;) {
// Accumulate transitions which have occurred in this sample
accumulator = 0;
diff_counter = MipMapScaleFactor;
- while (diff_counter-- > 0)
- {
+ while (diff_counter-- > 0) {
const uint64_t sample = unpack_sample(src_ptr);
accumulator |= last_append_sample_ ^ sample;
last_append_sample_ = sample;
}
// Compute higher level mipmaps
- for (unsigned int level = 1; level < ScaleStepCount; level++)
- {
+ for (unsigned int level = 1; level < ScaleStepCount; level++) {
MipMapLevel &m = mip_map_[level];
const MipMapLevel &ml = mip_map_[level-1];
const uint8_t *const end_dest_ptr =
(uint8_t*)m.data + unit_size_ * m.length;
for (dest_ptr = (uint8_t*)m.data +
- unit_size_ * prev_length;
- dest_ptr < end_dest_ptr;
- dest_ptr += unit_size_)
- {
+ unit_size_ * prev_length;
+ dest_ptr < end_dest_ptr;
+ dest_ptr += unit_size_) {
accumulator = 0;
diff_counter = MipMapScaleFactor;
- while (diff_counter-- > 0)
- {
+ while (diff_counter-- > 0) {
accumulator |= unpack_sample(src_ptr);
src_ptr += unit_size_;
}
last_sample = (get_sample(start) & sig_mask) != 0;
edges.push_back(pair<int64_t, bool>(index++, last_sample));
- while (index + block_length <= end)
- {
+ while (index + block_length <= end) {
//----- Continue to search -----//
level = min_level;
// We cannot fast-forward if there is no mip-map data at
// at the minimum level.
- fast_forward = (mip_map_[level].data != NULL);
+ fast_forward = (mip_map_[level].data != nullptr);
- if (min_length < MipMapScaleFactor)
- {
+ if (min_length < MipMapScaleFactor) {
// Search individual samples up to the beginning of
// the next first level mip map block
const uint64_t final_index = min(end,
pow2_ceil(index, MipMapScalePower));
for (; index < final_index &&
- (index & ~(~0 << MipMapScalePower)) != 0;
- index++)
- {
+ (index & ~((uint64_t)(~0) << MipMapScalePower)) != 0;
+ index++) {
const bool sample =
(get_sample(index) & sig_mask) != 0;
break;
}
}
- }
- else
- {
+ } else {
// If resolution is less than a mip map block,
// round up to the beginning of the mip-map block
// for this level of detail
sig_mask))
break;
- if ((offset & ~(~0 << MipMapScalePower)) == 0) {
+ if ((offset & ~((uint64_t)(~0) << MipMapScalePower)) == 0) {
// If we are now at the beginning of a
// higher level mip-map block ascend one
// level
// Check if we reached the last block at this
// level, or if there was a change in this block
if (offset >= mip_map_[level].length ||
- (get_subsample(level, offset) &
+ (get_subsample(level, offset) &
sig_mask)) {
// Zoom in unless we reached the minimum
// zoom