- for (const shared_ptr<decode::Decoder>& dec : stack_) {
- assert(dec);
- const srd_decoder *const decc = dec->decoder();
- assert(dec->decoder());
-
- int row_index = 0;
- // Add a row for the decoder if it doesn't have a row list
- if (!decc->annotation_rows)
- (segments_.back().annotation_rows)[Row(row_index++, decc)] =
- decode::RowData();
-
- // Add the decoder rows
- for (const GSList *l = decc->annotation_rows; l; l = l->next) {
- const srd_decoder_annotation_row *const ann_row =
- (srd_decoder_annotation_row *)l->data;
- assert(ann_row);
-
- const Row row(row_index++, decc, ann_row);
-
- // Add a new empty row data object
- (segments_.back().annotation_rows)[row] =
- decode::RowData();
- }
- }
+ for (const shared_ptr<Decoder> dec : stack_)
+ for (Row* row : dec->get_rows())
+ segments_.back().annotation_rows.emplace(row, RowData(row));