message: optimize getting subpart of a vector 59/23259/6
authorRomain Forlot <romain.forlot@iot.bzh>
Wed, 4 Dec 2019 15:19:28 +0000 (16:19 +0100)
committerRomain Forlot <romain.forlot@iot.bzh>
Thu, 9 Jan 2020 15:25:36 +0000 (16:25 +0100)
Change-Id: Ifdaea3bf0969f15eb70629a92c0293ddeee33491
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
low-can-binding/can/message/message.cpp

index 191e1f2..22887c9 100644 (file)
@@ -85,28 +85,16 @@ const uint8_t* message_t::get_data() const
 ///
 const std::vector<uint8_t> message_t::get_data_vector(int start, int end) const
 {
-       std::vector<uint8_t> ret;
-       if(start >= 0)
-       {
-               if(end<length_)
-               {
-                       for(int i=start;i<=end;i++)
-                       {
-                               ret.push_back(data_[i]);
-                       }
-               }
-               else
-               {
-                       for(int i=start;i<length_;i++)
-                       {
-                               ret.push_back(data_[i]);
-                       }
-               }
-       }
-       else
+       if ( start > length_ || end > length_ )
        {
                AFB_ERROR("Error index to get data vector, [%d-%d] - for length %d", start, end, length_);
+               return data_;
        }
+
+       std::vector<uint8_t>::const_iterator first = data_.begin() + start;
+       std::vector<uint8_t>::const_iterator last = data_.begin() + end;
+       std::vector<uint8_t> ret(first, last);
+
        return ret;
 }