X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fdata%2Fdecode%2Fdecoder.cpp;h=600382feddb576346f9c835b44934a1cd049670b;hb=ae30ff422a495a6b1a4ad2893566628863ea222b;hp=9792ace43412ad6d01bb44596d3676641b24f9cc;hpb=5d3ca591b02ce030239ad4b86d9b172b925b4c5d;p=pulseview.git diff --git a/pv/data/decode/decoder.cpp b/pv/data/decode/decoder.cpp index 9792ace4..600382fe 100644 --- a/pv/data/decode/decoder.cpp +++ b/pv/data/decode/decoder.cpp @@ -36,8 +36,9 @@ namespace pv { namespace data { namespace decode { -Decoder::Decoder(const srd_decoder *const dec) : +Decoder::Decoder(const srd_decoder *const dec, uint8_t stack_level) : srd_decoder_(dec), + stack_level_(stack_level), visible_(true), decoder_inst_(nullptr) { @@ -69,7 +70,7 @@ Decoder::Decoder(const srd_decoder *const dec) : for (const GSList *rl = srd_decoder_->annotation_rows; rl; rl = rl->next) { const srd_decoder_annotation_row *const srd_row = (srd_decoder_annotation_row *)rl->data; assert(srd_row); - rows_.push_back({i++, this, srd_row}); + rows_.emplace_back(i++, this, srd_row); // FIXME PV can crash from .at() if a PD's ann classes are defined incorrectly for (const GSList *cl = srd_row->ann_classes; cl; cl = cl->next) @@ -78,7 +79,7 @@ Decoder::Decoder(const srd_decoder *const dec) : if (rows_.empty()) { // Make sure there is a row for PDs without row declarations - rows_.push_back({0, this}); + rows_.emplace_back(0, this); for (AnnotationClass& c : ann_classes_) c.row = &(rows_.back()); @@ -96,6 +97,11 @@ const srd_decoder* Decoder::get_srd_decoder() const return srd_decoder_; } +uint8_t Decoder::get_stack_level() const +{ + return stack_level_; +} + const char* Decoder::name() const { return srd_decoder_->name; @@ -264,6 +270,14 @@ AnnotationClass* Decoder::get_ann_class_by_id(size_t id) return &(ann_classes_[id]); } +const AnnotationClass* Decoder::get_ann_class_by_id(size_t id) const +{ + if (id >= ann_classes_.size()) + return nullptr; + + return &(ann_classes_[id]); +} + uint32_t Decoder::get_binary_class_count() const { return bin_classes_.size();