#include <extdef.h>
#include <cassert>
-#include <cstring>
-#include <cstdlib>
#include <cmath>
+#include <cstdlib>
+#include <cstring>
#include "logic.hpp"
#include "logicsegment.hpp"
prev_sample_count + 1);
}
-const uint8_t* LogicSegment::get_samples(int64_t start_sample,
- int64_t end_sample) const
+void LogicSegment::get_samples(int64_t start_sample,
+ int64_t end_sample, uint8_t* dest) const
{
assert(start_sample >= 0);
assert(start_sample <= (int64_t)sample_count_);
assert(end_sample >= 0);
assert(end_sample <= (int64_t)sample_count_);
assert(start_sample <= end_sample);
+ assert(dest != nullptr);
lock_guard<recursive_mutex> lock(mutex_);
- return get_raw_samples(start_sample, (end_sample - start_sample));
+ get_raw_samples(start_sample, (end_sample - start_sample), dest);
}
SegmentLogicDataIterator* LogicSegment::begin_sample_iteration(uint64_t start)
{
assert(index < sample_count_);
- const uint8_t* data = get_raw_samples(index, 1);
+ uint8_t* data = new uint8_t[unit_size_];
+ get_raw_samples(index, 1, data);
uint64_t sample = unpack_sample(data);
delete[] data;