\hypertarget{decode__database_8h_source}{}\doxysection{decode\+\_\+database.\+h}
\mbox{\hyperlink{decode__database_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00001}00001 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00002}00002 \textcolor{comment}{ * @file decode\_database.h}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00003}00003 \textcolor{comment}{ * @brief}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00005}00005 \textcolor{comment}{ * Created: 2026-\/03-\/13}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00006}00006 \textcolor{comment}{ * Author: Deeaitch (Dim. Himro)}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00008}00008 \textcolor{comment}{ * Licensed under the MIT License.}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00009}00009 \textcolor{comment}{ * See LICENSE file in the project root for full license text.}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00010}00010 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00011}00011 }
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00012}00012 \textcolor{preprocessor}{\#ifndef DECODE\_DATABASE\_H}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00013}00013 \textcolor{preprocessor}{\#define DECODE\_DATABASE\_H}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00014}00014 }
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00015}00015 \textcolor{preprocessor}{\#include <string>}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00016}00016 \textcolor{preprocessor}{\#include <vector>}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00017}00017 \textcolor{preprocessor}{\#include <unordered\_map>}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00018}00018 \textcolor{preprocessor}{\#include <cstdint>}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00019}00019 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00020}00020 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00021}00021 \textcolor{comment}{ * @brief Signal byte order used for runtime decoding.}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00022}00022 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00023}\mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142b}{00023}} \textcolor{keyword}{enum class} \mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142b}{ByteOrder}} \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00024}00024   \mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142baff97a9fdede09eaf6e1c8ec9f6a61dd5}{Intel}},}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00025}00025   \mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142ba2ed1afe3c9215523e4272f46e6186b31}{Motorola}}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00026}00026 \};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00027}00027 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00028}00028 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00029}00029 \textcolor{comment}{ * @brief Signal numeric type.}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00030}00030 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00031}\mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1}{00031}} \textcolor{keyword}{enum class} \mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1}{ValueType}} \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00032}00032   \mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1aa1a914735b205424ba6c40b85528d78a}{Unsigned}},}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00033}00033   \mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1a71fed0c3428bf1a2e19af257c4bac379}{Signed}}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00034}00034 \};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00035}00035 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00036}00036 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00037}00037 \textcolor{comment}{ * @brief Runtime-\/ready signal definition.}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00038}00038 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00039}\mbox{\hyperlink{structDecodeSignal}{00039}} \textcolor{keyword}{struct }\mbox{\hyperlink{structDecodeSignal}{DecodeSignal}} \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00040}\mbox{\hyperlink{structDecodeSignal_a58cf5844f2272a23dcb9687d912e4780}{00040}}   std::string \mbox{\hyperlink{structDecodeSignal_a58cf5844f2272a23dcb9687d912e4780}{name}};                   \textcolor{comment}{/**< Signal name. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00041}\mbox{\hyperlink{structDecodeSignal_aaf5d7527ddf65b6355c2b4f3626df22d}{00041}}   std::uint32\_t \mbox{\hyperlink{structDecodeSignal_aaf5d7527ddf65b6355c2b4f3626df22d}{startBit}};             \textcolor{comment}{/**< DBC start bit. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00042}\mbox{\hyperlink{structDecodeSignal_acd4ef5ee30421d117b5756854302debb}{00042}}   std::uint32\_t \mbox{\hyperlink{structDecodeSignal_acd4ef5ee30421d117b5756854302debb}{length}};               \textcolor{comment}{/**< Signal length in bits. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00043}\mbox{\hyperlink{structDecodeSignal_abdc4c4bb4a67a6d61d6ca81e8a52833d}{00043}}   \mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142b}{ByteOrder}} \mbox{\hyperlink{structDecodeSignal_abdc4c4bb4a67a6d61d6ca81e8a52833d}{byteOrder}};                \textcolor{comment}{/**< Intel or Motorola. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00044}\mbox{\hyperlink{structDecodeSignal_a9d37638129263b8902ba5be59baf39a8}{00044}}   \mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1}{ValueType}} \mbox{\hyperlink{structDecodeSignal_a9d37638129263b8902ba5be59baf39a8}{valueType}};                \textcolor{comment}{/**< Signed or unsigned. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00045}\mbox{\hyperlink{structDecodeSignal_a428c39913a366a8476dd291061354391}{00045}}   \textcolor{keywordtype}{double} \mbox{\hyperlink{structDecodeSignal_a428c39913a366a8476dd291061354391}{factor}};                      \textcolor{comment}{/**< Scaling factor. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00046}\mbox{\hyperlink{structDecodeSignal_a92db637af4e224a0ae70173050dc3f74}{00046}}   \textcolor{keywordtype}{double} \mbox{\hyperlink{structDecodeSignal_a92db637af4e224a0ae70173050dc3f74}{offset}};                      \textcolor{comment}{/**< Physical offset. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00047}\mbox{\hyperlink{structDecodeSignal_a0fb84e19a0ab3bd50b6f65c1075ebc25}{00047}}   \textcolor{keywordtype}{double} \mbox{\hyperlink{structDecodeSignal_a0fb84e19a0ab3bd50b6f65c1075ebc25}{minimum}};                     \textcolor{comment}{/**< Minimum physical value. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00048}\mbox{\hyperlink{structDecodeSignal_a4a6ba87142a9badbf0ca830e9e709cb7}{00048}}   \textcolor{keywordtype}{double} \mbox{\hyperlink{structDecodeSignal_a4a6ba87142a9badbf0ca830e9e709cb7}{maximum}};                     \textcolor{comment}{/**< Maximum physical value. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00049}\mbox{\hyperlink{structDecodeSignal_a38eed9ca7581423fd8bfbedcffc12092}{00049}}   std::string \mbox{\hyperlink{structDecodeSignal_a38eed9ca7581423fd8bfbedcffc12092}{unit}};                   \textcolor{comment}{/**< Physical unit. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00050}\mbox{\hyperlink{structDecodeSignal_abdbae62a64d2df716bf60c6b67b30eaa}{00050}}   std::vector<std::string> \mbox{\hyperlink{structDecodeSignal_abdbae62a64d2df716bf60c6b67b30eaa}{receivers}}; \textcolor{comment}{/**< Receivers. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00051}\mbox{\hyperlink{structDecodeSignal_ae28c905d4a2bc86419c2a8361bfea473}{00051}}   std::string \mbox{\hyperlink{structDecodeSignal_ae28c905d4a2bc86419c2a8361bfea473}{comment}};                \textcolor{comment}{/**< Comment. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00052}00052 }
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00053}\mbox{\hyperlink{structDecodeSignal_a93fd97267e2614979440261628e493f5}{00053}}   \mbox{\hyperlink{structDecodeSignal_a93fd97267e2614979440261628e493f5}{DecodeSignal}}()}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00054}00054     : \mbox{\hyperlink{structDecodeSignal_a58cf5844f2272a23dcb9687d912e4780}{name}}()}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00055}00055     , \mbox{\hyperlink{structDecodeSignal_aaf5d7527ddf65b6355c2b4f3626df22d}{startBit}} (0U)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00056}00056     , \mbox{\hyperlink{structDecodeSignal_acd4ef5ee30421d117b5756854302debb}{length}} (0U)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00057}00057     , \mbox{\hyperlink{structDecodeSignal_abdc4c4bb4a67a6d61d6ca81e8a52833d}{byteOrder}} (\mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142b}{ByteOrder}}::\mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142baff97a9fdede09eaf6e1c8ec9f6a61dd5}{Intel}})}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00058}00058     , \mbox{\hyperlink{structDecodeSignal_a9d37638129263b8902ba5be59baf39a8}{valueType}} (\mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1}{ValueType}}::\mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1aa1a914735b205424ba6c40b85528d78a}{Unsigned}})}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00059}00059     , \mbox{\hyperlink{structDecodeSignal_a428c39913a366a8476dd291061354391}{factor}} (1.0)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00060}00060     , \mbox{\hyperlink{structDecodeSignal_a92db637af4e224a0ae70173050dc3f74}{offset}} (0.0)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00061}00061     , \mbox{\hyperlink{structDecodeSignal_a0fb84e19a0ab3bd50b6f65c1075ebc25}{minimum}} (0.0)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00062}00062     , \mbox{\hyperlink{structDecodeSignal_a4a6ba87142a9badbf0ca830e9e709cb7}{maximum}} (0.0)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00063}00063     , \mbox{\hyperlink{structDecodeSignal_a38eed9ca7581423fd8bfbedcffc12092}{unit}}()}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00064}00064     , \mbox{\hyperlink{structDecodeSignal_abdbae62a64d2df716bf60c6b67b30eaa}{receivers}}()}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00065}00065     , \mbox{\hyperlink{structDecodeSignal_ae28c905d4a2bc86419c2a8361bfea473}{comment}}() \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00066}00066   \}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00067}00067 \};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00068}00068 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00069}00069 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00070}00070 \textcolor{comment}{ * @brief Runtime-\/ready frame definition.}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00071}00071 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00072}\mbox{\hyperlink{structDecodeFrame}{00072}} \textcolor{keyword}{struct }\mbox{\hyperlink{structDecodeFrame}{DecodeFrame}} \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00073}\mbox{\hyperlink{structDecodeFrame_aa0a7f8fd5bfde2148dfd0d838328f579}{00073}}   std::string \mbox{\hyperlink{structDecodeFrame_aa0a7f8fd5bfde2148dfd0d838328f579}{name}};                \textcolor{comment}{/**< Frame name. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00074}\mbox{\hyperlink{structDecodeFrame_a52e10215388db7df8b541b9d9909edcf}{00074}}   std::uint32\_t \mbox{\hyperlink{structDecodeFrame_a52e10215388db7df8b541b9d9909edcf}{canId}};             \textcolor{comment}{/**< Normalized CAN ID. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00075}\mbox{\hyperlink{structDecodeFrame_a3ee2348d781f8f15aaf87e8dcf57ec41}{00075}}   \textcolor{keywordtype}{bool} \mbox{\hyperlink{structDecodeFrame_a3ee2348d781f8f15aaf87e8dcf57ec41}{isExtended}};                 \textcolor{comment}{/**< true for extended frame. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00076}\mbox{\hyperlink{structDecodeFrame_a51111ac13988be372d5673d12cf3e060}{00076}}   std::uint8\_t \mbox{\hyperlink{structDecodeFrame_a51111ac13988be372d5673d12cf3e060}{dlc}};                \textcolor{comment}{/**< Payload length. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00077}\mbox{\hyperlink{structDecodeFrame_a1d3c54055c0cbceb73adf551f7067f23}{00077}}   std::uint32\_t \mbox{\hyperlink{structDecodeFrame_a1d3c54055c0cbceb73adf551f7067f23}{pgn}};               \textcolor{comment}{/**< PGN if available. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00078}\mbox{\hyperlink{structDecodeFrame_a2551102670c4a540fced4c71da0b369d}{00078}}   \textcolor{keywordtype}{bool} \mbox{\hyperlink{structDecodeFrame_a2551102670c4a540fced4c71da0b369d}{hasPgn}};                     \textcolor{comment}{/**< true if PGN is valid. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00079}\mbox{\hyperlink{structDecodeFrame_ad78241dc40c793aabb8495b6989b81a9}{00079}}   std::string \mbox{\hyperlink{structDecodeFrame_ad78241dc40c793aabb8495b6989b81a9}{transmitter}};         \textcolor{comment}{/**< Transmitter ECU. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00080}\mbox{\hyperlink{structDecodeFrame_a25819ef907a32391af5c9f7cae9cdb22}{00080}}   std::string \mbox{\hyperlink{structDecodeFrame_a25819ef907a32391af5c9f7cae9cdb22}{comment}};             \textcolor{comment}{/**< Frame comment. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00081}\mbox{\hyperlink{structDecodeFrame_a372afd9e74f1ae33f85cb4acfd3e2036}{00081}}   std::vector<DecodeSignal> \mbox{\hyperlink{structDecodeFrame_a372afd9e74f1ae33f85cb4acfd3e2036}{signals}}; \textcolor{comment}{/**< Signal definitions. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00082}00082 }
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00083}\mbox{\hyperlink{structDecodeFrame_ae6ae88ee29bcaff936e7c7b2380f96b4}{00083}}   \mbox{\hyperlink{structDecodeFrame_ae6ae88ee29bcaff936e7c7b2380f96b4}{DecodeFrame}}()}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00084}00084     : \mbox{\hyperlink{structDecodeFrame_aa0a7f8fd5bfde2148dfd0d838328f579}{name}}()}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00085}00085     , \mbox{\hyperlink{structDecodeFrame_a52e10215388db7df8b541b9d9909edcf}{canId}} (0U)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00086}00086     , \mbox{\hyperlink{structDecodeFrame_a3ee2348d781f8f15aaf87e8dcf57ec41}{isExtended}} (false)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00087}00087     , \mbox{\hyperlink{structDecodeFrame_a51111ac13988be372d5673d12cf3e060}{dlc}} (0U)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00088}00088     , \mbox{\hyperlink{structDecodeFrame_a1d3c54055c0cbceb73adf551f7067f23}{pgn}} (0U)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00089}00089     , \mbox{\hyperlink{structDecodeFrame_a2551102670c4a540fced4c71da0b369d}{hasPgn}} (false)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00090}00090     , \mbox{\hyperlink{structDecodeFrame_ad78241dc40c793aabb8495b6989b81a9}{transmitter}}()}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00091}00091     , \mbox{\hyperlink{structDecodeFrame_a25819ef907a32391af5c9f7cae9cdb22}{comment}}()}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00092}00092     , \mbox{\hyperlink{structDecodeFrame_a372afd9e74f1ae33f85cb4acfd3e2036}{signals}}() \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00093}00093   \}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00094}00094 \};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00095}00095 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00096}00096 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00097}00097 \textcolor{comment}{ * @brief Key for fast frame lookup.}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00098}00098 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00099}\mbox{\hyperlink{structFrameKey}{00099}} \textcolor{keyword}{struct }\mbox{\hyperlink{structFrameKey}{FrameKey}} \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00100}\mbox{\hyperlink{structFrameKey_a022917652b4d3c2f2dfcc5a13ab7caa4}{00100}}   std::uint32\_t \mbox{\hyperlink{structFrameKey_a022917652b4d3c2f2dfcc5a13ab7caa4}{canId}};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00101}\mbox{\hyperlink{structFrameKey_aa3179b709d02ef70cf0e736f040a2145}{00101}}   \textcolor{keywordtype}{bool} \mbox{\hyperlink{structFrameKey_aa3179b709d02ef70cf0e736f040a2145}{isExtended}};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00102}00102 }
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00103}\mbox{\hyperlink{structFrameKey_a0e9aad56b251cdf802d45a9c19050b14}{00103}}   \mbox{\hyperlink{structFrameKey_a0e9aad56b251cdf802d45a9c19050b14}{FrameKey}}()}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00104}00104     : \mbox{\hyperlink{structFrameKey_a022917652b4d3c2f2dfcc5a13ab7caa4}{canId}} (0U)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00105}00105     , \mbox{\hyperlink{structFrameKey_aa3179b709d02ef70cf0e736f040a2145}{isExtended}} (false) \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00106}00106   \}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00107}00107 }
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00108}\mbox{\hyperlink{structFrameKey_a33bde405c7ea53000d54b3dd6e058670}{00108}}   \mbox{\hyperlink{structFrameKey_a33bde405c7ea53000d54b3dd6e058670}{FrameKey}} (std::uint32\_t \textcolor{keywordtype}{id}, \textcolor{keywordtype}{bool} extended)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00109}00109     : \mbox{\hyperlink{structFrameKey_a022917652b4d3c2f2dfcc5a13ab7caa4}{canId}} (id)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00110}00110     , \mbox{\hyperlink{structFrameKey_aa3179b709d02ef70cf0e736f040a2145}{isExtended}} (extended) \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00111}00111   \}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00112}00112 }
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00113}\mbox{\hyperlink{structFrameKey_aaaec9f914e127787247fcda5e183b01f}{00113}}   \textcolor{keywordtype}{bool} \mbox{\hyperlink{structFrameKey_aaaec9f914e127787247fcda5e183b01f}{operator== }}(\textcolor{keyword}{const} \mbox{\hyperlink{structFrameKey}{FrameKey}} \&other)\textcolor{keyword}{ const }\{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00114}00114     \textcolor{keywordflow}{return} (\mbox{\hyperlink{structFrameKey_a022917652b4d3c2f2dfcc5a13ab7caa4}{canId}} == other.\mbox{\hyperlink{structFrameKey_a022917652b4d3c2f2dfcc5a13ab7caa4}{canId}}) \&\& (\mbox{\hyperlink{structFrameKey_aa3179b709d02ef70cf0e736f040a2145}{isExtended}} == other.\mbox{\hyperlink{structFrameKey_aa3179b709d02ef70cf0e736f040a2145}{isExtended}});}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00115}00115   \}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00116}00116 \};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00117}00117 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00118}00118 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00119}00119 \textcolor{comment}{ * @brief Hasher for frame key.}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00120}00120 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00121}\mbox{\hyperlink{structFrameKeyHasher}{00121}} \textcolor{keyword}{struct }\mbox{\hyperlink{structFrameKeyHasher}{FrameKeyHasher}} \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00122}\mbox{\hyperlink{structFrameKeyHasher_a1612ce56b513790e3ed4c06ec7d28b9f}{00122}}   std::size\_t \mbox{\hyperlink{structFrameKeyHasher_a1612ce56b513790e3ed4c06ec7d28b9f}{operator() }}(\textcolor{keyword}{const} \mbox{\hyperlink{structFrameKey}{FrameKey}} \&key)\textcolor{keyword}{ const }\{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00123}00123     \textcolor{keyword}{const} std::size\_t a = \textcolor{keyword}{static\_cast<}std::size\_t\textcolor{keyword}{>} (key.\mbox{\hyperlink{structFrameKey_a022917652b4d3c2f2dfcc5a13ab7caa4}{canId}});}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00124}00124     \textcolor{keyword}{const} std::size\_t b = key.\mbox{\hyperlink{structFrameKey_aa3179b709d02ef70cf0e736f040a2145}{isExtended}} ? 1U : 0U;}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00125}00125     \textcolor{keywordflow}{return} (a * 1315423911U) \string^ b;}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00126}00126   \}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00127}00127 \};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00128}00128 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00129}00129 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00130}00130 \textcolor{comment}{ * @brief Runtime decode database with fast lookup by CAN ID.}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00131}00131 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00132}\mbox{\hyperlink{structDecodeDatabase}{00132}} \textcolor{keyword}{struct }\mbox{\hyperlink{structDecodeDatabase}{DecodeDatabase}} \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00133}\mbox{\hyperlink{structDecodeDatabase_a2bd4ddfc2602c1de4e12a373bfc93072}{00133}}   std::vector<DecodeFrame> \mbox{\hyperlink{structDecodeDatabase_a2bd4ddfc2602c1de4e12a373bfc93072}{frames}};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00134}\mbox{\hyperlink{structDecodeDatabase_ae4fd1351008bb0dce337821a849100c5}{00134}}   std::unordered\_map<FrameKey, std::size\_t, FrameKeyHasher> \mbox{\hyperlink{structDecodeDatabase_ae4fd1351008bb0dce337821a849100c5}{frameIndexByKey}};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00135}00135 \};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00136}00136 }
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00137}00137 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* DECODE\_DATABASE\_H */}\textcolor{preprocessor}{}}

\end{DoxyCode}
