]> sigrok.org Git - pulseview.git/commitdiff
RowData: Removed _ann_start_index and _ann_end_index
authorJoel Holdsworth <redacted>
Sat, 8 Feb 2014 09:48:48 +0000 (09:48 +0000)
committerJoel Holdsworth <redacted>
Sat, 8 Feb 2014 17:14:35 +0000 (17:14 +0000)
This fixes #308

pv/data/decode/rowdata.cpp
pv/data/decode/rowdata.h

index a06af6169a9803997dd2e2b4d130f3c85e471b3c..b1c256acb414878b574995f01f878b7a1298d591 100644 (file)
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
-#include <boost/bind.hpp>
-
-#include <assert.h>
-
 #include "rowdata.h"
 
 using std::vector;
@@ -42,75 +38,19 @@ uint64_t RowData::get_max_sample() const
 }
 
 void RowData::get_annotation_subset(
-       std::vector<pv::data::decode::Annotation> &dest,
+       vector<pv::data::decode::Annotation> &dest,
        uint64_t start_sample, uint64_t end_sample) const
 {
-       const vector<size_t>::const_iterator start_iter =
-               lower_bound(_ann_end_index.begin(),
-                       _ann_end_index.end(), start_sample,
-                       bind(&RowData::index_entry_end_sample_lt,
-                               this, _1, _2));
-
-       const vector<size_t>::const_iterator end_iter =
-               upper_bound(_ann_start_index.begin(),
-                       _ann_start_index.end(), end_sample,
-                       bind(&RowData::index_entry_start_sample_gt,
-                               this, _1, _2));
-
-       for (vector<size_t>::const_iterator i = start_iter;
-               i != _ann_end_index.end() && *i != *end_iter; i++)
-               dest.push_back(_annotations[*i]);
+       for (vector<Annotation>::const_iterator i = _annotations.begin();
+               i != _annotations.end(); i++)
+               if ((*i).end_sample() > start_sample &&
+                       (*i).start_sample() < end_sample)
+                       dest.push_back(*i);
 }
 
 void RowData::push_annotation(const Annotation &a)
 {
-       const size_t offset = _annotations.size();
        _annotations.push_back(a);
-
-       // Insert the annotation into the start index
-       vector<size_t>::iterator i = _ann_start_index.end();
-       if (!_ann_start_index.empty() &&
-               _annotations[_ann_start_index.back()].start_sample() >
-                       a.start_sample())
-               i = upper_bound(_ann_start_index.begin(),
-                       _ann_start_index.end(), a.start_sample(),
-                       bind(&RowData::index_entry_start_sample_gt,
-                               this, _1, _2));
-
-       _ann_start_index.insert(i, offset);
-
-       // Insert the annotation into the end index
-       vector<size_t>::iterator j = _ann_end_index.end();
-       if (!_ann_end_index.empty() &&
-               _annotations[_ann_end_index.back()].end_sample() <
-                       a.end_sample())
-               j = upper_bound(_ann_end_index.begin(),
-                       _ann_end_index.end(), a.end_sample(),
-                       bind(&RowData::index_entry_end_sample_gt,
-                               this, _1, _2));
-
-       _ann_end_index.insert(j, offset);
-}
-
-bool RowData::index_entry_start_sample_gt(
-       const uint64_t sample, const size_t index) const
-{
-       assert(index < _annotations.size());
-       return _annotations[index].start_sample() > sample;
-}
-
-bool RowData::index_entry_end_sample_lt(
-       const size_t index, const uint64_t sample) const
-{
-       assert(index < _annotations.size());
-       return _annotations[index].end_sample() < sample;
-}
-
-bool RowData::index_entry_end_sample_gt(
-       const uint64_t sample, const size_t index) const
-{
-       assert(index < _annotations.size());
-       return _annotations[index].end_sample() > sample;
 }
 
 } // decode
index 3cd454e3fb31b932da4870c0847d699a470f21e9..01c65b6e84ace4c4a1d4b44e3e11ba5bca78d758 100644 (file)
@@ -44,25 +44,10 @@ public:
                std::vector<pv::data::decode::Annotation> &dest,
                uint64_t start_sample, uint64_t end_sample) const;
 
-       void push_annotation(const Annotation& a);
-
-private:
-       bool index_entry_start_sample_gt(
-               const uint64_t sample, const size_t index) const;
-       bool index_entry_end_sample_lt(
-               const size_t index, const uint64_t sample) const;
-       bool index_entry_end_sample_gt(
-               const uint64_t sample, const size_t index) const;
+       void push_annotation(const Annotation &a);
 
 private:
        std::vector<Annotation> _annotations;
-
-       /**
-        * _ann_start_index and _ann_end_index contain lists of annotions
-        * (represented by offsets in the _annotations vector), sorted in
-        * ascending ordered by the start_sample and end_sample respectively.
-        */
-       std::vector<size_t> _ann_start_index, _ann_end_index;
 };
 
 }