/** * @file dbc_decode_builder.cpp * @brief * * Created: 2026-03-13 * Author: Deeaitch (Dim. Himro) * * Licensed under the MIT License. * See LICENSE file in the project root for full license text. */ #include "dbc_decode_builder.h" #include DecodeDatabase DbcDecodeBuilder::Build(const DbcDatabase &source) const { std::vector frames; frames.reserve(source.frames.size()); for (const FrameInfo &sourceFrame: source.frames) { DecodeFrame targetFrame; targetFrame.name = sourceFrame.name; targetFrame.canId = sourceFrame.canId; targetFrame.isExtended = sourceFrame.isExtended; targetFrame.dlc = sourceFrame.dlc; targetFrame.pgn = sourceFrame.pgn; targetFrame.hasPgn = sourceFrame.hasPgn; targetFrame.transmitter = sourceFrame.transmitter; targetFrame.comment = sourceFrame.comment; targetFrame.signals.reserve(sourceFrame.signals.size()); for (const SignalInfo &sourceSignal: sourceFrame.signals) { DecodeSignal targetSignal; targetSignal.multiplexing = sourceSignal.multiplexing; targetSignal.name = sourceSignal.name; targetSignal.startBit = sourceSignal.startBit; targetSignal.length = sourceSignal.length; targetSignal.byteOrder = sourceSignal.isLittleEndian ? ByteOrder::Intel : ByteOrder::Motorola; targetSignal.valueType = sourceSignal.isSigned ? ValueType::Signed : ValueType::Unsigned; targetSignal.factor = sourceSignal.factor; targetSignal.offset = sourceSignal.offset; targetSignal.minimum = sourceSignal.minimum; targetSignal.maximum = sourceSignal.maximum; targetSignal.unit = sourceSignal.unit; targetSignal.receivers = sourceSignal.receivers; targetSignal.comment = sourceSignal.comment; targetSignal.valueDescriptions = sourceSignal.valueDescriptions; targetFrame.signals.push_back(std::move(targetSignal)); } frames.push_back(std::move(targetFrame)); } return DecodeDatabase(frames); }