X-Git-Url: http://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdata%2Fdecodesignal.cpp;fp=pv%2Fdata%2Fdecodesignal.cpp;h=831c8e7f90c41964dee9b2a496705ccd170db0ce;hp=d6eb924755b15452323c684cf2bdc285cd774a2c;hb=5a9146acd1a3ec81ff74e108f50d5b2885ff21a1;hpb=5d3ca591b02ce030239ad4b86d9b172b925b4c5d diff --git a/pv/data/decodesignal.cpp b/pv/data/decodesignal.cpp index d6eb9247..831c8e7f 100644 --- a/pv/data/decodesignal.cpp +++ b/pv/data/decodesignal.cpp @@ -41,11 +41,8 @@ using std::min; using std::out_of_range; using std::shared_ptr; using std::unique_lock; -using pv::data::decode::Annotation; using pv::data::decode::AnnotationClass; using pv::data::decode::DecodeChannel; -using pv::data::decode::Decoder; -using pv::data::decode::Row; namespace pv { namespace data { @@ -474,17 +471,15 @@ uint64_t DecodeSignal::get_annotation_count(const Row* row, uint32_t segment_id) auto row_it = segment->annotation_rows.find(row); const RowData* rd; - if (row_it == segment->annotation_rows.end()) { - // FIXME Use the fallback row, but how? - assert(false); + if (row_it == segment->annotation_rows.end()) return 0; - } else + else rd = &(row_it->second); return rd->get_annotation_count(); } -void DecodeSignal::get_annotation_subset(vector &dest, +void DecodeSignal::get_annotation_subset(vector &dest, const Row* row, uint32_t segment_id, uint64_t start_sample, uint64_t end_sample) const { @@ -498,29 +493,27 @@ void DecodeSignal::get_annotation_subset(vector &dest, auto row_it = segment->annotation_rows.find(row); const RowData* rd; - if (row_it == segment->annotation_rows.end()) { - // FIXME Use the fallback row, but how? - assert(false); + if (row_it == segment->annotation_rows.end()) return; - } else + else rd = &(row_it->second); rd->get_annotation_subset(dest, start_sample, end_sample); } -void DecodeSignal::get_annotation_subset(vector &dest, +void DecodeSignal::get_annotation_subset(vector &dest, uint32_t segment_id, uint64_t start_sample, uint64_t end_sample) const { // Use forward_lists for faster merging - forward_list *all_ann_list = new forward_list(); + forward_list *all_ann_list = new forward_list(); vector rows = get_rows(); for (const Row* row : rows) { - vector *ann_vector = new vector(); + vector *ann_vector = new vector(); get_annotation_subset(*ann_vector, row, segment_id, start_sample, end_sample); - forward_list *ann_list = - new forward_list(ann_vector->begin(), ann_vector->end()); + forward_list *ann_list = + new forward_list(ann_vector->begin(), ann_vector->end()); delete ann_vector; all_ann_list->merge(*ann_list);