This commit is contained in:
deeaitch committed 2026-10-23 20:53:05 -04:00
1 parent f60faea2e7
commit f03882d3f4
86 files changed
+3539 -2688

No files matched your search

+244 -194
View File
@@ -299,201 +299,251 @@ $(document).ready(function(){initNavTree('dbc__pipeline__test_8cpp_source.html',
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> <span class="keywordtype">void</span> emptyDatabase_data();</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> <span class="keywordtype">void</span> emptyDatabase();</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <span class="keywordtype">void</span> databaseReplacement();</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span>};</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> </div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span><span class="keywordtype">void</span> PipelineTest::metadataLookupDecodeAndTree() {</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> parsed = ParseFixture(fixture);</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> QVERIFY(!parsed.<a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>());</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> QVERIFY(parsed.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.empty());</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a> expected = ExpectedMetadata();</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> QCOMPARE(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>.size(), expected.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>.size());</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> <span class="keyword">const</span> <a class="code hl_class" href="classDecodeDatabase.html">DecodeDatabase</a> runtime = <a class="code hl_class" href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a>().<a class="code hl_function" href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">Build</a>(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> QCOMPARE(runtime.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>().size(), expected.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>.size());</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <span class="keyword">const</span> std::unique_ptr&lt;TreeNode&gt; tree = <a class="code hl_class" href="classDbcTreeBuilder.html">DbcTreeBuilder</a>().<a class="code hl_function" href="classDbcTreeBuilder.html#a7e57d067d831b14b383947fd125edd4b">Build</a>(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> QVERIFY(tree != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> CheckTree(*tree, expected);</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; expected.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>.size(); ++i) {</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> CheckFrame(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>[i], expected.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>[i]);</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> CheckFrame(runtime.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>()[i], expected.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>[i]);</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> <span class="keyword">const</span> <a class="code hl_struct" href="structFrameKey.html">FrameKey</a> key(expected.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>[i].canId, expected.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>[i].isExtended);</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <span class="keyword">const</span> std::shared_ptr&lt;const DecodeFrame&gt; found = runtime.<a class="code hl_function" href="classDecodeDatabase.html#a780d6e747a48b10a5eb0ab85448d2970">FindFrame</a>(key);</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> QVERIFY(found != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> QCOMPARE(found.get(), &amp;runtime.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>()[i]);</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> QCOMPARE(<a class="code hl_class" href="classDbcDecoder.html">DbcDecoder</a>().FindFrame(runtime, key.canId, key.isExtended).get(), found.get());</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> <span class="keywordflow">for</span> (std::size_t j = 0; j &lt; found-&gt;signals.size(); ++j) {</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> <span class="keyword">const</span> std::shared_ptr&lt;const DecodeSignal&gt; signal = runtime.<a class="code hl_function" href="classDecodeDatabase.html#a0af5b15b9953a4f6551c27ee9ae8b514">FindSignal</a>(<a class="code hl_struct" href="structSignalKey.html">SignalKey</a>(key, found-&gt;signals[j].name));</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> QVERIFY(signal != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> QCOMPARE(signal.get(), &amp;found-&gt;signals[j]);</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> }</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> }</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> QVERIFY(runtime.<a class="code hl_function" href="classDecodeDatabase.html#a0af5b15b9953a4f6551c27ee9ae8b514">FindSignal</a>(<a class="code hl_struct" href="structSignalKey.html">SignalKey</a>(<a class="code hl_struct" href="structFrameKey.html">FrameKey</a>(291U, <span class="keyword">true</span>), <span class="stringliteral">&quot;Mode&quot;</span>)) == <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> QVERIFY(runtime.<a class="code hl_function" href="classDecodeDatabase.html#a780d6e747a48b10a5eb0ab85448d2970">FindFrame</a>(<a class="code hl_struct" href="structFrameKey.html">FrameKey</a>(292U, <span class="keyword">false</span>)) == <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> </div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <a class="code hl_struct" href="structRawCanFrame.html">RawCanFrame</a> raw;</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a2d0e7fa0e3d5c20bbed55ed8f7888ff4">canId</a> = 291U;</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">data</a> = {3U, 4U};</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedFrameValue.html">DecodedFrameValue</a> standard = <a class="code hl_class" href="classDbcDecoder.html">DbcDecoder</a>().<a class="code hl_function" href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">Decode</a>(runtime, raw);</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> QVERIFY(standard.<a class="code hl_variable" href="structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0">valid</a>);</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> QCOMPARE(standard.<a class="code hl_variable" href="structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9">status</a>, FrameDecodeStatus::Valid);</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> QVERIFY(standard.<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a> == <a class="code hl_struct" href="structFrameKey.html">FrameKey</a>(291U, <span class="keyword">false</span>));</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> QCOMPARE(standard.<a class="code hl_variable" href="structDecodedFrameValue.html#a33e971ba10030506007aa201c89f351d">definition</a>.get(), runtime.<a class="code hl_function" href="classDecodeDatabase.html#a780d6e747a48b10a5eb0ab85448d2970">FindFrame</a>(standard.<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a>).get());</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> QCOMPARE(standard.signals.size(), std::size_t(2));</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; standard.signals.size(); ++i) {</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedSignalValue.html">DecodedSignalValue</a> &amp;signal = standard.signals[i];</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> QVERIFY(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#aac0ed361af545cde48d0e6f41a859686">valid</a>);</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> QCOMPARE(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a94161a80412b3961da8fd2fec43c25f6">status</a>, SignalDecodeStatus::Valid);</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> QVERIFY(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a33df0fcd92b23b3e08539906fc6b4c4a">key</a> == <a class="code hl_struct" href="structSignalKey.html">SignalKey</a>(standard.<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a>, i == 0 ? <span class="stringliteral">&quot;Mode&quot;</span> : <span class="stringliteral">&quot;State&quot;</span>));</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> QCOMPARE(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a828b5ef7faefc14fbf5dbd46249bcad2">definition</a>.get(), runtime.<a class="code hl_function" href="classDecodeDatabase.html#a0af5b15b9953a4f6551c27ee9ae8b514">FindSignal</a>(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a33df0fcd92b23b3e08539906fc6b4c4a">key</a>).get());</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> QCOMPARE(std::get&lt;std::uint64_t&gt;(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a503c90b4b1a610b8252c45e466367c28">rawValue</a>), i == 0 ? 3U : 4U);</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> QCOMPARE(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a6847d05b3cb00d5e0f6c611968f57978">physicalValue</a>, i == 0 ? 3.0 : 9.0);</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> QVERIFY(signal.<a class="code hl_function" href="structDecodedSignalValue.html#affc38af1bf31bcb6f2c33044bce92bd2">GetValueDescription</a>() != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> QCOMPARE(*signal.<a class="code hl_function" href="structDecodedSignalValue.html#affc38af1bf31bcb6f2c33044bce92bd2">GetValueDescription</a>(), std::string(i == 0 ? <span class="stringliteral">&quot;Selected&quot;</span> : <span class="stringliteral">&quot;Standard four&quot;</span>));</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> }</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a462193d275adc1dba8bd18ffa0e36bb7">isExtended</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">data</a> = {0xFEU};</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedFrameValue.html">DecodedFrameValue</a> extended = <a class="code hl_class" href="classDbcDecoder.html">DbcDecoder</a>().<a class="code hl_function" href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">Decode</a>(runtime, raw);</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> QVERIFY(extended.<a class="code hl_variable" href="structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0">valid</a>);</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> QCOMPARE(extended.<a class="code hl_variable" href="structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9">status</a>, FrameDecodeStatus::Valid);</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> QVERIFY(extended.<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a> == <a class="code hl_struct" href="structFrameKey.html">FrameKey</a>(291U, <span class="keyword">true</span>));</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> QCOMPARE(extended.<a class="code hl_variable" href="structDecodedFrameValue.html#a33e971ba10030506007aa201c89f351d">definition</a>.get(), runtime.<a class="code hl_function" href="classDecodeDatabase.html#a780d6e747a48b10a5eb0ab85448d2970">FindFrame</a>(extended.<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a>).get());</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> QCOMPARE(extended.signals.size(), std::size_t(1));</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedSignalValue.html">DecodedSignalValue</a> &amp;signal = extended.signals[0];</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> QVERIFY(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#aac0ed361af545cde48d0e6f41a859686">valid</a>);</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> QCOMPARE(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a94161a80412b3961da8fd2fec43c25f6">status</a>, SignalDecodeStatus::Valid);</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> QVERIFY(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a33df0fcd92b23b3e08539906fc6b4c4a">key</a> == <a class="code hl_struct" href="structSignalKey.html">SignalKey</a>(extended.<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a>, <span class="stringliteral">&quot;State&quot;</span>));</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> QCOMPARE(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a828b5ef7faefc14fbf5dbd46249bcad2">definition</a>.get(), runtime.<a class="code hl_function" href="classDecodeDatabase.html#a0af5b15b9953a4f6551c27ee9ae8b514">FindSignal</a>(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a33df0fcd92b23b3e08539906fc6b4c4a">key</a>).get());</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> QCOMPARE(std::get&lt;std::int64_t&gt;(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a503c90b4b1a610b8252c45e466367c28">rawValue</a>), std::int64_t(-2));</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> QCOMPARE(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a6847d05b3cb00d5e0f6c611968f57978">physicalValue</a>, -4.0);</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> QVERIFY(signal.<a class="code hl_function" href="structDecodedSignalValue.html#affc38af1bf31bcb6f2c33044bce92bd2">GetValueDescription</a>() != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> QCOMPARE(*signal.<a class="code hl_function" href="structDecodedSignalValue.html#affc38af1bf31bcb6f2c33044bce92bd2">GetValueDescription</a>(), std::string(<span class="stringliteral">&quot;Extended minus two&quot;</span>));</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> </div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a2d0e7fa0e3d5c20bbed55ed8f7888ff4">canId</a> = 0x18F00442U;</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">data</a>.clear();</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedFrameValue.html">DecodedFrameValue</a> j1939 = <a class="code hl_class" href="classDbcDecoder.html">DbcDecoder</a>().<a class="code hl_function" href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">Decode</a>(runtime, raw);</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> QVERIFY(j1939.<a class="code hl_variable" href="structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0">valid</a>);</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> QCOMPARE(j1939.<a class="code hl_variable" href="structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9">status</a>, FrameDecodeStatus::Valid);</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> QVERIFY(j1939.<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a> == <a class="code hl_struct" href="structFrameKey.html">FrameKey</a>(0x18F00442U, <span class="keyword">true</span>));</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> QCOMPARE(j1939.<a class="code hl_variable" href="structDecodedFrameValue.html#a33e971ba10030506007aa201c89f351d">definition</a>.get(), runtime.<a class="code hl_function" href="classDecodeDatabase.html#a780d6e747a48b10a5eb0ab85448d2970">FindFrame</a>(j1939.<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a>).get());</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> QVERIFY(j1939.signals.empty());</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span>}</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> </div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span><span class="keywordtype">void</span> PipelineTest::emptyDatabase_data() {</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> QTest::addColumn&lt;QString&gt;(<span class="stringliteral">&quot;text&quot;</span>);</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> QTest::newRow(<span class="stringliteral">&quot;empty-file&quot;</span>) &lt;&lt; QString();</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> QTest::newRow(<span class="stringliteral">&quot;headers-only&quot;</span>) &lt;&lt; QString::fromUtf8(<span class="stringliteral">&quot;VERSION \&quot;empty\&quot;\nNS_ :\nBS_:\nBU_: Sender\n&quot;</span>);</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span>}</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> </div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span><span class="keywordtype">void</span> PipelineTest::emptyDatabase() {</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> QFETCH(QString, text);</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> parsed = ParseFixture(text.toStdString());</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> QVERIFY(!parsed.<a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>());</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> QVERIFY(parsed.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.empty());</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> QVERIFY(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>.empty());</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> <span class="keyword">const</span> <a class="code hl_class" href="classDecodeDatabase.html">DecodeDatabase</a> runtime = <a class="code hl_class" href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a>().<a class="code hl_function" href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">Build</a>(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> QVERIFY(runtime.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>().empty());</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> CheckUnknown(runtime, <span class="keyword">false</span>);</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> CheckUnknown(runtime, <span class="keyword">true</span>);</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> <span class="keyword">const</span> std::unique_ptr&lt;TreeNode&gt; tree = <a class="code hl_class" href="classDbcTreeBuilder.html">DbcTreeBuilder</a>().<a class="code hl_function" href="classDbcTreeBuilder.html#a7e57d067d831b14b383947fd125edd4b">Build</a>(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> QVERIFY(tree != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> CheckTree(*tree, <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a>());</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span>}</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> </div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span><span class="keywordtype">void</span> PipelineTest::databaseReplacement() {</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> parsed = ParseFixture(fixture);</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> QVERIFY(!parsed.<a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>());</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> <a class="code hl_class" href="classDecodeDatabase.html">DecodeDatabase</a> runtime = <a class="code hl_class" href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a>().<a class="code hl_function" href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">Build</a>(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> std::unique_ptr&lt;TreeNode&gt; tree = <a class="code hl_class" href="classDbcTreeBuilder.html">DbcTreeBuilder</a>().<a class="code hl_function" href="classDbcTreeBuilder.html#a7e57d067d831b14b383947fd125edd4b">Build</a>(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> <a class="code hl_struct" href="structRawCanFrame.html">RawCanFrame</a> raw;</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a2d0e7fa0e3d5c20bbed55ed8f7888ff4">canId</a> = 291U;</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">data</a> = {3U, 4U};</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedFrameValue.html">DecodedFrameValue</a> saved = <a class="code hl_class" href="classDbcDecoder.html">DbcDecoder</a>().<a class="code hl_function" href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">Decode</a>(runtime, raw);</div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> QVERIFY(saved.<a class="code hl_variable" href="structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0">valid</a>);</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> QCOMPARE(saved.signals.size(), std::size_t(2));</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> QVERIFY(tree != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> std::unique_ptr&lt;TreeNode&gt; savedTree = std::move(tree);</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <span class="keywordtype">void</span> unsupportedSignalTypes_data();</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> <span class="keywordtype">void</span> unsupportedSignalTypes();</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span>};</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> </div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span><span class="keywordtype">void</span> PipelineTest::metadataLookupDecodeAndTree() {</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> parsed = ParseFixture(fixture);</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> QVERIFY(!parsed.<a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>());</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> QVERIFY(parsed.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.empty());</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a> expected = ExpectedMetadata();</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> QCOMPARE(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>.size(), expected.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>.size());</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <span class="keyword">const</span> <a class="code hl_class" href="classDecodeDatabase.html">DecodeDatabase</a> runtime = <a class="code hl_class" href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a>().<a class="code hl_function" href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">Build</a>(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> QCOMPARE(runtime.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>().size(), expected.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>.size());</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> <span class="keyword">const</span> std::unique_ptr&lt;TreeNode&gt; tree = <a class="code hl_class" href="classDbcTreeBuilder.html">DbcTreeBuilder</a>().<a class="code hl_function" href="classDbcTreeBuilder.html#a7e57d067d831b14b383947fd125edd4b">Build</a>(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> QVERIFY(tree != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> CheckTree(*tree, expected);</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; expected.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>.size(); ++i) {</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> CheckFrame(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>[i], expected.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>[i]);</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> CheckFrame(runtime.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>()[i], expected.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>[i]);</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> <span class="keyword">const</span> <a class="code hl_struct" href="structFrameKey.html">FrameKey</a> key(expected.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>[i].canId, expected.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>[i].isExtended);</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <span class="keyword">const</span> std::shared_ptr&lt;const DecodeFrame&gt; found = runtime.<a class="code hl_function" href="classDecodeDatabase.html#a780d6e747a48b10a5eb0ab85448d2970">FindFrame</a>(key);</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> QVERIFY(found != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> QCOMPARE(found.get(), &amp;runtime.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>()[i]);</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> QCOMPARE(<a class="code hl_class" href="classDbcDecoder.html">DbcDecoder</a>().FindFrame(runtime, key.canId, key.isExtended).get(), found.get());</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> <span class="keywordflow">for</span> (std::size_t j = 0; j &lt; found-&gt;signals.size(); ++j) {</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <span class="keyword">const</span> std::shared_ptr&lt;const DecodeSignal&gt; signal = runtime.<a class="code hl_function" href="classDecodeDatabase.html#a0af5b15b9953a4f6551c27ee9ae8b514">FindSignal</a>(<a class="code hl_struct" href="structSignalKey.html">SignalKey</a>(key, found-&gt;signals[j].name));</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> QVERIFY(signal != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> QCOMPARE(signal.get(), &amp;found-&gt;signals[j]);</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> }</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> }</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> QVERIFY(runtime.<a class="code hl_function" href="classDecodeDatabase.html#a0af5b15b9953a4f6551c27ee9ae8b514">FindSignal</a>(<a class="code hl_struct" href="structSignalKey.html">SignalKey</a>(<a class="code hl_struct" href="structFrameKey.html">FrameKey</a>(291U, <span class="keyword">true</span>), <span class="stringliteral">&quot;Mode&quot;</span>)) == <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> QVERIFY(runtime.<a class="code hl_function" href="classDecodeDatabase.html#a780d6e747a48b10a5eb0ab85448d2970">FindFrame</a>(<a class="code hl_struct" href="structFrameKey.html">FrameKey</a>(292U, <span class="keyword">false</span>)) == <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> </div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <a class="code hl_struct" href="structRawCanFrame.html">RawCanFrame</a> raw;</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a2d0e7fa0e3d5c20bbed55ed8f7888ff4">canId</a> = 291U;</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">data</a> = {3U, 4U};</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedFrameValue.html">DecodedFrameValue</a> standard = <a class="code hl_class" href="classDbcDecoder.html">DbcDecoder</a>().<a class="code hl_function" href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">Decode</a>(runtime, raw);</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> QVERIFY(standard.<a class="code hl_variable" href="structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0">valid</a>);</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> QCOMPARE(standard.<a class="code hl_variable" href="structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9">status</a>, FrameDecodeStatus::Valid);</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> QVERIFY(standard.<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a> == <a class="code hl_struct" href="structFrameKey.html">FrameKey</a>(291U, <span class="keyword">false</span>));</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> QCOMPARE(standard.<a class="code hl_variable" href="structDecodedFrameValue.html#a33e971ba10030506007aa201c89f351d">definition</a>.get(), runtime.<a class="code hl_function" href="classDecodeDatabase.html#a780d6e747a48b10a5eb0ab85448d2970">FindFrame</a>(standard.<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a>).get());</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> QCOMPARE(standard.signals.size(), std::size_t(2));</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; standard.signals.size(); ++i) {</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedSignalValue.html">DecodedSignalValue</a> &amp;signal = standard.signals[i];</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> QVERIFY(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#aac0ed361af545cde48d0e6f41a859686">valid</a>);</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> QCOMPARE(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a94161a80412b3961da8fd2fec43c25f6">status</a>, SignalDecodeStatus::Valid);</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> QVERIFY(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a33df0fcd92b23b3e08539906fc6b4c4a">key</a> == <a class="code hl_struct" href="structSignalKey.html">SignalKey</a>(standard.<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a>, i == 0 ? <span class="stringliteral">&quot;Mode&quot;</span> : <span class="stringliteral">&quot;State&quot;</span>));</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> QCOMPARE(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a828b5ef7faefc14fbf5dbd46249bcad2">definition</a>.get(), runtime.<a class="code hl_function" href="classDecodeDatabase.html#a0af5b15b9953a4f6551c27ee9ae8b514">FindSignal</a>(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a33df0fcd92b23b3e08539906fc6b4c4a">key</a>).get());</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> QCOMPARE(std::get&lt;std::uint64_t&gt;(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a503c90b4b1a610b8252c45e466367c28">rawValue</a>), i == 0 ? 3U : 4U);</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> QCOMPARE(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a6847d05b3cb00d5e0f6c611968f57978">physicalValue</a>, i == 0 ? 3.0 : 9.0);</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> QVERIFY(signal.<a class="code hl_function" href="structDecodedSignalValue.html#affc38af1bf31bcb6f2c33044bce92bd2">GetValueDescription</a>() != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> QCOMPARE(*signal.<a class="code hl_function" href="structDecodedSignalValue.html#affc38af1bf31bcb6f2c33044bce92bd2">GetValueDescription</a>(), std::string(i == 0 ? <span class="stringliteral">&quot;Selected&quot;</span> : <span class="stringliteral">&quot;Standard four&quot;</span>));</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> }</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a462193d275adc1dba8bd18ffa0e36bb7">isExtended</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">data</a> = {0xFEU};</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedFrameValue.html">DecodedFrameValue</a> extended = <a class="code hl_class" href="classDbcDecoder.html">DbcDecoder</a>().<a class="code hl_function" href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">Decode</a>(runtime, raw);</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> QVERIFY(extended.<a class="code hl_variable" href="structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0">valid</a>);</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> QCOMPARE(extended.<a class="code hl_variable" href="structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9">status</a>, FrameDecodeStatus::Valid);</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> QVERIFY(extended.<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a> == <a class="code hl_struct" href="structFrameKey.html">FrameKey</a>(291U, <span class="keyword">true</span>));</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> QCOMPARE(extended.<a class="code hl_variable" href="structDecodedFrameValue.html#a33e971ba10030506007aa201c89f351d">definition</a>.get(), runtime.<a class="code hl_function" href="classDecodeDatabase.html#a780d6e747a48b10a5eb0ab85448d2970">FindFrame</a>(extended.<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a>).get());</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> QCOMPARE(extended.signals.size(), std::size_t(1));</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedSignalValue.html">DecodedSignalValue</a> &amp;signal = extended.signals[0];</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> QVERIFY(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#aac0ed361af545cde48d0e6f41a859686">valid</a>);</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> QCOMPARE(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a94161a80412b3961da8fd2fec43c25f6">status</a>, SignalDecodeStatus::Valid);</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> QVERIFY(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a33df0fcd92b23b3e08539906fc6b4c4a">key</a> == <a class="code hl_struct" href="structSignalKey.html">SignalKey</a>(extended.<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a>, <span class="stringliteral">&quot;State&quot;</span>));</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> QCOMPARE(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a828b5ef7faefc14fbf5dbd46249bcad2">definition</a>.get(), runtime.<a class="code hl_function" href="classDecodeDatabase.html#a0af5b15b9953a4f6551c27ee9ae8b514">FindSignal</a>(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a33df0fcd92b23b3e08539906fc6b4c4a">key</a>).get());</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> QCOMPARE(std::get&lt;std::int64_t&gt;(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a503c90b4b1a610b8252c45e466367c28">rawValue</a>), std::int64_t(-2));</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> QCOMPARE(signal.<a class="code hl_variable" href="structDecodedSignalValue.html#a6847d05b3cb00d5e0f6c611968f57978">physicalValue</a>, -4.0);</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> QVERIFY(signal.<a class="code hl_function" href="structDecodedSignalValue.html#affc38af1bf31bcb6f2c33044bce92bd2">GetValueDescription</a>() != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> QCOMPARE(*signal.<a class="code hl_function" href="structDecodedSignalValue.html#affc38af1bf31bcb6f2c33044bce92bd2">GetValueDescription</a>(), std::string(<span class="stringliteral">&quot;Extended minus two&quot;</span>));</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> </div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a2d0e7fa0e3d5c20bbed55ed8f7888ff4">canId</a> = 0x18F00442U;</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">data</a>.clear();</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedFrameValue.html">DecodedFrameValue</a> j1939 = <a class="code hl_class" href="classDbcDecoder.html">DbcDecoder</a>().<a class="code hl_function" href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">Decode</a>(runtime, raw);</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> QVERIFY(j1939.<a class="code hl_variable" href="structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0">valid</a>);</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> QCOMPARE(j1939.<a class="code hl_variable" href="structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9">status</a>, FrameDecodeStatus::Valid);</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> QVERIFY(j1939.<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a> == <a class="code hl_struct" href="structFrameKey.html">FrameKey</a>(0x18F00442U, <span class="keyword">true</span>));</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> QCOMPARE(j1939.<a class="code hl_variable" href="structDecodedFrameValue.html#a33e971ba10030506007aa201c89f351d">definition</a>.get(), runtime.<a class="code hl_function" href="classDecodeDatabase.html#a780d6e747a48b10a5eb0ab85448d2970">FindFrame</a>(j1939.<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a>).get());</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> QVERIFY(j1939.signals.empty());</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span>}</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> </div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span><span class="keywordtype">void</span> PipelineTest::unsupportedSignalTypes_data() {</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> QTest::addColumn&lt;unsigned&gt;(<span class="stringliteral">&quot;bits&quot;</span>);</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> QTest::addColumn&lt;unsigned&gt;(<span class="stringliteral">&quot;type&quot;</span>);</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> QTest::addColumn&lt;std::vector&lt;std::uint8_t&gt;&gt;(<span class="stringliteral">&quot;payload&quot;</span>);</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> QTest::addColumn&lt;std::uint64_t&gt;(<span class="stringliteral">&quot;integerValue&quot;</span>);</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> QTest::newRow(<span class="stringliteral">&quot;float32-one&quot;</span>) &lt;&lt; 32U &lt;&lt; 1U &lt;&lt; std::vector&lt;std::uint8_t&gt;{0U, 0U, 128U, 63U}</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> &lt;&lt; std::uint64_t(0x3F800000U);</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> QTest::newRow(<span class="stringliteral">&quot;float64-one&quot;</span>) &lt;&lt; 64U &lt;&lt; 2U &lt;&lt; std::vector&lt;std::uint8_t&gt;{0U, 0U, 0U, 0U, 0U, 0U, 240U, 63U}</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> &lt;&lt; std::uint64_t(0x3FF0000000000000ULL);</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span>}</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> </div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span><span class="keywordtype">void</span> PipelineTest::unsupportedSignalTypes() {</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> QFETCH(<span class="keywordtype">unsigned</span>, bits);</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> QFETCH(<span class="keywordtype">unsigned</span>, type);</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> QFETCH(std::vector&lt;std::uint8_t&gt;, payload);</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> QFETCH(std::uint64_t, integerValue);</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> <span class="keyword">const</span> std::string definitions = <span class="stringliteral">&quot;BO_ 1 Frame: &quot;</span> + std::to_string(bits / 8U) + <span class="stringliteral">&quot; ECU\n&quot;</span></div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> <span class="stringliteral">&quot;SG_ Value : 0|&quot;</span> + std::to_string(bits) + <span class="stringliteral">&quot;@1+ (1,0) [0|100] \&quot;\&quot; ECU\n&quot;</span>;</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> <a class="code hl_struct" href="structRawCanFrame.html">RawCanFrame</a> raw;</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a2d0e7fa0e3d5c20bbed55ed8f7888ff4">canId</a> = 1U;</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">data</a> = payload;</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> <span class="keyword">const</span> <a class="code hl_class" href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a> builder;</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> <span class="keyword">const</span> <a class="code hl_class" href="classDbcDecoder.html">DbcDecoder</a> decoder;</div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> </div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> <span class="comment">// Without a type override, the same bits are a supported integer signal.</span></div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> integers = ParseFixture(definitions);</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> QVERIFY(!integers.<a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>());</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedFrameValue.html">DecodedFrameValue</a> integerFrame = decoder.<a class="code hl_function" href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">Decode</a>(builder.<a class="code hl_function" href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">Build</a>(integers.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>), raw);</div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> QCOMPARE(integerFrame.<a class="code hl_variable" href="structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9">status</a>, FrameDecodeStatus::Valid);</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> QCOMPARE(integerFrame.signals.size(), std::size_t(1));</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> QVERIFY(integerFrame.signals[0].<a class="code hl_variable" href="structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0">valid</a>);</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> QCOMPARE(std::get&lt;std::uint64_t&gt;(integerFrame.signals[0].rawValue), integerValue);</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> </div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> parsed = ParseFixture(R<span class="stringliteral">&quot;DBC(BO_ 291 Replacement: 1 NewSender</span></div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span><span class="stringliteral"> SG_ NewState : 0|8@1+ (3,-1) [-1|764] &quot;V&quot; NewReceiver</span></div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span><span class="stringliteral">CM_ BO_ 291 &quot;Replacement frame&quot;;</span></div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span><span class="stringliteral">CM_ SG_ 291 NewState &quot;Replacement signal&quot;;</span></div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span><span class="stringliteral">VAL_ 291 NewState 4 &quot;New four&quot;;</span></div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span><span class="stringliteral">)DBC&quot;);</span></div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span><span class="stringliteral"> QVERIFY(!parsed.<a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>());</span></div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span><span class="stringliteral"> QVERIFY(parsed.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.empty());</span></div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span><span class="stringliteral"> <a class="code hl_struct" href="structFrameInfo.html">FrameInfo</a> replacement;</span></div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span><span class="stringliteral"> replacement.<a class="code hl_variable" href="structFrameInfo.html#abb53a7f93ed7abc0ea1ae4a8ccafcdcb">name</a> = </span><span class="stringliteral">&quot;Replacement&quot;</span>;</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> replacement.<a class="code hl_variable" href="structFrameInfo.html#af470b0742c05bfbffc31c51a68f5c05e">canId</a> = 291U;</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> replacement.<a class="code hl_variable" href="structFrameInfo.html#aa2b198ea0f55e560c123d35e7b3ecab9">dlc</a> = 1U;</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> replacement.<a class="code hl_variable" href="structFrameInfo.html#a92749ec3798d4211a505860fb389a9e8">transmitter</a> = <span class="stringliteral">&quot;NewSender&quot;</span>;</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> replacement.<a class="code hl_variable" href="structFrameInfo.html#ace75121294f9d89b762080ab5643293c">comment</a> = <span class="stringliteral">&quot;Replacement frame&quot;</span>;</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> <a class="code hl_struct" href="structSignalInfo.html">SignalInfo</a> state;</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> state.<a class="code hl_variable" href="structSignalInfo.html#a379e422a00cad56f896cacf60455b088">name</a> = <span class="stringliteral">&quot;NewState&quot;</span>;</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> state.<a class="code hl_variable" href="structSignalInfo.html#a1008b5201f71848177217bd52fb84baa">length</a> = 8U;</div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> state.<a class="code hl_variable" href="structSignalInfo.html#ae4f78d99a2750aa564d7eba860171499">factor</a> = 3;</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> state.<a class="code hl_variable" href="structSignalInfo.html#ab7d0769f47aa540656b22e4e49db517e">offset</a> = -1;</div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> state.<a class="code hl_variable" href="structSignalInfo.html#ada7bf94fbeaa26bd08c73982b5af255b">minimum</a> = -1;</div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> state.<a class="code hl_variable" href="structSignalInfo.html#adf1c4331b9eabced0d7fdda40ff0eb52">maximum</a> = 764;</div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> state.<a class="code hl_variable" href="structSignalInfo.html#a1f214f03e94ef5794de2d3367bfcbd01">unit</a> = <span class="stringliteral">&quot;V&quot;</span>;</div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> state.<a class="code hl_variable" href="structSignalInfo.html#a2c95562fd0b29327a7fd7b1e6feee7f3">receivers</a> = {<span class="stringliteral">&quot;NewReceiver&quot;</span>};</div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> state.<a class="code hl_variable" href="structSignalInfo.html#ac99ba7563a5dad01e39c4257216953f5">comment</a> = <span class="stringliteral">&quot;Replacement signal&quot;</span>;</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> state.<a class="code hl_variable" href="structSignalInfo.html#a43f47d0433d0cc39076bd7278b46af9c">valueDescriptions</a> = {{std::uint64_t(4), <span class="stringliteral">&quot;New four&quot;</span>}};</div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> replacement.signals = {state};</div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a> expected{{replacement}};</div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> QCOMPARE(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>.size(), std::size_t(1));</div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> CheckFrame(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>[0], replacement);</div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> runtime = <a class="code hl_class" href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a>().<a class="code hl_function" href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">Build</a>(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> tree = <a class="code hl_class" href="classDbcTreeBuilder.html">DbcTreeBuilder</a>().<a class="code hl_function" href="classDbcTreeBuilder.html#a7e57d067d831b14b383947fd125edd4b">Build</a>(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> QVERIFY(tree != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> QCOMPARE(runtime.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>().size(), std::size_t(1));</div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> CheckFrame(runtime.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>()[0], replacement);</div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> CheckTree(*tree, expected);</div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> CheckUnknown(runtime, <span class="keyword">true</span>);</div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> QVERIFY(runtime.<a class="code hl_function" href="classDecodeDatabase.html#a780d6e747a48b10a5eb0ab85448d2970">FindFrame</a>(<a class="code hl_struct" href="structFrameKey.html">FrameKey</a>(0x18F00442U, <span class="keyword">true</span>)) == <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span> QVERIFY(runtime.<a class="code hl_function" href="classDecodeDatabase.html#a0af5b15b9953a4f6551c27ee9ae8b514">FindSignal</a>(<a class="code hl_struct" href="structSignalKey.html">SignalKey</a>(<a class="code hl_struct" href="structFrameKey.html">FrameKey</a>(291U, <span class="keyword">false</span>), <span class="stringliteral">&quot;State&quot;</span>)) == <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> QVERIFY(runtime.<a class="code hl_function" href="classDecodeDatabase.html#a0af5b15b9953a4f6551c27ee9ae8b514">FindSignal</a>(<a class="code hl_struct" href="structSignalKey.html">SignalKey</a>(<a class="code hl_struct" href="structFrameKey.html">FrameKey</a>(291U, <span class="keyword">false</span>), <span class="stringliteral">&quot;Mode&quot;</span>)) == <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">data</a> = {4U};</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedFrameValue.html">DecodedFrameValue</a> current = <a class="code hl_class" href="classDbcDecoder.html">DbcDecoder</a>().<a class="code hl_function" href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">Decode</a>(runtime, raw);</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> QVERIFY(current.<a class="code hl_variable" href="structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0">valid</a>);</div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> QCOMPARE(current.<a class="code hl_variable" href="structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9">status</a>, FrameDecodeStatus::Valid);</div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> QCOMPARE(current.signals.size(), std::size_t(1));</div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> QVERIFY(current.signals[0].<a class="code hl_variable" href="structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0">valid</a>);</div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> QVERIFY(current.signals[0].<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a> == <a class="code hl_struct" href="structSignalKey.html">SignalKey</a>(<a class="code hl_struct" href="structFrameKey.html">FrameKey</a>(291U, <span class="keyword">false</span>), <span class="stringliteral">&quot;NewState&quot;</span>));</div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> QCOMPARE(current.signals[0].<a class="code hl_variable" href="structDecodedFrameValue.html#a33e971ba10030506007aa201c89f351d">definition</a>.get(), runtime.<a class="code hl_function" href="classDecodeDatabase.html#a0af5b15b9953a4f6551c27ee9ae8b514">FindSignal</a>(current.signals[0].<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a>).get());</div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> QCOMPARE(std::get&lt;std::uint64_t&gt;(current.signals[0].rawValue), std::uint64_t(4));</div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> QCOMPARE(current.signals[0].physicalValue, 11.0);</div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> QVERIFY(current.signals[0].GetValueDescription() != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> QCOMPARE(*current.signals[0].GetValueDescription(), std::string(<span class="stringliteral">&quot;New four&quot;</span>));</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> </div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> parsed = ParseFixture(<span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> QVERIFY(!parsed.<a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>());</div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> QVERIFY(parsed.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.empty());</div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> runtime = <a class="code hl_class" href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a>().<a class="code hl_function" href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">Build</a>(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> tree = <a class="code hl_class" href="classDbcTreeBuilder.html">DbcTreeBuilder</a>().<a class="code hl_function" href="classDbcTreeBuilder.html#a7e57d067d831b14b383947fd125edd4b">Build</a>(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> QVERIFY(tree != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> QVERIFY(runtime.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>().empty());</div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> CheckUnknown(runtime, <span class="keyword">false</span>);</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> CheckUnknown(runtime, <span class="keyword">true</span>);</div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> CheckTree(*tree, <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a>());</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> QVERIFY(runtime.<a class="code hl_function" href="classDecodeDatabase.html#a0af5b15b9953a4f6551c27ee9ae8b514">FindSignal</a>(current.signals[0].<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a>) == <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> CheckFrame(*current.<a class="code hl_variable" href="structDecodedFrameValue.html#a33e971ba10030506007aa201c89f351d">definition</a>, replacement);</div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> CheckFrame(*saved.<a class="code hl_variable" href="structDecodedFrameValue.html#a33e971ba10030506007aa201c89f351d">definition</a>, ExpectedMetadata().frames[0]);</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> CheckTree(*savedTree, ExpectedMetadata());</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> QCOMPARE(saved.signals[1].physicalValue, 9.0);</div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> QVERIFY(saved.signals[1].GetValueDescription() != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> QCOMPARE(*saved.signals[1].GetValueDescription(), std::string(<span class="stringliteral">&quot;Standard four&quot;</span>));</div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span>}</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> </div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span><span class="keywordtype">int</span> RunPipelineTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv) {</div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> PipelineTest test;</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span> <span class="keywordflow">return</span> QTest::qExec(&amp;test, argc, argv);</div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span>}</div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> </div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span><span class="preprocessor">#include &quot;dbc_pipeline_test.moc&quot;</span></div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> floatingPoint = ParseFixture(definitions +</div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> <span class="stringliteral">&quot;SIG_VALTYPE_ 1 Value : &quot;</span> + std::to_string(type) + <span class="stringliteral">&quot;;\n&quot;</span>);</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> QVERIFY(floatingPoint.<a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>());</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> QCOMPARE(floatingPoint.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.size(), std::size_t(1));</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> QCOMPARE(floatingPoint.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>[0].code, DbcDiagnosticCode::UnsupportedSignalType);</div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> QCOMPARE(floatingPoint.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>[0].lineNumber, std::size_t(3));</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> QVERIFY(floatingPoint.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>.empty());</div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> <span class="comment">// Even if a caller overlooks the error, no integer definition is published.</span></div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedFrameValue.html">DecodedFrameValue</a> rejected = decoder.<a class="code hl_function" href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">Decode</a>(builder.<a class="code hl_function" href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">Build</a>(floatingPoint.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>), raw);</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> QCOMPARE(rejected.<a class="code hl_variable" href="structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9">status</a>, FrameDecodeStatus::UnknownFrame);</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> QVERIFY(!rejected.<a class="code hl_variable" href="structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0">valid</a>);</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> QVERIFY(!rejected.<a class="code hl_variable" href="structDecodedFrameValue.html#a33e971ba10030506007aa201c89f351d">definition</a>);</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> QVERIFY(rejected.signals.empty());</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span>}</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> </div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span><span class="keywordtype">void</span> PipelineTest::emptyDatabase_data() {</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> QTest::addColumn&lt;QString&gt;(<span class="stringliteral">&quot;text&quot;</span>);</div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> QTest::newRow(<span class="stringliteral">&quot;empty-file&quot;</span>) &lt;&lt; QString();</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> QTest::newRow(<span class="stringliteral">&quot;headers-only&quot;</span>) &lt;&lt; QString::fromUtf8(<span class="stringliteral">&quot;VERSION \&quot;empty\&quot;\nNS_ :\nBS_:\nBU_: Sender\n&quot;</span>);</div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span>}</div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> </div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span><span class="keywordtype">void</span> PipelineTest::emptyDatabase() {</div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> QFETCH(QString, text);</div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> parsed = ParseFixture(text.toStdString());</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> QVERIFY(!parsed.<a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>());</div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> QVERIFY(parsed.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.empty());</div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> QVERIFY(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>.empty());</div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> <span class="keyword">const</span> <a class="code hl_class" href="classDecodeDatabase.html">DecodeDatabase</a> runtime = <a class="code hl_class" href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a>().<a class="code hl_function" href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">Build</a>(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> QVERIFY(runtime.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>().empty());</div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> CheckUnknown(runtime, <span class="keyword">false</span>);</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> CheckUnknown(runtime, <span class="keyword">true</span>);</div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> <span class="keyword">const</span> std::unique_ptr&lt;TreeNode&gt; tree = <a class="code hl_class" href="classDbcTreeBuilder.html">DbcTreeBuilder</a>().<a class="code hl_function" href="classDbcTreeBuilder.html#a7e57d067d831b14b383947fd125edd4b">Build</a>(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> QVERIFY(tree != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> CheckTree(*tree, <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a>());</div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span>}</div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> </div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span><span class="keywordtype">void</span> PipelineTest::databaseReplacement() {</div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> parsed = ParseFixture(fixture);</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> QVERIFY(!parsed.<a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>());</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> <a class="code hl_class" href="classDecodeDatabase.html">DecodeDatabase</a> runtime = <a class="code hl_class" href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a>().<a class="code hl_function" href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">Build</a>(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> std::unique_ptr&lt;TreeNode&gt; tree = <a class="code hl_class" href="classDbcTreeBuilder.html">DbcTreeBuilder</a>().<a class="code hl_function" href="classDbcTreeBuilder.html#a7e57d067d831b14b383947fd125edd4b">Build</a>(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> <a class="code hl_struct" href="structRawCanFrame.html">RawCanFrame</a> raw;</div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a2d0e7fa0e3d5c20bbed55ed8f7888ff4">canId</a> = 291U;</div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">data</a> = {3U, 4U};</div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedFrameValue.html">DecodedFrameValue</a> saved = <a class="code hl_class" href="classDbcDecoder.html">DbcDecoder</a>().<a class="code hl_function" href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">Decode</a>(runtime, raw);</div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> QVERIFY(saved.<a class="code hl_variable" href="structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0">valid</a>);</div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> QCOMPARE(saved.signals.size(), std::size_t(2));</div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> QVERIFY(tree != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> std::unique_ptr&lt;TreeNode&gt; savedTree = std::move(tree);</div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> </div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> parsed = ParseFixture(R<span class="stringliteral">&quot;DBC(BO_ 291 Replacement: 1 NewSender</span></div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span><span class="stringliteral"> SG_ NewState : 0|8@1+ (3,-1) [-1|764] &quot;V&quot; NewReceiver</span></div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span><span class="stringliteral">CM_ BO_ 291 &quot;Replacement frame&quot;;</span></div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span><span class="stringliteral">CM_ SG_ 291 NewState &quot;Replacement signal&quot;;</span></div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span><span class="stringliteral">VAL_ 291 NewState 4 &quot;New four&quot;;</span></div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span><span class="stringliteral">)DBC&quot;);</span></div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span><span class="stringliteral"> QVERIFY(!parsed.<a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>());</span></div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span><span class="stringliteral"> QVERIFY(parsed.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.empty());</span></div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span><span class="stringliteral"> <a class="code hl_struct" href="structFrameInfo.html">FrameInfo</a> replacement;</span></div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span><span class="stringliteral"> replacement.<a class="code hl_variable" href="structFrameInfo.html#abb53a7f93ed7abc0ea1ae4a8ccafcdcb">name</a> = </span><span class="stringliteral">&quot;Replacement&quot;</span>;</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> replacement.<a class="code hl_variable" href="structFrameInfo.html#af470b0742c05bfbffc31c51a68f5c05e">canId</a> = 291U;</div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> replacement.<a class="code hl_variable" href="structFrameInfo.html#aa2b198ea0f55e560c123d35e7b3ecab9">dlc</a> = 1U;</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> replacement.<a class="code hl_variable" href="structFrameInfo.html#a92749ec3798d4211a505860fb389a9e8">transmitter</a> = <span class="stringliteral">&quot;NewSender&quot;</span>;</div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> replacement.<a class="code hl_variable" href="structFrameInfo.html#ace75121294f9d89b762080ab5643293c">comment</a> = <span class="stringliteral">&quot;Replacement frame&quot;</span>;</div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> <a class="code hl_struct" href="structSignalInfo.html">SignalInfo</a> state;</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> state.<a class="code hl_variable" href="structSignalInfo.html#a379e422a00cad56f896cacf60455b088">name</a> = <span class="stringliteral">&quot;NewState&quot;</span>;</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> state.<a class="code hl_variable" href="structSignalInfo.html#a1008b5201f71848177217bd52fb84baa">length</a> = 8U;</div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> state.<a class="code hl_variable" href="structSignalInfo.html#ae4f78d99a2750aa564d7eba860171499">factor</a> = 3;</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> state.<a class="code hl_variable" href="structSignalInfo.html#ab7d0769f47aa540656b22e4e49db517e">offset</a> = -1;</div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> state.<a class="code hl_variable" href="structSignalInfo.html#ada7bf94fbeaa26bd08c73982b5af255b">minimum</a> = -1;</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> state.<a class="code hl_variable" href="structSignalInfo.html#adf1c4331b9eabced0d7fdda40ff0eb52">maximum</a> = 764;</div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> state.<a class="code hl_variable" href="structSignalInfo.html#a1f214f03e94ef5794de2d3367bfcbd01">unit</a> = <span class="stringliteral">&quot;V&quot;</span>;</div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> state.<a class="code hl_variable" href="structSignalInfo.html#a2c95562fd0b29327a7fd7b1e6feee7f3">receivers</a> = {<span class="stringliteral">&quot;NewReceiver&quot;</span>};</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span> state.<a class="code hl_variable" href="structSignalInfo.html#ac99ba7563a5dad01e39c4257216953f5">comment</a> = <span class="stringliteral">&quot;Replacement signal&quot;</span>;</div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> state.<a class="code hl_variable" href="structSignalInfo.html#a43f47d0433d0cc39076bd7278b46af9c">valueDescriptions</a> = {{std::uint64_t(4), <span class="stringliteral">&quot;New four&quot;</span>}};</div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> replacement.signals = {state};</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a> expected{{replacement}};</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> QCOMPARE(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>.size(), std::size_t(1));</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> CheckFrame(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>[0], replacement);</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> runtime = <a class="code hl_class" href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a>().<a class="code hl_function" href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">Build</a>(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> tree = <a class="code hl_class" href="classDbcTreeBuilder.html">DbcTreeBuilder</a>().<a class="code hl_function" href="classDbcTreeBuilder.html#a7e57d067d831b14b383947fd125edd4b">Build</a>(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> QVERIFY(tree != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> QCOMPARE(runtime.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>().size(), std::size_t(1));</div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> CheckFrame(runtime.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>()[0], replacement);</div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> CheckTree(*tree, expected);</div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> CheckUnknown(runtime, <span class="keyword">true</span>);</div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> QVERIFY(runtime.<a class="code hl_function" href="classDecodeDatabase.html#a780d6e747a48b10a5eb0ab85448d2970">FindFrame</a>(<a class="code hl_struct" href="structFrameKey.html">FrameKey</a>(0x18F00442U, <span class="keyword">true</span>)) == <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span> QVERIFY(runtime.<a class="code hl_function" href="classDecodeDatabase.html#a0af5b15b9953a4f6551c27ee9ae8b514">FindSignal</a>(<a class="code hl_struct" href="structSignalKey.html">SignalKey</a>(<a class="code hl_struct" href="structFrameKey.html">FrameKey</a>(291U, <span class="keyword">false</span>), <span class="stringliteral">&quot;State&quot;</span>)) == <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> QVERIFY(runtime.<a class="code hl_function" href="classDecodeDatabase.html#a0af5b15b9953a4f6551c27ee9ae8b514">FindSignal</a>(<a class="code hl_struct" href="structSignalKey.html">SignalKey</a>(<a class="code hl_struct" href="structFrameKey.html">FrameKey</a>(291U, <span class="keyword">false</span>), <span class="stringliteral">&quot;Mode&quot;</span>)) == <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">data</a> = {4U};</div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedFrameValue.html">DecodedFrameValue</a> current = <a class="code hl_class" href="classDbcDecoder.html">DbcDecoder</a>().<a class="code hl_function" href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">Decode</a>(runtime, raw);</div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> QVERIFY(current.<a class="code hl_variable" href="structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0">valid</a>);</div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> QCOMPARE(current.<a class="code hl_variable" href="structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9">status</a>, FrameDecodeStatus::Valid);</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> QCOMPARE(current.signals.size(), std::size_t(1));</div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> QVERIFY(current.signals[0].<a class="code hl_variable" href="structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0">valid</a>);</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> QVERIFY(current.signals[0].<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a> == <a class="code hl_struct" href="structSignalKey.html">SignalKey</a>(<a class="code hl_struct" href="structFrameKey.html">FrameKey</a>(291U, <span class="keyword">false</span>), <span class="stringliteral">&quot;NewState&quot;</span>));</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> QCOMPARE(current.signals[0].<a class="code hl_variable" href="structDecodedFrameValue.html#a33e971ba10030506007aa201c89f351d">definition</a>.get(), runtime.<a class="code hl_function" href="classDecodeDatabase.html#a0af5b15b9953a4f6551c27ee9ae8b514">FindSignal</a>(current.signals[0].<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a>).get());</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> QCOMPARE(std::get&lt;std::uint64_t&gt;(current.signals[0].rawValue), std::uint64_t(4));</div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> QCOMPARE(current.signals[0].physicalValue, 11.0);</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> QVERIFY(current.signals[0].GetValueDescription() != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> QCOMPARE(*current.signals[0].GetValueDescription(), std::string(<span class="stringliteral">&quot;New four&quot;</span>));</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> </div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> parsed = ParseFixture(<span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> QVERIFY(!parsed.<a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>());</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> QVERIFY(parsed.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.empty());</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> runtime = <a class="code hl_class" href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a>().<a class="code hl_function" href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">Build</a>(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> tree = <a class="code hl_class" href="classDbcTreeBuilder.html">DbcTreeBuilder</a>().<a class="code hl_function" href="classDbcTreeBuilder.html#a7e57d067d831b14b383947fd125edd4b">Build</a>(parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> QVERIFY(tree != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> QVERIFY(runtime.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>().empty());</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> CheckUnknown(runtime, <span class="keyword">false</span>);</div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> CheckUnknown(runtime, <span class="keyword">true</span>);</div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> CheckTree(*tree, <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a>());</div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> QVERIFY(runtime.<a class="code hl_function" href="classDecodeDatabase.html#a0af5b15b9953a4f6551c27ee9ae8b514">FindSignal</a>(current.signals[0].<a class="code hl_variable" href="structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73">key</a>) == <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> CheckFrame(*current.<a class="code hl_variable" href="structDecodedFrameValue.html#a33e971ba10030506007aa201c89f351d">definition</a>, replacement);</div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> CheckFrame(*saved.<a class="code hl_variable" href="structDecodedFrameValue.html#a33e971ba10030506007aa201c89f351d">definition</a>, ExpectedMetadata().frames[0]);</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> CheckTree(*savedTree, ExpectedMetadata());</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> QCOMPARE(saved.signals[1].physicalValue, 9.0);</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> QVERIFY(saved.signals[1].GetValueDescription() != <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> QCOMPARE(*saved.signals[1].GetValueDescription(), std::string(<span class="stringliteral">&quot;Standard four&quot;</span>));</div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span>}</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> </div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span><span class="keywordtype">int</span> RunPipelineTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv) {</div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> PipelineTest test;</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> <span class="keywordflow">return</span> QTest::qExec(&amp;test, argc, argv);</div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span>}</div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> </div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span><span class="preprocessor">#include &quot;dbc_pipeline_test.moc&quot;</span></div>
<div class="ttc" id="aclassDbcDecodeBuilder_html"><div class="ttname"><a href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a></div><div class="ttdoc">Converts parsed DBC data into runtime decode database.</div><div class="ttdef"><b>Definition</b> <a href="dbc__decode__builder_8h_source.html#l00021">dbc_decode_builder.h:21</a></div></div>
<div class="ttc" id="aclassDbcDecodeBuilder_html_a2bc6386dfb5e58976c42e22c19ec471b"><div class="ttname"><a href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">DbcDecodeBuilder::Build</a></div><div class="ttdeci">DecodeDatabase Build(const DbcDatabase &amp;source) const</div><div class="ttdoc">Build runtime decode database.</div><div class="ttdef"><b>Definition</b> <a href="dbc__decode__builder_8cpp_source.html#l00015">dbc_decode_builder.cpp:15</a></div></div>
<div class="ttc" id="aclassDbcDecoder_html"><div class="ttname"><a href="classDbcDecoder.html">DbcDecoder</a></div><div class="ttdoc">Runtime CAN decoder using prebuilt decode database.</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8h_source.html#l00087">dbc_decoder.h:87</a></div></div>
<div class="ttc" id="aclassDbcDecoder_html_a345951ffe5d943a70d3a1ea1f39e74f7"><div class="ttname"><a href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">DbcDecoder::Decode</a></div><div class="ttdeci">DecodedFrameValue Decode(const DecodeDatabase &amp;database, const RawCanFrame &amp;frame) const</div><div class="ttdoc">Decode one raw CAN frame.</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8cpp_source.html#l00036">dbc_decoder.cpp:36</a></div></div>
<div class="ttc" id="aclassDbcParser_html"><div class="ttname"><a href="classDbcParser.html">DbcParser</a></div><div class="ttdoc">Minimal DBC parser.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8h_source.html#l00043">dbc_parser.h:43</a></div></div>
<div class="ttc" id="aclassDbcParser_html"><div class="ttname"><a href="classDbcParser.html">DbcParser</a></div><div class="ttdoc">Minimal DBC parser.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8h_source.html#l00045">dbc_parser.h:45</a></div></div>
<div class="ttc" id="aclassDbcTreeBuilder_html"><div class="ttname"><a href="classDbcTreeBuilder.html">DbcTreeBuilder</a></div><div class="ttdoc">Builds a simple tree from parsed DBC database.</div><div class="ttdef"><b>Definition</b> <a href="dbc__tree__builder_8h_source.html#l00023">dbc_tree_builder.h:23</a></div></div>
<div class="ttc" id="aclassDbcTreeBuilder_html_a7e57d067d831b14b383947fd125edd4b"><div class="ttname"><a href="classDbcTreeBuilder.html#a7e57d067d831b14b383947fd125edd4b">DbcTreeBuilder::Build</a></div><div class="ttdeci">std::unique_ptr&lt; TreeNode &gt; Build(const DbcDatabase &amp;database) const</div><div class="ttdoc">Build tree representation of parsed DBC data.</div><div class="ttdef"><b>Definition</b> <a href="dbc__tree__builder_8cpp_source.html#l00014">dbc_tree_builder.cpp:14</a></div></div>
<div class="ttc" id="aclassDecodeDatabase_html"><div class="ttname"><a href="classDecodeDatabase.html">DecodeDatabase</a></div><div class="ttdoc">Immutable runtime snapshot. Copies share storage; reload replaces a snapshot. Owning lookup handles a...</div><div class="ttdef"><b>Definition</b> <a href="decode__database_8h_source.html#l00102">decode_database.h:102</a></div></div>
@@ -517,10 +567,10 @@ $(document).ready(function(){initNavTree('dbc__pipeline__test_8cpp_source.html',
<div class="ttc" id="adecode__database_8h_html_ad9971b6ef33e02ba2c75d19c1d2518a1"><div class="ttname"><a href="decode__database_8h.html#ad9971b6ef33e02ba2c75d19c1d2518a1">ValueType</a></div><div class="ttdeci">ValueType</div><div class="ttdoc">Signal numeric type.</div><div class="ttdef"><b>Definition</b> <a href="decode__database_8h_source.html#l00037">decode_database.h:37</a></div></div>
<div class="ttc" id="astructDbcDatabase_html"><div class="ttname"><a href="structDbcDatabase.html">DbcDatabase</a></div><div class="ttdoc">Parsed DBC content stored in a simple internal form.</div><div class="ttdef"><b>Definition</b> <a href="dbc__database_8h_source.html#l00022">dbc_database.h:22</a></div></div>
<div class="ttc" id="astructDbcDatabase_html_a2cade5d0234ee816132127542f8c612b"><div class="ttname"><a href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">DbcDatabase::frames</a></div><div class="ttdeci">std::vector&lt; FrameInfo &gt; frames</div><div class="ttdef"><b>Definition</b> <a href="dbc__database_8h_source.html#l00023">dbc_database.h:23</a></div></div>
<div class="ttc" id="astructDbcParseResult_html"><div class="ttname"><a href="structDbcParseResult.html">DbcParseResult</a></div><div class="ttdoc">Parsed database and diagnostics; the database is empty on error.</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00038">dbc_diagnostic.h:38</a></div></div>
<div class="ttc" id="astructDbcParseResult_html_a3a1987b4381bb1e0a34dc09e31483679"><div class="ttname"><a href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">DbcParseResult::diagnostics</a></div><div class="ttdeci">std::vector&lt; DbcDiagnostic &gt; diagnostics</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00040">dbc_diagnostic.h:40</a></div></div>
<div class="ttc" id="astructDbcParseResult_html_a4da8641de3f6b55c7447c4421e05d20d"><div class="ttname"><a href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">DbcParseResult::HasErrors</a></div><div class="ttdeci">bool HasErrors() const</div><div class="ttdoc">Return whether any diagnostic has error severity.</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00043">dbc_diagnostic.h:43</a></div></div>
<div class="ttc" id="astructDbcParseResult_html_abfa765d29a4397e8ddaf771bae21993e"><div class="ttname"><a href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">DbcParseResult::database</a></div><div class="ttdeci">DbcDatabase database</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00039">dbc_diagnostic.h:39</a></div></div>
<div class="ttc" id="astructDbcParseResult_html"><div class="ttname"><a href="structDbcParseResult.html">DbcParseResult</a></div><div class="ttdoc">Parsed database and diagnostics; the database is empty on error.</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00039">dbc_diagnostic.h:39</a></div></div>
<div class="ttc" id="astructDbcParseResult_html_a3a1987b4381bb1e0a34dc09e31483679"><div class="ttname"><a href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">DbcParseResult::diagnostics</a></div><div class="ttdeci">std::vector&lt; DbcDiagnostic &gt; diagnostics</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00041">dbc_diagnostic.h:41</a></div></div>
<div class="ttc" id="astructDbcParseResult_html_a4da8641de3f6b55c7447c4421e05d20d"><div class="ttname"><a href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">DbcParseResult::HasErrors</a></div><div class="ttdeci">bool HasErrors() const</div><div class="ttdoc">Return whether any diagnostic has error severity.</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00044">dbc_diagnostic.h:44</a></div></div>
<div class="ttc" id="astructDbcParseResult_html_abfa765d29a4397e8ddaf771bae21993e"><div class="ttname"><a href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">DbcParseResult::database</a></div><div class="ttdeci">DbcDatabase database</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00040">dbc_diagnostic.h:40</a></div></div>
<div class="ttc" id="astructDbcParserOptions_html"><div class="ttname"><a href="structDbcParserOptions.html">DbcParserOptions</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8h_source.html#l00020">dbc_parser.h:20</a></div></div>
<div class="ttc" id="astructDecodeSignal_html"><div class="ttname"><a href="structDecodeSignal.html">DecodeSignal</a></div><div class="ttdoc">Runtime-ready signal definition.</div><div class="ttdef"><b>Definition</b> <a href="decode__database_8h_source.html#l00045">decode_database.h:45</a></div></div>
<div class="ttc" id="astructDecodeSignal_html_a9d37638129263b8902ba5be59baf39a8"><div class="ttname"><a href="structDecodeSignal.html#a9d37638129263b8902ba5be59baf39a8">DecodeSignal::valueType</a></div><div class="ttdeci">ValueType valueType</div><div class="ttdef"><b>Definition</b> <a href="decode__database_8h_source.html#l00051">decode_database.h:51</a></div></div>