LCOV - code coverage report
Current view: top level - core - dbc_decode_builder.cpp (source / functions) Coverage Total Hit
Test: coverage.info Lines: 100.0 % 40 40
Test Date: 2026-10-20 13:34:58 Functions: 100.0 % 1 1
Branches: 62.5 % 40 25

             Branch data     Line data    Source code
       1                 :             : /**
       2                 :             :  * @file dbc_decode_builder.cpp
       3                 :             :  * @brief Conversion of parsed metadata to runtime definitions.
       4                 :             :  *
       5                 :             :  * Created: 2026-03-13
       6                 :             :  * Author: Deeaitch (Dim. Himro)
       7                 :             :  *
       8                 :             :  * Licensed under the MIT License.
       9                 :             :  * See LICENSE file in the project root for full license text.
      10                 :             :  */
      11                 :             : 
      12                 :             : #include "dbc_decode_builder.h"
      13                 :             : #include <utility>
      14                 :             : 
      15                 :         108 : DecodeDatabase DbcDecodeBuilder::Build(const DbcDatabase &source) const {
      16                 :         108 :     std::vector<DecodeFrame> frames;
      17         [ +  - ]:         108 :     frames.reserve(source.frames.size());
      18                 :             : 
      19         [ +  + ]:         248 :     for (const FrameInfo &sourceFrame: source.frames) {
      20                 :         140 :         DecodeFrame targetFrame;
      21                 :             : 
      22         [ +  - ]:         140 :         targetFrame.attributes = sourceFrame.attributes;
      23         [ +  - ]:         140 :         targetFrame.frameFormat = sourceFrame.frameFormat;
      24                 :         140 :         targetFrame.cycleTimeMs = sourceFrame.cycleTimeMs;
      25         [ +  - ]:         140 :         targetFrame.name = sourceFrame.name;
      26                 :         140 :         targetFrame.canId = sourceFrame.canId;
      27                 :         140 :         targetFrame.isExtended = sourceFrame.isExtended;
      28                 :         140 :         targetFrame.dlc = sourceFrame.dlc;
      29                 :         140 :         targetFrame.pgn = sourceFrame.pgn;
      30                 :         140 :         targetFrame.hasPgn = sourceFrame.hasPgn;
      31         [ +  - ]:         140 :         targetFrame.transmitter = sourceFrame.transmitter;
      32         [ +  - ]:         140 :         targetFrame.comment = sourceFrame.comment;
      33                 :             : 
      34         [ +  - ]:         140 :         targetFrame.signals.reserve(sourceFrame.signals.size());
      35         [ +  + ]:         313 :         for (const SignalInfo &sourceSignal: sourceFrame.signals) {
      36                 :         173 :             DecodeSignal targetSignal;
      37                 :             : 
      38         [ +  - ]:         173 :             targetSignal.attributes = sourceSignal.attributes;
      39                 :         173 :             targetSignal.multiplexing = sourceSignal.multiplexing;
      40         [ +  - ]:         173 :             targetSignal.name = sourceSignal.name;
      41                 :         173 :             targetSignal.startBit = sourceSignal.startBit;
      42                 :         173 :             targetSignal.length = sourceSignal.length;
      43         [ +  + ]:         173 :             targetSignal.byteOrder = sourceSignal.isLittleEndian ? ByteOrder::Intel : ByteOrder::Motorola;
      44         [ +  + ]:         173 :             targetSignal.valueType = sourceSignal.isSigned ? ValueType::Signed : ValueType::Unsigned;
      45                 :         173 :             targetSignal.factor = sourceSignal.factor;
      46                 :         173 :             targetSignal.offset = sourceSignal.offset;
      47                 :         173 :             targetSignal.minimum = sourceSignal.minimum;
      48                 :         173 :             targetSignal.maximum = sourceSignal.maximum;
      49         [ +  - ]:         173 :             targetSignal.unit = sourceSignal.unit;
      50         [ +  - ]:         173 :             targetSignal.receivers = sourceSignal.receivers;
      51         [ +  - ]:         173 :             targetSignal.comment = sourceSignal.comment;
      52         [ +  - ]:         173 :             targetSignal.valueDescriptions = sourceSignal.valueDescriptions;
      53                 :             : 
      54         [ +  - ]:         173 :             targetFrame.signals.push_back(std::move(targetSignal));
      55                 :         173 :         }
      56                 :             : 
      57         [ +  - ]:         140 :         frames.push_back(std::move(targetFrame));
      58                 :         140 :     }
      59                 :             : 
      60         [ +  + ]:         176 :     return DecodeDatabase(frames);
      61                 :         108 : }
        

Generated by: LCOV version 2.0-1