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

+12
View File
@@ -749,6 +749,18 @@
<arglist>(const QModelIndex &amp;index) const override</arglist>
</member>
</compound>
<compound kind="class">
<name>DbcUnsupportedSignalTypeHandler</name>
<filename>classDbcUnsupportedSignalTypeHandler.html</filename>
<base>DbcStatementHandler</base>
<member kind="function">
<type>void</type>
<name>Handle</name>
<anchorfile>classDbcUnsupportedSignalTypeHandler.html</anchorfile>
<anchor>ae4132fcdbb134d51143133c1fb83a9df</anchor>
<arglist>(const std::string &amp;line, DbcParseContext &amp;context) const override</arglist>
</member>
</compound>
<compound kind="class">
<name>DbcValueDescriptionHandler</name>
<filename>classDbcValueDescriptionHandler.html</filename>
+23 -22
View File
@@ -119,28 +119,29 @@ $(document).ready(function(){initNavTree('annotated.html',''); initResizable();
<tr id="row_19_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcStatementHandler.html" target="_self">DbcStatementHandler</a></td><td class="desc">Interface for processing a registered DBC statement </td></tr>
<tr id="row_20_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcTreeBuilder.html" target="_self">DbcTreeBuilder</a></td><td class="desc">Builds a simple tree from parsed DBC database </td></tr>
<tr id="row_21_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcTreeModel.html" target="_self">DbcTreeModel</a></td><td class="desc"></td></tr>
<tr id="row_22_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcValueDescriptionHandler.html" target="_self">DbcValueDescriptionHandler</a></td><td class="desc">Defer raw value descriptions for target resolution </td></tr>
<tr id="row_23_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDecodeDatabase.html" target="_self">DecodeDatabase</a></td><td class="desc">Immutable runtime snapshot. Copies share storage; reload replaces a snapshot. Owning lookup handles and decoded results keep old definitions alive </td></tr>
<tr id="row_24_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodedFrameValue.html" target="_self">DecodedFrameValue</a></td><td class="desc">Fully decoded frame </td></tr>
<tr id="row_25_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodedSignalValue.html" target="_self">DecodedSignalValue</a></td><td class="desc">One decoded signal value </td></tr>
<tr id="row_26_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodeFrame.html" target="_self">DecodeFrame</a></td><td class="desc">Runtime-ready frame definition </td></tr>
<tr id="row_27_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodeSignal.html" target="_self">DecodeSignal</a></td><td class="desc">Runtime-ready signal definition </td></tr>
<tr id="row_28_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structFrameInfo.html" target="_self">FrameInfo</a></td><td class="desc">Describes one CAN frame from a DBC file </td></tr>
<tr id="row_29_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structFrameKey.html" target="_self">FrameKey</a></td><td class="desc">Stable frame identifier: normalized CAN ID and frame type </td></tr>
<tr id="row_30_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structFrameKeyHasher.html" target="_self">FrameKeyHasher</a></td><td class="desc">Hasher for frame key </td></tr>
<tr id="row_31_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structMultiplexing.html" target="_self">Multiplexing</a></td><td class="desc">Basic markers and optional explicit extended multiplexing condition </td></tr>
<tr id="row_32_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structMultiplexRange.html" target="_self">MultiplexRange</a></td><td class="desc">Inclusive raw selector range, without expanding individual values </td></tr>
<tr id="row_33_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPendingAttribute.html" target="_self">PendingAttribute</a></td><td class="desc">Attribute statement retained for ordered resolution </td></tr>
<tr id="row_34_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPendingComment.html" target="_self">PendingComment</a></td><td class="desc">Deferred frame or signal comment and its source location </td></tr>
<tr id="row_35_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPendingMultiplexing.html" target="_self">PendingMultiplexing</a></td><td class="desc">Deferred extended multiplexing condition and source location </td></tr>
<tr id="row_36_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPendingValueDescriptions.html" target="_self">PendingValueDescriptions</a></td><td class="desc">Deferred raw value descriptions and their target </td></tr>
<tr id="row_37_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPgnLookupResult.html" target="_self">PgnLookupResult</a></td><td class="desc"></td></tr>
<tr id="row_38_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structRawCanFrame.html" target="_self">RawCanFrame</a></td><td class="desc">Raw CAN frame used for runtime or trace decoding </td></tr>
<tr id="row_39_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structSignalInfo.html" target="_self">SignalInfo</a></td><td class="desc">Describes one signal inside a DBC frame </td></tr>
<tr id="row_40_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structSignalKey.html" target="_self">SignalKey</a></td><td class="desc"></td></tr>
<tr id="row_41_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structSignalKeyHasher.html" target="_self">SignalKeyHasher</a></td><td class="desc">Hasher for stable signal keys </td></tr>
<tr id="row_42_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTreeNode.html" target="_self">TreeNode</a></td><td class="desc">Tree node for later use in model/view or other hierarchy consumers </td></tr>
<tr id="row_43_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTypeFactory.html" target="_self">TypeFactory</a></td><td class="desc">Registry-based factory for creating objects by runtime identifier </td></tr>
<tr id="row_22_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcUnsupportedSignalTypeHandler.html" target="_self">DbcUnsupportedSignalTypeHandler</a></td><td class="desc"></td></tr>
<tr id="row_23_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcValueDescriptionHandler.html" target="_self">DbcValueDescriptionHandler</a></td><td class="desc">Defer raw value descriptions for target resolution </td></tr>
<tr id="row_24_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDecodeDatabase.html" target="_self">DecodeDatabase</a></td><td class="desc">Immutable runtime snapshot. Copies share storage; reload replaces a snapshot. Owning lookup handles and decoded results keep old definitions alive </td></tr>
<tr id="row_25_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodedFrameValue.html" target="_self">DecodedFrameValue</a></td><td class="desc">Fully decoded frame </td></tr>
<tr id="row_26_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodedSignalValue.html" target="_self">DecodedSignalValue</a></td><td class="desc">One decoded signal value </td></tr>
<tr id="row_27_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodeFrame.html" target="_self">DecodeFrame</a></td><td class="desc">Runtime-ready frame definition </td></tr>
<tr id="row_28_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodeSignal.html" target="_self">DecodeSignal</a></td><td class="desc">Runtime-ready signal definition </td></tr>
<tr id="row_29_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structFrameInfo.html" target="_self">FrameInfo</a></td><td class="desc">Describes one CAN frame from a DBC file </td></tr>
<tr id="row_30_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structFrameKey.html" target="_self">FrameKey</a></td><td class="desc">Stable frame identifier: normalized CAN ID and frame type </td></tr>
<tr id="row_31_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structFrameKeyHasher.html" target="_self">FrameKeyHasher</a></td><td class="desc">Hasher for frame key </td></tr>
<tr id="row_32_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structMultiplexing.html" target="_self">Multiplexing</a></td><td class="desc">Basic markers and optional explicit extended multiplexing condition </td></tr>
<tr id="row_33_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structMultiplexRange.html" target="_self">MultiplexRange</a></td><td class="desc">Inclusive raw selector range, without expanding individual values </td></tr>
<tr id="row_34_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPendingAttribute.html" target="_self">PendingAttribute</a></td><td class="desc">Attribute statement retained for ordered resolution </td></tr>
<tr id="row_35_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPendingComment.html" target="_self">PendingComment</a></td><td class="desc">Deferred frame or signal comment and its source location </td></tr>
<tr id="row_36_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPendingMultiplexing.html" target="_self">PendingMultiplexing</a></td><td class="desc">Deferred extended multiplexing condition and source location </td></tr>
<tr id="row_37_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPendingValueDescriptions.html" target="_self">PendingValueDescriptions</a></td><td class="desc">Deferred raw value descriptions and their target </td></tr>
<tr id="row_38_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPgnLookupResult.html" target="_self">PgnLookupResult</a></td><td class="desc"></td></tr>
<tr id="row_39_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structRawCanFrame.html" target="_self">RawCanFrame</a></td><td class="desc">Raw CAN frame used for runtime or trace decoding </td></tr>
<tr id="row_40_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structSignalInfo.html" target="_self">SignalInfo</a></td><td class="desc">Describes one signal inside a DBC frame </td></tr>
<tr id="row_41_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structSignalKey.html" target="_self">SignalKey</a></td><td class="desc"></td></tr>
<tr id="row_42_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structSignalKeyHasher.html" target="_self">SignalKeyHasher</a></td><td class="desc">Hasher for stable signal keys </td></tr>
<tr id="row_43_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTreeNode.html" target="_self">TreeNode</a></td><td class="desc">Tree node for later use in model/view or other hierarchy consumers </td></tr>
<tr id="row_44_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTypeFactory.html" target="_self">TypeFactory</a></td><td class="desc">Registry-based factory for creating objects by runtime identifier </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
+1
View File
@@ -25,6 +25,7 @@ var annotated_dup =
[ "DbcStatementHandler", "classDbcStatementHandler.html", "classDbcStatementHandler" ],
[ "DbcTreeBuilder", "classDbcTreeBuilder.html", "classDbcTreeBuilder" ],
[ "DbcTreeModel", "classDbcTreeModel.html", "classDbcTreeModel" ],
[ "DbcUnsupportedSignalTypeHandler", "classDbcUnsupportedSignalTypeHandler.html", "classDbcUnsupportedSignalTypeHandler" ],
[ "DbcValueDescriptionHandler", "classDbcValueDescriptionHandler.html", "classDbcValueDescriptionHandler" ],
[ "DecodeDatabase", "classDecodeDatabase.html", "classDecodeDatabase" ],
[ "DecodedFrameValue", "structDecodedFrameValue.html", "structDecodedFrameValue" ],
+1 -1
View File
@@ -191,7 +191,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00040">40</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__parser_8cpp_source.html#l00103">DbcParser::ParseFileWithDiagnostics()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__parser_8cpp_source.html#l00105">DbcParser::ParseFileWithDiagnostics()</a>.</p>
</div>
</div>
+2 -2
View File
@@ -115,7 +115,7 @@ Public Member Functions</h2></td></tr>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Common header metadata does not change the supported decode definitions. </p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00137">137</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00143">143</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a1e43a9dcf157f4d4418032d9e9711693" name="a1e43a9dcf157f4d4418032d9e9711693"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e43a9dcf157f4d4418032d9e9711693">&#9670;&#160;</a></span>Handle()</h2>
@@ -155,7 +155,7 @@ Public Member Functions</h2></td></tr>
<p>Implements <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00421">421</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00426">426</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
</div>
</div>
+1 -1
View File
@@ -158,7 +158,7 @@ Public Member Functions</h2></td></tr>
<p>Implements <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00484">484</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00489">489</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
<p class="reference">References <a class="el" href="dbc__statement__handler_8h_source.html#l00064">DbcParseContext::lineNumber</a>.</p>
+9 -11
View File
@@ -126,9 +126,9 @@ Public Member Functions</h2></td></tr>
<li>BA_DEF_, BA_DEF_DEF_, BA_ typed attributes, frame format and cycle time</li>
</ul>
<p>Frame/signal comments support multiline quoted text and deferred references. Attribute statements support multiline fields and quoted strings, ending at a semicolon outside quoted text. Diagnostics use the first physical line.</p>
<p>Reports unsupported statements as warnings. Invalid multiplexing is an error. VERSION, NS_, BS_, BU_ and NS_ symbol declarations stay quiet. </p>
<p>Rejects all SIG_VALTYPE_ declarations, including type 0, with UnsupportedSignalType errors; explicit signal value types are not implemented. Other unsupported statements produce warnings. Invalid multiplexing is an error. VERSION, NS_, BS_, BU_ and NS_ symbol declarations stay quiet. </p>
<p class="definition">Definition at line <a class="el" href="dbc__parser_8h_source.html#l00043">43</a> of file <a class="el" href="dbc__parser_8h_source.html">dbc_parser.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__parser_8h_source.html#l00045">45</a> of file <a class="el" href="dbc__parser_8h_source.html">dbc_parser.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a46bc3afcd103e704dc58bb4b073da73c" name="a46bc3afcd103e704dc58bb4b073da73c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46bc3afcd103e704dc58bb4b073da73c">&#9670;&#160;</a></span>DbcParser()</h2>
@@ -156,7 +156,7 @@ Public Member Functions</h2></td></tr>
<p>Create a parser with explicit extended-frame interpretation options. </p>
<p class="definition">Definition at line <a class="el" href="dbc__parser_8h_source.html#l00046">46</a> of file <a class="el" href="dbc__parser_8h_source.html">dbc_parser.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__parser_8h_source.html#l00048">48</a> of file <a class="el" href="dbc__parser_8h_source.html">dbc_parser.h</a>.</p>
</div>
</div>
@@ -187,16 +187,14 @@ Public Member Functions</h2></td></tr>
<dl class="section return"><dt>Returns</dt><dd>Parsed database. </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">std::runtime_error</td><td>on file or parse errors. Line parse errors include the file path and one-based line number. Duplicate normalized CAN IDs of the same frame type and duplicate signal names within a frame are rejected at the repeated definition's line. </td></tr>
<tr><td class="paramname">std::runtime_error</td><td>on file or parse errors, including SIG_VALTYPE_. Line parse errors include the file path and one-based line number. Duplicate normalized CAN IDs of the same frame type and duplicate signal names within a frame are rejected at the repeated definition's line. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="dbc__parser_8cpp_source.html#l00090">90</a> of file <a class="el" href="dbc__parser_8cpp_source.html">dbc_parser.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__parser_8cpp_source.html#l00092">92</a> of file <a class="el" href="dbc__parser_8cpp_source.html">dbc_parser.cpp</a>.</p>
<p class="reference">References <a class="el" href="dbc__diagnostic_8h_source.html#l00039">DbcParseResult::database</a>, <a class="el" href="dbc__diagnostic_8h_source.html#l00040">DbcParseResult::diagnostics</a>, and <a class="el" href="dbc__parser_8cpp_source.html#l00103">ParseFileWithDiagnostics()</a>.</p>
<p class="reference">Referenced by <a class="el" href="examples_2main_8cpp_source.html#l00101">main()</a>.</p>
<p class="reference">References <a class="el" href="dbc__diagnostic_8h_source.html#l00040">DbcParseResult::database</a>, <a class="el" href="dbc__diagnostic_8h_source.html#l00041">DbcParseResult::diagnostics</a>, and <a class="el" href="dbc__parser_8cpp_source.html#l00105">ParseFileWithDiagnostics()</a>.</p>
</div>
</div>
@@ -219,11 +217,11 @@ Public Member Functions</h2></td></tr>
<p>Parse with warnings and a structured first error instead of throwing. </p>
<dl class="section return"><dt>Returns</dt><dd>Valid database with diagnostics; empty database on error. File errors use line zero; statement errors use physical one-based lines. Warnings indicate ignored syntax and possible incomplete decoding. </dd></dl>
<p class="definition">Definition at line <a class="el" href="dbc__parser_8cpp_source.html#l00103">103</a> of file <a class="el" href="dbc__parser_8cpp_source.html">dbc_parser.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__parser_8cpp_source.html#l00105">105</a> of file <a class="el" href="dbc__parser_8cpp_source.html">dbc_parser.cpp</a>.</p>
<p class="reference">References <a class="el" href="dbc__diagnostic_8h_source.html#l00039">DbcParseResult::database</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00040">DbcDiagnosticError::diagnostic</a>, <a class="el" href="dbc__diagnostic_8h_source.html#l00040">DbcParseResult::diagnostics</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00423">DbcStatementDispatcher::Dispatch()</a>, and <a class="el" href="dbc__parser_8h_source.html#l00021">DbcParserOptions::enableJ1939</a>.</p>
<p class="reference">References <a class="el" href="dbc__diagnostic_8h_source.html#l00040">DbcParseResult::database</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00040">DbcDiagnosticError::diagnostic</a>, <a class="el" href="dbc__diagnostic_8h_source.html#l00041">DbcParseResult::diagnostics</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00428">DbcStatementDispatcher::Dispatch()</a>, and <a class="el" href="dbc__parser_8h_source.html#l00021">DbcParserOptions::enableJ1939</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__parser_8cpp_source.html#l00090">ParseFile()</a>.</p>
<p class="reference">Referenced by <a class="el" href="examples_2main_8cpp_source.html#l00101">main()</a>, and <a class="el" href="dbc__parser_8cpp_source.html#l00092">ParseFile()</a>.</p>
</div>
</div>
+4 -4
View File
@@ -114,7 +114,7 @@ Public Member Functions</h2></td></tr>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Exact-key dispatch to handlers created once per registration via <a class="el" href="classTypeFactory.html" title="Registry-based factory for creating objects by runtime identifier.">TypeFactory</a>. </p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00143">143</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00149">149</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a2f064359b59d8644b8a8196653d47482" name="a2f064359b59d8644b8a8196653d47482"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2f064359b59d8644b8a8196653d47482">&#9670;&#160;</a></span>DbcStatementDispatcher()</h2>
@@ -166,7 +166,7 @@ template&lt;class Handler &gt; </div>
<p>Register or replace a handler and create its reusable instance. </p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00150">150</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00156">156</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
<p class="reference">References <a class="el" href="typefactory_8h_source.html#l00099">TypeFactory&lt; ClassId, BaseClass, Args &gt;::create()</a>, and <a class="el" href="typefactory_8h_source.html#l00078">TypeFactory&lt; ClassId, BaseClass, Args &gt;::registerType()</a>.</p>
@@ -199,9 +199,9 @@ template&lt;class Handler &gt; </div>
</div><div class="memdoc">
<p>Returns false for an unregistered keyword; input must be trimmed. </p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00423">423</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00428">428</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__parser_8cpp_source.html#l00103">DbcParser::ParseFileWithDiagnostics()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__parser_8cpp_source.html#l00105">DbcParser::ParseFileWithDiagnostics()</a>.</p>
</div>
</div>
+1 -1
View File
@@ -156,7 +156,7 @@ Public Member Functions</h2></td></tr>
<p>Process a trimmed statement using state belonging to this parse. </p>
<p>Implemented in <a class="el" href="classDbcFrameHandler.html#a0d3f43bbcc5e191460bc31827e74ce89">DbcFrameHandler</a>, <a class="el" href="classDbcSignalHandler.html#ad7d891ec1414fb645f85ccd410f2737b">DbcSignalHandler</a>, <a class="el" href="classDbcCommentHandler.html#aa4fce77b585a441d251d8535ef7a51a6">DbcCommentHandler</a>, <a class="el" href="classDbcAttributeHandler.html#a397f23259b7ff79abb4b5141489caa83">DbcAttributeHandler</a>, <a class="el" href="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a">DbcValueDescriptionHandler</a>, <a class="el" href="classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e">DbcMultiplexingHandler</a>, and <a class="el" href="classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693">DbcHeaderHandler</a>.</p>
<p>Implemented in <a class="el" href="classDbcFrameHandler.html#a0d3f43bbcc5e191460bc31827e74ce89">DbcFrameHandler</a>, <a class="el" href="classDbcSignalHandler.html#ad7d891ec1414fb645f85ccd410f2737b">DbcSignalHandler</a>, <a class="el" href="classDbcCommentHandler.html#aa4fce77b585a441d251d8535ef7a51a6">DbcCommentHandler</a>, <a class="el" href="classDbcAttributeHandler.html#a397f23259b7ff79abb4b5141489caa83">DbcAttributeHandler</a>, <a class="el" href="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a">DbcValueDescriptionHandler</a>, <a class="el" href="classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e">DbcMultiplexingHandler</a>, <a class="el" href="classDbcUnsupportedSignalTypeHandler.html#ae4132fcdbb134d51143133c1fb83a9df">DbcUnsupportedSignalTypeHandler</a>, and <a class="el" href="classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693">DbcHeaderHandler</a>.</p>
</div>
</div>
@@ -1,19 +1,21 @@
<map id="DbcStatementHandler" name="DbcStatementHandler">
<area shape="rect" id="Node000001" title="Interface for processing a registered DBC statement." alt="" coords="575,5,768,91"/>
<area shape="rect" id="Node000001" title="Interface for processing a registered DBC statement." alt="" coords="655,5,848,91"/>
<area shape="rect" id="Node000002" title=" " alt="" coords="5,139,153,244"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="561,60,474,70,374,86,269,110,167,141,155,146,153,141,165,136,267,104,373,81,473,65,561,55"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="641,56,539,65,418,80,291,105,167,141,155,146,153,141,165,136,290,100,418,75,538,59,641,51"/>
<area shape="rect" id="Node000003" href="$classDbcAttributeHandler.html" title="Defer typed attribute statements for resolution." alt="" coords="178,159,325,224"/>
<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="562,73,452,101,338,141,300,161,297,156,336,136,450,96,561,68"/>
<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="642,66,495,94,415,115,338,141,298,161,296,156,336,136,413,110,494,88,641,60"/>
<area shape="rect" id="Node000004" href="$classDbcCommentHandler.html" title="Defer frame and signal comments for target resolution." alt="" coords="349,159,503,224"/>
<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="588,100,517,141,482,161,479,156,514,136,586,95"/>
<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="643,89,516,141,479,161,476,156,514,136,641,84"/>
<area shape="rect" id="Node000005" href="$classDbcFrameHandler.html" title="Parse and append frame definitions." alt="" coords="527,159,658,224"/>
<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="644,104,613,160,608,157,639,101"/>
<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="696,102,630,160,627,156,692,98"/>
<area shape="rect" id="Node000006" href="$classDbcHeaderHandler.html" title=" " alt="" coords="683,159,820,224"/>
<area shape="poly" id="edge5_Node000001_Node000006" title=" " alt="" coords="704,101,736,157,731,160,699,104"/>
<area shape="poly" id="edge5_Node000001_Node000006" title=" " alt="" coords="754,104,754,158,749,158,749,104"/>
<area shape="rect" id="Node000007" href="$classDbcMultiplexingHandler.html" title="Parse extended multiplexing conditions for deferred resolution." alt="" coords="845,159,1015,224"/>
<area shape="poly" id="edge6_Node000001_Node000007" title=" " alt="" coords="761,95,873,156,871,161,758,100"/>
<area shape="poly" id="edge6_Node000001_Node000007" title=" " alt="" coords="816,97,891,156,888,160,813,101"/>
<area shape="rect" id="Node000008" href="$classDbcSignalHandler.html" title="Parse and append signals to the current frame." alt="" coords="1039,159,1170,224"/>
<area shape="poly" id="edge7_Node000001_Node000008" title=" " alt="" coords="782,64,903,92,967,112,1028,136,1064,156,1062,161,1026,141,965,117,901,98,781,70"/>
<area shape="rect" id="Node000009" href="$classDbcValueDescriptionHandler.html" title="Defer raw value descriptions for target resolution." alt="" coords="1194,159,1394,224"/>
<area shape="poly" id="edge8_Node000001_Node000009" title=" " alt="" coords="782,58,971,86,1078,108,1183,136,1234,156,1232,161,1181,141,1077,113,970,91,782,63"/>
<area shape="poly" id="edge7_Node000001_Node000008" title=" " alt="" coords="862,75,945,102,1029,136,1063,156,1060,161,1026,141,943,107,860,80"/>
<area shape="rect" id="Node000009" href="$classDbcUnsupportedSignalTypeHandler.html" title=" " alt="" coords="1194,151,1386,231"/>
<area shape="poly" id="edge8_Node000001_Node000009" title=" " alt="" coords="862,62,1015,91,1100,111,1183,136,1215,149,1213,154,1181,141,1099,117,1014,96,861,67"/>
<area shape="rect" id="Node000010" href="$classDbcValueDescriptionHandler.html" title="Defer raw value descriptions for target resolution." alt="" coords="1410,159,1610,224"/>
<area shape="poly" id="edge9_Node000001_Node000010" title=" " alt="" coords="862,52,975,61,1111,77,1256,102,1399,136,1451,156,1449,161,1397,141,1255,107,1110,83,975,67,862,57"/>
</map>
@@ -1 +1 @@
2aacbc7d65e32463c49617e36866cbe8
dd7c5f048bae3904d94456d930b5f6a8
@@ -46,7 +46,7 @@
</g>
</defs>
<script type="application/ecmascript">
var viewWidth = 1050;
var viewWidth = 1212;
var viewHeight = 187;
var sectionId = 'dynsection-0';
</script>
@@ -58,16 +58,16 @@ var sectionId = 'dynsection-0';
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Interface for processing a registered DBC statement.">
<polygon fill="#999999" stroke="transparent" points="572,-179 427,-179 427,-115 572,-115 572,-179"/>
<text text-anchor="start" x="445.5" y="-167" font-family="Helvetica,sans-Serif" font-size="10.00">DbcStatementHandler</text>
<text text-anchor="start" x="498" y="-152" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
<text text-anchor="start" x="431.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
<text text-anchor="start" x="444.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00">~DbcStatementHandler()</text>
<text text-anchor="start" x="431.5" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
<text text-anchor="start" x="444.5" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
<polygon fill="#666666" stroke="#666666" points="427.5,-162 427.5,-162 572.5,-162 572.5,-162 427.5,-162"/>
<polygon fill="#666666" stroke="#666666" points="427.5,-147 427.5,-147 572.5,-147 572.5,-147 427.5,-147"/>
<polygon fill="none" stroke="#666666" points="427,-115 427,-179 572,-179 572,-115 427,-115"/>
<polygon fill="#999999" stroke="transparent" points="632,-179 487,-179 487,-115 632,-115 632,-179"/>
<text text-anchor="start" x="505.5" y="-167" font-family="Helvetica,sans-Serif" font-size="10.00">DbcStatementHandler</text>
<text text-anchor="start" x="558" y="-152" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
<text text-anchor="start" x="491.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
<text text-anchor="start" x="504.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00">~DbcStatementHandler()</text>
<text text-anchor="start" x="491.5" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
<text text-anchor="start" x="504.5" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
<polygon fill="#666666" stroke="#666666" points="487.5,-162 487.5,-162 632.5,-162 632.5,-162 487.5,-162"/>
<polygon fill="#666666" stroke="#666666" points="487.5,-147 487.5,-147 632.5,-147 632.5,-147 487.5,-147"/>
<polygon fill="none" stroke="#666666" points="487,-115 487,-179 632,-179 632,-115 487,-115"/>
</a>
</g>
</g>
@@ -96,8 +96,8 @@ var sectionId = 'dynsection-0';
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M416.64,-139.97C338.33,-132.28 218.54,-115.33 120.5,-79 117.43,-77.86 114.33,-76.58 111.25,-75.19"/>
<polygon fill="none" stroke="#63b8ff" points="416.65,-143.48 426.94,-140.95 417.31,-136.51 416.65,-143.48"/>
<path fill="none" stroke="#63b8ff" d="M476.58,-142.76C386.56,-137.1 239.7,-121.58 120.5,-79 117.41,-77.9 114.31,-76.64 111.22,-75.28"/>
<polygon fill="none" stroke="#63b8ff" points="476.54,-146.26 486.73,-143.37 476.96,-139.27 476.54,-146.26"/>
</a>
</g>
</g>
@@ -120,8 +120,8 @@ var sectionId = 'dynsection-0';
<g id="edge2_Node000001_Node000003" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M417.06,-130.13C367.13,-119.02 302.8,-102.04 248.5,-79 238.83,-74.9 228.87,-69.54 219.78,-64.13"/>
<polygon fill="none" stroke="#63b8ff" points="416.34,-133.55 426.85,-132.27 417.83,-126.71 416.34,-133.55"/>
<path fill="none" stroke="#63b8ff" d="M476.79,-135.76C412.84,-126.05 322.96,-108.47 248.5,-79 238.49,-75.04 228.25,-69.6 218.97,-64.06"/>
<polygon fill="none" stroke="#63b8ff" points="476.41,-139.24 486.82,-137.25 477.44,-132.32 476.41,-139.24"/>
</a>
</g>
</g>
@@ -144,8 +144,8 @@ var sectionId = 'dynsection-0';
<g id="edge3_Node000001_Node000004" class="edge">
<title>Node1&#45;&gt;Node4</title>
<g id="a_edge3_Node000001_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M436.35,-109.86C418.9,-99.87 399.96,-89.02 382.5,-79 374.12,-74.19 365.16,-69.05 356.6,-64.13"/>
<polygon fill="none" stroke="#63b8ff" points="434.9,-113.06 445.32,-114.99 438.38,-106.99 434.9,-113.06"/>
<path fill="none" stroke="#63b8ff" d="M477.27,-117.98C447.03,-106.86 412.79,-93.32 382.5,-79 373.16,-74.58 363.38,-69.34 354.26,-64.17"/>
<polygon fill="none" stroke="#63b8ff" points="476.34,-121.36 486.93,-121.5 478.74,-114.79 476.34,-121.36"/>
</a>
</g>
</g>
@@ -168,8 +168,8 @@ var sectionId = 'dynsection-0';
<g id="edge4_Node000001_Node000005" class="edge">
<title>Node1&#45;&gt;Node5</title>
<g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M477.09,-105.93C469.25,-91.9 460.69,-76.61 453.83,-64.33"/>
<polygon fill="none" stroke="#63b8ff" points="474.18,-107.9 482.12,-114.92 480.29,-104.48 474.18,-107.9"/>
<path fill="none" stroke="#63b8ff" d="M516.55,-107.92C500.13,-93.37 481.89,-77.19 467.38,-64.33"/>
<polygon fill="none" stroke="#63b8ff" points="514.64,-110.9 524.44,-114.92 519.28,-105.66 514.64,-110.9"/>
</a>
</g>
</g>
@@ -192,8 +192,8 @@ var sectionId = 'dynsection-0';
<g id="edge5_Node000001_Node000006" class="edge">
<title>Node1&#45;&gt;Node6</title>
<g id="a_edge5_Node000001_Node000006"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M522.29,-105.93C530.27,-91.9 538.97,-76.61 545.95,-64.33"/>
<polygon fill="none" stroke="#63b8ff" points="519.08,-104.49 517.18,-114.92 525.16,-107.95 519.08,-104.49"/>
<path fill="none" stroke="#63b8ff" d="M559.5,-104.72C559.5,-91.03 559.5,-76.26 559.5,-64.33"/>
<polygon fill="none" stroke="#63b8ff" points="556,-104.92 559.5,-114.92 563,-104.92 556,-104.92"/>
</a>
</g>
</g>
@@ -216,8 +216,8 @@ var sectionId = 'dynsection-0';
<g id="edge6_Node000001_Node000007" class="edge">
<title>Node1&#45;&gt;Node7</title>
<g id="a_edge6_Node000001_Node000007"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M565.56,-110.08C593.44,-94.92 625.12,-77.69 649.99,-64.16"/>
<polygon fill="none" stroke="#63b8ff" points="563.77,-107.06 556.66,-114.92 567.11,-113.21 563.77,-107.06"/>
<path fill="none" stroke="#63b8ff" d="M606.86,-108.72C625.6,-93.96 646.6,-77.42 663.23,-64.33"/>
<polygon fill="none" stroke="#63b8ff" points="604.67,-105.98 598.98,-114.92 609,-111.48 604.67,-105.98"/>
</a>
</g>
</g>
@@ -240,23 +240,24 @@ var sectionId = 'dynsection-0';
<g id="edge7_Node000001_Node000008" class="edge">
<title>Node1&#45;&gt;Node8</title>
<g id="a_edge7_Node000001_Node000008"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M582.11,-132.79C636.12,-122.36 707.34,-105.13 766.5,-79 775.57,-75 784.77,-69.61 793.1,-64.13"/>
<polygon fill="none" stroke="#63b8ff" points="581.41,-129.36 572.24,-134.66 582.71,-136.24 581.41,-129.36"/>
<path fill="none" stroke="#63b8ff" d="M641.95,-124.93C680.71,-113.62 726.98,-98.07 766.5,-79 775.21,-74.8 784.14,-69.46 792.3,-64.11"/>
<polygon fill="none" stroke="#63b8ff" points="640.91,-121.59 632.26,-127.71 642.84,-128.32 640.91,-121.59"/>
</a>
</g>
</g>
<!-- Node9 -->
<g id="Node000009" class="node">
<title>Node9</title>
<g id="a_Node000009"><a xlink:href="classDbcValueDescriptionHandler.html" target="_top" xlink:title="Defer raw value descriptions for target resolution.">
<polygon fill="white" stroke="transparent" points="1041.5,-64 891.5,-64 891.5,-15 1041.5,-15 1041.5,-64"/>
<text text-anchor="start" x="896.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcValueDescriptionHandler</text>
<text text-anchor="start" x="964.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
<text text-anchor="start" x="917" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
<text text-anchor="start" x="951.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
<polygon fill="#666666" stroke="#666666" points="891.5,-46.5 891.5,-46.5 1041.5,-46.5 1041.5,-46.5 891.5,-46.5"/>
<polygon fill="#666666" stroke="#666666" points="891.5,-31.5 891.5,-31.5 1041.5,-31.5 1041.5,-31.5 891.5,-31.5"/>
<polygon fill="none" stroke="#666666" points="891.5,-15 891.5,-64 1041.5,-64 1041.5,-15 891.5,-15"/>
<g id="a_Node000009"><a xlink:href="classDbcUnsupportedSignalTypeHandler.html" target="_top" xlink:title=" ">
<polygon fill="white" stroke="transparent" points="1035.5,-69.5 891.5,-69.5 891.5,-9.5 1035.5,-9.5 1035.5,-69.5"/>
<text text-anchor="start" x="896.5" y="-57.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcUnsupportedSignalType</text>
<text text-anchor="start" x="944" y="-46.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handler</text>
<text text-anchor="start" x="961.5" y="-31.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
<text text-anchor="start" x="915.5" y="-16.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
<text text-anchor="start" x="948.5" y="-16.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
<polygon fill="#666666" stroke="#666666" points="891.5,-41.5 891.5,-41.5 1035.5,-41.5 1035.5,-41.5 891.5,-41.5"/>
<polygon fill="#666666" stroke="#666666" points="891.5,-26.5 891.5,-26.5 1035.5,-26.5 1035.5,-26.5 891.5,-26.5"/>
<polygon fill="none" stroke="#666666" points="891.5,-9.5 891.5,-69.5 1035.5,-69.5 1035.5,-9.5 891.5,-9.5"/>
</a>
</g>
</g>
@@ -264,8 +265,32 @@ var sectionId = 'dynsection-0';
<g id="edge8_Node000001_Node000009" class="edge">
<title>Node1&#45;&gt;Node9</title>
<g id="a_edge8_Node000001_Node000009"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M582.42,-137.71C660.99,-128.42 781.64,-110.36 882.5,-79 895.21,-75.05 908.51,-69.61 920.68,-64.07"/>
<polygon fill="none" stroke="#63b8ff" points="581.63,-134.28 572.1,-138.91 582.43,-141.24 581.63,-134.28"/>
<path fill="none" stroke="#63b8ff" d="M641.96,-134.48C708.1,-123.91 802.72,-105.8 882.5,-79 890.47,-76.32 898.68,-73.06 906.68,-69.58"/>
<polygon fill="none" stroke="#63b8ff" points="641.34,-131.03 632.01,-136.04 642.43,-137.95 641.34,-131.03"/>
</a>
</g>
</g>
<!-- Node10 -->
<g id="Node000010" class="node">
<title>Node10</title>
<g id="a_Node000010"><a xlink:href="classDbcValueDescriptionHandler.html" target="_top" xlink:title="Defer raw value descriptions for target resolution.">
<polygon fill="white" stroke="transparent" points="1203.5,-64 1053.5,-64 1053.5,-15 1203.5,-15 1203.5,-64"/>
<text text-anchor="start" x="1058.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcValueDescriptionHandler</text>
<text text-anchor="start" x="1126.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
<text text-anchor="start" x="1079" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
<text text-anchor="start" x="1113.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
<polygon fill="#666666" stroke="#666666" points="1053.5,-46.5 1053.5,-46.5 1203.5,-46.5 1203.5,-46.5 1053.5,-46.5"/>
<polygon fill="#666666" stroke="#666666" points="1053.5,-31.5 1053.5,-31.5 1203.5,-31.5 1203.5,-31.5 1053.5,-31.5"/>
<polygon fill="none" stroke="#666666" points="1053.5,-15 1053.5,-64 1203.5,-64 1203.5,-15 1053.5,-15"/>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node10 -->
<g id="edge9_Node000001_Node000010" class="edge">
<title>Node1&#45;&gt;Node10</title>
<g id="a_edge9_Node000001_Node000010"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M642.49,-141.91C740.31,-135.42 906.96,-119.07 1044.5,-79 1057.44,-75.23 1070.93,-69.79 1083.22,-64.18"/>
<polygon fill="none" stroke="#63b8ff" points="642.12,-138.43 632.37,-142.57 642.57,-145.42 642.12,-138.43"/>
</a>
</g>
</g>

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 20 KiB

@@ -4,24 +4,24 @@
<!-- Generated by graphviz version 2.42.4 (0)
-->
<!-- Title: DbcStatementHandler Pages: 1 -->
<svg width="1050pt" height="187pt"
viewBox="0.00 0.00 1049.50 187.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="1212pt" height="187pt"
viewBox="0.00 0.00 1211.50 187.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 183)">
<title>DbcStatementHandler</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title="Interface for processing a registered DBC statement.">
<polygon fill="#999999" stroke="transparent" points="572,-179 427,-179 427,-115 572,-115 572,-179"/>
<text text-anchor="start" x="445.5" y="-167" font-family="Helvetica,sans-Serif" font-size="10.00">DbcStatementHandler</text>
<text text-anchor="start" x="498" y="-152" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
<text text-anchor="start" x="431.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
<text text-anchor="start" x="444.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00">~DbcStatementHandler()</text>
<text text-anchor="start" x="431.5" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
<text text-anchor="start" x="444.5" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
<polygon fill="#666666" stroke="#666666" points="427.5,-162 427.5,-162 572.5,-162 572.5,-162 427.5,-162"/>
<polygon fill="#666666" stroke="#666666" points="427.5,-147 427.5,-147 572.5,-147 572.5,-147 427.5,-147"/>
<polygon fill="none" stroke="#666666" points="427,-115 427,-179 572,-179 572,-115 427,-115"/>
<polygon fill="#999999" stroke="transparent" points="632,-179 487,-179 487,-115 632,-115 632,-179"/>
<text text-anchor="start" x="505.5" y="-167" font-family="Helvetica,sans-Serif" font-size="10.00">DbcStatementHandler</text>
<text text-anchor="start" x="558" y="-152" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
<text text-anchor="start" x="491.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
<text text-anchor="start" x="504.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00">~DbcStatementHandler()</text>
<text text-anchor="start" x="491.5" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
<text text-anchor="start" x="504.5" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
<polygon fill="#666666" stroke="#666666" points="487.5,-162 487.5,-162 632.5,-162 632.5,-162 487.5,-162"/>
<polygon fill="#666666" stroke="#666666" points="487.5,-147 487.5,-147 632.5,-147 632.5,-147 487.5,-147"/>
<polygon fill="none" stroke="#666666" points="487,-115 487,-179 632,-179 632,-115 487,-115"/>
</a>
</g>
</g>
@@ -50,8 +50,8 @@
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M416.64,-139.97C338.33,-132.28 218.54,-115.33 120.5,-79 117.43,-77.86 114.33,-76.58 111.25,-75.19"/>
<polygon fill="none" stroke="#63b8ff" points="416.65,-143.48 426.94,-140.95 417.31,-136.51 416.65,-143.48"/>
<path fill="none" stroke="#63b8ff" d="M476.58,-142.76C386.56,-137.1 239.7,-121.58 120.5,-79 117.41,-77.9 114.31,-76.64 111.22,-75.28"/>
<polygon fill="none" stroke="#63b8ff" points="476.54,-146.26 486.73,-143.37 476.96,-139.27 476.54,-146.26"/>
</a>
</g>
</g>
@@ -74,8 +74,8 @@
<g id="edge2_Node000001_Node000003" class="edge">
<title>Node1&#45;&gt;Node3</title>
<g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M417.06,-130.13C367.13,-119.02 302.8,-102.04 248.5,-79 238.83,-74.9 228.87,-69.54 219.78,-64.13"/>
<polygon fill="none" stroke="#63b8ff" points="416.34,-133.55 426.85,-132.27 417.83,-126.71 416.34,-133.55"/>
<path fill="none" stroke="#63b8ff" d="M476.79,-135.76C412.84,-126.05 322.96,-108.47 248.5,-79 238.49,-75.04 228.25,-69.6 218.97,-64.06"/>
<polygon fill="none" stroke="#63b8ff" points="476.41,-139.24 486.82,-137.25 477.44,-132.32 476.41,-139.24"/>
</a>
</g>
</g>
@@ -98,8 +98,8 @@
<g id="edge3_Node000001_Node000004" class="edge">
<title>Node1&#45;&gt;Node4</title>
<g id="a_edge3_Node000001_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M436.35,-109.86C418.9,-99.87 399.96,-89.02 382.5,-79 374.12,-74.19 365.16,-69.05 356.6,-64.13"/>
<polygon fill="none" stroke="#63b8ff" points="434.9,-113.06 445.32,-114.99 438.38,-106.99 434.9,-113.06"/>
<path fill="none" stroke="#63b8ff" d="M477.27,-117.98C447.03,-106.86 412.79,-93.32 382.5,-79 373.16,-74.58 363.38,-69.34 354.26,-64.17"/>
<polygon fill="none" stroke="#63b8ff" points="476.34,-121.36 486.93,-121.5 478.74,-114.79 476.34,-121.36"/>
</a>
</g>
</g>
@@ -122,8 +122,8 @@
<g id="edge4_Node000001_Node000005" class="edge">
<title>Node1&#45;&gt;Node5</title>
<g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M477.09,-105.93C469.25,-91.9 460.69,-76.61 453.83,-64.33"/>
<polygon fill="none" stroke="#63b8ff" points="474.18,-107.9 482.12,-114.92 480.29,-104.48 474.18,-107.9"/>
<path fill="none" stroke="#63b8ff" d="M516.55,-107.92C500.13,-93.37 481.89,-77.19 467.38,-64.33"/>
<polygon fill="none" stroke="#63b8ff" points="514.64,-110.9 524.44,-114.92 519.28,-105.66 514.64,-110.9"/>
</a>
</g>
</g>
@@ -146,8 +146,8 @@
<g id="edge5_Node000001_Node000006" class="edge">
<title>Node1&#45;&gt;Node6</title>
<g id="a_edge5_Node000001_Node000006"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M522.29,-105.93C530.27,-91.9 538.97,-76.61 545.95,-64.33"/>
<polygon fill="none" stroke="#63b8ff" points="519.08,-104.49 517.18,-114.92 525.16,-107.95 519.08,-104.49"/>
<path fill="none" stroke="#63b8ff" d="M559.5,-104.72C559.5,-91.03 559.5,-76.26 559.5,-64.33"/>
<polygon fill="none" stroke="#63b8ff" points="556,-104.92 559.5,-114.92 563,-104.92 556,-104.92"/>
</a>
</g>
</g>
@@ -170,8 +170,8 @@
<g id="edge6_Node000001_Node000007" class="edge">
<title>Node1&#45;&gt;Node7</title>
<g id="a_edge6_Node000001_Node000007"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M565.56,-110.08C593.44,-94.92 625.12,-77.69 649.99,-64.16"/>
<polygon fill="none" stroke="#63b8ff" points="563.77,-107.06 556.66,-114.92 567.11,-113.21 563.77,-107.06"/>
<path fill="none" stroke="#63b8ff" d="M606.86,-108.72C625.6,-93.96 646.6,-77.42 663.23,-64.33"/>
<polygon fill="none" stroke="#63b8ff" points="604.67,-105.98 598.98,-114.92 609,-111.48 604.67,-105.98"/>
</a>
</g>
</g>
@@ -194,23 +194,24 @@
<g id="edge7_Node000001_Node000008" class="edge">
<title>Node1&#45;&gt;Node8</title>
<g id="a_edge7_Node000001_Node000008"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M582.11,-132.79C636.12,-122.36 707.34,-105.13 766.5,-79 775.57,-75 784.77,-69.61 793.1,-64.13"/>
<polygon fill="none" stroke="#63b8ff" points="581.41,-129.36 572.24,-134.66 582.71,-136.24 581.41,-129.36"/>
<path fill="none" stroke="#63b8ff" d="M641.95,-124.93C680.71,-113.62 726.98,-98.07 766.5,-79 775.21,-74.8 784.14,-69.46 792.3,-64.11"/>
<polygon fill="none" stroke="#63b8ff" points="640.91,-121.59 632.26,-127.71 642.84,-128.32 640.91,-121.59"/>
</a>
</g>
</g>
<!-- Node9 -->
<g id="Node000009" class="node">
<title>Node9</title>
<g id="a_Node000009"><a xlink:href="classDbcValueDescriptionHandler.html" target="_top" xlink:title="Defer raw value descriptions for target resolution.">
<polygon fill="white" stroke="transparent" points="1041.5,-64 891.5,-64 891.5,-15 1041.5,-15 1041.5,-64"/>
<text text-anchor="start" x="896.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcValueDescriptionHandler</text>
<text text-anchor="start" x="964.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
<text text-anchor="start" x="917" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
<text text-anchor="start" x="951.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
<polygon fill="#666666" stroke="#666666" points="891.5,-46.5 891.5,-46.5 1041.5,-46.5 1041.5,-46.5 891.5,-46.5"/>
<polygon fill="#666666" stroke="#666666" points="891.5,-31.5 891.5,-31.5 1041.5,-31.5 1041.5,-31.5 891.5,-31.5"/>
<polygon fill="none" stroke="#666666" points="891.5,-15 891.5,-64 1041.5,-64 1041.5,-15 891.5,-15"/>
<g id="a_Node000009"><a xlink:href="classDbcUnsupportedSignalTypeHandler.html" target="_top" xlink:title=" ">
<polygon fill="white" stroke="transparent" points="1035.5,-69.5 891.5,-69.5 891.5,-9.5 1035.5,-9.5 1035.5,-69.5"/>
<text text-anchor="start" x="896.5" y="-57.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcUnsupportedSignalType</text>
<text text-anchor="start" x="944" y="-46.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handler</text>
<text text-anchor="start" x="961.5" y="-31.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
<text text-anchor="start" x="915.5" y="-16.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
<text text-anchor="start" x="948.5" y="-16.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
<polygon fill="#666666" stroke="#666666" points="891.5,-41.5 891.5,-41.5 1035.5,-41.5 1035.5,-41.5 891.5,-41.5"/>
<polygon fill="#666666" stroke="#666666" points="891.5,-26.5 891.5,-26.5 1035.5,-26.5 1035.5,-26.5 891.5,-26.5"/>
<polygon fill="none" stroke="#666666" points="891.5,-9.5 891.5,-69.5 1035.5,-69.5 1035.5,-9.5 891.5,-9.5"/>
</a>
</g>
</g>
@@ -218,8 +219,32 @@
<g id="edge8_Node000001_Node000009" class="edge">
<title>Node1&#45;&gt;Node9</title>
<g id="a_edge8_Node000001_Node000009"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M582.42,-137.71C660.99,-128.42 781.64,-110.36 882.5,-79 895.21,-75.05 908.51,-69.61 920.68,-64.07"/>
<polygon fill="none" stroke="#63b8ff" points="581.63,-134.28 572.1,-138.91 582.43,-141.24 581.63,-134.28"/>
<path fill="none" stroke="#63b8ff" d="M641.96,-134.48C708.1,-123.91 802.72,-105.8 882.5,-79 890.47,-76.32 898.68,-73.06 906.68,-69.58"/>
<polygon fill="none" stroke="#63b8ff" points="641.34,-131.03 632.01,-136.04 642.43,-137.95 641.34,-131.03"/>
</a>
</g>
</g>
<!-- Node10 -->
<g id="Node000010" class="node">
<title>Node10</title>
<g id="a_Node000010"><a xlink:href="classDbcValueDescriptionHandler.html" target="_top" xlink:title="Defer raw value descriptions for target resolution.">
<polygon fill="white" stroke="transparent" points="1203.5,-64 1053.5,-64 1053.5,-15 1203.5,-15 1203.5,-64"/>
<text text-anchor="start" x="1058.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcValueDescriptionHandler</text>
<text text-anchor="start" x="1126.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
<text text-anchor="start" x="1079" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
<text text-anchor="start" x="1113.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
<polygon fill="#666666" stroke="#666666" points="1053.5,-46.5 1053.5,-46.5 1203.5,-46.5 1203.5,-46.5 1053.5,-46.5"/>
<polygon fill="#666666" stroke="#666666" points="1053.5,-31.5 1053.5,-31.5 1203.5,-31.5 1203.5,-31.5 1053.5,-31.5"/>
<polygon fill="none" stroke="#666666" points="1053.5,-15 1053.5,-64 1203.5,-64 1203.5,-15 1053.5,-15"/>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node10 -->
<g id="edge9_Node000001_Node000010" class="edge">
<title>Node1&#45;&gt;Node10</title>
<g id="a_edge9_Node000001_Node000010"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M642.49,-141.91C740.31,-135.42 906.96,-119.07 1044.5,-79 1057.44,-75.23 1070.93,-69.79 1083.22,-64.18"/>
<polygon fill="none" stroke="#63b8ff" points="642.12,-138.43 632.37,-142.57 642.57,-145.42 642.12,-138.43"/>
</a>
</g>
</g>

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 16 KiB

@@ -0,0 +1,110 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>DBC Framework: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">DBC Framework
</div>
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('classDbcUnsupportedSignalTypeHandler.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">DbcUnsupportedSignalTypeHandler Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classDbcUnsupportedSignalTypeHandler.html">DbcUnsupportedSignalTypeHandler</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classDbcUnsupportedSignalTypeHandler.html#ae4132fcdbb134d51143133c1fb83a9df">Handle</a>(const std::string &amp;line, DbcParseContext &amp;context) const override</td><td class="entry"><a class="el" href="classDbcUnsupportedSignalTypeHandler.html">DbcUnsupportedSignalTypeHandler</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>~DbcStatementHandler</b>()=default (defined in <a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a>)</td><td class="entry"><a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,176 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>DBC Framework: DbcUnsupportedSignalTypeHandler Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">DBC Framework
</div>
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('classDbcUnsupportedSignalTypeHandler.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classDbcUnsupportedSignalTypeHandler-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">DbcUnsupportedSignalTypeHandler Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for DbcUnsupportedSignalTypeHandler:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" frameborder="0" src="classDbcUnsupportedSignalTypeHandler__inherit__graph.svg" width="204" height="224"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ae4132fcdbb134d51143133c1fb83a9df" id="r_ae4132fcdbb134d51143133c1fb83a9df"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcUnsupportedSignalTypeHandler.html#ae4132fcdbb134d51143133c1fb83a9df">Handle</a> (const std::string &amp;line, <a class="el" href="structDbcParseContext.html">DbcParseContext</a> &amp;context) const override</td></tr>
<tr class="memdesc:ae4132fcdbb134d51143133c1fb83a9df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Process a trimmed statement using state belonging to this parse. <br /></td></tr>
<tr class="separator:ae4132fcdbb134d51143133c1fb83a9df"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Reject explicit signal value types instead of treating their bits as integers. </p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00137">137</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="ae4132fcdbb134d51143133c1fb83a9df" name="ae4132fcdbb134d51143133c1fb83a9df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae4132fcdbb134d51143133c1fb83a9df">&#9670;&#160;</a></span>Handle()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void DbcUnsupportedSignalTypeHandler::Handle </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>line</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDbcParseContext.html">DbcParseContext</a> &amp;&#160;</td>
<td class="paramname"><em>context</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Process a trimmed statement using state belonging to this parse. </p>
<p>Implements <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00422">422</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a></li>
<li><a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="classDbcUnsupportedSignalTypeHandler.html">DbcUnsupportedSignalTypeHandler</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,4 @@
var classDbcUnsupportedSignalTypeHandler =
[
[ "Handle", "classDbcUnsupportedSignalTypeHandler.html#ae4132fcdbb134d51143133c1fb83a9df", null ]
];
@@ -0,0 +1,5 @@
<map id="DbcUnsupportedSignalTypeHandler" name="DbcUnsupportedSignalTypeHandler">
<area shape="rect" id="Node000001" title=" " alt="" coords="6,139,198,219"/>
<area shape="rect" id="Node000002" href="$classDbcStatementHandler.html" title="Interface for processing a registered DBC statement." alt="" coords="5,5,199,91"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="105,105,105,139,99,139,99,105"/>
</map>
@@ -0,0 +1 @@
f59ba682c9bf52b3a1671051c349a473
@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.42.4 (0)
-->
<!-- Title: DbcUnsupportedSignalTypeHandler Pages: 1 -->
<svg width="153pt" height="168pt"
viewBox="0.00 0.00 153.00 168.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
<style type="text/css"><![CDATA[
.node, .edge {opacity: 0.7;}
.node.selected, .edge.selected {opacity: 1;}
.edge:hover path { stroke: red; }
.edge:hover polygon { stroke: red; fill: red; }
]]></style>
<script type="application/ecmascript" xlink:href="svg.min.js"/>
<svg id="graph" class="graph">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 164)">
<title>DbcUnsupportedSignalTypeHandler</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title=" ">
<polygon fill="#999999" stroke="transparent" points="144.5,-60 0.5,-60 0.5,0 144.5,0 144.5,-60"/>
<text text-anchor="start" x="5.5" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">DbcUnsupportedSignalType</text>
<text text-anchor="start" x="53" y="-37" font-family="Helvetica,sans-Serif" font-size="10.00">Handler</text>
<text text-anchor="start" x="70.5" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
<text text-anchor="start" x="24.5" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
<text text-anchor="start" x="57.5" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
<polygon fill="#666666" stroke="#666666" points="0.5,-32 0.5,-32 144.5,-32 144.5,-32 0.5,-32"/>
<polygon fill="#666666" stroke="#666666" points="0.5,-17 0.5,-17 144.5,-17 144.5,-17 0.5,-17"/>
<polygon fill="none" stroke="#666666" points="0.5,0 0.5,-60 144.5,-60 144.5,0 0.5,0"/>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a xlink:href="classDbcStatementHandler.html" target="_top" xlink:title="Interface for processing a registered DBC statement.">
<polygon fill="white" stroke="transparent" points="145,-160 0,-160 0,-96 145,-96 145,-160"/>
<text text-anchor="start" x="18.5" y="-148" font-family="Helvetica,sans-Serif" font-size="10.00">DbcStatementHandler</text>
<text text-anchor="start" x="71" y="-133" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
<text text-anchor="start" x="4.5" y="-118" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
<text text-anchor="start" x="17.5" y="-118" font-family="Helvetica,sans-Serif" font-size="10.00">~DbcStatementHandler()</text>
<text text-anchor="start" x="4.5" y="-103" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
<text text-anchor="start" x="17.5" y="-103" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
<polygon fill="#666666" stroke="#666666" points="0.5,-143 0.5,-143 145.5,-143 145.5,-143 0.5,-143"/>
<polygon fill="#666666" stroke="#666666" points="0.5,-128 0.5,-128 145.5,-128 145.5,-128 0.5,-128"/>
<polygon fill="none" stroke="#666666" points="0,-96 0,-160 145,-160 145,-96 0,-96"/>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node1 -->
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node2&#45;&gt;Node1</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M72.5,-85.57C72.5,-76.97 72.5,-68.09 72.5,-60.06"/>
<polygon fill="none" stroke="#63b8ff" points="69,-85.83 72.5,-95.83 76,-85.83 69,-85.83"/>
</a>
</g>
</g>
</g>
</svg>
</svg>
<style type='text/css'>
<![CDATA[
[data-mouse-over-selected='false'] { opacity: 0.7; }
[data-mouse-over-selected='true'] { opacity: 1.0; }
]]>
</style>
<script type="application/ecmascript"><![CDATA[
document.addEventListener('DOMContentLoaded', (event) => {
highlightEdges();
highlightAdjacentNodes();
});
]]></script>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.42.4 (0)
-->
<!-- Title: DbcUnsupportedSignalTypeHandler Pages: 1 -->
<svg width="153pt" height="168pt"
viewBox="0.00 0.00 153.00 168.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 164)">
<title>DbcUnsupportedSignalTypeHandler</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title=" ">
<polygon fill="#999999" stroke="transparent" points="144.5,-60 0.5,-60 0.5,0 144.5,0 144.5,-60"/>
<text text-anchor="start" x="5.5" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">DbcUnsupportedSignalType</text>
<text text-anchor="start" x="53" y="-37" font-family="Helvetica,sans-Serif" font-size="10.00">Handler</text>
<text text-anchor="start" x="70.5" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
<text text-anchor="start" x="24.5" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
<text text-anchor="start" x="57.5" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
<polygon fill="#666666" stroke="#666666" points="0.5,-32 0.5,-32 144.5,-32 144.5,-32 0.5,-32"/>
<polygon fill="#666666" stroke="#666666" points="0.5,-17 0.5,-17 144.5,-17 144.5,-17 0.5,-17"/>
<polygon fill="none" stroke="#666666" points="0.5,0 0.5,-60 144.5,-60 144.5,0 0.5,0"/>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a xlink:href="classDbcStatementHandler.html" target="_top" xlink:title="Interface for processing a registered DBC statement.">
<polygon fill="white" stroke="transparent" points="145,-160 0,-160 0,-96 145,-96 145,-160"/>
<text text-anchor="start" x="18.5" y="-148" font-family="Helvetica,sans-Serif" font-size="10.00">DbcStatementHandler</text>
<text text-anchor="start" x="71" y="-133" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
<text text-anchor="start" x="4.5" y="-118" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
<text text-anchor="start" x="17.5" y="-118" font-family="Helvetica,sans-Serif" font-size="10.00">~DbcStatementHandler()</text>
<text text-anchor="start" x="4.5" y="-103" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
<text text-anchor="start" x="17.5" y="-103" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
<polygon fill="#666666" stroke="#666666" points="0.5,-143 0.5,-143 145.5,-143 145.5,-143 0.5,-143"/>
<polygon fill="#666666" stroke="#666666" points="0.5,-128 0.5,-128 145.5,-128 145.5,-128 0.5,-128"/>
<polygon fill="none" stroke="#666666" points="0,-96 0,-160 145,-160 145,-96 0,-96"/>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node1 -->
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node2&#45;&gt;Node1</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M72.5,-85.57C72.5,-76.97 72.5,-68.09 72.5,-60.06"/>
<polygon fill="none" stroke="#63b8ff" points="69,-85.83 72.5,-95.83 76,-85.83 69,-85.83"/>
</a>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

@@ -158,7 +158,7 @@ Public Member Functions</h2></td></tr>
<p>Implements <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00435">435</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00440">440</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
<p class="reference">References <a class="el" href="dbc__statement__handler_8h_source.html#l00014">PendingValueDescriptions::canId</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00017">PendingValueDescriptions::descriptions</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00015">PendingValueDescriptions::isExtended</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00018">PendingValueDescriptions::lineNumber</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00064">DbcParseContext::lineNumber</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00065">DbcParseContext::pendingValues</a>, and <a class="el" href="dbc__statement__handler_8h_source.html#l00016">PendingValueDescriptions::signalName</a>.</p>
+2 -2
View File
@@ -274,7 +274,7 @@ template&lt;class Derived &gt; </div>
<p class="reference">References <a class="el" href="typefactory_8h_source.html#l00112">TypeFactory&lt; ClassId, BaseClass, Args &gt;::classes</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8h_source.html#l00150">DbcStatementDispatcher::RegisterType()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8h_source.html#l00156">DbcStatementDispatcher::RegisterType()</a>.</p>
</div>
</div>
@@ -368,7 +368,7 @@ template&lt;class ClassId , class BaseClass , class... Args&gt; </div>
<p class="reference">References <a class="el" href="typefactory_8h_source.html#l00091">TypeFactory&lt; ClassId, BaseClass, Args &gt;::creator()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8h_source.html#l00150">DbcStatementDispatcher::RegisterType()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8h_source.html#l00156">DbcStatementDispatcher::RegisterType()</a>.</p>
</div>
</div>
+1 -1
View File
@@ -100,7 +100,7 @@ $(document).ready(function(){initNavTree('classes.html',''); initResizable(); })
<dd><a class="el" href="structAttributeAssignment.html">AttributeAssignment</a></dd><dd><a class="el" href="structAttributeDefinition.html">AttributeDefinition</a></dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_D" name="letter_D">D</a></dt>
<dd><a class="el" href="classDbcAttributeHandler.html">DbcAttributeHandler</a></dd><dd><a class="el" href="classDbcCommentHandler.html">DbcCommentHandler</a></dd><dd><a class="el" href="structDbcDatabase.html">DbcDatabase</a></dd><dd><a class="el" href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a></dd><dd><a class="el" href="classDbcDecoder.html">DbcDecoder</a></dd><dd><a class="el" href="structDbcDiagnostic.html">DbcDiagnostic</a></dd><dd><a class="el" href="classDbcDiagnosticError.html">DbcDiagnosticError</a></dd><dd><a class="el" href="classDbcFrameHandler.html">DbcFrameHandler</a></dd><dd><a class="el" href="classDbcHeaderHandler.html">DbcHeaderHandler</a></dd><dd><a class="el" href="classDbcMultiplexingHandler.html">DbcMultiplexingHandler</a></dd><dd><a class="el" href="structDbcParseContext.html">DbcParseContext</a></dd><dd><a class="el" href="classDbcParser.html">DbcParser</a></dd><dd><a class="el" href="structDbcParseResult.html">DbcParseResult</a></dd><dd><a class="el" href="structDbcParserOptions.html">DbcParserOptions</a></dd><dd><a class="el" href="classDbcSignalHandler.html">DbcSignalHandler</a></dd><dd><a class="el" href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a></dd><dd><a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a></dd><dd><a class="el" href="classDbcTreeBuilder.html">DbcTreeBuilder</a></dd><dd><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></dd><dd><a class="el" href="classDbcValueDescriptionHandler.html">DbcValueDescriptionHandler</a></dd><dd><a class="el" href="classDecodeDatabase.html">DecodeDatabase</a></dd><dd><a class="el" href="structDecodedFrameValue.html">DecodedFrameValue</a></dd><dd><a class="el" href="structDecodedSignalValue.html">DecodedSignalValue</a></dd><dd><a class="el" href="structDecodeFrame.html">DecodeFrame</a></dd><dd><a class="el" href="structDecodeSignal.html">DecodeSignal</a></dd></dl>
<dd><a class="el" href="classDbcAttributeHandler.html">DbcAttributeHandler</a></dd><dd><a class="el" href="classDbcCommentHandler.html">DbcCommentHandler</a></dd><dd><a class="el" href="structDbcDatabase.html">DbcDatabase</a></dd><dd><a class="el" href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a></dd><dd><a class="el" href="classDbcDecoder.html">DbcDecoder</a></dd><dd><a class="el" href="structDbcDiagnostic.html">DbcDiagnostic</a></dd><dd><a class="el" href="classDbcDiagnosticError.html">DbcDiagnosticError</a></dd><dd><a class="el" href="classDbcFrameHandler.html">DbcFrameHandler</a></dd><dd><a class="el" href="classDbcHeaderHandler.html">DbcHeaderHandler</a></dd><dd><a class="el" href="classDbcMultiplexingHandler.html">DbcMultiplexingHandler</a></dd><dd><a class="el" href="structDbcParseContext.html">DbcParseContext</a></dd><dd><a class="el" href="classDbcParser.html">DbcParser</a></dd><dd><a class="el" href="structDbcParseResult.html">DbcParseResult</a></dd><dd><a class="el" href="structDbcParserOptions.html">DbcParserOptions</a></dd><dd><a class="el" href="classDbcSignalHandler.html">DbcSignalHandler</a></dd><dd><a class="el" href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a></dd><dd><a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a></dd><dd><a class="el" href="classDbcTreeBuilder.html">DbcTreeBuilder</a></dd><dd><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></dd><dd><a class="el" href="classDbcUnsupportedSignalTypeHandler.html">DbcUnsupportedSignalTypeHandler</a></dd><dd><a class="el" href="classDbcValueDescriptionHandler.html">DbcValueDescriptionHandler</a></dd><dd><a class="el" href="classDecodeDatabase.html">DecodeDatabase</a></dd><dd><a class="el" href="structDecodedFrameValue.html">DecodedFrameValue</a></dd><dd><a class="el" href="structDecodedSignalValue.html">DecodedSignalValue</a></dd><dd><a class="el" href="structDecodeFrame.html">DecodeFrame</a></dd><dd><a class="el" href="structDecodeSignal.html">DecodeSignal</a></dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_F" name="letter_F">F</a></dt>
<dd><a class="el" href="structFrameInfo.html">FrameInfo</a></dd><dd><a class="el" href="structFrameKey.html">FrameKey</a></dd><dd><a class="el" href="structFrameKeyHasher.html">FrameKeyHasher</a></dd></dl>
@@ -999,12 +999,12 @@ $(document).ready(function(){initNavTree('dbc__coverage__test_8cpp_source.html',
<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="aclassDbcDecoder_html_a4005c4311f57b7faf21c0cb31463039c"><div class="ttname"><a href="classDbcDecoder.html#a4005c4311f57b7faf21c0cb31463039c">DbcDecoder::FindFrame</a></div><div class="ttdeci">std::shared_ptr&lt; const DecodeFrame &gt; FindFrame(const DecodeDatabase &amp;database, std::uint32_t canId, bool isExtended) const</div><div class="ttdoc">Find exact CAN ID first, then unique PGN among explicitly J1939 definitions.</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8cpp_source.html#l00020">dbc_decoder.cpp:20</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_aef72826942c9095d653fafa435855e56"><div class="ttname"><a href="classDbcParser.html#aef72826942c9095d653fafa435855e56">DbcParser::ParseFile</a></div><div class="ttdeci">DbcDatabase ParseFile(const std::string &amp;filePath) const</div><div class="ttdoc">Parse DBC file.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00090">dbc_parser.cpp:90</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="aclassDbcParser_html_aef72826942c9095d653fafa435855e56"><div class="ttname"><a href="classDbcParser.html#aef72826942c9095d653fafa435855e56">DbcParser::ParseFile</a></div><div class="ttdeci">DbcDatabase ParseFile(const std::string &amp;filePath) const</div><div class="ttdoc">Parse DBC file.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00092">dbc_parser.cpp:92</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="aclassDbcValueDescriptionHandler_html"><div class="ttname"><a href="classDbcValueDescriptionHandler.html">DbcValueDescriptionHandler</a></div><div class="ttdoc">Defer raw value descriptions for target resolution.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00125">dbc_statement_handler.h:125</a></div></div>
<div class="ttc" id="aclassDbcValueDescriptionHandler_html_a653e13364f396b54244edc2c0fdd831a"><div class="ttname"><a href="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a">DbcValueDescriptionHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00435">dbc_statement_handler.cpp:435</a></div></div>
<div class="ttc" id="aclassDbcValueDescriptionHandler_html_a653e13364f396b54244edc2c0fdd831a"><div class="ttname"><a href="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a">DbcValueDescriptionHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00440">dbc_statement_handler.cpp:440</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>
<div class="ttc" id="aclassDecodeDatabase_html_a780d6e747a48b10a5eb0ab85448d2970"><div class="ttname"><a href="classDecodeDatabase.html#a780d6e747a48b10a5eb0ab85448d2970">DecodeDatabase::FindFrame</a></div><div class="ttdeci">std::shared_ptr&lt; const DecodeFrame &gt; FindFrame(const FrameKey &amp;key) const</div><div class="ttdef"><b>Definition</b> <a href="decode__database_8cpp_source.html#l00112">decode_database.cpp:112</a></div></div>
<div class="ttc" id="aclassDecodeDatabase_html_aa034c1510984a85f60ad6c0bd744d6e8"><div class="ttname"><a href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">DecodeDatabase::GetFrames</a></div><div class="ttdeci">const std::vector&lt; DecodeFrame &gt; &amp; GetFrames() const</div><div class="ttdef"><b>Definition</b> <a href="decode__database_8cpp_source.html#l00107">decode_database.cpp:107</a></div></div>
+38 -37
View File
@@ -120,48 +120,49 @@ $(document).ready(function(){initNavTree('dbc__diagnostic_8h_source.html',''); i
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> InvalidMultiplexing,</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> UnsupportedStatement,</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> InvalidAttribute,</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> UnsupportedAttribute</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span>};</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> </div>
<div class="foldopen" id="foldopen00029" data-start="{" data-end="};">
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"><a class="line" href="structDbcDiagnostic.html"> 29</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structDbcDiagnostic.html">DbcDiagnostic</a> {</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"><a class="line" href="structDbcDiagnostic.html#a75040a94f0313a606478020b0491f81d"> 30</a></span> DbcDiagnosticSeverity <a class="code hl_variable" href="structDbcDiagnostic.html#a75040a94f0313a606478020b0491f81d">severity</a>; </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"><a class="line" href="structDbcDiagnostic.html#aa315a4a40b15f2e8cb34264d94a0f914"> 31</a></span> DbcDiagnosticCode <a class="code hl_variable" href="structDbcDiagnostic.html#aa315a4a40b15f2e8cb34264d94a0f914">code</a>; </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"><a class="line" href="structDbcDiagnostic.html#ac9f02705ed6a633cbb9526d0e392fb95"> 32</a></span> std::string <a class="code hl_variable" href="structDbcDiagnostic.html#ac9f02705ed6a633cbb9526d0e392fb95">filePath</a>; </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="structDbcDiagnostic.html#adb201de8d32b768d5f559bed21e8f819"> 33</a></span> std::size_t <a class="code hl_variable" href="structDbcDiagnostic.html#adb201de8d32b768d5f559bed21e8f819">lineNumber</a>; </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="structDbcDiagnostic.html#a124bae82eebeaef46426bd124685ef1b"> 34</a></span> std::string <a class="code hl_variable" href="structDbcDiagnostic.html#a124bae82eebeaef46426bd124685ef1b">message</a>; </div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span>};</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> UnsupportedAttribute,</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> UnsupportedSignalType</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span>};</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> </div>
<div class="foldopen" id="foldopen00030" data-start="{" data-end="};">
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"><a class="line" href="structDbcDiagnostic.html"> 30</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structDbcDiagnostic.html">DbcDiagnostic</a> {</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"><a class="line" href="structDbcDiagnostic.html#a75040a94f0313a606478020b0491f81d"> 31</a></span> DbcDiagnosticSeverity <a class="code hl_variable" href="structDbcDiagnostic.html#a75040a94f0313a606478020b0491f81d">severity</a>; </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"><a class="line" href="structDbcDiagnostic.html#aa315a4a40b15f2e8cb34264d94a0f914"> 32</a></span> DbcDiagnosticCode <a class="code hl_variable" href="structDbcDiagnostic.html#aa315a4a40b15f2e8cb34264d94a0f914">code</a>; </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="structDbcDiagnostic.html#ac9f02705ed6a633cbb9526d0e392fb95"> 33</a></span> std::string <a class="code hl_variable" href="structDbcDiagnostic.html#ac9f02705ed6a633cbb9526d0e392fb95">filePath</a>; </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="structDbcDiagnostic.html#adb201de8d32b768d5f559bed21e8f819"> 34</a></span> std::size_t <a class="code hl_variable" href="structDbcDiagnostic.html#adb201de8d32b768d5f559bed21e8f819">lineNumber</a>; </div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="structDbcDiagnostic.html#a124bae82eebeaef46426bd124685ef1b"> 35</a></span> std::string <a class="code hl_variable" href="structDbcDiagnostic.html#a124bae82eebeaef46426bd124685ef1b">message</a>; </div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span>};</div>
</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
<div class="foldopen" id="foldopen00038" data-start="{" data-end="};">
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"><a class="line" href="structDbcParseResult.html"> 38</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> {</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e"> 39</a></span> <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a> <a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>; </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"><a class="line" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679"> 40</a></span> std::vector&lt;DbcDiagnostic&gt; <a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>; </div>
<div class="foldopen" id="foldopen00043" data-start="{" data-end="}">
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d"> 43</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code hl_struct" href="structDbcDiagnostic.html">DbcDiagnostic</a> &amp;diagnostic: <a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>) {</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keywordflow">if</span> (diagnostic.severity == DbcDiagnosticSeverity::Error)</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> }</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> }</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="foldopen" id="foldopen00039" data-start="{" data-end="};">
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="structDbcParseResult.html"> 39</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> {</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"><a class="line" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e"> 40</a></span> <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a> <a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>; </div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"><a class="line" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679"> 41</a></span> std::vector&lt;DbcDiagnostic&gt; <a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>; </div>
<div class="foldopen" id="foldopen00044" data-start="{" data-end="}">
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d"> 44</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code hl_struct" href="structDbcDiagnostic.html">DbcDiagnostic</a> &amp;diagnostic: <a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>) {</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordflow">if</span> (diagnostic.severity == DbcDiagnosticSeverity::Error)</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> }</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> }</div>
</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span>};</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span>};</div>
</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="preprocessor">#endif </span><span class="comment">/* DBC_DIAGNOSTIC_H */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> </div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="preprocessor">#endif </span><span class="comment">/* DBC_DIAGNOSTIC_H */</span><span class="preprocessor"></span></div>
<div class="ttc" id="adbc__database_8h_html"><div class="ttname"><a href="dbc__database_8h.html">dbc_database.h</a></div><div class="ttdoc">Parsed DBC database and attribute metadata.</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="astructDbcDiagnostic_html"><div class="ttname"><a href="structDbcDiagnostic.html">DbcDiagnostic</a></div><div class="ttdoc">Diagnostic message and physical source location.</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00029">dbc_diagnostic.h:29</a></div></div>
<div class="ttc" id="astructDbcDiagnostic_html_a124bae82eebeaef46426bd124685ef1b"><div class="ttname"><a href="structDbcDiagnostic.html#a124bae82eebeaef46426bd124685ef1b">DbcDiagnostic::message</a></div><div class="ttdeci">std::string message</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00034">dbc_diagnostic.h:34</a></div></div>
<div class="ttc" id="astructDbcDiagnostic_html_a75040a94f0313a606478020b0491f81d"><div class="ttname"><a href="structDbcDiagnostic.html#a75040a94f0313a606478020b0491f81d">DbcDiagnostic::severity</a></div><div class="ttdeci">DbcDiagnosticSeverity severity</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00030">dbc_diagnostic.h:30</a></div></div>
<div class="ttc" id="astructDbcDiagnostic_html_aa315a4a40b15f2e8cb34264d94a0f914"><div class="ttname"><a href="structDbcDiagnostic.html#aa315a4a40b15f2e8cb34264d94a0f914">DbcDiagnostic::code</a></div><div class="ttdeci">DbcDiagnosticCode code</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00031">dbc_diagnostic.h:31</a></div></div>
<div class="ttc" id="astructDbcDiagnostic_html_ac9f02705ed6a633cbb9526d0e392fb95"><div class="ttname"><a href="structDbcDiagnostic.html#ac9f02705ed6a633cbb9526d0e392fb95">DbcDiagnostic::filePath</a></div><div class="ttdeci">std::string filePath</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00032">dbc_diagnostic.h:32</a></div></div>
<div class="ttc" id="astructDbcDiagnostic_html_adb201de8d32b768d5f559bed21e8f819"><div class="ttname"><a href="structDbcDiagnostic.html#adb201de8d32b768d5f559bed21e8f819">DbcDiagnostic::lineNumber</a></div><div class="ttdeci">std::size_t lineNumber</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00033">dbc_diagnostic.h:33</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="astructDbcDiagnostic_html"><div class="ttname"><a href="structDbcDiagnostic.html">DbcDiagnostic</a></div><div class="ttdoc">Diagnostic message and physical source location.</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00030">dbc_diagnostic.h:30</a></div></div>
<div class="ttc" id="astructDbcDiagnostic_html_a124bae82eebeaef46426bd124685ef1b"><div class="ttname"><a href="structDbcDiagnostic.html#a124bae82eebeaef46426bd124685ef1b">DbcDiagnostic::message</a></div><div class="ttdeci">std::string message</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00035">dbc_diagnostic.h:35</a></div></div>
<div class="ttc" id="astructDbcDiagnostic_html_a75040a94f0313a606478020b0491f81d"><div class="ttname"><a href="structDbcDiagnostic.html#a75040a94f0313a606478020b0491f81d">DbcDiagnostic::severity</a></div><div class="ttdeci">DbcDiagnosticSeverity severity</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00031">dbc_diagnostic.h:31</a></div></div>
<div class="ttc" id="astructDbcDiagnostic_html_aa315a4a40b15f2e8cb34264d94a0f914"><div class="ttname"><a href="structDbcDiagnostic.html#aa315a4a40b15f2e8cb34264d94a0f914">DbcDiagnostic::code</a></div><div class="ttdeci">DbcDiagnosticCode code</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00032">dbc_diagnostic.h:32</a></div></div>
<div class="ttc" id="astructDbcDiagnostic_html_ac9f02705ed6a633cbb9526d0e392fb95"><div class="ttname"><a href="structDbcDiagnostic.html#ac9f02705ed6a633cbb9526d0e392fb95">DbcDiagnostic::filePath</a></div><div class="ttdeci">std::string filePath</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00033">dbc_diagnostic.h:33</a></div></div>
<div class="ttc" id="astructDbcDiagnostic_html_adb201de8d32b768d5f559bed21e8f819"><div class="ttname"><a href="structDbcDiagnostic.html#adb201de8d32b768d5f559bed21e8f819">DbcDiagnostic::lineNumber</a></div><div class="ttdeci">std::size_t lineNumber</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00034">dbc_diagnostic.h:34</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><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
@@ -347,7 +347,7 @@ $(document).ready(function(){initNavTree('dbc__lifetime__test_8cpp_source.html',
<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="aclassDbcDecoder_html_a4005c4311f57b7faf21c0cb31463039c"><div class="ttname"><a href="classDbcDecoder.html#a4005c4311f57b7faf21c0cb31463039c">DbcDecoder::FindFrame</a></div><div class="ttdeci">std::shared_ptr&lt; const DecodeFrame &gt; FindFrame(const DecodeDatabase &amp;database, std::uint32_t canId, bool isExtended) const</div><div class="ttdoc">Find exact CAN ID first, then unique PGN among explicitly J1939 definitions.</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8cpp_source.html#l00020">dbc_decoder.cpp:20</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="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>
<div class="ttc" id="aclassDecodeDatabase_html_a0af5b15b9953a4f6551c27ee9ae8b514"><div class="ttname"><a href="classDecodeDatabase.html#a0af5b15b9953a4f6551c27ee9ae8b514">DecodeDatabase::FindSignal</a></div><div class="ttdeci">std::shared_ptr&lt; const DecodeSignal &gt; FindSignal(const SignalKey &amp;key) const</div><div class="ttdoc">Return an owning signal handle, or an empty handle for a missing key.</div><div class="ttdef"><b>Definition</b> <a href="decode__database_8cpp_source.html#l00138">decode_database.cpp:138</a></div></div>
<div class="ttc" id="aclassDecodeDatabase_html_a780d6e747a48b10a5eb0ab85448d2970"><div class="ttname"><a href="classDecodeDatabase.html#a780d6e747a48b10a5eb0ab85448d2970">DecodeDatabase::FindFrame</a></div><div class="ttdeci">std::shared_ptr&lt; const DecodeFrame &gt; FindFrame(const FrameKey &amp;key) const</div><div class="ttdef"><b>Definition</b> <a href="decode__database_8cpp_source.html#l00112">decode_database.cpp:112</a></div></div>
+112 -110
View File
@@ -173,123 +173,125 @@ $(document).ready(function(){initNavTree('dbc__parser_8cpp_source.html',''); ini
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keywordflow">return</span> DbcDiagnosticCode::InvalidMultiplexing;</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="keywordflow">if</span> (keyword == <span class="stringliteral">&quot;VAL_&quot;</span>)</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="keywordflow">return</span> DbcDiagnosticCode::InvalidValueDescription;</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordflow">return</span> DbcDiagnosticCode::InvalidStatement;</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> }</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span>}</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> </div>
<div class="foldopen" id="foldopen00090" data-start="{" data-end="}">
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"><a class="line" href="classDbcParser.html#aef72826942c9095d653fafa435855e56"> 90</a></span><a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a> <a class="code hl_function" href="classDbcParser.html#aef72826942c9095d653fafa435855e56">DbcParser::ParseFile</a>(<span class="keyword">const</span> std::string &amp;filePath)<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> result = <a class="code hl_function" href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">ParseFileWithDiagnostics</a>(filePath);</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code hl_struct" href="structDbcDiagnostic.html">DbcDiagnostic</a> &amp;diagnostic : result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>) {</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keywordflow">if</span> (diagnostic.severity == DbcDiagnosticSeverity::Error) {</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordflow">if</span> (diagnostic.lineNumber == 0U)</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keywordflow">throw</span> std::runtime_error(diagnostic.message);</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keywordflow">throw</span> std::runtime_error(diagnostic.filePath + <span class="stringliteral">&quot;:&quot;</span> +</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> std::to_string(diagnostic.lineNumber) + <span class="stringliteral">&quot;: &quot;</span> + diagnostic.message);</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> }</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> }</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordflow">return</span> std::move(result.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span>}</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordflow">if</span> (keyword == <span class="stringliteral">&quot;SIG_VALTYPE_&quot;</span>)</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="keywordflow">return</span> DbcDiagnosticCode::UnsupportedSignalType;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keywordflow">return</span> DbcDiagnosticCode::InvalidStatement;</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> }</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span>}</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> </div>
<div class="foldopen" id="foldopen00092" data-start="{" data-end="}">
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"><a class="line" href="classDbcParser.html#aef72826942c9095d653fafa435855e56"> 92</a></span><a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a> <a class="code hl_function" href="classDbcParser.html#aef72826942c9095d653fafa435855e56">DbcParser::ParseFile</a>(<span class="keyword">const</span> std::string &amp;filePath)<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> result = <a class="code hl_function" href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">ParseFileWithDiagnostics</a>(filePath);</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code hl_struct" href="structDbcDiagnostic.html">DbcDiagnostic</a> &amp;diagnostic : result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>) {</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keywordflow">if</span> (diagnostic.severity == DbcDiagnosticSeverity::Error) {</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keywordflow">if</span> (diagnostic.lineNumber == 0U)</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="keywordflow">throw</span> std::runtime_error(diagnostic.message);</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="keywordflow">throw</span> std::runtime_error(diagnostic.filePath + <span class="stringliteral">&quot;:&quot;</span> +</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> std::to_string(diagnostic.lineNumber) + <span class="stringliteral">&quot;: &quot;</span> + diagnostic.message);</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> }</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> }</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keywordflow">return</span> std::move(result.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span>}</div>
</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> </div>
<div class="foldopen" id="foldopen00103" data-start="{" data-end="}">
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"><a class="line" href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc"> 103</a></span><a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> <a class="code hl_function" href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">DbcParser::ParseFileWithDiagnostics</a>(<span class="keyword">const</span> std::string &amp;filePath)<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> result;</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> std::ifstream input(filePath.c_str());</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="keywordflow">if</span> (!input.is_open()) {</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.push_back({DbcDiagnosticSeverity::Error,</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> DbcDiagnosticCode::FileOpenError, filePath, 0U,</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="stringliteral">&quot;Failed to open DBC file: &quot;</span> + filePath});</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> }</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> </div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a> database;</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <a class="code hl_struct" href="structDbcParseContext.html">DbcParseContext</a> context{database, <span class="keyword">nullptr</span>};</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> context.enableJ1939 = options.<a class="code hl_variable" href="structDbcParserOptions.html#ab31534f5c0853461b46cbb38149c33f9">enableJ1939</a>;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keyword">const</span> <a class="code hl_class" href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a> dispatcher;</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordtype">bool</span> inNamespace = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> std::size_t lineNumber = 0U;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> std::string line;</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keywordflow">while</span> (std::getline(input, line)) {</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> ++lineNumber;</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <span class="keywordflow">if</span> (!line.empty() &amp;&amp; line.back() == <span class="charliteral">&#39;\r&#39;</span>)</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> line.pop_back();</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keyword">const</span> std::string rawLine = line;</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keyword">const</span> std::size_t statementLine = lineNumber;</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> line = dbc_detail::TrimText(line);</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <span class="keywordflow">if</span> (line.empty())</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> </div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> std::istringstream tokens(line);</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> std::string keyword;</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> std::string argument;</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> tokens &gt;&gt; keyword;</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> hasArgument = <span class="keyword">static_cast&lt;</span><span class="keywordtype">bool</span><span class="keyword">&gt;</span>(tokens &gt;&gt; argument);</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keywordflow">if</span> (inNamespace &amp;&amp; !hasArgument &amp;&amp; keyword != <span class="stringliteral">&quot;BO_&quot;</span> &amp;&amp; keyword != <span class="stringliteral">&quot;SG_&quot;</span> &amp;&amp;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> keyword != <span class="stringliteral">&quot;BS_&quot;</span> &amp;&amp; keyword != <span class="stringliteral">&quot;BS_:&quot;</span> &amp;&amp;</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> keyword != <span class="stringliteral">&quot;BU_&quot;</span> &amp;&amp; keyword != <span class="stringliteral">&quot;BU_:&quot;</span>)</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <span class="keywordflow">continue</span>; <span class="comment">// NS_ lists syntax symbols; BO_, SG_, BS_ and BU_ end the list.</span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> inNamespace = keyword == <span class="stringliteral">&quot;NS_&quot;</span> || keyword == <span class="stringliteral">&quot;NS_:&quot;</span>;</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> </div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="keywordflow">if</span> (keyword == <span class="stringliteral">&quot;CM_&quot;</span>) {</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> line = rawLine;</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> ReadCommentLines(input, line, lineNumber);</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (keyword == <span class="stringliteral">&quot;BA_DEF_&quot;</span> || keyword == <span class="stringliteral">&quot;BA_DEF_DEF_&quot;</span> || keyword == <span class="stringliteral">&quot;BA_&quot;</span>) {</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> line = rawLine.substr(rawLine.find(keyword));</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> ReadAttributeLines(input, line, lineNumber);</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> }</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> </div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keywordflow">try</span> {</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> context.lineNumber = statementLine;</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <span class="keywordflow">if</span> (!dispatcher.<a class="code hl_function" href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed">Dispatch</a>(line, context)) {</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.push_back({DbcDiagnosticSeverity::Warning,</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> DbcDiagnosticCode::UnsupportedStatement,</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> filePath, statementLine,</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <span class="stringliteral">&quot;Unsupported statement &#39;&quot;</span> + keyword +</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="stringliteral">&quot;&#39; is ignored; decoding or metadata may be incomplete.&quot;</span>});</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> }</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception &amp;error) {</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.push_back({DbcDiagnosticSeverity::Error,</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> StatementErrorCode(keyword), filePath,</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> statementLine, error.what()});</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> }</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> }</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> </div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="keywordflow">if</span> (input.bad() || !input.eof()) {</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.push_back({DbcDiagnosticSeverity::Error,</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> DbcDiagnosticCode::FileReadError, filePath, 0U,</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <span class="stringliteral">&quot;Failed to read DBC file: &quot;</span> + filePath});</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> }</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> </div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keywordflow">try</span> {</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> context.ResolveComments(filePath);</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> context.ResolveValueDescriptions(filePath);</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> context.ResolveMultiplexing(filePath);</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> context.ValidateMultiplexing(filePath);</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> context.ResolveAttributes(filePath, result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>);</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> } <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code hl_class" href="classDbcDiagnosticError.html">DbcDiagnosticError</a> &amp;error) {</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.push_back(error.<a class="code hl_variable" href="classDbcDiagnosticError.html#ab3965082f01d66b6d5c20525af44235d">diagnostic</a>);</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> }</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> result.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a> = std::move(database);</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span>}</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> </div>
<div class="foldopen" id="foldopen00105" data-start="{" data-end="}">
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"><a class="line" href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc"> 105</a></span><a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> <a class="code hl_function" href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">DbcParser::ParseFileWithDiagnostics</a>(<span class="keyword">const</span> std::string &amp;filePath)<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> result;</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> std::ifstream input(filePath.c_str());</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keywordflow">if</span> (!input.is_open()) {</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.push_back({DbcDiagnosticSeverity::Error,</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> DbcDiagnosticCode::FileOpenError, filePath, 0U,</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="stringliteral">&quot;Failed to open DBC file: &quot;</span> + filePath});</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> }</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> </div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a> database;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <a class="code hl_struct" href="structDbcParseContext.html">DbcParseContext</a> context{database, <span class="keyword">nullptr</span>};</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> context.enableJ1939 = options.<a class="code hl_variable" href="structDbcParserOptions.html#ab31534f5c0853461b46cbb38149c33f9">enableJ1939</a>;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keyword">const</span> <a class="code hl_class" href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a> dispatcher;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="keywordtype">bool</span> inNamespace = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> std::size_t lineNumber = 0U;</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> std::string line;</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <span class="keywordflow">while</span> (std::getline(input, line)) {</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> ++lineNumber;</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keywordflow">if</span> (!line.empty() &amp;&amp; line.back() == <span class="charliteral">&#39;\r&#39;</span>)</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> line.pop_back();</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="keyword">const</span> std::string rawLine = line;</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <span class="keyword">const</span> std::size_t statementLine = lineNumber;</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> line = dbc_detail::TrimText(line);</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="keywordflow">if</span> (line.empty())</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> </div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> std::istringstream tokens(line);</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> std::string keyword;</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> std::string argument;</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> tokens &gt;&gt; keyword;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> hasArgument = <span class="keyword">static_cast&lt;</span><span class="keywordtype">bool</span><span class="keyword">&gt;</span>(tokens &gt;&gt; argument);</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="keywordflow">if</span> (inNamespace &amp;&amp; !hasArgument &amp;&amp; keyword != <span class="stringliteral">&quot;BO_&quot;</span> &amp;&amp; keyword != <span class="stringliteral">&quot;SG_&quot;</span> &amp;&amp;</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> keyword != <span class="stringliteral">&quot;BS_&quot;</span> &amp;&amp; keyword != <span class="stringliteral">&quot;BS_:&quot;</span> &amp;&amp;</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> keyword != <span class="stringliteral">&quot;BU_&quot;</span> &amp;&amp; keyword != <span class="stringliteral">&quot;BU_:&quot;</span>)</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="keywordflow">continue</span>; <span class="comment">// NS_ lists syntax symbols; BO_, SG_, BS_ and BU_ end the list.</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> inNamespace = keyword == <span class="stringliteral">&quot;NS_&quot;</span> || keyword == <span class="stringliteral">&quot;NS_:&quot;</span>;</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> </div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="keywordflow">if</span> (keyword == <span class="stringliteral">&quot;CM_&quot;</span>) {</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> line = rawLine;</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> ReadCommentLines(input, line, lineNumber);</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (keyword == <span class="stringliteral">&quot;BA_DEF_&quot;</span> || keyword == <span class="stringliteral">&quot;BA_DEF_DEF_&quot;</span> || keyword == <span class="stringliteral">&quot;BA_&quot;</span>) {</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> line = rawLine.substr(rawLine.find(keyword));</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> ReadAttributeLines(input, line, lineNumber);</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> }</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> </div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <span class="keywordflow">try</span> {</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> context.lineNumber = statementLine;</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <span class="keywordflow">if</span> (!dispatcher.<a class="code hl_function" href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed">Dispatch</a>(line, context)) {</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.push_back({DbcDiagnosticSeverity::Warning,</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> DbcDiagnosticCode::UnsupportedStatement,</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> filePath, statementLine,</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="stringliteral">&quot;Unsupported statement &#39;&quot;</span> + keyword +</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> <span class="stringliteral">&quot;&#39; is ignored; decoding or metadata may be incomplete.&quot;</span>});</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> }</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception &amp;error) {</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.push_back({DbcDiagnosticSeverity::Error,</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> StatementErrorCode(keyword), filePath,</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> statementLine, error.what()});</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> }</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> }</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="keywordflow">if</span> (input.bad() || !input.eof()) {</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.push_back({DbcDiagnosticSeverity::Error,</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> DbcDiagnosticCode::FileReadError, filePath, 0U,</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <span class="stringliteral">&quot;Failed to read DBC file: &quot;</span> + filePath});</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> }</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> </div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <span class="keywordflow">try</span> {</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> context.ResolveComments(filePath);</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> context.ResolveValueDescriptions(filePath);</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> context.ResolveMultiplexing(filePath);</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> context.ValidateMultiplexing(filePath);</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> context.ResolveAttributes(filePath, result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>);</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> } <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code hl_class" href="classDbcDiagnosticError.html">DbcDiagnosticError</a> &amp;error) {</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.push_back(error.<a class="code hl_variable" href="classDbcDiagnosticError.html#ab3965082f01d66b6d5c20525af44235d">diagnostic</a>);</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> }</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> result.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a> = std::move(database);</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span>}</div>
</div>
<div class="ttc" id="aclassDbcDiagnosticError_html"><div class="ttname"><a href="classDbcDiagnosticError.html">DbcDiagnosticError</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00032">dbc_statement_handler.h:32</a></div></div>
<div class="ttc" id="aclassDbcDiagnosticError_html_ab3965082f01d66b6d5c20525af44235d"><div class="ttname"><a href="classDbcDiagnosticError.html#ab3965082f01d66b6d5c20525af44235d">DbcDiagnosticError::diagnostic</a></div><div class="ttdeci">DbcDiagnostic diagnostic</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00040">dbc_statement_handler.h:40</a></div></div>
<div class="ttc" id="aclassDbcParser_html_a0e915ce79c2e3d4c95a5aaf2bf0409bc"><div class="ttname"><a href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">DbcParser::ParseFileWithDiagnostics</a></div><div class="ttdeci">DbcParseResult ParseFileWithDiagnostics(const std::string &amp;filePath) const</div><div class="ttdoc">Parse with warnings and a structured first error instead of throwing.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00103">dbc_parser.cpp:103</a></div></div>
<div class="ttc" id="aclassDbcParser_html_aef72826942c9095d653fafa435855e56"><div class="ttname"><a href="classDbcParser.html#aef72826942c9095d653fafa435855e56">DbcParser::ParseFile</a></div><div class="ttdeci">DbcDatabase ParseFile(const std::string &amp;filePath) const</div><div class="ttdoc">Parse DBC file.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00090">dbc_parser.cpp:90</a></div></div>
<div class="ttc" id="aclassDbcStatementDispatcher_html"><div class="ttname"><a href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00143">dbc_statement_handler.h:143</a></div></div>
<div class="ttc" id="aclassDbcStatementDispatcher_html_a495c2d5c7ebb8103b1987cdd87c142ed"><div class="ttname"><a href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed">DbcStatementDispatcher::Dispatch</a></div><div class="ttdeci">bool Dispatch(const std::string &amp;line, DbcParseContext &amp;context) const</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00423">dbc_statement_handler.cpp:423</a></div></div>
<div class="ttc" id="aclassDbcParser_html_a0e915ce79c2e3d4c95a5aaf2bf0409bc"><div class="ttname"><a href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">DbcParser::ParseFileWithDiagnostics</a></div><div class="ttdeci">DbcParseResult ParseFileWithDiagnostics(const std::string &amp;filePath) const</div><div class="ttdoc">Parse with warnings and a structured first error instead of throwing.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00105">dbc_parser.cpp:105</a></div></div>
<div class="ttc" id="aclassDbcParser_html_aef72826942c9095d653fafa435855e56"><div class="ttname"><a href="classDbcParser.html#aef72826942c9095d653fafa435855e56">DbcParser::ParseFile</a></div><div class="ttdeci">DbcDatabase ParseFile(const std::string &amp;filePath) const</div><div class="ttdoc">Parse DBC file.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00092">dbc_parser.cpp:92</a></div></div>
<div class="ttc" id="aclassDbcStatementDispatcher_html"><div class="ttname"><a href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00149">dbc_statement_handler.h:149</a></div></div>
<div class="ttc" id="aclassDbcStatementDispatcher_html_a495c2d5c7ebb8103b1987cdd87c142ed"><div class="ttname"><a href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed">DbcStatementDispatcher::Dispatch</a></div><div class="ttdeci">bool Dispatch(const std::string &amp;line, DbcParseContext &amp;context) const</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00428">dbc_statement_handler.cpp:428</a></div></div>
<div class="ttc" id="adbc__parser_8h_html"><div class="ttname"><a href="dbc__parser_8h.html">dbc_parser.h</a></div><div class="ttdoc">DBC file parser and interpretation options.</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="astructDbcDiagnostic_html"><div class="ttname"><a href="structDbcDiagnostic.html">DbcDiagnostic</a></div><div class="ttdoc">Diagnostic message and physical source location.</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00029">dbc_diagnostic.h:29</a></div></div>
<div class="ttc" id="astructDbcDiagnostic_html"><div class="ttname"><a href="structDbcDiagnostic.html">DbcDiagnostic</a></div><div class="ttdoc">Diagnostic message and physical source location.</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00030">dbc_diagnostic.h:30</a></div></div>
<div class="ttc" id="astructDbcParseContext_html"><div class="ttname"><a href="structDbcParseContext.html">DbcParseContext</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00060">dbc_statement_handler.h:60</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_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_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_ab31534f5c0853461b46cbb38149c33f9"><div class="ttname"><a href="structDbcParserOptions.html#ab31534f5c0853461b46cbb38149c33f9">DbcParserOptions::enableJ1939</a></div><div class="ttdeci">bool enableJ1939</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8h_source.html#l00021">dbc_parser.h:21</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
+19 -19
View File
@@ -112,27 +112,27 @@ $(document).ready(function(){initNavTree('dbc__parser_8h_source.html',''); initR
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span>};</div>
</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> </div>
<div class="foldopen" id="foldopen00043" data-start="{" data-end="};">
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="classDbcParser.html"> 43</a></span><span class="keyword">class </span><a class="code hl_class" href="classDbcParser.html">DbcParser</a> {</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"><a class="line" href="classDbcParser.html#a46bc3afcd103e704dc58bb4b073da73c"> 46</a></span> <span class="keyword">explicit</span> <a class="code hl_function" href="classDbcParser.html#a46bc3afcd103e704dc58bb4b073da73c">DbcParser</a>(<a class="code hl_struct" href="structDbcParserOptions.html">DbcParserOptions</a> options = {}) : options(options) {}</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a> <a class="code hl_function" href="classDbcParser.html#aef72826942c9095d653fafa435855e56">ParseFile</a>(<span class="keyword">const</span> std::string &amp;filePath) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> <a class="code hl_function" href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">ParseFileWithDiagnostics</a>(<span class="keyword">const</span> std::string &amp;filePath) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> </div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <a class="code hl_struct" href="structDbcParserOptions.html">DbcParserOptions</a> options;</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span>};</div>
<div class="foldopen" id="foldopen00045" data-start="{" data-end="};">
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="classDbcParser.html"> 45</a></span><span class="keyword">class </span><a class="code hl_class" href="classDbcParser.html">DbcParser</a> {</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="classDbcParser.html#a46bc3afcd103e704dc58bb4b073da73c"> 48</a></span> <span class="keyword">explicit</span> <a class="code hl_function" href="classDbcParser.html#a46bc3afcd103e704dc58bb4b073da73c">DbcParser</a>(<a class="code hl_struct" href="structDbcParserOptions.html">DbcParserOptions</a> options = {}) : options(options) {}</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a> <a class="code hl_function" href="classDbcParser.html#aef72826942c9095d653fafa435855e56">ParseFile</a>(<span class="keyword">const</span> std::string &amp;filePath) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> </div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> <a class="code hl_function" href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">ParseFileWithDiagnostics</a>(<span class="keyword">const</span> std::string &amp;filePath) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <a class="code hl_struct" href="structDbcParserOptions.html">DbcParserOptions</a> options;</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span>};</div>
</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="preprocessor">#endif </span><span class="comment">/* DBC_PARSER_H */</span><span class="preprocessor"></span></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_a0e915ce79c2e3d4c95a5aaf2bf0409bc"><div class="ttname"><a href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">DbcParser::ParseFileWithDiagnostics</a></div><div class="ttdeci">DbcParseResult ParseFileWithDiagnostics(const std::string &amp;filePath) const</div><div class="ttdoc">Parse with warnings and a structured first error instead of throwing.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00103">dbc_parser.cpp:103</a></div></div>
<div class="ttc" id="aclassDbcParser_html_a46bc3afcd103e704dc58bb4b073da73c"><div class="ttname"><a href="classDbcParser.html#a46bc3afcd103e704dc58bb4b073da73c">DbcParser::DbcParser</a></div><div class="ttdeci">DbcParser(DbcParserOptions options={})</div><div class="ttdoc">Create a parser with explicit extended-frame interpretation options.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8h_source.html#l00046">dbc_parser.h:46</a></div></div>
<div class="ttc" id="aclassDbcParser_html_aef72826942c9095d653fafa435855e56"><div class="ttname"><a href="classDbcParser.html#aef72826942c9095d653fafa435855e56">DbcParser::ParseFile</a></div><div class="ttdeci">DbcDatabase ParseFile(const std::string &amp;filePath) const</div><div class="ttdoc">Parse DBC file.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00090">dbc_parser.cpp:90</a></div></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="preprocessor">#endif </span><span class="comment">/* DBC_PARSER_H */</span><span class="preprocessor"></span></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="aclassDbcParser_html_a0e915ce79c2e3d4c95a5aaf2bf0409bc"><div class="ttname"><a href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">DbcParser::ParseFileWithDiagnostics</a></div><div class="ttdeci">DbcParseResult ParseFileWithDiagnostics(const std::string &amp;filePath) const</div><div class="ttdoc">Parse with warnings and a structured first error instead of throwing.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00105">dbc_parser.cpp:105</a></div></div>
<div class="ttc" id="aclassDbcParser_html_a46bc3afcd103e704dc58bb4b073da73c"><div class="ttname"><a href="classDbcParser.html#a46bc3afcd103e704dc58bb4b073da73c">DbcParser::DbcParser</a></div><div class="ttdeci">DbcParser(DbcParserOptions options={})</div><div class="ttdoc">Create a parser with explicit extended-frame interpretation options.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8h_source.html#l00048">dbc_parser.h:48</a></div></div>
<div class="ttc" id="aclassDbcParser_html_aef72826942c9095d653fafa435855e56"><div class="ttname"><a href="classDbcParser.html#aef72826942c9095d653fafa435855e56">DbcParser::ParseFile</a></div><div class="ttdeci">DbcDatabase ParseFile(const std::string &amp;filePath) const</div><div class="ttdoc">Parse DBC file.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00092">dbc_parser.cpp:92</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="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"><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="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="astructDbcParserOptions_html_ab31534f5c0853461b46cbb38149c33f9"><div class="ttname"><a href="structDbcParserOptions.html#ab31534f5c0853461b46cbb38149c33f9">DbcParserOptions::enableJ1939</a></div><div class="ttdeci">bool enableJ1939</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8h_source.html#l00021">dbc_parser.h:21</a></div></div>
</div><!-- fragment --></div><!-- contents -->
File diff suppressed because it is too large. Load diff
+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>
+192 -184
View File
@@ -520,199 +520,207 @@ $(document).ready(function(){initNavTree('dbc__statement__handler_8cpp_source.ht
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> RegisterType&lt;DbcMultiplexingHandler&gt;(<span class="stringliteral">&quot;SG_MUL_VAL_&quot;</span>);</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> RegisterType&lt;DbcFrameHandler&gt;(<span class="stringliteral">&quot;BO_&quot;</span>);</div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> RegisterType&lt;DbcSignalHandler&gt;(<span class="stringliteral">&quot;SG_&quot;</span>);</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> RegisterType&lt;DbcCommentHandler&gt;(<span class="stringliteral">&quot;CM_&quot;</span>);</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> RegisterType&lt;DbcValueDescriptionHandler&gt;(<span class="stringliteral">&quot;VAL_&quot;</span>);</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> RegisterType&lt;DbcAttributeHandler&gt;(<span class="stringliteral">&quot;BA_DEF_&quot;</span>);</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> RegisterType&lt;DbcAttributeHandler&gt;(<span class="stringliteral">&quot;BA_DEF_DEF_&quot;</span>);</div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> RegisterType&lt;DbcAttributeHandler&gt;(<span class="stringliteral">&quot;BA_&quot;</span>);</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span>}</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> RegisterType&lt;DbcUnsupportedSignalTypeHandler&gt;(<span class="stringliteral">&quot;SIG_VALTYPE_&quot;</span>);</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> RegisterType&lt;DbcCommentHandler&gt;(<span class="stringliteral">&quot;CM_&quot;</span>);</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> RegisterType&lt;DbcValueDescriptionHandler&gt;(<span class="stringliteral">&quot;VAL_&quot;</span>);</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> RegisterType&lt;DbcAttributeHandler&gt;(<span class="stringliteral">&quot;BA_DEF_&quot;</span>);</div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> RegisterType&lt;DbcAttributeHandler&gt;(<span class="stringliteral">&quot;BA_DEF_DEF_&quot;</span>);</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> RegisterType&lt;DbcAttributeHandler&gt;(<span class="stringliteral">&quot;BA_&quot;</span>);</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span>}</div>
</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> </div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"><a class="line" href="classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693"> 421</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693">DbcHeaderHandler::Handle</a>(<span class="keyword">const</span> std::string &amp;, <a class="code hl_struct" href="structDbcParseContext.html">DbcParseContext</a> &amp;)<span class="keyword"> const </span>{}</div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> </div>
<div class="foldopen" id="foldopen00423" data-start="{" data-end="}">
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"><a class="line" href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed"> 423</a></span><span class="keywordtype">bool</span> <a class="code hl_function" href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed">DbcStatementDispatcher::Dispatch</a>(<span class="keyword">const</span> std::string &amp;line,</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> <a class="code hl_struct" href="structDbcParseContext.html">DbcParseContext</a> &amp;context)<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> std::istringstream stream(line);</div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> std::string keyword;</div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> stream &gt;&gt; keyword;</div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> <span class="keyword">const</span> HandlerMap::const_iterator handler = m_handlers.find(keyword);</div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> <span class="keywordflow">if</span> (handler == m_handlers.end())</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> handler-&gt;second-&gt;Handle(line, context);</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span>}</div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> </div>
<div class="foldopen" id="foldopen00422" data-start="{" data-end="}">
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"><a class="line" href="classDbcUnsupportedSignalTypeHandler.html#ae4132fcdbb134d51143133c1fb83a9df"> 422</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="classDbcUnsupportedSignalTypeHandler.html#ae4132fcdbb134d51143133c1fb83a9df">DbcUnsupportedSignalTypeHandler::Handle</a>(<span class="keyword">const</span> std::string &amp;, <a class="code hl_struct" href="structDbcParseContext.html">DbcParseContext</a> &amp;)<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;SIG_VALTYPE_ declarations are unsupported; refusing potentially incorrect integer decoding.&quot;</span>);</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span>}</div>
</div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> </div>
<div class="foldopen" id="foldopen00435" data-start="{" data-end="}">
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"><a class="line" href="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a"> 435</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a">DbcValueDescriptionHandler::Handle</a>(<span class="keyword">const</span> std::string &amp;line, <a class="code hl_struct" href="structDbcParseContext.html">DbcParseContext</a> &amp;context)<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> <span class="keyword">static</span> <span class="keyword">const</span> std::regex header(R<span class="stringliteral">&quot;(^VAL_[ \t]+([^ \t]+)[ \t]+([^ \t;]+)[ \t]+(.*)$)&quot;);</span></div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span><span class="stringliteral"> </span><span class="keyword">static</span> <span class="keyword">const</span> std::regex pair(R<span class="stringliteral">&quot;dbc(^([^ \t]+)[ \t]+&quot;((?:[^&quot;\\]|\\[&quot;\\])*)&quot;)dbc&quot;);</span></div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span><span class="stringliteral"> std::smatch fields;</span></div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span><span class="stringliteral"> </span><span class="keywordflow">if</span> (!std::regex_match(line, fields, header))</div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Malformed or unsupported VAL_ statement.&quot;</span>);</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> <span class="keyword">const</span> std::uint32_t rawId = ParseDecimal(fields[1].str(), std::numeric_limits&lt;std::uint32_t&gt;::max(), <span class="stringliteral">&quot;VAL_ CAN ID&quot;</span>);</div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> <span class="keywordflow">if</span> ((rawId &amp; 0x60000000U) != 0U)</div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;VAL_ CAN ID exceeds the 29-bit identifier range.&quot;</span>);</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> <a class="code hl_struct" href="structPendingValueDescriptions.html">PendingValueDescriptions</a> pending;</div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> NormalizeCanId(rawId, pending.<a class="code hl_variable" href="structPendingValueDescriptions.html#a5f0082ceeaee77e2f823661547aad844">canId</a>, pending.<a class="code hl_variable" href="structPendingValueDescriptions.html#a60f185e8d91010927c4aa3b4a750c9f4">isExtended</a>);</div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> pending.<a class="code hl_variable" href="structPendingValueDescriptions.html#ac35446db10ebda5a12349759613f8c90">signalName</a> = fields[2].str();</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> pending.<a class="code hl_variable" href="structPendingValueDescriptions.html#a5c19cff09b0e83bd3cd6085213c17da8">lineNumber</a> = context.<a class="code hl_variable" href="structDbcParseContext.html#a57f5a7f613ecd0dadbafa7af736b7e54">lineNumber</a>;</div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> std::string rest = fields[3].str();</div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> <span class="keywordflow">while</span> (rest != <span class="stringliteral">&quot;;&quot;</span>) {</div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> <span class="keywordflow">if</span> (!std::regex_search(rest, fields, pair))</div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Malformed VAL_ value/description pair or missing semicolon.&quot;</span>);</div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> <span class="keyword">const</span> std::string number = fields[1].str();</div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> <span class="keyword">const</span> RawSignalValue key = ParseValueKey(number);</div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> <span class="keyword">const</span> std::string description = UnescapeDescription(fields[2].str());</div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> <span class="keywordflow">if</span> (!pending.<a class="code hl_variable" href="structPendingValueDescriptions.html#a10ecbaeaed2cc3ac82fada73e7e041dd">descriptions</a>.emplace(key, description).second)</div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Duplicate VAL_ value key: &quot;</span> + number);</div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> <span class="keyword">const</span> std::size_t consumed = <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(fields.length());</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> rest.erase(0, consumed);</div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> <span class="keywordflow">if</span> (!rest.empty() &amp;&amp; rest[0] != <span class="charliteral">&#39;;&#39;</span> &amp;&amp; rest[0] != <span class="charliteral">&#39; &#39;</span> &amp;&amp; rest[0] != <span class="charliteral">&#39;\t&#39;</span>)</div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Missing whitespace between VAL_ pairs.&quot;</span>);</div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> rest = dbc_detail::TrimText(rest);</div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> }</div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> <span class="keywordflow">if</span> (pending.<a class="code hl_variable" href="structPendingValueDescriptions.html#a10ecbaeaed2cc3ac82fada73e7e041dd">descriptions</a>.empty())</div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;VAL_ requires at least one value/description pair.&quot;</span>);</div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> context.<a class="code hl_variable" href="structDbcParseContext.html#ac22cba614ada3a28c7dcc1ea338b0e01">pendingValues</a>.push_back(std::move(pending));</div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span>}</div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> </div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"><a class="line" href="classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693"> 426</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693">DbcHeaderHandler::Handle</a>(<span class="keyword">const</span> std::string &amp;, <a class="code hl_struct" href="structDbcParseContext.html">DbcParseContext</a> &amp;)<span class="keyword"> const </span>{}</div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> </div>
<div class="foldopen" id="foldopen00428" data-start="{" data-end="}">
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"><a class="line" href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed"> 428</a></span><span class="keywordtype">bool</span> <a class="code hl_function" href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed">DbcStatementDispatcher::Dispatch</a>(<span class="keyword">const</span> std::string &amp;line,</div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> <a class="code hl_struct" href="structDbcParseContext.html">DbcParseContext</a> &amp;context)<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> std::istringstream stream(line);</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> std::string keyword;</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> stream &gt;&gt; keyword;</div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> <span class="keyword">const</span> HandlerMap::const_iterator handler = m_handlers.find(keyword);</div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> <span class="keywordflow">if</span> (handler == m_handlers.end())</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> handler-&gt;second-&gt;Handle(line, context);</div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span>}</div>
</div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> </div>
<div class="foldopen" id="foldopen00468" data-start="{" data-end="}">
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"><a class="line" href="structDbcParseContext.html#ab5552dad944fde7fa6add6464ddb5369"> 468</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="structDbcParseContext.html#ab5552dad944fde7fa6add6464ddb5369">DbcParseContext::ResolveValueDescriptions</a>(<span class="keyword">const</span> std::string &amp;filePath) {</div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code hl_struct" href="structPendingValueDescriptions.html">PendingValueDescriptions</a> &amp;pending: <a class="code hl_variable" href="structDbcParseContext.html#ac22cba614ada3a28c7dcc1ea338b0e01">pendingValues</a>) {</div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span> <span class="keywordflow">try</span> {</div>
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span> <a class="code hl_struct" href="structFrameInfo.html">FrameInfo</a> *frame = FindUniqueFrame(<a class="code hl_variable" href="structDbcParseContext.html#a79bad0b8302e2156670461bab529259c">database</a>, pending.canId, pending.isExtended);</div>
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span> <a class="code hl_struct" href="structSignalInfo.html">SignalInfo</a> *signal = FindUniqueSignal(*frame, pending.signalName);</div>
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> ValueDescriptions::value_type &amp;entry: pending.descriptions) {</div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> <span class="keywordflow">if</span> (!signal-&gt;<a class="code hl_variable" href="structSignalInfo.html#a43f47d0433d0cc39076bd7278b46af9c">valueDescriptions</a>.insert(entry).second)</div>
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Duplicate VAL_ value key for signal: &quot;</span> + pending.signalName);</div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> }</div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception &amp;error) {</div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> <span class="keywordflow">throw</span> <a class="code hl_class" href="classDbcDiagnosticError.html">DbcDiagnosticError</a>(DbcDiagnosticCode::InvalidValueDescription,</div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> filePath, pending.lineNumber, error.what());</div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> }</div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> }</div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span>}</div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> </div>
<div class="foldopen" id="foldopen00440" data-start="{" data-end="}">
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"><a class="line" href="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a"> 440</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a">DbcValueDescriptionHandler::Handle</a>(<span class="keyword">const</span> std::string &amp;line, <a class="code hl_struct" href="structDbcParseContext.html">DbcParseContext</a> &amp;context)<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> <span class="keyword">static</span> <span class="keyword">const</span> std::regex header(R<span class="stringliteral">&quot;(^VAL_[ \t]+([^ \t]+)[ \t]+([^ \t;]+)[ \t]+(.*)$)&quot;);</span></div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span><span class="stringliteral"> </span><span class="keyword">static</span> <span class="keyword">const</span> std::regex pair(R<span class="stringliteral">&quot;dbc(^([^ \t]+)[ \t]+&quot;((?:[^&quot;\\]|\\[&quot;\\])*)&quot;)dbc&quot;);</span></div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span><span class="stringliteral"> std::smatch fields;</span></div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span><span class="stringliteral"> </span><span class="keywordflow">if</span> (!std::regex_match(line, fields, header))</div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Malformed or unsupported VAL_ statement.&quot;</span>);</div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> <span class="keyword">const</span> std::uint32_t rawId = ParseDecimal(fields[1].str(), std::numeric_limits&lt;std::uint32_t&gt;::max(), <span class="stringliteral">&quot;VAL_ CAN ID&quot;</span>);</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> <span class="keywordflow">if</span> ((rawId &amp; 0x60000000U) != 0U)</div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;VAL_ CAN ID exceeds the 29-bit identifier range.&quot;</span>);</div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> <a class="code hl_struct" href="structPendingValueDescriptions.html">PendingValueDescriptions</a> pending;</div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> NormalizeCanId(rawId, pending.<a class="code hl_variable" href="structPendingValueDescriptions.html#a5f0082ceeaee77e2f823661547aad844">canId</a>, pending.<a class="code hl_variable" href="structPendingValueDescriptions.html#a60f185e8d91010927c4aa3b4a750c9f4">isExtended</a>);</div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> pending.<a class="code hl_variable" href="structPendingValueDescriptions.html#ac35446db10ebda5a12349759613f8c90">signalName</a> = fields[2].str();</div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> pending.<a class="code hl_variable" href="structPendingValueDescriptions.html#a5c19cff09b0e83bd3cd6085213c17da8">lineNumber</a> = context.<a class="code hl_variable" href="structDbcParseContext.html#a57f5a7f613ecd0dadbafa7af736b7e54">lineNumber</a>;</div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> std::string rest = fields[3].str();</div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> <span class="keywordflow">while</span> (rest != <span class="stringliteral">&quot;;&quot;</span>) {</div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> <span class="keywordflow">if</span> (!std::regex_search(rest, fields, pair))</div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Malformed VAL_ value/description pair or missing semicolon.&quot;</span>);</div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> <span class="keyword">const</span> std::string number = fields[1].str();</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> <span class="keyword">const</span> RawSignalValue key = ParseValueKey(number);</div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> <span class="keyword">const</span> std::string description = UnescapeDescription(fields[2].str());</div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> <span class="keywordflow">if</span> (!pending.<a class="code hl_variable" href="structPendingValueDescriptions.html#a10ecbaeaed2cc3ac82fada73e7e041dd">descriptions</a>.emplace(key, description).second)</div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Duplicate VAL_ value key: &quot;</span> + number);</div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> <span class="keyword">const</span> std::size_t consumed = <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(fields.length());</div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> rest.erase(0, consumed);</div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> <span class="keywordflow">if</span> (!rest.empty() &amp;&amp; rest[0] != <span class="charliteral">&#39;;&#39;</span> &amp;&amp; rest[0] != <span class="charliteral">&#39; &#39;</span> &amp;&amp; rest[0] != <span class="charliteral">&#39;\t&#39;</span>)</div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Missing whitespace between VAL_ pairs.&quot;</span>);</div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> rest = dbc_detail::TrimText(rest);</div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> }</div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span> <span class="keywordflow">if</span> (pending.<a class="code hl_variable" href="structPendingValueDescriptions.html#a10ecbaeaed2cc3ac82fada73e7e041dd">descriptions</a>.empty())</div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;VAL_ requires at least one value/description pair.&quot;</span>);</div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span> context.<a class="code hl_variable" href="structDbcParseContext.html#ac22cba614ada3a28c7dcc1ea338b0e01">pendingValues</a>.push_back(std::move(pending));</div>
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span>}</div>
</div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> </div>
<div class="foldopen" id="foldopen00484" data-start="{" data-end="}">
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"><a class="line" href="classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e"> 484</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e">DbcMultiplexingHandler::Handle</a>(<span class="keyword">const</span> std::string &amp;line, <a class="code hl_struct" href="structDbcParseContext.html">DbcParseContext</a> &amp;context)<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> <span class="keyword">static</span> <span class="keyword">const</span> std::regex syntax(R<span class="stringliteral">&quot;(^SG_MUL_VAL_[ \t]+([0-9]+)[ \t]+([^ \t;]+)[ \t]+([^ \t;]+)[ \t]+(.+);[ \t]*$)&quot;);</span></div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span><span class="stringliteral"> </span><span class="keyword">static</span> <span class="keyword">const</span> std::regex rangeSyntax(R<span class="stringliteral">&quot;(^[ \t]*([0-9]+)[ \t]*-[ \t]*([0-9]+)[ \t]*$)&quot;);</span></div>
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span><span class="stringliteral"> std::smatch fields;</span></div>
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span><span class="stringliteral"> </span><span class="keywordflow">if</span> (!std::regex_match(line, fields, syntax))</div>
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Malformed SG_MUL_VAL_ statement.&quot;</span>);</div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span> <a class="code hl_struct" href="structPendingMultiplexing.html">PendingMultiplexing</a> pending;</div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> NormalizeCanId(ParseCanId(fields[1].str()), pending.canId, pending.isExtended);</div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span> pending.signalName = fields[2].str();</div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span> pending.selectorName = fields[3].str();</div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span> pending.lineNumber = context.<a class="code hl_variable" href="structDbcParseContext.html#a57f5a7f613ecd0dadbafa7af736b7e54">lineNumber</a>;</div>
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span> <span class="keyword">const</span> std::string list = fields[4].str();</div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span> std::size_t begin = 0U;</div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span> <span class="keywordflow">for</span> (;;) {</div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span> <span class="keyword">const</span> std::size_t comma = list.find(<span class="charliteral">&#39;,&#39;</span>, begin);</div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span> <span class="keyword">const</span> std::string item = list.substr(begin, comma == std::string::npos ? comma : comma - begin);</div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> <span class="keywordflow">if</span> (!std::regex_match(item, fields, rangeSyntax))</div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Malformed multiplex range.&quot;</span>);</div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> <a class="code hl_struct" href="structMultiplexRange.html">MultiplexRange</a> range;</div>
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span> <span class="keyword">const</span> std::string lower = fields[1].str();</div>
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span> <span class="keyword">const</span> std::string upper = fields[2].str();</div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span> <span class="keyword">const</span> std::from_chars_result low = std::from_chars(lower.data(), lower.data() + lower.size(), range.minimum);</div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span> <span class="keyword">const</span> std::from_chars_result high = std::from_chars(upper.data(), upper.data() + upper.size(), range.maximum);</div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> <span class="keywordflow">if</span> (low.ec != std::errc() || high.ec != std::errc() || range.minimum &gt; range.maximum)</div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Invalid multiplex range.&quot;</span>);</div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span> pending.ranges.push_back(range);</div>
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span> <span class="keywordflow">if</span> (comma == std::string::npos)</div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span> begin = comma + 1U;</div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span> }</div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span> context.pendingMultiplexing.push_back(std::move(pending));</div>
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span>}</div>
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span> </div>
<div class="foldopen" id="foldopen00473" data-start="{" data-end="}">
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"><a class="line" href="structDbcParseContext.html#ab5552dad944fde7fa6add6464ddb5369"> 473</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="structDbcParseContext.html#ab5552dad944fde7fa6add6464ddb5369">DbcParseContext::ResolveValueDescriptions</a>(<span class="keyword">const</span> std::string &amp;filePath) {</div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code hl_struct" href="structPendingValueDescriptions.html">PendingValueDescriptions</a> &amp;pending: <a class="code hl_variable" href="structDbcParseContext.html#ac22cba614ada3a28c7dcc1ea338b0e01">pendingValues</a>) {</div>
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> <span class="keywordflow">try</span> {</div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> <a class="code hl_struct" href="structFrameInfo.html">FrameInfo</a> *frame = FindUniqueFrame(<a class="code hl_variable" href="structDbcParseContext.html#a79bad0b8302e2156670461bab529259c">database</a>, pending.canId, pending.isExtended);</div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> <a class="code hl_struct" href="structSignalInfo.html">SignalInfo</a> *signal = FindUniqueSignal(*frame, pending.signalName);</div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> ValueDescriptions::value_type &amp;entry: pending.descriptions) {</div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> <span class="keywordflow">if</span> (!signal-&gt;<a class="code hl_variable" href="structSignalInfo.html#a43f47d0433d0cc39076bd7278b46af9c">valueDescriptions</a>.insert(entry).second)</div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Duplicate VAL_ value key for signal: &quot;</span> + pending.signalName);</div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> }</div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception &amp;error) {</div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> <span class="keywordflow">throw</span> <a class="code hl_class" href="classDbcDiagnosticError.html">DbcDiagnosticError</a>(DbcDiagnosticCode::InvalidValueDescription,</div>
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span> filePath, pending.lineNumber, error.what());</div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> }</div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span> }</div>
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span>}</div>
</div>
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span> </div>
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span><span class="keywordtype">void</span> DbcParseContext::ResolveMultiplexing(<span class="keyword">const</span> std::string &amp;filePath) {</div>
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code hl_struct" href="structPendingMultiplexing.html">PendingMultiplexing</a> &amp;pending: pendingMultiplexing) {</div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span> <span class="keywordflow">try</span> {</div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span> <a class="code hl_struct" href="structFrameInfo.html">FrameInfo</a> *frame = FindUniqueFrame(<a class="code hl_variable" href="structDbcParseContext.html#a79bad0b8302e2156670461bab529259c">database</a>, pending.canId, pending.isExtended, <span class="stringliteral">&quot;SG_MUL_VAL_&quot;</span>);</div>
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span> <a class="code hl_struct" href="structSignalInfo.html">SignalInfo</a> *signal = FindUniqueSignal(*frame, pending.signalName, <span class="stringliteral">&quot;SG_MUL_VAL_&quot;</span>);</div>
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span> <a class="code hl_struct" href="structSignalInfo.html">SignalInfo</a> *selector = FindUniqueSignal(*frame, pending.selectorName, <span class="stringliteral">&quot;SG_MUL_VAL_&quot;</span>);</div>
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"> 523</span> <span class="keywordflow">if</span> (!IsMultiplexSelector(selector-&gt;<a class="code hl_variable" href="structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8">multiplexing</a>.role) || selector-&gt;<a class="code hl_variable" href="structSignalInfo.html#a52a52b320eef92fbcb4626307f9a498f">isSigned</a>)</div>
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"> 524</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Referenced signal must be an unsigned multiplex selector.&quot;</span>);</div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span> <span class="keywordflow">if</span> (!signal-&gt;<a class="code hl_variable" href="structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8">multiplexing</a>.<a class="code hl_variable" href="structMultiplexing.html#aa91e54403c78a663686b2fd22282afaf">selector</a>.empty() &amp;&amp; signal-&gt;<a class="code hl_variable" href="structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8">multiplexing</a>.<a class="code hl_variable" href="structMultiplexing.html#aa91e54403c78a663686b2fd22282afaf">selector</a> != pending.selectorName)</div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Multiple parent selectors for one signal are unsupported.&quot;</span>);</div>
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"> 527</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code hl_struct" href="structMultiplexRange.html">MultiplexRange</a> &amp;range: pending.ranges) {</div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span> <span class="keywordflow">if</span> (selector-&gt;<a class="code hl_variable" href="structSignalInfo.html#a1008b5201f71848177217bd52fb84baa">length</a> &lt; 64U &amp;&amp; range.maximum &gt;= (std::uint64_t(1U) &lt;&lt; selector-&gt;<a class="code hl_variable" href="structSignalInfo.html#a1008b5201f71848177217bd52fb84baa">length</a>))</div>
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"> 529</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Branch value exceeds selector raw range.&quot;</span>);</div>
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"> 530</span> }</div>
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"> 531</span> signal-&gt;<a class="code hl_variable" href="structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8">multiplexing</a>.<a class="code hl_variable" href="structMultiplexing.html#aa91e54403c78a663686b2fd22282afaf">selector</a> = pending.selectorName;</div>
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span> signal-&gt;<a class="code hl_variable" href="structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8">multiplexing</a>.<a class="code hl_variable" href="structMultiplexing.html#aa174ac4a3af9b361d2de7517dfd4b69e">ranges</a>.insert(signal-&gt;<a class="code hl_variable" href="structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8">multiplexing</a>.<a class="code hl_variable" href="structMultiplexing.html#aa174ac4a3af9b361d2de7517dfd4b69e">ranges</a>.end(), pending.ranges.begin(), pending.ranges.end());</div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span> <span class="keywordflow">if</span> (!IsMultiplexSelector(signal-&gt;<a class="code hl_variable" href="structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8">multiplexing</a>.role))</div>
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span> signal-&gt;<a class="code hl_variable" href="structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8">multiplexing</a>.role = MultiplexRole::Branch;</div>
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno"> 535</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"> 536</span> signal-&gt;<a class="code hl_variable" href="structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8">multiplexing</a>.role = MultiplexRole::BranchSelector;</div>
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"> 537</span> } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception &amp;error) {</div>
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span> <span class="keywordflow">throw</span> <a class="code hl_class" href="classDbcDiagnosticError.html">DbcDiagnosticError</a>(DbcDiagnosticCode::InvalidMultiplexing, filePath, pending.lineNumber, error.what());</div>
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span> }</div>
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"> 540</span> }</div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span>}</div>
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span> </div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span><span class="keyword">namespace </span>{</div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span> std::vector&lt;std::uint64_t&gt; SignalBits(<span class="keyword">const</span> <a class="code hl_struct" href="structSignalInfo.html">SignalInfo</a> &amp;signal) {</div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span> std::vector&lt;std::uint64_t&gt; bits;</div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span> std::uint64_t bit = signal.<a class="code hl_variable" href="structSignalInfo.html#ace290724f9801521609aedaa946d61f1">startBit</a>;</div>
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"> 547</span> <span class="keywordflow">for</span> (std::uint32_t index = 0U; index &lt; signal.<a class="code hl_variable" href="structSignalInfo.html#a1008b5201f71848177217bd52fb84baa">length</a>; ++index) {</div>
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"> 548</span> bits.push_back(bit);</div>
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"> 549</span> bit = NextSignalBit(bit, signal.<a class="code hl_variable" href="structSignalInfo.html#af363b1563fb4c7cc8973f9a80c06846c">isLittleEndian</a>);</div>
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"> 550</span> }</div>
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"> 551</span> <span class="keywordflow">return</span> bits;</div>
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span> }</div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span> </div>
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span> <span class="keywordtype">bool</span> SignalsOverlap(<span class="keyword">const</span> <a class="code hl_struct" href="structSignalInfo.html">SignalInfo</a> &amp;first, <span class="keyword">const</span> <a class="code hl_struct" href="structSignalInfo.html">SignalInfo</a> &amp;second) {</div>
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"> 555</span> <span class="keyword">const</span> std::vector&lt;std::uint64_t&gt; firstBits = SignalBits(first);</div>
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"> 556</span> <span class="keyword">const</span> std::vector&lt;std::uint64_t&gt; secondBits = SignalBits(second);</div>
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"> 557</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> std::uint64_t firstBit : firstBits) {</div>
<div class="line"><a id="l00558" name="l00558"></a><span class="lineno"> 558</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> std::uint64_t secondBit : secondBits) {</div>
<div class="line"><a id="l00559" name="l00559"></a><span class="lineno"> 559</span> <span class="keywordflow">if</span> (firstBit == secondBit)</div>
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno"> 560</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"> 561</span> }</div>
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno"> 562</span> }</div>
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"> 563</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"> 564</span> }</div>
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno"> 565</span>}</div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"> 566</span> </div>
<div class="foldopen" id="foldopen00567" data-start="{" data-end="}">
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno"><a class="line" href="structDbcParseContext.html#a908056de0a97316a4ebecb3f99cc400b"> 567</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="structDbcParseContext.html#a908056de0a97316a4ebecb3f99cc400b">DbcParseContext::ValidateMultiplexing</a>(<span class="keyword">const</span> std::string &amp;filePath)<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno"> 568</span> <span class="keywordflow">for</span> (std::size_t frameIndex = 0U; frameIndex &lt; <a class="code hl_variable" href="structDbcParseContext.html#a79bad0b8302e2156670461bab529259c">database</a>.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>.size(); ++frameIndex) {</div>
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"> 569</span> <span class="keyword">const</span> <a class="code hl_struct" href="structFrameInfo.html">FrameInfo</a> &amp;frame = <a class="code hl_variable" href="structDbcParseContext.html#a79bad0b8302e2156670461bab529259c">database</a>.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>[frameIndex];</div>
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno"> 570</span> <span class="keywordflow">try</span> {</div>
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno"> 571</span> <span class="keyword">const</span> <a class="code hl_class" href="classdbc__detail_1_1MultiplexGraph.html">dbc_detail::MultiplexGraph</a> graph(frame.signals);</div>
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"> 572</span> <span class="keywordflow">for</span> (std::size_t index = 0U; index &lt; frame.signals.size(); ++index) {</div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"> 573</span> <span class="keyword">const</span> <a class="code hl_struct" href="structSignalInfo.html">SignalInfo</a> &amp;signal = frame.signals[index];</div>
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"> 574</span> <span class="keywordflow">if</span> (IsMultiplexSelector(signal.<a class="code hl_variable" href="structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8">multiplexing</a>.role) &amp;&amp; signal.<a class="code hl_variable" href="structSignalInfo.html#a52a52b320eef92fbcb4626307f9a498f">isSigned</a>)</div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"> 575</span> <span class="keywordflow">throw</span> <a class="code hl_class" href="classdbc__detail_1_1MultiplexError.html">dbc_detail::MultiplexError</a>(index, <span class="stringliteral">&quot;Multiplex selectors must be unsigned.&quot;</span>);</div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"> 576</span> <span class="keywordflow">for</span> (std::size_t previous = 0U; previous &lt; index; ++previous) {</div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span> <span class="keywordflow">if</span> (!graph.AreMutuallyExclusive(index, previous) &amp;&amp; SignalsOverlap(signal, frame.signals[previous]))</div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"> 578</span> <span class="keywordflow">throw</span> <a class="code hl_class" href="classdbc__detail_1_1MultiplexError.html">dbc_detail::MultiplexError</a>(index, <span class="stringliteral">&quot;Signals overlap without mutually exclusive multiplexing conditions.&quot;</span>);</div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span> }</div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"> 580</span> }</div>
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"> 581</span> } <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code hl_class" href="classdbc__detail_1_1MultiplexError.html">dbc_detail::MultiplexError</a> &amp;error) {</div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"> 582</span> <span class="keywordflow">throw</span> <a class="code hl_class" href="classDbcDiagnosticError.html">DbcDiagnosticError</a>(DbcDiagnosticCode::InvalidMultiplexing, filePath,</div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"> 583</span> <a class="code hl_variable" href="structDbcParseContext.html#af8b411c938a2ea9100c4aaae452e6546">signalLines</a>[frameIndex][error.index], error.what());</div>
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno"> 584</span> }</div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno"> 585</span> }</div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"> 586</span>}</div>
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span> </div>
<div class="foldopen" id="foldopen00489" data-start="{" data-end="}">
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"><a class="line" href="classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e"> 489</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e">DbcMultiplexingHandler::Handle</a>(<span class="keyword">const</span> std::string &amp;line, <a class="code hl_struct" href="structDbcParseContext.html">DbcParseContext</a> &amp;context)<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span> <span class="keyword">static</span> <span class="keyword">const</span> std::regex syntax(R<span class="stringliteral">&quot;(^SG_MUL_VAL_[ \t]+([0-9]+)[ \t]+([^ \t;]+)[ \t]+([^ \t;]+)[ \t]+(.+);[ \t]*$)&quot;);</span></div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span><span class="stringliteral"> </span><span class="keyword">static</span> <span class="keyword">const</span> std::regex rangeSyntax(R<span class="stringliteral">&quot;(^[ \t]*([0-9]+)[ \t]*-[ \t]*([0-9]+)[ \t]*$)&quot;);</span></div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span><span class="stringliteral"> std::smatch fields;</span></div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span><span class="stringliteral"> </span><span class="keywordflow">if</span> (!std::regex_match(line, fields, syntax))</div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Malformed SG_MUL_VAL_ statement.&quot;</span>);</div>
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span> <a class="code hl_struct" href="structPendingMultiplexing.html">PendingMultiplexing</a> pending;</div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span> NormalizeCanId(ParseCanId(fields[1].str()), pending.canId, pending.isExtended);</div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span> pending.signalName = fields[2].str();</div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span> pending.selectorName = fields[3].str();</div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span> pending.lineNumber = context.<a class="code hl_variable" href="structDbcParseContext.html#a57f5a7f613ecd0dadbafa7af736b7e54">lineNumber</a>;</div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> <span class="keyword">const</span> std::string list = fields[4].str();</div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span> std::size_t begin = 0U;</div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> <span class="keywordflow">for</span> (;;) {</div>
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span> <span class="keyword">const</span> std::size_t comma = list.find(<span class="charliteral">&#39;,&#39;</span>, begin);</div>
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span> <span class="keyword">const</span> std::string item = list.substr(begin, comma == std::string::npos ? comma : comma - begin);</div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span> <span class="keywordflow">if</span> (!std::regex_match(item, fields, rangeSyntax))</div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Malformed multiplex range.&quot;</span>);</div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> <a class="code hl_struct" href="structMultiplexRange.html">MultiplexRange</a> range;</div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span> <span class="keyword">const</span> std::string lower = fields[1].str();</div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span> <span class="keyword">const</span> std::string upper = fields[2].str();</div>
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span> <span class="keyword">const</span> std::from_chars_result low = std::from_chars(lower.data(), lower.data() + lower.size(), range.minimum);</div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span> <span class="keyword">const</span> std::from_chars_result high = std::from_chars(upper.data(), upper.data() + upper.size(), range.maximum);</div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span> <span class="keywordflow">if</span> (low.ec != std::errc() || high.ec != std::errc() || range.minimum &gt; range.maximum)</div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Invalid multiplex range.&quot;</span>);</div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span> pending.ranges.push_back(range);</div>
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span> <span class="keywordflow">if</span> (comma == std::string::npos)</div>
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span> begin = comma + 1U;</div>
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span> }</div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span> context.pendingMultiplexing.push_back(std::move(pending));</div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span>}</div>
</div>
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span> </div>
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span><span class="keywordtype">void</span> DbcParseContext::ResolveMultiplexing(<span class="keyword">const</span> std::string &amp;filePath) {</div>
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"> 523</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code hl_struct" href="structPendingMultiplexing.html">PendingMultiplexing</a> &amp;pending: pendingMultiplexing) {</div>
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"> 524</span> <span class="keywordflow">try</span> {</div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span> <a class="code hl_struct" href="structFrameInfo.html">FrameInfo</a> *frame = FindUniqueFrame(<a class="code hl_variable" href="structDbcParseContext.html#a79bad0b8302e2156670461bab529259c">database</a>, pending.canId, pending.isExtended, <span class="stringliteral">&quot;SG_MUL_VAL_&quot;</span>);</div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span> <a class="code hl_struct" href="structSignalInfo.html">SignalInfo</a> *signal = FindUniqueSignal(*frame, pending.signalName, <span class="stringliteral">&quot;SG_MUL_VAL_&quot;</span>);</div>
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"> 527</span> <a class="code hl_struct" href="structSignalInfo.html">SignalInfo</a> *selector = FindUniqueSignal(*frame, pending.selectorName, <span class="stringliteral">&quot;SG_MUL_VAL_&quot;</span>);</div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span> <span class="keywordflow">if</span> (!IsMultiplexSelector(selector-&gt;<a class="code hl_variable" href="structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8">multiplexing</a>.role) || selector-&gt;<a class="code hl_variable" href="structSignalInfo.html#a52a52b320eef92fbcb4626307f9a498f">isSigned</a>)</div>
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"> 529</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Referenced signal must be an unsigned multiplex selector.&quot;</span>);</div>
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"> 530</span> <span class="keywordflow">if</span> (!signal-&gt;<a class="code hl_variable" href="structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8">multiplexing</a>.<a class="code hl_variable" href="structMultiplexing.html#aa91e54403c78a663686b2fd22282afaf">selector</a>.empty() &amp;&amp; signal-&gt;<a class="code hl_variable" href="structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8">multiplexing</a>.<a class="code hl_variable" href="structMultiplexing.html#aa91e54403c78a663686b2fd22282afaf">selector</a> != pending.selectorName)</div>
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"> 531</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Multiple parent selectors for one signal are unsupported.&quot;</span>);</div>
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code hl_struct" href="structMultiplexRange.html">MultiplexRange</a> &amp;range: pending.ranges) {</div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span> <span class="keywordflow">if</span> (selector-&gt;<a class="code hl_variable" href="structSignalInfo.html#a1008b5201f71848177217bd52fb84baa">length</a> &lt; 64U &amp;&amp; range.maximum &gt;= (std::uint64_t(1U) &lt;&lt; selector-&gt;<a class="code hl_variable" href="structSignalInfo.html#a1008b5201f71848177217bd52fb84baa">length</a>))</div>
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Branch value exceeds selector raw range.&quot;</span>);</div>
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno"> 535</span> }</div>
<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"> 536</span> signal-&gt;<a class="code hl_variable" href="structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8">multiplexing</a>.<a class="code hl_variable" href="structMultiplexing.html#aa91e54403c78a663686b2fd22282afaf">selector</a> = pending.selectorName;</div>
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"> 537</span> signal-&gt;<a class="code hl_variable" href="structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8">multiplexing</a>.<a class="code hl_variable" href="structMultiplexing.html#aa174ac4a3af9b361d2de7517dfd4b69e">ranges</a>.insert(signal-&gt;<a class="code hl_variable" href="structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8">multiplexing</a>.<a class="code hl_variable" href="structMultiplexing.html#aa174ac4a3af9b361d2de7517dfd4b69e">ranges</a>.end(), pending.ranges.begin(), pending.ranges.end());</div>
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span> <span class="keywordflow">if</span> (!IsMultiplexSelector(signal-&gt;<a class="code hl_variable" href="structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8">multiplexing</a>.role))</div>
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span> signal-&gt;<a class="code hl_variable" href="structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8">multiplexing</a>.role = MultiplexRole::Branch;</div>
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"> 540</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span> signal-&gt;<a class="code hl_variable" href="structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8">multiplexing</a>.role = MultiplexRole::BranchSelector;</div>
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span> } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception &amp;error) {</div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span> <span class="keywordflow">throw</span> <a class="code hl_class" href="classDbcDiagnosticError.html">DbcDiagnosticError</a>(DbcDiagnosticCode::InvalidMultiplexing, filePath, pending.lineNumber, error.what());</div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span> }</div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span> }</div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span>}</div>
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"> 547</span> </div>
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"> 548</span><span class="keyword">namespace </span>{</div>
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"> 549</span> std::vector&lt;std::uint64_t&gt; SignalBits(<span class="keyword">const</span> <a class="code hl_struct" href="structSignalInfo.html">SignalInfo</a> &amp;signal) {</div>
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"> 550</span> std::vector&lt;std::uint64_t&gt; bits;</div>
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"> 551</span> std::uint64_t bit = signal.<a class="code hl_variable" href="structSignalInfo.html#ace290724f9801521609aedaa946d61f1">startBit</a>;</div>
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span> <span class="keywordflow">for</span> (std::uint32_t index = 0U; index &lt; signal.<a class="code hl_variable" href="structSignalInfo.html#a1008b5201f71848177217bd52fb84baa">length</a>; ++index) {</div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span> bits.push_back(bit);</div>
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span> bit = NextSignalBit(bit, signal.<a class="code hl_variable" href="structSignalInfo.html#af363b1563fb4c7cc8973f9a80c06846c">isLittleEndian</a>);</div>
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"> 555</span> }</div>
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"> 556</span> <span class="keywordflow">return</span> bits;</div>
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"> 557</span> }</div>
<div class="line"><a id="l00558" name="l00558"></a><span class="lineno"> 558</span> </div>
<div class="line"><a id="l00559" name="l00559"></a><span class="lineno"> 559</span> <span class="keywordtype">bool</span> SignalsOverlap(<span class="keyword">const</span> <a class="code hl_struct" href="structSignalInfo.html">SignalInfo</a> &amp;first, <span class="keyword">const</span> <a class="code hl_struct" href="structSignalInfo.html">SignalInfo</a> &amp;second) {</div>
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno"> 560</span> <span class="keyword">const</span> std::vector&lt;std::uint64_t&gt; firstBits = SignalBits(first);</div>
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"> 561</span> <span class="keyword">const</span> std::vector&lt;std::uint64_t&gt; secondBits = SignalBits(second);</div>
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno"> 562</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> std::uint64_t firstBit : firstBits) {</div>
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"> 563</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> std::uint64_t secondBit : secondBits) {</div>
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"> 564</span> <span class="keywordflow">if</span> (firstBit == secondBit)</div>
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno"> 565</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"> 566</span> }</div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno"> 567</span> }</div>
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno"> 568</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"> 569</span> }</div>
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno"> 570</span>}</div>
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno"> 571</span> </div>
<div class="foldopen" id="foldopen00572" data-start="{" data-end="}">
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"><a class="line" href="structDbcParseContext.html#a908056de0a97316a4ebecb3f99cc400b"> 572</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="structDbcParseContext.html#a908056de0a97316a4ebecb3f99cc400b">DbcParseContext::ValidateMultiplexing</a>(<span class="keyword">const</span> std::string &amp;filePath)<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"> 573</span> <span class="keywordflow">for</span> (std::size_t frameIndex = 0U; frameIndex &lt; <a class="code hl_variable" href="structDbcParseContext.html#a79bad0b8302e2156670461bab529259c">database</a>.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>.size(); ++frameIndex) {</div>
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"> 574</span> <span class="keyword">const</span> <a class="code hl_struct" href="structFrameInfo.html">FrameInfo</a> &amp;frame = <a class="code hl_variable" href="structDbcParseContext.html#a79bad0b8302e2156670461bab529259c">database</a>.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>[frameIndex];</div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"> 575</span> <span class="keywordflow">try</span> {</div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"> 576</span> <span class="keyword">const</span> <a class="code hl_class" href="classdbc__detail_1_1MultiplexGraph.html">dbc_detail::MultiplexGraph</a> graph(frame.signals);</div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span> <span class="keywordflow">for</span> (std::size_t index = 0U; index &lt; frame.signals.size(); ++index) {</div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"> 578</span> <span class="keyword">const</span> <a class="code hl_struct" href="structSignalInfo.html">SignalInfo</a> &amp;signal = frame.signals[index];</div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span> <span class="keywordflow">if</span> (IsMultiplexSelector(signal.<a class="code hl_variable" href="structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8">multiplexing</a>.role) &amp;&amp; signal.<a class="code hl_variable" href="structSignalInfo.html#a52a52b320eef92fbcb4626307f9a498f">isSigned</a>)</div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"> 580</span> <span class="keywordflow">throw</span> <a class="code hl_class" href="classdbc__detail_1_1MultiplexError.html">dbc_detail::MultiplexError</a>(index, <span class="stringliteral">&quot;Multiplex selectors must be unsigned.&quot;</span>);</div>
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"> 581</span> <span class="keywordflow">for</span> (std::size_t previous = 0U; previous &lt; index; ++previous) {</div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"> 582</span> <span class="keywordflow">if</span> (!graph.AreMutuallyExclusive(index, previous) &amp;&amp; SignalsOverlap(signal, frame.signals[previous]))</div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"> 583</span> <span class="keywordflow">throw</span> <a class="code hl_class" href="classdbc__detail_1_1MultiplexError.html">dbc_detail::MultiplexError</a>(index, <span class="stringliteral">&quot;Signals overlap without mutually exclusive multiplexing conditions.&quot;</span>);</div>
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno"> 584</span> }</div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno"> 585</span> }</div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"> 586</span> } <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code hl_class" href="classdbc__detail_1_1MultiplexError.html">dbc_detail::MultiplexError</a> &amp;error) {</div>
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno"> 587</span> <span class="keywordflow">throw</span> <a class="code hl_class" href="classDbcDiagnosticError.html">DbcDiagnosticError</a>(DbcDiagnosticCode::InvalidMultiplexing, filePath,</div>
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno"> 588</span> <a class="code hl_variable" href="structDbcParseContext.html#af8b411c938a2ea9100c4aaae452e6546">signalLines</a>[frameIndex][error.index], error.what());</div>
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno"> 589</span> }</div>
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno"> 590</span> }</div>
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno"> 591</span>}</div>
</div>
<div class="ttc" id="aclassDbcCommentHandler_html_aa4fce77b585a441d251d8535ef7a51a6"><div class="ttname"><a href="classDbcCommentHandler.html#aa4fce77b585a441d251d8535ef7a51a6">DbcCommentHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00339">dbc_statement_handler.cpp:339</a></div></div>
<div class="ttc" id="aclassDbcDiagnosticError_html"><div class="ttname"><a href="classDbcDiagnosticError.html">DbcDiagnosticError</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00032">dbc_statement_handler.h:32</a></div></div>
<div class="ttc" id="aclassDbcFrameHandler_html_a0d3f43bbcc5e191460bc31827e74ce89"><div class="ttname"><a href="classDbcFrameHandler.html#a0d3f43bbcc5e191460bc31827e74ce89">DbcFrameHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00311">dbc_statement_handler.cpp:311</a></div></div>
<div class="ttc" id="aclassDbcHeaderHandler_html_a1e43a9dcf157f4d4418032d9e9711693"><div class="ttname"><a href="classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693">DbcHeaderHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00421">dbc_statement_handler.cpp:421</a></div></div>
<div class="ttc" id="aclassDbcMultiplexingHandler_html_a16f9e9f898640200477d2dcc8bab442e"><div class="ttname"><a href="classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e">DbcMultiplexingHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00484">dbc_statement_handler.cpp:484</a></div></div>
<div class="ttc" id="aclassDbcHeaderHandler_html_a1e43a9dcf157f4d4418032d9e9711693"><div class="ttname"><a href="classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693">DbcHeaderHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00426">dbc_statement_handler.cpp:426</a></div></div>
<div class="ttc" id="aclassDbcMultiplexingHandler_html_a16f9e9f898640200477d2dcc8bab442e"><div class="ttname"><a href="classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e">DbcMultiplexingHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00489">dbc_statement_handler.cpp:489</a></div></div>
<div class="ttc" id="aclassDbcSignalHandler_html_ad7d891ec1414fb645f85ccd410f2737b"><div class="ttname"><a href="classDbcSignalHandler.html#ad7d891ec1414fb645f85ccd410f2737b">DbcSignalHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00325">dbc_statement_handler.cpp:325</a></div></div>
<div class="ttc" id="aclassDbcStatementDispatcher_html_a2f064359b59d8644b8a8196653d47482"><div class="ttname"><a href="classDbcStatementDispatcher.html#a2f064359b59d8644b8a8196653d47482">DbcStatementDispatcher::DbcStatementDispatcher</a></div><div class="ttdeci">DbcStatementDispatcher()</div><div class="ttdoc">Register supported statement handlers through TypeFactory.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00403">dbc_statement_handler.cpp:403</a></div></div>
<div class="ttc" id="aclassDbcStatementDispatcher_html_a495c2d5c7ebb8103b1987cdd87c142ed"><div class="ttname"><a href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed">DbcStatementDispatcher::Dispatch</a></div><div class="ttdeci">bool Dispatch(const std::string &amp;line, DbcParseContext &amp;context) const</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00423">dbc_statement_handler.cpp:423</a></div></div>
<div class="ttc" id="aclassDbcValueDescriptionHandler_html_a653e13364f396b54244edc2c0fdd831a"><div class="ttname"><a href="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a">DbcValueDescriptionHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00435">dbc_statement_handler.cpp:435</a></div></div>
<div class="ttc" id="aclassDbcStatementDispatcher_html_a495c2d5c7ebb8103b1987cdd87c142ed"><div class="ttname"><a href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed">DbcStatementDispatcher::Dispatch</a></div><div class="ttdeci">bool Dispatch(const std::string &amp;line, DbcParseContext &amp;context) const</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00428">dbc_statement_handler.cpp:428</a></div></div>
<div class="ttc" id="aclassDbcUnsupportedSignalTypeHandler_html_ae4132fcdbb134d51143133c1fb83a9df"><div class="ttname"><a href="classDbcUnsupportedSignalTypeHandler.html#ae4132fcdbb134d51143133c1fb83a9df">DbcUnsupportedSignalTypeHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00422">dbc_statement_handler.cpp:422</a></div></div>
<div class="ttc" id="aclassDbcValueDescriptionHandler_html_a653e13364f396b54244edc2c0fdd831a"><div class="ttname"><a href="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a">DbcValueDescriptionHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00440">dbc_statement_handler.cpp:440</a></div></div>
<div class="ttc" id="aclassdbc__detail_1_1MultiplexError_html"><div class="ttname"><a href="classdbc__detail_1_1MultiplexError.html">dbc_detail::MultiplexError</a></div><div class="ttdef"><b>Definition</b> <a href="multiplex__graph_8h_source.html#l00011">multiplex_graph.h:11</a></div></div>
<div class="ttc" id="aclassdbc__detail_1_1MultiplexGraph_html"><div class="ttname"><a href="classdbc__detail_1_1MultiplexGraph.html">dbc_detail::MultiplexGraph</a></div><div class="ttdef"><b>Definition</b> <a href="multiplex__graph_8h_source.html#l00019">multiplex_graph.h:19</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>
@@ -721,9 +729,9 @@ $(document).ready(function(){initNavTree('dbc__statement__handler_8cpp_source.ht
<div class="ttc" id="astructDbcParseContext_html_a57f5a7f613ecd0dadbafa7af736b7e54"><div class="ttname"><a href="structDbcParseContext.html#a57f5a7f613ecd0dadbafa7af736b7e54">DbcParseContext::lineNumber</a></div><div class="ttdeci">std::size_t lineNumber</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00064">dbc_statement_handler.h:64</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_a79bad0b8302e2156670461bab529259c"><div class="ttname"><a href="structDbcParseContext.html#a79bad0b8302e2156670461bab529259c">DbcParseContext::database</a></div><div class="ttdeci">DbcDatabase &amp; database</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00061">dbc_statement_handler.h:61</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_a854abba7bbf4adfc948554c254156e60"><div class="ttname"><a href="structDbcParseContext.html#a854abba7bbf4adfc948554c254156e60">DbcParseContext::pendingComments</a></div><div class="ttdeci">std::vector&lt; PendingComment &gt; pendingComments</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00074">dbc_statement_handler.h:74</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_a908056de0a97316a4ebecb3f99cc400b"><div class="ttname"><a href="structDbcParseContext.html#a908056de0a97316a4ebecb3f99cc400b">DbcParseContext::ValidateMultiplexing</a></div><div class="ttdeci">void ValidateMultiplexing(const std::string &amp;filePath) const</div><div class="ttdoc">Validate selectors, branch ranges, and signal overlap.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00567">dbc_statement_handler.cpp:567</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_a908056de0a97316a4ebecb3f99cc400b"><div class="ttname"><a href="structDbcParseContext.html#a908056de0a97316a4ebecb3f99cc400b">DbcParseContext::ValidateMultiplexing</a></div><div class="ttdeci">void ValidateMultiplexing(const std::string &amp;filePath) const</div><div class="ttdoc">Validate selectors, branch ranges, and signal overlap.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00572">dbc_statement_handler.cpp:572</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_a93f8ece0f3d16bd79f631ae07afa7b54"><div class="ttname"><a href="structDbcParseContext.html#a93f8ece0f3d16bd79f631ae07afa7b54">DbcParseContext::enableJ1939</a></div><div class="ttdeci">bool enableJ1939</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00063">dbc_statement_handler.h:63</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_ab5552dad944fde7fa6add6464ddb5369"><div class="ttname"><a href="structDbcParseContext.html#ab5552dad944fde7fa6add6464ddb5369">DbcParseContext::ResolveValueDescriptions</a></div><div class="ttdeci">void ResolveValueDescriptions(const std::string &amp;filePath)</div><div class="ttdoc">Resolve deferred raw descriptions against unique targets.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00468">dbc_statement_handler.cpp:468</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_ab5552dad944fde7fa6add6464ddb5369"><div class="ttname"><a href="structDbcParseContext.html#ab5552dad944fde7fa6add6464ddb5369">DbcParseContext::ResolveValueDescriptions</a></div><div class="ttdeci">void ResolveValueDescriptions(const std::string &amp;filePath)</div><div class="ttdoc">Resolve deferred raw descriptions against unique targets.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00473">dbc_statement_handler.cpp:473</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_ac22cba614ada3a28c7dcc1ea338b0e01"><div class="ttname"><a href="structDbcParseContext.html#ac22cba614ada3a28c7dcc1ea338b0e01">DbcParseContext::pendingValues</a></div><div class="ttdeci">std::vector&lt; PendingValueDescriptions &gt; pendingValues</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00065">dbc_statement_handler.h:65</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_aeae343c57a244634489a0e0b960155d7"><div class="ttname"><a href="structDbcParseContext.html#aeae343c57a244634489a0e0b960155d7">DbcParseContext::ResolveComments</a></div><div class="ttdeci">void ResolveComments(const std::string &amp;filePath)</div><div class="ttdoc">Resolve deferred comments after all definitions are known.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00385">dbc_statement_handler.cpp:385</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_af31b56247edff7f025957ae023a56913"><div class="ttname"><a href="structDbcParseContext.html#af31b56247edff7f025957ae023a56913">DbcParseContext::currentFrame</a></div><div class="ttdeci">FrameInfo * currentFrame</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00062">dbc_statement_handler.h:62</a></div></div>
@@ -242,35 +242,42 @@ $(document).ready(function(){initNavTree('dbc__statement__handler_8h_source.html
</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> </div>
<div class="foldopen" id="foldopen00137" data-start="{" data-end="};">
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"><a class="line" href="classDbcHeaderHandler.html"> 137</a></span><span class="keyword">class </span><a class="code hl_class" href="classDbcHeaderHandler.html">DbcHeaderHandler</a> : <span class="keyword">public</span> <a class="code hl_class" href="classDbcStatementHandler.html">DbcStatementHandler</a> {</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"><a class="line" href="classDbcUnsupportedSignalTypeHandler.html"> 137</a></span><span class="keyword">class </span><a class="code hl_class" href="classDbcUnsupportedSignalTypeHandler.html">DbcUnsupportedSignalTypeHandler</a> : <span class="keyword">public</span> <a class="code hl_class" href="classDbcStatementHandler.html">DbcStatementHandler</a> {</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693">Handle</a>(<span class="keyword">const</span> std::string &amp;line, <a class="code hl_struct" href="structDbcParseContext.html">DbcParseContext</a> &amp;context) <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classDbcUnsupportedSignalTypeHandler.html#ae4132fcdbb134d51143133c1fb83a9df">Handle</a>(<span class="keyword">const</span> std::string &amp;line, <a class="code hl_struct" href="structDbcParseContext.html">DbcParseContext</a> &amp;context) <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span>};</div>
</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> </div>
<div class="foldopen" id="foldopen00143" data-start="{" data-end="};">
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"><a class="line" href="classDbcStatementDispatcher.html"> 143</a></span><span class="keyword">class </span><a class="code hl_class" href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a> {</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"><a class="line" href="classDbcHeaderHandler.html"> 143</a></span><span class="keyword">class </span><a class="code hl_class" href="classDbcHeaderHandler.html">DbcHeaderHandler</a> : <span class="keyword">public</span> <a class="code hl_class" href="classDbcStatementHandler.html">DbcStatementHandler</a> {</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <a class="code hl_function" href="classDbcStatementDispatcher.html#a2f064359b59d8644b8a8196653d47482">DbcStatementDispatcher</a>();</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693">Handle</a>(<span class="keyword">const</span> std::string &amp;line, <a class="code hl_struct" href="structDbcParseContext.html">DbcParseContext</a> &amp;context) <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span>};</div>
</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> </div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keyword">template</span>&lt;<span class="keyword">class</span> Handler&gt;</div>
<div class="foldopen" id="foldopen00150" data-start="{" data-end="}">
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"><a class="line" href="classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d"> 150</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d">RegisterType</a>(<span class="keyword">const</span> std::string &amp;keyword) {</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> m_factory.<a class="code hl_function" href="classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3">registerType</a>&lt;Handler&gt;(keyword);</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> m_handlers.insert_or_assign(keyword, m_factory.<a class="code hl_function" href="classTypeFactory.html#a3f43b03d6e3a0fd503fdec01ecf62e9f">create</a>(keyword));</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> }</div>
</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> </div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed">Dispatch</a>(<span class="keyword">const</span> std::string &amp;line, <a class="code hl_struct" href="structDbcParseContext.html">DbcParseContext</a> &amp;context) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> </div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="keyword">using </span>HandlerMap = std::unordered_map&lt;std::string, std::shared_ptr&lt;DbcStatementHandler&gt;&gt;;</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <a class="code hl_class" href="classTypeFactory.html">TypeFactory&lt;std::string, DbcStatementHandler&gt;</a> m_factory;</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> HandlerMap m_handlers;</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span>};</div>
<div class="foldopen" id="foldopen00149" data-start="{" data-end="};">
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"><a class="line" href="classDbcStatementDispatcher.html"> 149</a></span><span class="keyword">class </span><a class="code hl_class" href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a> {</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <a class="code hl_function" href="classDbcStatementDispatcher.html#a2f064359b59d8644b8a8196653d47482">DbcStatementDispatcher</a>();</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> </div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <span class="keyword">template</span>&lt;<span class="keyword">class</span> Handler&gt;</div>
<div class="foldopen" id="foldopen00156" data-start="{" data-end="}">
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"><a class="line" href="classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d"> 156</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d">RegisterType</a>(<span class="keyword">const</span> std::string &amp;keyword) {</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> m_factory.<a class="code hl_function" href="classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3">registerType</a>&lt;Handler&gt;(keyword);</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> m_handlers.insert_or_assign(keyword, m_factory.<a class="code hl_function" href="classTypeFactory.html#a3f43b03d6e3a0fd503fdec01ecf62e9f">create</a>(keyword));</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> }</div>
</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> </div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed">Dispatch</a>(<span class="keyword">const</span> std::string &amp;line, <a class="code hl_struct" href="structDbcParseContext.html">DbcParseContext</a> &amp;context) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> </div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span><span class="preprocessor">#endif </span><span class="comment">/* DBC_STATEMENT_HANDLER_H */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <span class="keyword">using </span>HandlerMap = std::unordered_map&lt;std::string, std::shared_ptr&lt;DbcStatementHandler&gt;&gt;;</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <a class="code hl_class" href="classTypeFactory.html">TypeFactory&lt;std::string, DbcStatementHandler&gt;</a> m_factory;</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> HandlerMap m_handlers;</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span>};</div>
</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> </div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span><span class="preprocessor">#endif </span><span class="comment">/* DBC_STATEMENT_HANDLER_H */</span><span class="preprocessor"></span></div>
<div class="ttc" id="aclassDbcAttributeHandler_html"><div class="ttname"><a href="classDbcAttributeHandler.html">DbcAttributeHandler</a></div><div class="ttdoc">Defer typed attribute statements for resolution.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00119">dbc_statement_handler.h:119</a></div></div>
<div class="ttc" id="aclassDbcAttributeHandler_html_a397f23259b7ff79abb4b5141489caa83"><div class="ttname"><a href="classDbcAttributeHandler.html#a397f23259b7ff79abb4b5141489caa83">DbcAttributeHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__attributes_8cpp_source.html#l00255">dbc_attributes.cpp:255</a></div></div>
<div class="ttc" id="aclassDbcCommentHandler_html"><div class="ttname"><a href="classDbcCommentHandler.html">DbcCommentHandler</a></div><div class="ttdoc">Defer frame and signal comments for target resolution.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00113">dbc_statement_handler.h:113</a></div></div>
@@ -280,34 +287,36 @@ $(document).ready(function(){initNavTree('dbc__statement__handler_8h_source.html
<div class="ttc" id="aclassDbcDiagnosticError_html_ab3965082f01d66b6d5c20525af44235d"><div class="ttname"><a href="classDbcDiagnosticError.html#ab3965082f01d66b6d5c20525af44235d">DbcDiagnosticError::diagnostic</a></div><div class="ttdeci">DbcDiagnostic diagnostic</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00040">dbc_statement_handler.h:40</a></div></div>
<div class="ttc" id="aclassDbcFrameHandler_html"><div class="ttname"><a href="classDbcFrameHandler.html">DbcFrameHandler</a></div><div class="ttdoc">Parse and append frame definitions.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00095">dbc_statement_handler.h:95</a></div></div>
<div class="ttc" id="aclassDbcFrameHandler_html_a0d3f43bbcc5e191460bc31827e74ce89"><div class="ttname"><a href="classDbcFrameHandler.html#a0d3f43bbcc5e191460bc31827e74ce89">DbcFrameHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00311">dbc_statement_handler.cpp:311</a></div></div>
<div class="ttc" id="aclassDbcHeaderHandler_html"><div class="ttname"><a href="classDbcHeaderHandler.html">DbcHeaderHandler</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00137">dbc_statement_handler.h:137</a></div></div>
<div class="ttc" id="aclassDbcHeaderHandler_html_a1e43a9dcf157f4d4418032d9e9711693"><div class="ttname"><a href="classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693">DbcHeaderHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00421">dbc_statement_handler.cpp:421</a></div></div>
<div class="ttc" id="aclassDbcHeaderHandler_html"><div class="ttname"><a href="classDbcHeaderHandler.html">DbcHeaderHandler</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00143">dbc_statement_handler.h:143</a></div></div>
<div class="ttc" id="aclassDbcHeaderHandler_html_a1e43a9dcf157f4d4418032d9e9711693"><div class="ttname"><a href="classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693">DbcHeaderHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00426">dbc_statement_handler.cpp:426</a></div></div>
<div class="ttc" id="aclassDbcMultiplexingHandler_html"><div class="ttname"><a href="classDbcMultiplexingHandler.html">DbcMultiplexingHandler</a></div><div class="ttdoc">Parse extended multiplexing conditions for deferred resolution.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00131">dbc_statement_handler.h:131</a></div></div>
<div class="ttc" id="aclassDbcMultiplexingHandler_html_a16f9e9f898640200477d2dcc8bab442e"><div class="ttname"><a href="classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e">DbcMultiplexingHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00484">dbc_statement_handler.cpp:484</a></div></div>
<div class="ttc" id="aclassDbcMultiplexingHandler_html_a16f9e9f898640200477d2dcc8bab442e"><div class="ttname"><a href="classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e">DbcMultiplexingHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00489">dbc_statement_handler.cpp:489</a></div></div>
<div class="ttc" id="aclassDbcSignalHandler_html"><div class="ttname"><a href="classDbcSignalHandler.html">DbcSignalHandler</a></div><div class="ttdoc">Parse and append signals to the current frame.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00104">dbc_statement_handler.h:104</a></div></div>
<div class="ttc" id="aclassDbcSignalHandler_html_ad7d891ec1414fb645f85ccd410f2737b"><div class="ttname"><a href="classDbcSignalHandler.html#ad7d891ec1414fb645f85ccd410f2737b">DbcSignalHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00325">dbc_statement_handler.cpp:325</a></div></div>
<div class="ttc" id="aclassDbcStatementDispatcher_html"><div class="ttname"><a href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00143">dbc_statement_handler.h:143</a></div></div>
<div class="ttc" id="aclassDbcStatementDispatcher_html_a2c6e9a614ed747275d43bcccc50d0b2d"><div class="ttname"><a href="classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d">DbcStatementDispatcher::RegisterType</a></div><div class="ttdeci">void RegisterType(const std::string &amp;keyword)</div><div class="ttdoc">Register or replace a handler and create its reusable instance.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00150">dbc_statement_handler.h:150</a></div></div>
<div class="ttc" id="aclassDbcStatementDispatcher_html"><div class="ttname"><a href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00149">dbc_statement_handler.h:149</a></div></div>
<div class="ttc" id="aclassDbcStatementDispatcher_html_a2c6e9a614ed747275d43bcccc50d0b2d"><div class="ttname"><a href="classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d">DbcStatementDispatcher::RegisterType</a></div><div class="ttdeci">void RegisterType(const std::string &amp;keyword)</div><div class="ttdoc">Register or replace a handler and create its reusable instance.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00156">dbc_statement_handler.h:156</a></div></div>
<div class="ttc" id="aclassDbcStatementDispatcher_html_a2f064359b59d8644b8a8196653d47482"><div class="ttname"><a href="classDbcStatementDispatcher.html#a2f064359b59d8644b8a8196653d47482">DbcStatementDispatcher::DbcStatementDispatcher</a></div><div class="ttdeci">DbcStatementDispatcher()</div><div class="ttdoc">Register supported statement handlers through TypeFactory.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00403">dbc_statement_handler.cpp:403</a></div></div>
<div class="ttc" id="aclassDbcStatementDispatcher_html_a495c2d5c7ebb8103b1987cdd87c142ed"><div class="ttname"><a href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed">DbcStatementDispatcher::Dispatch</a></div><div class="ttdeci">bool Dispatch(const std::string &amp;line, DbcParseContext &amp;context) const</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00423">dbc_statement_handler.cpp:423</a></div></div>
<div class="ttc" id="aclassDbcStatementDispatcher_html_a495c2d5c7ebb8103b1987cdd87c142ed"><div class="ttname"><a href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed">DbcStatementDispatcher::Dispatch</a></div><div class="ttdeci">bool Dispatch(const std::string &amp;line, DbcParseContext &amp;context) const</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00428">dbc_statement_handler.cpp:428</a></div></div>
<div class="ttc" id="aclassDbcStatementHandler_html"><div class="ttname"><a href="classDbcStatementHandler.html">DbcStatementHandler</a></div><div class="ttdoc">Interface for processing a registered DBC statement.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00087">dbc_statement_handler.h:87</a></div></div>
<div class="ttc" id="aclassDbcStatementHandler_html_a3de86e1e27e9bcb0fe6f1460a8ba5739"><div class="ttname"><a href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler::Handle</a></div><div class="ttdeci">virtual void Handle(const std::string &amp;line, DbcParseContext &amp;context) const =0</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div></div>
<div class="ttc" id="aclassDbcUnsupportedSignalTypeHandler_html"><div class="ttname"><a href="classDbcUnsupportedSignalTypeHandler.html">DbcUnsupportedSignalTypeHandler</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00137">dbc_statement_handler.h:137</a></div></div>
<div class="ttc" id="aclassDbcUnsupportedSignalTypeHandler_html_ae4132fcdbb134d51143133c1fb83a9df"><div class="ttname"><a href="classDbcUnsupportedSignalTypeHandler.html#ae4132fcdbb134d51143133c1fb83a9df">DbcUnsupportedSignalTypeHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00422">dbc_statement_handler.cpp:422</a></div></div>
<div class="ttc" id="aclassDbcValueDescriptionHandler_html"><div class="ttname"><a href="classDbcValueDescriptionHandler.html">DbcValueDescriptionHandler</a></div><div class="ttdoc">Defer raw value descriptions for target resolution.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00125">dbc_statement_handler.h:125</a></div></div>
<div class="ttc" id="aclassDbcValueDescriptionHandler_html_a653e13364f396b54244edc2c0fdd831a"><div class="ttname"><a href="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a">DbcValueDescriptionHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00435">dbc_statement_handler.cpp:435</a></div></div>
<div class="ttc" id="aclassDbcValueDescriptionHandler_html_a653e13364f396b54244edc2c0fdd831a"><div class="ttname"><a href="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a">DbcValueDescriptionHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &amp;line, DbcParseContext &amp;context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00440">dbc_statement_handler.cpp:440</a></div></div>
<div class="ttc" id="aclassTypeFactory_html"><div class="ttname"><a href="classTypeFactory.html">TypeFactory</a></div><div class="ttdoc">Registry-based factory for creating objects by runtime identifier.</div><div class="ttdef"><b>Definition</b> <a href="typefactory_8h_source.html#l00059">typefactory.h:59</a></div></div>
<div class="ttc" id="aclassTypeFactory_html_a3f43b03d6e3a0fd503fdec01ecf62e9f"><div class="ttname"><a href="classTypeFactory.html#a3f43b03d6e3a0fd503fdec01ecf62e9f">TypeFactory::create</a></div><div class="ttdeci">BasePtr create(const ClassId &amp;id, Args... args) const</div><div class="ttdoc">Creates an instance for the given id using provided arguments.</div><div class="ttdef"><b>Definition</b> <a href="typefactory_8h_source.html#l00099">typefactory.h:99</a></div></div>
<div class="ttc" id="aclassTypeFactory_html_ad6d85795285ee21193ac03e1b24762d3"><div class="ttname"><a href="classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3">TypeFactory::registerType</a></div><div class="ttdeci">void registerType(const ClassId &amp;id)</div><div class="ttdoc">Registers a Derived type under the given id.</div><div class="ttdef"><b>Definition</b> <a href="typefactory_8h_source.html#l00078">typefactory.h:78</a></div></div>
<div class="ttc" id="adbc__database_8h_html"><div class="ttname"><a href="dbc__database_8h.html">dbc_database.h</a></div><div class="ttdoc">Parsed DBC database and attribute metadata.</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="astructDbcDiagnostic_html"><div class="ttname"><a href="structDbcDiagnostic.html">DbcDiagnostic</a></div><div class="ttdoc">Diagnostic message and physical source location.</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00029">dbc_diagnostic.h:29</a></div></div>
<div class="ttc" id="astructDbcDiagnostic_html"><div class="ttname"><a href="structDbcDiagnostic.html">DbcDiagnostic</a></div><div class="ttdoc">Diagnostic message and physical source location.</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00030">dbc_diagnostic.h:30</a></div></div>
<div class="ttc" id="astructDbcParseContext_html"><div class="ttname"><a href="structDbcParseContext.html">DbcParseContext</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00060">dbc_statement_handler.h:60</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_a1ac7f4a54550aaddef08749806f87001"><div class="ttname"><a href="structDbcParseContext.html#a1ac7f4a54550aaddef08749806f87001">DbcParseContext::ResolveAttributes</a></div><div class="ttdeci">void ResolveAttributes(const std::string &amp;filePath, std::vector&lt; DbcDiagnostic &gt; &amp;diagnostics)</div><div class="ttdoc">Resolve definitions, defaults, then assignments; append format warnings.</div><div class="ttdef"><b>Definition</b> <a href="dbc__attributes_8cpp_source.html#l00259">dbc_attributes.cpp:259</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_a57f5a7f613ecd0dadbafa7af736b7e54"><div class="ttname"><a href="structDbcParseContext.html#a57f5a7f613ecd0dadbafa7af736b7e54">DbcParseContext::lineNumber</a></div><div class="ttdeci">std::size_t lineNumber</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00064">dbc_statement_handler.h:64</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_a79bad0b8302e2156670461bab529259c"><div class="ttname"><a href="structDbcParseContext.html#a79bad0b8302e2156670461bab529259c">DbcParseContext::database</a></div><div class="ttdeci">DbcDatabase &amp; database</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00061">dbc_statement_handler.h:61</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_a854abba7bbf4adfc948554c254156e60"><div class="ttname"><a href="structDbcParseContext.html#a854abba7bbf4adfc948554c254156e60">DbcParseContext::pendingComments</a></div><div class="ttdeci">std::vector&lt; PendingComment &gt; pendingComments</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00074">dbc_statement_handler.h:74</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_a908056de0a97316a4ebecb3f99cc400b"><div class="ttname"><a href="structDbcParseContext.html#a908056de0a97316a4ebecb3f99cc400b">DbcParseContext::ValidateMultiplexing</a></div><div class="ttdeci">void ValidateMultiplexing(const std::string &amp;filePath) const</div><div class="ttdoc">Validate selectors, branch ranges, and signal overlap.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00567">dbc_statement_handler.cpp:567</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_a908056de0a97316a4ebecb3f99cc400b"><div class="ttname"><a href="structDbcParseContext.html#a908056de0a97316a4ebecb3f99cc400b">DbcParseContext::ValidateMultiplexing</a></div><div class="ttdeci">void ValidateMultiplexing(const std::string &amp;filePath) const</div><div class="ttdoc">Validate selectors, branch ranges, and signal overlap.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00572">dbc_statement_handler.cpp:572</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_a93f8ece0f3d16bd79f631ae07afa7b54"><div class="ttname"><a href="structDbcParseContext.html#a93f8ece0f3d16bd79f631ae07afa7b54">DbcParseContext::enableJ1939</a></div><div class="ttdeci">bool enableJ1939</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00063">dbc_statement_handler.h:63</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_ab5552dad944fde7fa6add6464ddb5369"><div class="ttname"><a href="structDbcParseContext.html#ab5552dad944fde7fa6add6464ddb5369">DbcParseContext::ResolveValueDescriptions</a></div><div class="ttdeci">void ResolveValueDescriptions(const std::string &amp;filePath)</div><div class="ttdoc">Resolve deferred raw descriptions against unique targets.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00468">dbc_statement_handler.cpp:468</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_ab5552dad944fde7fa6add6464ddb5369"><div class="ttname"><a href="structDbcParseContext.html#ab5552dad944fde7fa6add6464ddb5369">DbcParseContext::ResolveValueDescriptions</a></div><div class="ttdeci">void ResolveValueDescriptions(const std::string &amp;filePath)</div><div class="ttdoc">Resolve deferred raw descriptions against unique targets.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00473">dbc_statement_handler.cpp:473</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_ac22cba614ada3a28c7dcc1ea338b0e01"><div class="ttname"><a href="structDbcParseContext.html#ac22cba614ada3a28c7dcc1ea338b0e01">DbcParseContext::pendingValues</a></div><div class="ttdeci">std::vector&lt; PendingValueDescriptions &gt; pendingValues</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00065">dbc_statement_handler.h:65</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_aeae343c57a244634489a0e0b960155d7"><div class="ttname"><a href="structDbcParseContext.html#aeae343c57a244634489a0e0b960155d7">DbcParseContext::ResolveComments</a></div><div class="ttdeci">void ResolveComments(const std::string &amp;filePath)</div><div class="ttdoc">Resolve deferred comments after all definitions are known.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00385">dbc_statement_handler.cpp:385</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_af31b56247edff7f025957ae023a56913"><div class="ttname"><a href="structDbcParseContext.html#af31b56247edff7f025957ae023a56913">DbcParseContext::currentFrame</a></div><div class="ttdeci">FrameInfo * currentFrame</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00062">dbc_statement_handler.h:62</a></div></div>
@@ -313,7 +313,7 @@ $(document).ready(function(){initNavTree('dbc__tree__model__test_8cpp_source.htm
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <span class="keywordflow">return</span> QTest::qExec(&amp;tests, argc, argv);</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span>}</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span><span class="preprocessor">#include &quot;dbc_tree_model_test.moc&quot;</span></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="aclassDbcTreeModel_html"><div class="ttname"><a href="classDbcTreeModel.html">DbcTreeModel</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__tree__model_8h_source.html#l00011">dbc_tree_model.h:11</a></div></div>
+1 -1
View File
@@ -152,7 +152,7 @@ Functions</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="examples_2main_8cpp_source.html#l00101">101</a> of file <a class="el" href="examples_2main_8cpp_source.html">examples/main.cpp</a>.</p>
<p class="reference">References <a class="el" href="dbc__tree__builder_8cpp_source.html#l00014">DbcTreeBuilder::Build()</a>, <a class="el" href="dbc__decode__builder_8cpp_source.html#l00015">DbcDecodeBuilder::Build()</a>, <a class="el" href="dbc__decoder_8h_source.html#l00026">RawCanFrame::canId</a>, <a class="el" href="dbc__decoder_8h_source.html#l00028">RawCanFrame::data</a>, <a class="el" href="dbc__decoder_8cpp_source.html#l00036">DbcDecoder::Decode()</a>, <a class="el" href="decode__database_8cpp_source.html#l00107">DecodeDatabase::GetFrames()</a>, <a class="el" href="dbc__decoder_8h_source.html#l00027">RawCanFrame::isExtended</a>, <a class="el" href="examples_2main_8cpp_source.html#l00101">main()</a>, and <a class="el" href="dbc__parser_8cpp_source.html#l00090">DbcParser::ParseFile()</a>.</p>
<p class="reference">References <a class="el" href="dbc__tree__builder_8cpp_source.html#l00014">DbcTreeBuilder::Build()</a>, <a class="el" href="dbc__decode__builder_8cpp_source.html#l00015">DbcDecodeBuilder::Build()</a>, <a class="el" href="dbc__decoder_8h_source.html#l00026">RawCanFrame::canId</a>, <a class="el" href="dbc__decoder_8h_source.html#l00028">RawCanFrame::data</a>, <a class="el" href="dbc__diagnostic_8h_source.html#l00040">DbcParseResult::database</a>, <a class="el" href="dbc__decoder_8cpp_source.html#l00036">DbcDecoder::Decode()</a>, <a class="el" href="dbc__diagnostic_8h_source.html#l00041">DbcParseResult::diagnostics</a>, <a class="el" href="decode__database_8cpp_source.html#l00107">DecodeDatabase::GetFrames()</a>, <a class="el" href="dbc__diagnostic_8h_source.html#l00044">DbcParseResult::HasErrors()</a>, <a class="el" href="dbc__decoder_8h_source.html#l00027">RawCanFrame::isExtended</a>, <a class="el" href="examples_2main_8cpp_source.html#l00101">main()</a>, and <a class="el" href="dbc__parser_8cpp_source.html#l00105">DbcParser::ParseFileWithDiagnostics()</a>.</p>
<p class="reference">Referenced by <a class="el" href="examples_2main_8cpp_source.html#l00101">main()</a>.</p>
+48 -35
View File
@@ -195,46 +195,54 @@ $(document).ready(function(){initNavTree('examples_2main_8cpp_source.html','');
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> }</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> </div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <span class="keywordflow">try</span> {</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <a class="code hl_class" href="classDbcParser.html">DbcParser</a> parser;</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a> database = parser.<a class="code hl_function" href="classDbcParser.html#aef72826942c9095d653fafa435855e56">ParseFile</a>(argv[1]);</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> </div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <a class="code hl_class" href="classDbcTreeBuilder.html">DbcTreeBuilder</a> treeBuilder;</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> std::unique_ptr&lt;TreeNode&gt; root = treeBuilder.<a class="code hl_function" href="classDbcTreeBuilder.html#a7e57d067d831b14b383947fd125edd4b">Build</a>(database);</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> std::cout &lt;&lt; <span class="stringliteral">&quot;=== Parsed tree ===\n&quot;</span>;</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> PrintTree(root.get(), 0);</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <a class="code hl_class" href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a> decodeBuilder;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <a class="code hl_class" href="classDecodeDatabase.html">DecodeDatabase</a> decodeDatabase = decodeBuilder.<a class="code hl_function" href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">Build</a>(database);</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="comment"> * Example raw frame.</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="comment"> * Replace with live CAN frame or trace record later.</span></div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="comment"> */</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <a class="code hl_struct" href="structRawCanFrame.html">RawCanFrame</a> rawFrame;</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> rawFrame.<a class="code hl_variable" href="structRawCanFrame.html#a2d0e7fa0e3d5c20bbed55ed8f7888ff4">canId</a> = decodeDatabase.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>().empty() ? 0U : decodeDatabase.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>()[0].canId;</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> rawFrame.<a class="code hl_variable" href="structRawCanFrame.html#a462193d275adc1dba8bd18ffa0e36bb7">isExtended</a> = decodeDatabase.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>().empty() ? false : decodeDatabase.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>()[0].isExtended;</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> rawFrame.<a class="code hl_variable" href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">data</a>.resize(8U, 0U);</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> </div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <a class="code hl_class" href="classDbcDecoder.html">DbcDecoder</a> decoder;</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <a class="code hl_struct" href="structDecodedFrameValue.html">DecodedFrameValue</a> decoded = decoder.<a class="code hl_function" href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">Decode</a>(decodeDatabase, rawFrame);</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> </div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> std::cout &lt;&lt; <span class="stringliteral">&quot;\n=== Decoded frame ===\n&quot;</span>;</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> PrintDecodedFrame(decoded);</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception &amp;ex) {</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> std::cerr &lt;&lt; <span class="stringliteral">&quot;Error: &quot;</span> &lt;&lt; ex.what() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keywordflow">return</span> 2;</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> }</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span>}</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keyword">const</span> <a class="code hl_class" href="classDbcParser.html">DbcParser</a> parser;</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> parsed = parser.<a class="code hl_function" href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">ParseFileWithDiagnostics</a>(argv[1]);</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code hl_struct" href="structDbcDiagnostic.html">DbcDiagnostic</a> &amp;diagnostic: parsed.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>) {</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> std::cerr &lt;&lt; diagnostic.filePath &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; diagnostic.lineNumber &lt;&lt; <span class="stringliteral">&quot;: &quot;</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> &lt;&lt; (diagnostic.severity == DbcDiagnosticSeverity::Error ? <span class="stringliteral">&quot;error: &quot;</span> : <span class="stringliteral">&quot;warning: &quot;</span>)</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> &lt;&lt; diagnostic.message &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> }</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keywordflow">if</span> (parsed.<a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>())</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keywordflow">return</span> 2;</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a> &amp;database = parsed.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> </div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <a class="code hl_class" href="classDbcTreeBuilder.html">DbcTreeBuilder</a> treeBuilder;</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> std::unique_ptr&lt;TreeNode&gt; root = treeBuilder.<a class="code hl_function" href="classDbcTreeBuilder.html#a7e57d067d831b14b383947fd125edd4b">Build</a>(database);</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> </div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> std::cout &lt;&lt; <span class="stringliteral">&quot;=== Parsed tree ===\n&quot;</span>;</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> PrintTree(root.get(), 0);</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> </div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <a class="code hl_class" href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a> decodeBuilder;</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <a class="code hl_class" href="classDecodeDatabase.html">DecodeDatabase</a> decodeDatabase = decodeBuilder.<a class="code hl_function" href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">Build</a>(database);</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> </div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span><span class="comment"> * Example raw frame.</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment"> * Replace with live CAN frame or trace record later.</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="comment"> */</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <a class="code hl_struct" href="structRawCanFrame.html">RawCanFrame</a> rawFrame;</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> rawFrame.<a class="code hl_variable" href="structRawCanFrame.html#a2d0e7fa0e3d5c20bbed55ed8f7888ff4">canId</a> = decodeDatabase.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>().empty() ? 0U : decodeDatabase.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>()[0].canId;</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> rawFrame.<a class="code hl_variable" href="structRawCanFrame.html#a462193d275adc1dba8bd18ffa0e36bb7">isExtended</a> = decodeDatabase.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>().empty() ? false : decodeDatabase.<a class="code hl_function" href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">GetFrames</a>()[0].isExtended;</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> rawFrame.<a class="code hl_variable" href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">data</a>.resize(8U, 0U);</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> </div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <a class="code hl_class" href="classDbcDecoder.html">DbcDecoder</a> decoder;</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <a class="code hl_struct" href="structDecodedFrameValue.html">DecodedFrameValue</a> decoded = decoder.<a class="code hl_function" href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">Decode</a>(decodeDatabase, rawFrame);</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> </div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> std::cout &lt;&lt; <span class="stringliteral">&quot;\n=== Decoded frame ===\n&quot;</span>;</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> PrintDecodedFrame(decoded);</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception &amp;ex) {</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> std::cerr &lt;&lt; <span class="stringliteral">&quot;Error: &quot;</span> &lt;&lt; ex.what() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="keywordflow">return</span> 2;</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> }</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> </div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span>}</div>
</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_aef72826942c9095d653fafa435855e56"><div class="ttname"><a href="classDbcParser.html#aef72826942c9095d653fafa435855e56">DbcParser::ParseFile</a></div><div class="ttdeci">DbcDatabase ParseFile(const std::string &amp;filePath) const</div><div class="ttdoc">Parse DBC file.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00090">dbc_parser.cpp:90</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="aclassDbcParser_html_a0e915ce79c2e3d4c95a5aaf2bf0409bc"><div class="ttname"><a href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">DbcParser::ParseFileWithDiagnostics</a></div><div class="ttdeci">DbcParseResult ParseFileWithDiagnostics(const std::string &amp;filePath) const</div><div class="ttdoc">Parse with warnings and a structured first error instead of throwing.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00105">dbc_parser.cpp:105</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>
@@ -252,6 +260,11 @@ $(document).ready(function(){initNavTree('examples_2main_8cpp_source.html','');
<div class="ttc" id="adbc__tree__builder_8h_html"><div class="ttname"><a href="dbc__tree__builder_8h.html">dbc_tree_builder.h</a></div><div class="ttdoc">Metadata tree builder.</div></div>
<div class="ttc" id="aexamples_2main_8cpp_html_a0ddf1224851353fc92bfbff6f499fa97"><div class="ttname"><a href="examples_2main_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a></div><div class="ttdeci">int main(int argc, char *argv[])</div><div class="ttdoc">Parse a DBC file and demonstrate metadata lookup and CAN decoding.</div><div class="ttdef"><b>Definition</b> <a href="examples_2main_8cpp_source.html#l00101">examples/main.cpp:101</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="astructDbcDiagnostic_html"><div class="ttname"><a href="structDbcDiagnostic.html">DbcDiagnostic</a></div><div class="ttdoc">Diagnostic message and physical source location.</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00030">dbc_diagnostic.h:30</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="astructDecodedFrameValue_html"><div class="ttname"><a href="structDecodedFrameValue.html">DecodedFrameValue</a></div><div class="ttdoc">Fully decoded frame.</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8h_source.html#l00074">dbc_decoder.h:74</a></div></div>
<div class="ttc" id="astructDecodedFrameValue_html_a33e971ba10030506007aa201c89f351d"><div class="ttname"><a href="structDecodedFrameValue.html#a33e971ba10030506007aa201c89f351d">DecodedFrameValue::definition</a></div><div class="ttdeci">std::shared_ptr&lt; const DecodeFrame &gt; definition</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8h_source.html#l00075">dbc_decoder.h:75</a></div></div>
<div class="ttc" id="astructDecodedFrameValue_html_a4f51c31110dba1f73a763c596372beb0"><div class="ttname"><a href="structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0">DecodedFrameValue::valid</a></div><div class="ttdeci">bool valid</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8h_source.html#l00078">dbc_decoder.h:78</a></div></div>
+1 -1
View File
@@ -181,7 +181,7 @@ $(document).ready(function(){initNavTree('functions.html',''); initResizable();
<h3><a id="index_h" name="index_h"></a>- h -</h3><ul>
<li>Handle()&#160;:&#160;<a class="el" href="classDbcAttributeHandler.html#a397f23259b7ff79abb4b5141489caa83">DbcAttributeHandler</a>, <a class="el" href="classDbcCommentHandler.html#aa4fce77b585a441d251d8535ef7a51a6">DbcCommentHandler</a>, <a class="el" href="classDbcFrameHandler.html#a0d3f43bbcc5e191460bc31827e74ce89">DbcFrameHandler</a>, <a class="el" href="classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693">DbcHeaderHandler</a>, <a class="el" href="classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e">DbcMultiplexingHandler</a>, <a class="el" href="classDbcSignalHandler.html#ad7d891ec1414fb645f85ccd410f2737b">DbcSignalHandler</a>, <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>, <a class="el" href="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a">DbcValueDescriptionHandler</a></li>
<li>Handle()&#160;:&#160;<a class="el" href="classDbcAttributeHandler.html#a397f23259b7ff79abb4b5141489caa83">DbcAttributeHandler</a>, <a class="el" href="classDbcCommentHandler.html#aa4fce77b585a441d251d8535ef7a51a6">DbcCommentHandler</a>, <a class="el" href="classDbcFrameHandler.html#a0d3f43bbcc5e191460bc31827e74ce89">DbcFrameHandler</a>, <a class="el" href="classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693">DbcHeaderHandler</a>, <a class="el" href="classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e">DbcMultiplexingHandler</a>, <a class="el" href="classDbcSignalHandler.html#ad7d891ec1414fb645f85ccd410f2737b">DbcSignalHandler</a>, <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>, <a class="el" href="classDbcUnsupportedSignalTypeHandler.html#ae4132fcdbb134d51143133c1fb83a9df">DbcUnsupportedSignalTypeHandler</a>, <a class="el" href="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a">DbcValueDescriptionHandler</a></li>
<li>HasErrors()&#160;:&#160;<a class="el" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">DbcParseResult</a></li>
<li>hasPgn&#160;:&#160;<a class="el" href="structDecodeFrame.html#a2551102670c4a540fced4c71da0b369d">DecodeFrame</a>, <a class="el" href="structFrameInfo.html#a4737a5420213ad4304724e39f3a4e55d">FrameInfo</a></li>
<li>headerData()&#160;:&#160;<a class="el" href="classDbcTreeModel.html#aad5834e8edb00808cbfa498ea8c63fe9">DbcTreeModel</a></li>
+1 -1
View File
@@ -149,7 +149,7 @@ $(document).ready(function(){initNavTree('functions_func.html',''); initResizabl
<h3><a id="index_h" name="index_h"></a>- h -</h3><ul>
<li>Handle()&#160;:&#160;<a class="el" href="classDbcAttributeHandler.html#a397f23259b7ff79abb4b5141489caa83">DbcAttributeHandler</a>, <a class="el" href="classDbcCommentHandler.html#aa4fce77b585a441d251d8535ef7a51a6">DbcCommentHandler</a>, <a class="el" href="classDbcFrameHandler.html#a0d3f43bbcc5e191460bc31827e74ce89">DbcFrameHandler</a>, <a class="el" href="classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693">DbcHeaderHandler</a>, <a class="el" href="classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e">DbcMultiplexingHandler</a>, <a class="el" href="classDbcSignalHandler.html#ad7d891ec1414fb645f85ccd410f2737b">DbcSignalHandler</a>, <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>, <a class="el" href="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a">DbcValueDescriptionHandler</a></li>
<li>Handle()&#160;:&#160;<a class="el" href="classDbcAttributeHandler.html#a397f23259b7ff79abb4b5141489caa83">DbcAttributeHandler</a>, <a class="el" href="classDbcCommentHandler.html#aa4fce77b585a441d251d8535ef7a51a6">DbcCommentHandler</a>, <a class="el" href="classDbcFrameHandler.html#a0d3f43bbcc5e191460bc31827e74ce89">DbcFrameHandler</a>, <a class="el" href="classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693">DbcHeaderHandler</a>, <a class="el" href="classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e">DbcMultiplexingHandler</a>, <a class="el" href="classDbcSignalHandler.html#ad7d891ec1414fb645f85ccd410f2737b">DbcSignalHandler</a>, <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>, <a class="el" href="classDbcUnsupportedSignalTypeHandler.html#ae4132fcdbb134d51143133c1fb83a9df">DbcUnsupportedSignalTypeHandler</a>, <a class="el" href="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a">DbcValueDescriptionHandler</a></li>
<li>HasErrors()&#160;:&#160;<a class="el" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">DbcParseResult</a></li>
<li>headerData()&#160;:&#160;<a class="el" href="classDbcTreeModel.html#aad5834e8edb00808cbfa498ea8c63fe9">DbcTreeModel</a></li>
</ul>
+34 -33
View File
@@ -115,39 +115,40 @@ This inheritance list is sorted roughly, but not completely, alphabetically:</di
<tr id="row_11_3_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcHeaderHandler.html" target="_self">DbcHeaderHandler</a></td><td class="desc"></td></tr>
<tr id="row_11_4_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcMultiplexingHandler.html" target="_self">DbcMultiplexingHandler</a></td><td class="desc">Parse extended multiplexing conditions for deferred resolution </td></tr>
<tr id="row_11_5_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcSignalHandler.html" target="_self">DbcSignalHandler</a></td><td class="desc">Parse and append signals to the current frame </td></tr>
<tr id="row_11_6_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcValueDescriptionHandler.html" target="_self">DbcValueDescriptionHandler</a></td><td class="desc">Defer raw value descriptions for target resolution </td></tr>
<tr id="row_12_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcTreeBuilder.html" target="_self">DbcTreeBuilder</a></td><td class="desc">Builds a simple tree from parsed DBC database </td></tr>
<tr id="row_13_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDecodeDatabase.html" target="_self">DecodeDatabase</a></td><td class="desc">Immutable runtime snapshot. Copies share storage; reload replaces a snapshot. Owning lookup handles and decoded results keep old definitions alive </td></tr>
<tr id="row_14_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodedFrameValue.html" target="_self">DecodedFrameValue</a></td><td class="desc">Fully decoded frame </td></tr>
<tr id="row_15_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodedSignalValue.html" target="_self">DecodedSignalValue</a></td><td class="desc">One decoded signal value </td></tr>
<tr id="row_16_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodeFrame.html" target="_self">DecodeFrame</a></td><td class="desc">Runtime-ready frame definition </td></tr>
<tr id="row_17_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodeSignal.html" target="_self">DecodeSignal</a></td><td class="desc">Runtime-ready signal definition </td></tr>
<tr id="row_18_" class="odd"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_18_" class="arrow" onclick="toggleFolder('18_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>std::exception</b></td><td class="desc">STL class </td></tr>
<tr id="row_18_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_18_0_" class="arrow" onclick="toggleFolder('18_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>std::logic_error</b></td><td class="desc">STL class </td></tr>
<tr id="row_18_0_0_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_18_0_0_" class="arrow" onclick="toggleFolder('18_0_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>std::invalid_argument</b></td><td class="desc">STL class </td></tr>
<tr id="row_18_0_0_0_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classdbc__detail_1_1MultiplexError.html" target="_self">dbc_detail::MultiplexError</a></td><td class="desc"></td></tr>
<tr id="row_18_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_18_1_" class="arrow" onclick="toggleFolder('18_1_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>std::runtime_error</b></td><td class="desc">STL class </td></tr>
<tr id="row_18_1_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcDiagnosticError.html" target="_self">DbcDiagnosticError</a></td><td class="desc"></td></tr>
<tr id="row_19_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structFrameInfo.html" target="_self">FrameInfo</a></td><td class="desc">Describes one CAN frame from a DBC file </td></tr>
<tr id="row_20_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structFrameKey.html" target="_self">FrameKey</a></td><td class="desc">Stable frame identifier: normalized CAN ID and frame type </td></tr>
<tr id="row_21_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structFrameKeyHasher.html" target="_self">FrameKeyHasher</a></td><td class="desc">Hasher for frame key </td></tr>
<tr id="row_22_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classdbc__detail_1_1MultiplexGraph.html" target="_self">dbc_detail::MultiplexGraph</a></td><td class="desc"></td></tr>
<tr id="row_23_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structMultiplexing.html" target="_self">Multiplexing</a></td><td class="desc">Basic markers and optional explicit extended multiplexing condition </td></tr>
<tr id="row_24_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structMultiplexRange.html" target="_self">MultiplexRange</a></td><td class="desc">Inclusive raw selector range, without expanding individual values </td></tr>
<tr id="row_25_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPendingAttribute.html" target="_self">PendingAttribute</a></td><td class="desc">Attribute statement retained for ordered resolution </td></tr>
<tr id="row_26_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPendingComment.html" target="_self">PendingComment</a></td><td class="desc">Deferred frame or signal comment and its source location </td></tr>
<tr id="row_27_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPendingMultiplexing.html" target="_self">PendingMultiplexing</a></td><td class="desc">Deferred extended multiplexing condition and source location </td></tr>
<tr id="row_28_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPendingValueDescriptions.html" target="_self">PendingValueDescriptions</a></td><td class="desc">Deferred raw value descriptions and their target </td></tr>
<tr id="row_29_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPgnLookupResult.html" target="_self">PgnLookupResult</a></td><td class="desc"></td></tr>
<tr id="row_30_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_30_" class="arrow" onclick="toggleFolder('30_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>QAbstractItemModel</b></td><td class="desc"></td></tr>
<tr id="row_30_0_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcTreeModel.html" target="_self">DbcTreeModel</a></td><td class="desc"></td></tr>
<tr id="row_31_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structRawCanFrame.html" target="_self">RawCanFrame</a></td><td class="desc">Raw CAN frame used for runtime or trace decoding </td></tr>
<tr id="row_32_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structSignalInfo.html" target="_self">SignalInfo</a></td><td class="desc">Describes one signal inside a DBC frame </td></tr>
<tr id="row_33_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structSignalKey.html" target="_self">SignalKey</a></td><td class="desc"></td></tr>
<tr id="row_34_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structSignalKeyHasher.html" target="_self">SignalKeyHasher</a></td><td class="desc">Hasher for stable signal keys </td></tr>
<tr id="row_35_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTreeNode.html" target="_self">TreeNode</a></td><td class="desc">Tree node for later use in model/view or other hierarchy consumers </td></tr>
<tr id="row_36_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTypeFactory.html" target="_self">TypeFactory&lt; ClassId, BaseClass, Args &gt;</a></td><td class="desc">Registry-based factory for creating objects by runtime identifier </td></tr>
<tr id="row_37_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTypeFactory.html" target="_self">TypeFactory&lt; std::string, DbcStatementHandler &gt;</a></td><td class="desc"></td></tr>
<tr id="row_11_6_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcUnsupportedSignalTypeHandler.html" target="_self">DbcUnsupportedSignalTypeHandler</a></td><td class="desc"></td></tr>
<tr id="row_11_7_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcValueDescriptionHandler.html" target="_self">DbcValueDescriptionHandler</a></td><td class="desc">Defer raw value descriptions for target resolution </td></tr>
<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcTreeBuilder.html" target="_self">DbcTreeBuilder</a></td><td class="desc">Builds a simple tree from parsed DBC database </td></tr>
<tr id="row_13_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDecodeDatabase.html" target="_self">DecodeDatabase</a></td><td class="desc">Immutable runtime snapshot. Copies share storage; reload replaces a snapshot. Owning lookup handles and decoded results keep old definitions alive </td></tr>
<tr id="row_14_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodedFrameValue.html" target="_self">DecodedFrameValue</a></td><td class="desc">Fully decoded frame </td></tr>
<tr id="row_15_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodedSignalValue.html" target="_self">DecodedSignalValue</a></td><td class="desc">One decoded signal value </td></tr>
<tr id="row_16_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodeFrame.html" target="_self">DecodeFrame</a></td><td class="desc">Runtime-ready frame definition </td></tr>
<tr id="row_17_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodeSignal.html" target="_self">DecodeSignal</a></td><td class="desc">Runtime-ready signal definition </td></tr>
<tr id="row_18_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_18_" class="arrow" onclick="toggleFolder('18_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>std::exception</b></td><td class="desc">STL class </td></tr>
<tr id="row_18_0_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_18_0_" class="arrow" onclick="toggleFolder('18_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>std::logic_error</b></td><td class="desc">STL class </td></tr>
<tr id="row_18_0_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_18_0_0_" class="arrow" onclick="toggleFolder('18_0_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>std::invalid_argument</b></td><td class="desc">STL class </td></tr>
<tr id="row_18_0_0_0_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classdbc__detail_1_1MultiplexError.html" target="_self">dbc_detail::MultiplexError</a></td><td class="desc"></td></tr>
<tr id="row_18_1_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_18_1_" class="arrow" onclick="toggleFolder('18_1_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>std::runtime_error</b></td><td class="desc">STL class </td></tr>
<tr id="row_18_1_0_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcDiagnosticError.html" target="_self">DbcDiagnosticError</a></td><td class="desc"></td></tr>
<tr id="row_19_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structFrameInfo.html" target="_self">FrameInfo</a></td><td class="desc">Describes one CAN frame from a DBC file </td></tr>
<tr id="row_20_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structFrameKey.html" target="_self">FrameKey</a></td><td class="desc">Stable frame identifier: normalized CAN ID and frame type </td></tr>
<tr id="row_21_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structFrameKeyHasher.html" target="_self">FrameKeyHasher</a></td><td class="desc">Hasher for frame key </td></tr>
<tr id="row_22_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classdbc__detail_1_1MultiplexGraph.html" target="_self">dbc_detail::MultiplexGraph</a></td><td class="desc"></td></tr>
<tr id="row_23_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structMultiplexing.html" target="_self">Multiplexing</a></td><td class="desc">Basic markers and optional explicit extended multiplexing condition </td></tr>
<tr id="row_24_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structMultiplexRange.html" target="_self">MultiplexRange</a></td><td class="desc">Inclusive raw selector range, without expanding individual values </td></tr>
<tr id="row_25_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPendingAttribute.html" target="_self">PendingAttribute</a></td><td class="desc">Attribute statement retained for ordered resolution </td></tr>
<tr id="row_26_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPendingComment.html" target="_self">PendingComment</a></td><td class="desc">Deferred frame or signal comment and its source location </td></tr>
<tr id="row_27_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPendingMultiplexing.html" target="_self">PendingMultiplexing</a></td><td class="desc">Deferred extended multiplexing condition and source location </td></tr>
<tr id="row_28_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPendingValueDescriptions.html" target="_self">PendingValueDescriptions</a></td><td class="desc">Deferred raw value descriptions and their target </td></tr>
<tr id="row_29_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPgnLookupResult.html" target="_self">PgnLookupResult</a></td><td class="desc"></td></tr>
<tr id="row_30_" class="odd"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_30_" class="arrow" onclick="toggleFolder('30_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>QAbstractItemModel</b></td><td class="desc"></td></tr>
<tr id="row_30_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcTreeModel.html" target="_self">DbcTreeModel</a></td><td class="desc"></td></tr>
<tr id="row_31_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structRawCanFrame.html" target="_self">RawCanFrame</a></td><td class="desc">Raw CAN frame used for runtime or trace decoding </td></tr>
<tr id="row_32_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structSignalInfo.html" target="_self">SignalInfo</a></td><td class="desc">Describes one signal inside a DBC frame </td></tr>
<tr id="row_33_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structSignalKey.html" target="_self">SignalKey</a></td><td class="desc"></td></tr>
<tr id="row_34_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structSignalKeyHasher.html" target="_self">SignalKeyHasher</a></td><td class="desc">Hasher for stable signal keys </td></tr>
<tr id="row_35_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTreeNode.html" target="_self">TreeNode</a></td><td class="desc">Tree node for later use in model/view or other hierarchy consumers </td></tr>
<tr id="row_36_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTypeFactory.html" target="_self">TypeFactory&lt; ClassId, BaseClass, Args &gt;</a></td><td class="desc">Registry-based factory for creating objects by runtime identifier </td></tr>
<tr id="row_37_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTypeFactory.html" target="_self">TypeFactory&lt; std::string, DbcStatementHandler &gt;</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
+1
View File
@@ -18,6 +18,7 @@ var hierarchy =
[ "DbcHeaderHandler", "classDbcHeaderHandler.html", null ],
[ "DbcMultiplexingHandler", "classDbcMultiplexingHandler.html", null ],
[ "DbcSignalHandler", "classDbcSignalHandler.html", null ],
[ "DbcUnsupportedSignalTypeHandler", "classDbcUnsupportedSignalTypeHandler.html", null ],
[ "DbcValueDescriptionHandler", "classDbcValueDescriptionHandler.html", null ]
] ],
[ "DbcTreeBuilder", "classDbcTreeBuilder.html", null ],
+13 -3
View File
@@ -168,8 +168,9 @@
<section title="Database validation coverage" ref="md_tests_2README.html#autotoc_md167"/>
<section title="End-to-end pipeline coverage" ref="md_tests_2README.html#autotoc_md168"/>
<section title="Attribute coverage" ref="md_tests_2README.html#autotoc_md169"/>
<section title="Long signal definitions" ref="md_tests_2README.html#autotoc_md170"/>
<section title="Extended validation" ref="md_tests_2README.html#autotoc_md171"/>
<section title="Unsupported signal value types" ref="md_tests_2README.html#autotoc_md170"/>
<section title="Long signal definitions" ref="md_tests_2README.html#autotoc_md171"/>
<section title="Extended validation" ref="md_tests_2README.html#autotoc_md172"/>
</section>
<section title="Classes" ref="annotated.html">
<section title="Class List" ref="annotated.html">
@@ -314,6 +315,9 @@
<section title="headerData" ref="classDbcTreeModel.html#aad5834e8edb00808cbfa498ea8c63fe9"/>
<section title="flags" ref="classDbcTreeModel.html#a8f7842a79144bdb24fa9c5fbdcd37295"/>
</section>
<section title="DbcUnsupportedSignalTypeHandler" ref="classDbcUnsupportedSignalTypeHandler.html">
<section title="Handle" ref="classDbcUnsupportedSignalTypeHandler.html#ae4132fcdbb134d51143133c1fb83a9df"/>
</section>
<section title="DbcValueDescriptionHandler" ref="classDbcValueDescriptionHandler.html">
<section title="Handle" ref="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a"/>
</section>
@@ -505,6 +509,7 @@
<section title="DbcHeaderHandler" ref="classDbcHeaderHandler.html"/>
<section title="DbcMultiplexingHandler" ref="classDbcMultiplexingHandler.html"/>
<section title="DbcSignalHandler" ref="classDbcSignalHandler.html"/>
<section title="DbcUnsupportedSignalTypeHandler" ref="classDbcUnsupportedSignalTypeHandler.html"/>
<section title="DbcValueDescriptionHandler" ref="classDbcValueDescriptionHandler.html"/>
</section>
<section title="DbcTreeBuilder" ref="classDbcTreeBuilder.html"/>
@@ -810,6 +815,7 @@
<keyword name="DbcStatementHandler" id="DbcStatementHandler_" ref="classDbcStatementHandler.html"/>
<keyword name="DbcTreeBuilder" id="DbcTreeBuilder_" ref="classDbcTreeBuilder.html"/>
<keyword name="DbcTreeModel" id="DbcTreeModel_" ref="classDbcTreeModel.html"/>
<keyword name="DbcUnsupportedSignalTypeHandler" id="DbcUnsupportedSignalTypeHandler_" ref="classDbcUnsupportedSignalTypeHandler.html"/>
<keyword name="DbcValueDescriptionHandler" id="DbcValueDescriptionHandler_" ref="classDbcValueDescriptionHandler.html"/>
<keyword name="DecodeDatabase" id="DecodeDatabase_" ref="classDecodeDatabase.html"/>
<keyword name="DecodedFrameValue" id="DecodedFrameValue_" ref="structDecodedFrameValue.html"/>
@@ -949,6 +955,7 @@
<keyword name="Handle(const std::string &amp;line, DbcParseContext &amp;context) const override" id="DbcAttributeHandler::Handle_a397f23259b7ff79abb4b5141489caa83" ref="classDbcAttributeHandler.html#a397f23259b7ff79abb4b5141489caa83"/>
<keyword name="Handle(const std::string &amp;line, DbcParseContext &amp;context) const override" id="DbcValueDescriptionHandler::Handle_a653e13364f396b54244edc2c0fdd831a" ref="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a"/>
<keyword name="Handle(const std::string &amp;line, DbcParseContext &amp;context) const override" id="DbcMultiplexingHandler::Handle_a16f9e9f898640200477d2dcc8bab442e" ref="classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e"/>
<keyword name="Handle(const std::string &amp;line, DbcParseContext &amp;context) const override" id="DbcUnsupportedSignalTypeHandler::Handle_ae4132fcdbb134d51143133c1fb83a9df" ref="classDbcUnsupportedSignalTypeHandler.html#ae4132fcdbb134d51143133c1fb83a9df"/>
<keyword name="Handle(const std::string &amp;line, DbcParseContext &amp;context) const override" id="DbcHeaderHandler::Handle_a1e43a9dcf157f4d4418032d9e9711693" ref="classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693"/>
<keyword name="HasErrors() const" id="DbcParseResult::HasErrors_a4da8641de3f6b55c7447c4421e05d20d" ref="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d"/>
<keyword name="hasPgn" id="DecodeFrame::hasPgn_a2551102670c4a540fced4c71da0b369d" ref="structDecodeFrame.html#a2551102670c4a540fced4c71da0b369d"/>
@@ -1013,9 +1020,9 @@
<keyword name="rawValue" id="DecodedSignalValue::rawValue_a503c90b4b1a610b8252c45e466367c28" ref="structDecodedSignalValue.html#a503c90b4b1a610b8252c45e466367c28"/>
<keyword name="receivers" id="DecodeSignal::receivers_abdbae62a64d2df716bf60c6b67b30eaa" ref="structDecodeSignal.html#abdbae62a64d2df716bf60c6b67b30eaa"/>
<keyword name="receivers" id="SignalInfo::receivers_a2c95562fd0b29327a7fd7b1e6feee7f3" ref="structSignalInfo.html#a2c95562fd0b29327a7fd7b1e6feee7f3"/>
<keyword name="RegisterType(const std::string &amp;keyword)" id="DbcStatementDispatcher::RegisterType_a2c6e9a614ed747275d43bcccc50d0b2d" ref="classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d"/>
<keyword name="registerType(const ClassId &amp;id)" id="TypeFactory::registerType_ad6d85795285ee21193ac03e1b24762d3" ref="classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3"/>
<keyword name="registerType(const std::string &amp;id)" id="TypeFactory&lt; std::string, DbcStatementHandler &gt;::registerType_ad6d85795285ee21193ac03e1b24762d3" ref="classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3"/>
<keyword name="RegisterType(const std::string &amp;keyword)" id="DbcStatementDispatcher::RegisterType_a2c6e9a614ed747275d43bcccc50d0b2d" ref="classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d"/>
<keyword name="ResolveAttributes(const std::string &amp;filePath, std::vector&lt; DbcDiagnostic &gt; &amp;diagnostics)" id="DbcParseContext::ResolveAttributes_a1ac7f4a54550aaddef08749806f87001" ref="structDbcParseContext.html#a1ac7f4a54550aaddef08749806f87001"/>
<keyword name="ResolveComments(const std::string &amp;filePath)" id="DbcParseContext::ResolveComments_aeae343c57a244634489a0e0b960155d7" ref="structDbcParseContext.html#aeae343c57a244634489a0e0b960155d7"/>
<keyword name="ResolveValueDescriptions(const std::string &amp;filePath)" id="DbcParseContext::ResolveValueDescriptions_ab5552dad944fde7fa6add6464ddb5369" ref="structDbcParseContext.html#ab5552dad944fde7fa6add6464ddb5369"/>
@@ -1130,6 +1137,9 @@
<file>classDbcTreeModel-members.html</file>
<file>classDbcTreeModel.html</file>
<file>classDbcTreeModel__inherit__graph.svg</file>
<file>classDbcUnsupportedSignalTypeHandler-members.html</file>
<file>classDbcUnsupportedSignalTypeHandler.html</file>
<file>classDbcUnsupportedSignalTypeHandler__inherit__graph.svg</file>
<file>classDbcValueDescriptionHandler-members.html</file>
<file>classDbcValueDescriptionHandler.html</file>
<file>classDbcValueDescriptionHandler__inherit__graph.svg</file>
+11 -9
View File
@@ -1,17 +1,19 @@
<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
<area shape="rect" id="Node000000" href="$classDbcStatementHandler.html" title="Interface for processing a registered DBC statement." alt="" coords="5,153,172,179"/>
<area shape="rect" id="Node000000" href="$classDbcStatementHandler.html" title="Interface for processing a registered DBC statement." alt="" coords="5,179,172,204"/>
<area shape="rect" id="Node000001" href="$classDbcAttributeHandler.html" title="Defer typed attribute statements for resolution." alt="" coords="247,5,401,31"/>
<area shape="poly" id="edge1_Node000000_Node000001" title=" " alt="" coords="106,141,153,89,184,62,219,40,246,28,248,33,221,44,187,67,157,93,110,144"/>
<area shape="poly" id="edge1_Node000000_Node000001" title=" " alt="" coords="102,166,148,102,181,68,219,40,245,28,248,33,221,44,184,72,152,106,106,169"/>
<area shape="rect" id="Node000002" href="$classDbcCommentHandler.html" title="Defer frame and signal comments for target resolution." alt="" coords="243,55,405,80"/>
<area shape="poly" id="edge2_Node000000_Node000002" title=" " alt="" coords="118,144,164,115,219,89,255,78,256,83,221,94,167,120,121,148"/>
<area shape="poly" id="edge2_Node000000_Node000002" title=" " alt="" coords="111,167,158,127,188,106,219,89,250,78,252,83,221,94,190,111,162,131,115,171"/>
<area shape="rect" id="Node000003" href="$classDbcFrameHandler.html" title="Parse and append frame definitions." alt="" coords="255,104,393,129"/>
<area shape="poly" id="edge3_Node000000_Node000003" title=" " alt="" coords="163,148,262,127,263,132,164,153"/>
<area shape="poly" id="edge3_Node000000_Node000003" title=" " alt="" coords="131,171,219,138,261,127,263,132,221,143,132,176"/>
<area shape="rect" id="Node000004" href="$classDbcHeaderHandler.html" title=" " alt="" coords="251,153,397,179"/>
<area shape="poly" id="edge4_Node000000_Node000004" title=" " alt="" coords="186,163,251,163,251,169,186,169"/>
<area shape="poly" id="edge4_Node000000_Node000004" title=" " alt="" coords="185,178,251,171,251,176,186,184"/>
<area shape="rect" id="Node000005" href="$classDbcMultiplexingHandler.html" title="Parse extended multiplexing conditions for deferred resolution." alt="" coords="235,203,413,228"/>
<area shape="poly" id="edge5_Node000000_Node000005" title=" " alt="" coords="164,179,263,200,262,205,163,184"/>
<area shape="poly" id="edge5_Node000000_Node000005" title=" " alt="" coords="186,199,235,204,234,209,185,204"/>
<area shape="rect" id="Node000006" href="$classDbcSignalHandler.html" title="Parse and append signals to the current frame." alt="" coords="255,252,393,277"/>
<area shape="poly" id="edge6_Node000000_Node000006" title=" " alt="" coords="122,184,168,211,221,237,260,249,259,254,219,242,165,216,119,189"/>
<area shape="rect" id="Node000007" href="$classDbcValueDescriptionHandler.html" title="Defer raw value descriptions for target resolution." alt="" coords="220,301,428,327"/>
<area shape="poly" id="edge7_Node000000_Node000007" title=" " alt="" coords="110,188,157,238,188,264,221,286,252,299,250,304,219,291,185,269,154,242,106,191"/>
<area shape="poly" id="edge6_Node000000_Node000006" title=" " alt="" coords="135,207,221,237,267,249,266,255,219,242,134,212"/>
<area shape="rect" id="Node000007" href="$classDbcUnsupportedSignalTypeHandler.html" title=" " alt="" coords="224,302,424,342"/>
<area shape="poly" id="edge7_Node000000_Node000007" title=" " alt="" coords="116,211,163,249,221,286,251,299,249,304,219,291,160,253,112,215"/>
<area shape="rect" id="Node000008" href="$classDbcValueDescriptionHandler.html" title="Defer raw value descriptions for target resolution." alt="" coords="220,367,428,392"/>
<area shape="poly" id="edge8_Node000000_Node000008" title=" " alt="" coords="105,215,150,284,183,321,221,352,247,364,245,369,219,356,179,325,146,287,101,218"/>
</map>
+1 -1
View File
@@ -1 +1 @@
81f795b8af5d3417bb7193b7647f084f
0c44e3ab7229f7187d00bf195c52950d
+53 -34
View File
@@ -4,16 +4,16 @@
<!-- Generated by graphviz version 2.42.4 (0)
-->
<!-- Title: Graphical Class Hierarchy Pages: 1 -->
<svg width="325pt" height="249pt"
viewBox="0.00 0.00 325.00 249.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 245)">
<svg width="325pt" height="298pt"
viewBox="0.00 0.00 325.00 298.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 294)">
<title>Graphical Class Hierarchy</title>
<!-- Node0 -->
<g id="Node000000" class="node">
<title>Node0</title>
<g id="a_Node000000"><a xlink:href="classDbcStatementHandler.html" target="_top" xlink:title="Interface for processing a registered DBC statement.">
<polygon fill="white" stroke="#666666" points="125,-130 0,-130 0,-111 125,-111 125,-130"/>
<text text-anchor="middle" x="62.5" y="-118" font-family="Helvetica,sans-Serif" font-size="10.00">DbcStatementHandler</text>
<polygon fill="white" stroke="#666666" points="125,-160 0,-160 0,-141 125,-141 125,-160"/>
<text text-anchor="middle" x="62.5" y="-148" font-family="Helvetica,sans-Serif" font-size="10.00">DbcStatementHandler</text>
</a>
</g>
</g>
@@ -21,8 +21,8 @@
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:href="classDbcAttributeHandler.html" target="_top" xlink:title="Defer typed attribute statements for resolution.">
<polygon fill="white" stroke="#666666" points="297,-241 181,-241 181,-222 297,-222 297,-241"/>
<text text-anchor="middle" x="239" y="-229" font-family="Helvetica,sans-Serif" font-size="10.00">DbcAttributeHandler</text>
<polygon fill="white" stroke="#666666" points="297,-290 181,-290 181,-271 297,-271 297,-290"/>
<text text-anchor="middle" x="239" y="-278" font-family="Helvetica,sans-Serif" font-size="10.00">DbcAttributeHandler</text>
</a>
</g>
</g>
@@ -30,8 +30,8 @@
<g id="edge1_Node000000_Node000001" class="edge">
<title>Node0&#45;&gt;Node1</title>
<g id="a_edge1_Node000000_Node000001"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M76.86,-138.01C93.99,-159.21 125.73,-194.43 161,-213.5 167.28,-216.9 174.18,-219.65 181.2,-221.9"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="79.58,-135.81 70.63,-130.13 74.08,-140.15 79.58,-135.81"/>
<path fill="none" stroke="#63b8ff" d="M74.13,-168.67C89.83,-193.81 121.64,-238.79 161,-262.5 167.12,-266.18 173.92,-269.11 180.89,-271.44"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="77.1,-166.82 68.92,-160.09 71.12,-170.45 77.1,-166.82"/>
</a>
</g>
</g>
@@ -39,8 +39,8 @@
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a xlink:href="classDbcCommentHandler.html" target="_top" xlink:title="Defer frame and signal comments for target resolution.">
<polygon fill="white" stroke="#666666" points="300,-204 178,-204 178,-185 300,-185 300,-204"/>
<text text-anchor="middle" x="239" y="-192" font-family="Helvetica,sans-Serif" font-size="10.00">DbcCommentHandler</text>
<polygon fill="white" stroke="#666666" points="300,-253 178,-253 178,-234 300,-234 300,-253"/>
<text text-anchor="middle" x="239" y="-241" font-family="Helvetica,sans-Serif" font-size="10.00">DbcCommentHandler</text>
</a>
</g>
</g>
@@ -48,8 +48,8 @@
<g id="edge2_Node000000_Node000002" class="edge">
<title>Node0&#45;&gt;Node2</title>
<g id="a_edge2_Node000000_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M85.38,-135.56C104.55,-148.13 133.56,-165.68 161,-176.5 169.43,-179.82 178.63,-182.63 187.64,-184.96"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="87.32,-132.65 77.06,-130.01 83.44,-138.47 87.32,-132.65"/>
<path fill="none" stroke="#63b8ff" d="M80.58,-167.36C98.94,-184.53 129.71,-210.67 161,-225.5 168.2,-228.91 176.08,-231.7 183.98,-233.97"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="82.71,-164.56 73.07,-160.18 77.88,-169.62 82.71,-164.56"/>
</a>
</g>
</g>
@@ -57,8 +57,8 @@
<g id="Node000003" class="node">
<title>Node3</title>
<g id="a_Node000003"><a xlink:href="classDbcFrameHandler.html" target="_top" xlink:title="Parse and append frame definitions.">
<polygon fill="white" stroke="#666666" points="291,-167 187,-167 187,-148 291,-148 291,-167"/>
<text text-anchor="middle" x="239" y="-155" font-family="Helvetica,sans-Serif" font-size="10.00">DbcFrameHandler</text>
<polygon fill="white" stroke="#666666" points="291,-216 187,-216 187,-197 291,-197 291,-216"/>
<text text-anchor="middle" x="239" y="-204" font-family="Helvetica,sans-Serif" font-size="10.00">DbcFrameHandler</text>
</a>
</g>
</g>
@@ -66,8 +66,8 @@
<g id="edge3_Node000000_Node000003" class="edge">
<title>Node0&#45;&gt;Node3</title>
<g id="a_edge3_Node000000_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M118.45,-132.15C142.42,-137.23 170.18,-143.12 192.91,-147.94"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="118.95,-128.68 108.44,-130.03 117.49,-135.53 118.95,-128.68"/>
<path fill="none" stroke="#63b8ff" d="M94.59,-163.92C113.54,-171.77 138.39,-181.49 161,-188.5 171.1,-191.63 182.09,-194.51 192.52,-197"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="95.83,-160.65 85.26,-160.01 93.12,-167.1 95.83,-160.65"/>
</a>
</g>
</g>
@@ -75,8 +75,8 @@
<g id="Node000004" class="node">
<title>Node4</title>
<g id="a_Node000004"><a xlink:href="classDbcHeaderHandler.html" target="_top" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="293.5,-130 184.5,-130 184.5,-111 293.5,-111 293.5,-130"/>
<text text-anchor="middle" x="239" y="-118" font-family="Helvetica,sans-Serif" font-size="10.00">DbcHeaderHandler</text>
<polygon fill="white" stroke="#666666" points="293.5,-179 184.5,-179 184.5,-160 293.5,-160 293.5,-179"/>
<text text-anchor="middle" x="239" y="-167" font-family="Helvetica,sans-Serif" font-size="10.00">DbcHeaderHandler</text>
</a>
</g>
</g>
@@ -84,8 +84,8 @@
<g id="edge4_Node000000_Node000004" class="edge">
<title>Node0&#45;&gt;Node4</title>
<g id="a_edge4_Node000000_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M135.13,-120.5C151.56,-120.5 168.76,-120.5 184.28,-120.5"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="135.02,-117 125.02,-120.5 135.02,-124 135.02,-117"/>
<path fill="none" stroke="#63b8ff" d="M135.13,-158.3C151.56,-160.09 168.76,-161.96 184.28,-163.65"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="135.34,-154.8 125.02,-157.2 134.58,-161.76 135.34,-154.8"/>
</a>
</g>
</g>
@@ -93,8 +93,8 @@
<g id="Node000005" class="node">
<title>Node5</title>
<g id="a_Node000005"><a xlink:href="classDbcMultiplexingHandler.html" target="_top" xlink:title="Parse extended multiplexing conditions for deferred resolution.">
<polygon fill="white" stroke="#666666" points="306,-93 172,-93 172,-74 306,-74 306,-93"/>
<text text-anchor="middle" x="239" y="-81" font-family="Helvetica,sans-Serif" font-size="10.00">DbcMultiplexingHandler</text>
<polygon fill="white" stroke="#666666" points="306,-142 172,-142 172,-123 306,-123 306,-142"/>
<text text-anchor="middle" x="239" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">DbcMultiplexingHandler</text>
</a>
</g>
</g>
@@ -102,8 +102,8 @@
<g id="edge5_Node000000_Node000005" class="edge">
<title>Node0&#45;&gt;Node5</title>
<g id="a_edge5_Node000000_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M118.45,-108.85C142.42,-103.77 170.18,-97.88 192.91,-93.06"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="117.49,-105.47 108.44,-110.97 118.95,-112.32 117.49,-105.47"/>
<path fill="none" stroke="#63b8ff" d="M135.15,-143.11C147.34,-141.85 159.96,-140.55 172,-139.31"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="134.61,-139.65 125.02,-144.15 135.33,-146.61 134.61,-139.65"/>
</a>
</g>
</g>
@@ -111,8 +111,8 @@
<g id="Node000006" class="node">
<title>Node6</title>
<g id="a_Node000006"><a xlink:href="classDbcSignalHandler.html" target="_top" xlink:title="Parse and append signals to the current frame.">
<polygon fill="white" stroke="#666666" points="291,-56 187,-56 187,-37 291,-37 291,-56"/>
<text text-anchor="middle" x="239" y="-44" font-family="Helvetica,sans-Serif" font-size="10.00">DbcSignalHandler</text>
<polygon fill="white" stroke="#666666" points="291,-105 187,-105 187,-86 291,-86 291,-105"/>
<text text-anchor="middle" x="239" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">DbcSignalHandler</text>
</a>
</g>
</g>
@@ -120,17 +120,18 @@
<g id="edge6_Node000000_Node000006" class="edge">
<title>Node0&#45;&gt;Node6</title>
<g id="a_edge6_Node000000_Node000006"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M86.38,-105.22C105.6,-92.99 134.14,-76.16 161,-65.5 170.34,-61.79 180.62,-58.65 190.54,-56.06"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="84.24,-102.44 77.75,-110.82 88.04,-108.32 84.24,-102.44"/>
<path fill="none" stroke="#63b8ff" d="M96.82,-137.14C115.51,-129.92 139.36,-121.14 161,-114.5 172.19,-111.07 184.44,-107.82 195.81,-105.01"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="95.33,-133.97 87.29,-140.87 97.87,-140.49 95.33,-133.97"/>
</a>
</g>
</g>
<!-- Node7 -->
<g id="Node000007" class="node">
<title>Node7</title>
<g id="a_Node000007"><a xlink:href="classDbcValueDescriptionHandler.html" target="_top" xlink:title="Defer raw value descriptions for target resolution.">
<polygon fill="white" stroke="#666666" points="317,-19 161,-19 161,0 317,0 317,-19"/>
<text text-anchor="middle" x="239" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">DbcValueDescriptionHandler</text>
<g id="a_Node000007"><a xlink:href="classDbcUnsupportedSignalTypeHandler.html" target="_top" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="314,-67.5 164,-67.5 164,-37.5 314,-37.5 314,-67.5"/>
<text text-anchor="start" x="172" y="-55.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcUnsupportedSignalType</text>
<text text-anchor="middle" x="239" y="-44.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handler</text>
</a>
</g>
</g>
@@ -138,8 +139,26 @@
<g id="edge7_Node000000_Node000007" class="edge">
<title>Node0&#45;&gt;Node7</title>
<g id="a_edge7_Node000000_Node000007"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M77.2,-102.93C94.48,-82 126.16,-47.5 161,-28.5 168.13,-24.61 176.07,-21.51 184.06,-19.03"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="74.46,-100.75 70.91,-110.73 79.91,-105.14 74.46,-100.75"/>
<path fill="none" stroke="#63b8ff" d="M81.53,-134.1C100.22,-117.83 130.88,-93.11 161,-77.5 168.11,-73.81 175.87,-70.53 183.65,-67.65"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="78.99,-131.67 73.82,-140.92 83.63,-136.91 78.99,-131.67"/>
</a>
</g>
</g>
<!-- Node8 -->
<g id="Node000008" class="node">
<title>Node8</title>
<g id="a_Node000008"><a xlink:href="classDbcValueDescriptionHandler.html" target="_top" xlink:title="Defer raw value descriptions for target resolution.">
<polygon fill="white" stroke="#666666" points="317,-19 161,-19 161,0 317,0 317,-19"/>
<text text-anchor="middle" x="239" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">DbcValueDescriptionHandler</text>
</a>
</g>
</g>
<!-- Node0&#45;&gt;Node8 -->
<g id="edge8_Node000000_Node000008" class="edge">
<title>Node0&#45;&gt;Node8</title>
<g id="a_edge8_Node000000_Node000008"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M73.11,-131.94C88.11,-104.87 119.71,-54.92 161,-28.5 167.03,-24.64 173.79,-21.57 180.73,-19.11"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="70,-130.33 68.35,-140.79 76.17,-133.65 70,-130.33"/>
</a>
</g>
</g>

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

+1 -1
View File
@@ -1,5 +1,5 @@
<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
<area shape="rect" id="Node000000" title=" " alt="" coords="5,5,161,31"/>
<area shape="rect" id="Node000001" href="$classDbcTreeModel.html" title=" " alt="" coords="209,5,324,31"/>
<area shape="poly" id="edge8_Node000000_Node000001" title=" " alt="" coords="175,15,209,15,209,21,175,21"/>
<area shape="poly" id="edge9_Node000000_Node000001" title=" " alt="" coords="175,15,209,15,209,21,175,21"/>
</map>
+1 -1
View File
@@ -1 +1 @@
135d8c5ec586c0414ce0a7492f17be7a
681c8df12e299700deb6c7b081831f8f
+2 -2
View File
@@ -27,9 +27,9 @@
</g>
</g>
<!-- Node0&#45;&gt;Node1 -->
<g id="edge8_Node000000_Node000001" class="edge">
<g id="edge9_Node000000_Node000001" class="edge">
<title>Node0&#45;&gt;Node1</title>
<g id="a_edge8_Node000000_Node000001"><a xlink:title=" ">
<g id="a_edge9_Node000000_Node000001"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M127.5,-9.5C136.16,-9.5 144.82,-9.5 152.91,-9.5"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="127.36,-6 117.36,-9.5 127.36,-13 127.36,-6"/>
</a>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

+5 -5
View File
@@ -1,13 +1,13 @@
<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
<area shape="rect" id="Node000000" title=" " alt="" coords="5,31,120,56"/>
<area shape="rect" id="Node000001" title=" " alt="" coords="178,5,297,31"/>
<area shape="poly" id="edge9_Node000000_Node000001" title=" " alt="" coords="133,30,177,24,178,29,134,36"/>
<area shape="poly" id="edge10_Node000000_Node000001" title=" " alt="" coords="133,30,177,24,178,29,134,36"/>
<area shape="rect" id="Node000004" title=" " alt="" coords="168,55,307,80"/>
<area shape="poly" id="edge12_Node000000_Node000004" title=" " alt="" coords="134,50,168,55,167,60,133,56"/>
<area shape="poly" id="edge13_Node000000_Node000004" title=" " alt="" coords="134,50,168,55,167,60,133,56"/>
<area shape="rect" id="Node000002" title=" " alt="" coords="355,5,519,31"/>
<area shape="poly" id="edge10_Node000001_Node000002" title=" " alt="" coords="311,15,355,15,355,21,311,21"/>
<area shape="poly" id="edge11_Node000001_Node000002" title=" " alt="" coords="311,15,355,15,355,21,311,21"/>
<area shape="rect" id="Node000003" href="$classdbc__detail_1_1MultiplexError.html" title=" " alt="" coords="567,5,756,31"/>
<area shape="poly" id="edge11_Node000002_Node000003" title=" " alt="" coords="532,15,566,15,566,21,532,21"/>
<area shape="poly" id="edge12_Node000002_Node000003" title=" " alt="" coords="532,15,566,15,566,21,532,21"/>
<area shape="rect" id="Node000005" href="$classDbcDiagnosticError.html" title=" " alt="" coords="363,55,510,80"/>
<area shape="poly" id="edge13_Node000004_Node000005" title=" " alt="" coords="320,65,363,65,363,70,320,70"/>
<area shape="poly" id="edge14_Node000004_Node000005" title=" " alt="" coords="320,65,363,65,363,70,320,70"/>
</map>
+1 -1
View File
@@ -1 +1 @@
20f0e2a99ef43e59e8d2d49d66e78b81
bdf9947a09767a7f8594fc5f061f603e
+10 -10
View File
@@ -27,9 +27,9 @@
</g>
</g>
<!-- Node0&#45;&gt;Node1 -->
<g id="edge9_Node000000_Node000001" class="edge">
<g id="edge10_Node000000_Node000001" class="edge">
<title>Node0&#45;&gt;Node1</title>
<g id="a_edge9_Node000000_Node000001"><a xlink:title=" ">
<g id="a_edge10_Node000000_Node000001"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M96.17,-35.18C107.18,-36.81 118.68,-38.5 129.34,-40.07"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="96.64,-31.72 86.24,-33.72 95.62,-38.64 96.64,-31.72"/>
</a>
@@ -45,9 +45,9 @@
</g>
</g>
<!-- Node0&#45;&gt;Node4 -->
<g id="edge12_Node000000_Node000004" class="edge">
<g id="edge13_Node000000_Node000004" class="edge">
<title>Node0&#45;&gt;Node4</title>
<g id="a_edge12_Node000000_Node000004"><a xlink:title=" ">
<g id="a_edge13_Node000000_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M96.27,-20.21C104.65,-19.04 113.31,-17.83 121.66,-16.66"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="95.66,-16.76 86.24,-21.61 96.63,-23.69 95.66,-16.76"/>
</a>
@@ -63,9 +63,9 @@
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge10_Node000001_Node000002" class="edge">
<g id="edge11_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge10_Node000001_Node000002"><a xlink:title=" ">
<g id="a_edge11_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M228.92,-46.5C239.64,-46.5 250.96,-46.5 261.89,-46.5"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="228.86,-43 218.86,-46.5 228.86,-50 228.86,-43"/>
</a>
@@ -81,9 +81,9 @@
</g>
</g>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge11_Node000002_Node000003" class="edge">
<g id="edge12_Node000002_Node000003" class="edge">
<title>Node2&#45;&gt;Node3</title>
<g id="a_edge11_Node000002_Node000003"><a xlink:title=" ">
<g id="a_edge12_Node000002_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M395.3,-46.5C403.76,-46.5 412.4,-46.5 420.86,-46.5"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="395.08,-43 385.08,-46.5 395.08,-50 395.08,-43"/>
</a>
@@ -99,9 +99,9 @@
</g>
</g>
<!-- Node4&#45;&gt;Node5 -->
<g id="edge13_Node000004_Node000005" class="edge">
<g id="edge14_Node000004_Node000005" class="edge">
<title>Node4&#45;&gt;Node5</title>
<g id="a_edge13_Node000004_Node000005"><a xlink:title=" ">
<g id="a_edge14_Node000004_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M236.26,-9.5C246.92,-9.5 257.95,-9.5 268.4,-9.5"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="236.17,-6 226.17,-9.5 236.17,-13 236.17,-6"/>
</a>

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

+1 -1
View File
@@ -108,7 +108,7 @@ $(document).ready(function(){initNavTree('hierarchy.html',''); initResizable();
<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_9.svg" width="134" height="36"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></td></tr>
<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_10.svg" width="148" height="36"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></td></tr>
<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_11.svg" width="196" height="36"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></td></tr>
<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_12.svg" width="434" height="332"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></td></tr>
<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_12.svg" width="434" height="398"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></td></tr>
<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_13.svg" width="131" height="36"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></td></tr>
<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_14.svg" width="144" height="36"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></td></tr>
<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_15.svg" width="167" height="36"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></td></tr>
+14 -10
View File
@@ -537,12 +537,12 @@ Structured diagnostics</h2>
<div class="line"> <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>(result.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>);</div>
<div class="line"> <span class="comment">// Inspect warnings before relying on decoding results.</span></div>
<div class="line">}</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_a0e915ce79c2e3d4c95a5aaf2bf0409bc"><div class="ttname"><a href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">DbcParser::ParseFileWithDiagnostics</a></div><div class="ttdeci">DbcParseResult ParseFileWithDiagnostics(const std::string &amp;filePath) const</div><div class="ttdoc">Parse with warnings and a structured first error instead of throwing.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00103">dbc_parser.cpp:103</a></div></div>
<div class="ttc" id="astructDbcDiagnostic_html"><div class="ttname"><a href="structDbcDiagnostic.html">DbcDiagnostic</a></div><div class="ttdoc">Diagnostic message and physical source location.</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00029">dbc_diagnostic.h:29</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_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="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="aclassDbcParser_html_a0e915ce79c2e3d4c95a5aaf2bf0409bc"><div class="ttname"><a href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">DbcParser::ParseFileWithDiagnostics</a></div><div class="ttdeci">DbcParseResult ParseFileWithDiagnostics(const std::string &amp;filePath) const</div><div class="ttdoc">Parse with warnings and a structured first error instead of throwing.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00105">dbc_parser.cpp:105</a></div></div>
<div class="ttc" id="astructDbcDiagnostic_html"><div class="ttname"><a href="structDbcDiagnostic.html">DbcDiagnostic</a></div><div class="ttdoc">Diagnostic message and physical source location.</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00030">dbc_diagnostic.h:30</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_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><!-- fragment --><table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Severity / code </th><th class="markdownTableHeadNone">Meaning </th></tr>
@@ -559,10 +559,13 @@ Structured diagnostics</h2>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>Warning</code> / <code>UnsupportedStatement</code> </td><td class="markdownTableBodyNone">Unregistered statement skipped; decoding or metadata may be incomplete </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>Error</code> / <code>UnsupportedSignalType</code> </td><td class="markdownTableBodyNone"><code>SIG_VALTYPE_</code> declaration rejected to prevent incorrect integer decoding </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>Error</code> / <code>InvalidMultiplexing</code> </td><td class="markdownTableBodyNone">Invalid <code>SG_MUL_VAL_</code> syntax, references, ranges, or cycles </td></tr>
</table>
<p>Parsing stops at the first error and returns an empty database, together with any preceding warnings and the error. Deferred comment, <code>VAL_</code>, and multiplexing errors retain their original source lines. Invalid signal markers use <code>InvalidStatement</code>. <code>HasErrors()</code> checks severity; warnings alone do not make a parse fail.</p>
<p>Unknown statements are reported conservatively, including <code>SIG_VALTYPE_</code>, attribute relation forms (<code>BA_REL_</code>, <code>BA_DEF_REL_</code>), signal types/references, environment variables, named <code>VAL_TABLE_</code> tables, and vendor extensions. For example, ignoring <code>SIG_VALTYPE_</code> may decode a floating-point signal as an integer. The parser does not implement the warned features; consumers should review warnings.</p>
<p>All <code>SIG_VALTYPE_</code> declarations are rejected with <code>Error / UnsupportedSignalType</code>. This includes float32 (type 1), float64 (type 2), type 0, unknown types, and malformed declarations: the operator itself is not implemented. <code>ParseFile()</code> throws a source-located error; <code>ParseFileWithDiagnostics()</code> returns an empty database with the error and any preceding warnings. There is no permissive mode. This prevents IEEE 754 payload bits from being interpreted as a valid integer signal. Integer signals defined with <code>SG_</code> without this operator are unchanged. A bare <code>SIG_VALTYPE_</code> symbol inside an <code>NS_</code> symbol list remains quiet header metadata, rather than a value-type declaration.</p>
<p>Other unknown statements are reported conservatively, including attribute relation forms (<code>BA_REL_</code>, <code>BA_DEF_REL_</code>), signal types/references, environment variables, named <code>VAL_TABLE_</code> tables, and vendor extensions. The parser does not implement the warned features; consumers should review warnings.</p>
<h2><a class="anchor" id="autotoc_md97"></a>
Attributes and frame metadata</h2>
<p><code>BA_DEF_</code>, <code>BA_DEF_DEF_</code>, and <code>BA_</code> support database, <code>BO_</code>, <code>SG_</code>, <code>BU_</code>, and <code>EV_</code> scopes with <code>INT</code>, <code>HEX</code>, <code>FLOAT</code>, <code>STRING</code>, and <code>ENUM</code> definitions. Integer/HEX values use decimal signed 64-bit numbers; floating values are finite and locale independent. ENUM assignments use zero-based indices; defaults accept an index or a quoted label. Strings support escaped quotes and backslashes. Statements end with <code>;</code> outside quoted text and may span physical lines, including ENUM lists, defaults, and assignments. Newlines inside quoted strings are preserved; semicolons inside them do not terminate the statement. Attribute errors and format warnings refer to the statement's first physical line.</p>
@@ -700,7 +703,7 @@ J1939 Opt-in and PGN Lookup</h1>
<div class="line">options.<a class="code hl_variable" href="structDbcParserOptions.html#ab31534f5c0853461b46cbb38149c33f9">enableJ1939</a> = <span class="keyword">true</span>;</div>
<div class="line"><span class="keyword">const</span> <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a> parsed = <a class="code hl_class" href="classDbcParser.html">DbcParser</a>(options).<a class="code hl_function" href="classDbcParser.html#aef72826942c9095d653fafa435855e56">ParseFile</a>(<span class="stringliteral">&quot;vehicle.dbc&quot;</span>);</div>
<div class="line"><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);</div>
<div class="ttc" id="aclassDbcParser_html_aef72826942c9095d653fafa435855e56"><div class="ttname"><a href="classDbcParser.html#aef72826942c9095d653fafa435855e56">DbcParser::ParseFile</a></div><div class="ttdeci">DbcDatabase ParseFile(const std::string &amp;filePath) const</div><div class="ttdoc">Parse DBC file.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00090">dbc_parser.cpp:90</a></div></div>
<div class="ttc" id="aclassDbcParser_html_aef72826942c9095d653fafa435855e56"><div class="ttname"><a href="classDbcParser.html#aef72826942c9095d653fafa435855e56">DbcParser::ParseFile</a></div><div class="ttdeci">DbcDatabase ParseFile(const std::string &amp;filePath) const</div><div class="ttdoc">Parse DBC file.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00092">dbc_parser.cpp:92</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="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="astructDbcParserOptions_html_ab31534f5c0853461b46cbb38149c33f9"><div class="ttname"><a href="structDbcParserOptions.html#ab31534f5c0853461b46cbb38149c33f9">DbcParserOptions::enableJ1939</a></div><div class="ttdeci">bool enableJ1939</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8h_source.html#l00021">dbc_parser.h:21</a></div></div>
@@ -864,7 +867,7 @@ Statement Handler Factory</h1>
<div class="ttc" id="astructDbcParseContext_html"><div class="ttname"><a href="structDbcParseContext.html">DbcParseContext</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00060">dbc_statement_handler.h:60</a></div></div>
</div><!-- fragment --><p>Register it in the dispatcher constructor:</p>
<div class="fragment"><div class="line">RegisterType&lt;MyCustomHandler&gt;(<span class="stringliteral">&quot;CUSTOM_&quot;</span>); <span class="comment">// after implementing MyCustomHandler</span></div>
</div><!-- fragment --><p>Registration creates one handler; replacing a registration replaces that instance. Register during initialization before dispatching. A line is routed using its full first whitespace-delimited keyword, so <code>BO_TX_BU_</code> cannot match <code>BO_</code>. Unregistered keywords produce <code>UnsupportedStatement</code> warnings through <code>ParseFileWithDiagnostics</code>. <code>SG_</code> and <code>CM_</code> accept spaces and tabs after their keywords.</p>
</div><!-- fragment --><p>Registration creates one handler; replacing a registration replaces that instance. Register during initialization before dispatching. A line is routed using its full first whitespace-delimited keyword, so <code>BO_TX_BU_</code> cannot match <code>BO_</code>. Unregistered keywords produce <code>UnsupportedStatement</code> warnings through <code>ParseFileWithDiagnostics</code>. A registered rejection handler for <code>SIG_VALTYPE_</code> produces <code>UnsupportedSignalType</code> errors instead of skipping the declaration. <code>SG_</code> and <code>CM_</code> accept spaces and tabs after their keywords.</p>
<p>This factory handles statements inside DBC files. A separate format-level factory can be introduced when another file format is implemented. The decoder and database builders remain independent of statement dispatch.</p>
<hr />
<h1><a class="anchor" id="autotoc_md136"></a>
@@ -893,7 +896,7 @@ Current Limitations</h1>
<li>multiple parent selectors for one signal</li>
<li>named <code>VAL_TABLE_</code> tables and environment-variable value descriptions</li>
<li>attribute relation forms (<code>BA_REL_</code>, <code>BA_DEF_REL_</code>)</li>
<li><code>SIG_VALTYPE_</code> floating-point signal types</li>
<li>explicit <code>SIG_VALTYPE_</code> signal value types (declarations are rejected with an error)</li>
<li>signal types/references (<code>SGTYPE_</code>, <code>SIG_TYPE_REF_</code>) and environment variables</li>
<li>advanced comment handling</li>
<li>full DBC grammar coverage</li>
@@ -1065,6 +1068,7 @@ Build and run the demo</h2>
<div class="line">make -j</div>
<div class="line">./dbc_demo /absolute/path/to/example.dbc</div>
</div><!-- fragment --><p>The demo prints the parsed tree and decodes eight zero bytes using the first frame definition. Replace that sample payload in <code><a class="el" href="examples_2main_8cpp.html" title="Created: 2026-03-13 Author: Deeaitch (Dim. Himro)">examples/main.cpp</a></code> to feed live CAN data or trace records.</p>
<p>The demo prints all parser diagnostics, including severity and source location, and exits with code 2 before building or decoding when parsing reports an error. Warnings remain visible when parsing succeeds.</p>
<h2><a class="anchor" id="autotoc_md152"></a>
Generate API documentation</h2>
<p>With Doxygen installed, run from the repository root:</p>
+2
View File
@@ -115,6 +115,8 @@ Testing</h3>
<h3><a class="anchor" id="autotoc_md11"></a>
Fixed</h3>
<ul>
<li>Reject all <code>SIG_VALTYPE_</code> declarations with a source-located <code>UnsupportedSignalType</code> error instead of silently decoding their payload as integers. Both parser APIs reject the unsupported operator, including type 0; the diagnostic API publishes no partial database. Namespace symbol listings remain quiet. No permissive mode is introduced.</li>
<li>Display parser warnings and errors in the demo, and stop before building or decoding when parsing fails. Add parser and pipeline regressions for float32, float64, source locations, declaration order, and unchanged integer decoding. Verify Release and ASan/UBSan builds with the optional Qt adapter: 2,420 core checks, seven model checks, and the qmake tree test pass in each build. One named-locale case skips; leak checking remains disabled due to ptrace. Build the demo and verify error exits, visible warnings, and integer input.</li>
<li>Replace recursive regular-expression matching for <code>SG_</code> statements with an iterative field scanner. Long unit strings no longer overflow the stack.</li>
<li>Parse signal physical values directly with locale-independent <code>from_chars</code>, retaining complete-token, finite-value, overflow, and underflow validation without recursive numeric regex matching.</li>
<li>Preserve long valid fields without a new length limit, and reject malformed statements through the existing source-located diagnostic and throwing APIs.</li>
+7 -2
View File
@@ -123,7 +123,7 @@ Decoder coverage</h1>
<p>Coverage includes Motorola bit numbering within and across bytes, unaligned signals, signed values, scaling, 64-bit extraction, signed/unsigned boundary values (including <code>INT64_MIN</code>, <code>INT64_MAX</code>, and <code>UINT64_MAX</code>), numeric output, invalid lengths, insufficient payloads, and Intel regression cases. Frame validity means the definition was found; frame status reports unknown frames, short payloads, and signal errors. Tests exercise empty/short/exact/long payloads, ignored trailing bytes, signals outside declared DLC, invalid enum metadata and overflowing start bits rejected at construction, and preservation of successful signals on partial payloads. Physical conversion checks cover NaN/Inf parameters rejected at construction, multiplication/addition overflow, finite limits, signed/unsigned raw retention, and raw selector activation after physical conversion failure.</p>
<h1><a class="anchor" id="autotoc_md163"></a>
Parser coverage</h1>
<p>Structured diagnostic tests cover severity, code, supplied path, and physical line numbers for skipped syntax and immediate/deferred errors; warnings preceding an error are retained, and failed parses return an empty database. Common headers and namespace symbol lists stay quiet. Tests also check file-open errors, fresh parse sessions, and compatibility with the legacy throwing API. The diagnostic audit also covers 13 unsupported-statement variants, all namespace termination forms, CRLF and missing final newlines, relative paths with spaces, first-error stopping, deferred diagnostic ordering, duplicate definitions/values, selector ranges, overlaps, and preservation of supported decoding and metadata. On Linux, reading a directory exercises the distinct <code>FileReadError</code> path.</p>
<p>Structured diagnostic tests cover severity, code, supplied path, and physical line numbers for skipped syntax and immediate/deferred errors; warnings preceding an error are retained, and failed parses return an empty database. Common headers and namespace symbol lists stay quiet. Tests also check file-open errors, fresh parse sessions, and compatibility with the legacy throwing API. The diagnostic audit also covers 11 unsupported-statement variants, all namespace termination forms, CRLF and missing final newlines, relative paths with spaces, first-error stopping, deferred diagnostic ordering, duplicate definitions/values, selector ranges, overlaps, and preservation of supported decoding and metadata. On Linux, reading a directory exercises the distinct <code>FileReadError</code> path.</p>
<p>Parser tests cover standard and extended CAN IDs, whitespace, payload storage boundaries, missing fields, malformed and overflowing numbers, reserved ID bits, error paths and line numbers, and integration with signals and comments. Comment regressions cover tabs, escaped quotes/backslashes, multiline text with blank lines and indentation, CRLF, missing final newlines, comments preceding frame/signal definitions, last-wins and empty overwrites, normalized ID boundaries, standard/extended separation, malformed syntax/IDs, and missing targets. Errors verify both structured diagnostics and the throwing API at the starting line. Duplicate definitions are rejected at their source lines, including equivalent extended ID encodings and repeated signal names within a frame. Standard and extended frames may share a numeric ID, and separate frames may reuse signal names. Signal tests cover complete syntax and numeric validation, scientific notation, finite physical parameters and ordered ranges, spaces and tabs, receiver lists, invalid multiplexing, and Intel/Motorola declared-payload boundaries. Physical-number tests apply a custom comma-decimal C++ locale and an available named comma-decimal C numeric locale. They check all four physical fields, leading signs, fractions, scientific notation, finite boundaries, zero, malformed numbers, comma/grouped numbers, overflow/underflow, and reversed ranges. Locale changes are restored after each test. The named C locale case skips if none of the supported locale names are installed; the custom C++ locale case always runs. On Linux with locale sources and <code>localedef</code>, run both cases without installing a system locale:</p>
<div class="fragment"><div class="line">mkdir -p /tmp/dbc-test-locales</div>
<div class="line">localedef --no-archive -i de_DE -f UTF-8 /tmp/dbc-test-locales/de_DE.UTF-8</div>
@@ -160,10 +160,15 @@ Attribute coverage</h1>
<p>Parser slots <code>attributes</code>, <code>invalidAttributes</code>, and <code>attributeWarnings</code> cover all five scopes and types, deferred definitions/defaults/targets, explicit values overriding defaults, repeated assignments, escaped strings, typed range/scope errors, duplicate definitions/defaults, unknown attributes and missing targets. They check source diagnostics and the throwing API, distinct standard/extended targets, frame cycle times and enum labels, unsupported formats and ID conflicts, unchanged J1939 opt-in, and runtime/tree propagation. Existing unsupported-statement checks now use relation forms, which remain unsupported, instead of supported attribute forms.</p>
<p>Attribute changes were verified with <code>qmake6 ../dbc.pro</code>, <code>make -j4</code>, and <code>make check</code> in <code>build/</code>: all six QtTest suites and the qmake tree target passed. The standalone C++17 tree test also passed. The existing named comma-decimal C locale test skipped because the locale is not installed.</p>
<h1><a class="anchor" id="autotoc_md170"></a>
Unsupported signal value types</h1>
<p><code>unsupportedSignalValueTypes</code> verifies that both parser APIs reject <code>SIG_VALTYPE_</code> declarations with <code>UnsupportedSignalType</code>, the original file path and physical line, and an empty database. Cases include float32/float64, declarations before signal definitions, extended IDs, tabs/CRLF, no final newline, type 0, unknown types, and malformed declarations. Prior warnings are retained; <code>SIG_VALTYPE_</code> symbols inside <code>NS_</code> lists remain quiet.</p>
<p>The pipeline suite checks the IEEE 754 bytes for float32 and float64 <code>1.0</code>. Adding a type declaration must prevent publication of an integer definition, so building from the error result cannot produce a valid decoded signal. The same payloads still decode to exact integers when defined only by supported <code>SG_</code> statements. New cases are included in the existing qmake targets.</p>
<p>Verified with Qt 6.8.2 in separate Release and ASan/UBSan builds with <code>CONFIG+=dbc_qt</code>: each passed 2,420 core QtTest checks, seven model checks, and the qmake tree test. One named-locale case skipped because its locale is unavailable. ASan/UBSan used fatal errors and <code>detect_leaks=0</code> because of the previously documented ptrace restriction. The separately built demo was checked with float32 and float64 declarations (exit 2, source-located error, no decode output), a supported integer definition (exit 0), and an unknown extension (exit 0 with a visible warning).</p>
<h1><a class="anchor" id="autotoc_md171"></a>
Long signal definitions</h1>
<p><code>longSignalDefinitions</code> reproduces the former stack overflow with a 50,000-character unit string. Both parser APIs are exercised with long units, signal names, receivers, decimal numbers, and a list of 10,001 receivers. Valid input must parse without truncating units; malformed input (including missing quotes, delimiters, receiver separators, numeric suffixes, overflow, and trailing receiver commas) must return an empty database and an <code>InvalidStatement</code> diagnostic at the signal's source line, or throw a source-located error through <code>ParseFile()</code>. These cases run as part of the existing parser target and sanitizer builds.</p>
<p>Verified with Qt 6.8.2 in separate Release and ASan/UBSan builds, both with <code>CONFIG+=dbc_qt</code>: <code>make check</code> passed 2,409 core QtTest checks, seven model checks, and the qmake tree test in each build. The named comma-decimal C locale test skipped because the required locale is not installed. The sanitizer run used <code>ASAN_OPTIONS=detect_leaks=0:halt_on_error=1</code> and <code>UBSAN_OPTIONS=halt_on_error=1</code>; address and undefined-behavior checks passed, while leak checking was disabled because of the environment's previously documented ptrace restriction.</p>
<h1><a class="anchor" id="autotoc_md171"></a>
<h1><a class="anchor" id="autotoc_md172"></a>
Extended validation</h1>
<p><code>attributeNumbers</code> checks signed 64-bit limits, leading plus signs, decimal HEX values, FLOAT fractions/exponents, and default overrides under a comma-decimal C++ locale. Node/environment defaults remain on definitions without becoming database attributes. <code>invalidAttributeNumbers</code> supplies 39 data rows, each checked in both definition bounds, a default, and an explicit assignment. The throwing and diagnostic APIs must reject malformed signs, trailing text, hexadecimal notation, non-finite values, overflow, and underflow with the correct error line. Additional malformed-attribute cases cover token separators, scope/type names, reversed FLOAT bounds, value types/ranges, and invalid CAN references.</p>
<p>Run AddressSanitizer and UndefinedBehaviorSanitizer in a separate directory:</p>
+4 -3
View File
@@ -181,8 +181,9 @@ var NAVTREE =
[ "Database validation coverage", "md_tests_2README.html#autotoc_md167", null ],
[ "End-to-end pipeline coverage", "md_tests_2README.html#autotoc_md168", null ],
[ "Attribute coverage", "md_tests_2README.html#autotoc_md169", null ],
[ "Long signal definitions", "md_tests_2README.html#autotoc_md170", null ],
[ "Extended validation", "md_tests_2README.html#autotoc_md171", null ]
[ "Unsupported signal value types", "md_tests_2README.html#autotoc_md170", null ],
[ "Long signal definitions", "md_tests_2README.html#autotoc_md171", null ],
[ "Extended validation", "md_tests_2README.html#autotoc_md172", null ]
] ],
[ "Classes", "annotated.html", [
[ "Class List", "annotated.html", "annotated_dup" ],
@@ -210,7 +211,7 @@ var NAVTREE =
var NAVTREEINDEX =
[
"annotated.html",
"md_README.html#autotoc_md89"
"md_README.html#autotoc_md85"
];
var SYNCONMSG = 'click to disable panel synchronisation';
+35 -35
View File
@@ -68,38 +68,40 @@ var NAVTREEINDEX0 =
"classDbcTreeModel.html#aad5834e8edb00808cbfa498ea8c63fe9":[4,0,21,9],
"classDbcTreeModel.html#aca81d05c81cc48c1185fc36659e96e5b":[4,0,21,8],
"classDbcTreeModel.html#ae40bb8b8a26d205f178c6dd1134ff4b3":[4,0,21,5],
"classDbcValueDescriptionHandler.html":[4,0,22],
"classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a":[4,0,22,0],
"classDecodeDatabase.html":[4,0,23],
"classDecodeDatabase.html#a0af5b15b9953a4f6551c27ee9ae8b514":[4,0,23,4],
"classDecodeDatabase.html#a51a44cf7c3f23c98ec8781afe0097c0c":[4,0,23,0],
"classDecodeDatabase.html#a780d6e747a48b10a5eb0ab85448d2970":[4,0,23,2],
"classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8":[4,0,23,1],
"classDecodeDatabase.html#aa96b62b4f3fff68ab651674760f60d6d":[4,0,23,3],
"classTreeNode.html":[4,0,42],
"classTreeNode.html#a1eb94f7b6e7962c9d867a120772dfe6e":[4,0,42,7],
"classTreeNode.html#a226518612d0d00b5988a2c44fc21d3f1":[4,0,42,14],
"classTreeNode.html#a4727ff801a2d1b9323c5ae50a35457a6":[4,0,42,9],
"classTreeNode.html#a81047bd7d2a4cc96b9ef5e20d0d63b5f":[4,0,42,10],
"classTreeNode.html#a8e38dd591d8801d7ee3a7dbad90c67fc":[4,0,42,1],
"classTreeNode.html#a984a98d5ccf7ef1f5a18094c6821f35d":[4,0,42,0],
"classTreeNode.html#aa48fbc17903eb8cfa40353e29f853c6f":[4,0,42,4],
"classTreeNode.html#aaac5b8d9dc9e5ae1f367d1adbcf20e18":[4,0,42,12],
"classTreeNode.html#ab9f00f5253d56461bb2d420fd639c5ae":[4,0,42,2],
"classTreeNode.html#abdd82460187dca8d3e5d66f5d5c529ea":[4,0,42,8],
"classTreeNode.html#ad501f97eeec7f7d3353bfae838fbb6a8":[4,0,42,5],
"classTreeNode.html#af4e6e916c48c024a3dfeadac8174b527":[4,0,42,6],
"classTreeNode.html#af87331684d4b40240aec75e3286921d3":[4,0,42,3],
"classTreeNode.html#afa2f4b0aafa12d3d41ed00df8e0250c9":[4,0,42,11],
"classTreeNode.html#afc503b40004764163605d6dbdb4ef811":[4,0,42,13],
"classTypeFactory.html":[4,0,43],
"classTypeFactory.html#a1a119ad2956abe146213c6ca124d8dd4":[4,0,43,5],
"classTypeFactory.html#a33b404da3e19ea7e1245b8a4975721bf":[4,0,43,0],
"classTypeFactory.html#a3f43b03d6e3a0fd503fdec01ecf62e9f":[4,0,43,4],
"classTypeFactory.html#a5f119fe61c1cb9f4725ce746e4a047b3":[4,0,43,6],
"classTypeFactory.html#a650022aac1e2f30af5bc554a5663939f":[4,0,43,1],
"classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3":[4,0,43,2],
"classTypeFactory.html#ad82f537569ece3d3a4a376523fa94473":[4,0,43,3],
"classDbcUnsupportedSignalTypeHandler.html":[4,0,22],
"classDbcUnsupportedSignalTypeHandler.html#ae4132fcdbb134d51143133c1fb83a9df":[4,0,22,0],
"classDbcValueDescriptionHandler.html":[4,0,23],
"classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a":[4,0,23,0],
"classDecodeDatabase.html":[4,0,24],
"classDecodeDatabase.html#a0af5b15b9953a4f6551c27ee9ae8b514":[4,0,24,4],
"classDecodeDatabase.html#a51a44cf7c3f23c98ec8781afe0097c0c":[4,0,24,0],
"classDecodeDatabase.html#a780d6e747a48b10a5eb0ab85448d2970":[4,0,24,2],
"classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8":[4,0,24,1],
"classDecodeDatabase.html#aa96b62b4f3fff68ab651674760f60d6d":[4,0,24,3],
"classTreeNode.html":[4,0,43],
"classTreeNode.html#a1eb94f7b6e7962c9d867a120772dfe6e":[4,0,43,7],
"classTreeNode.html#a226518612d0d00b5988a2c44fc21d3f1":[4,0,43,14],
"classTreeNode.html#a4727ff801a2d1b9323c5ae50a35457a6":[4,0,43,9],
"classTreeNode.html#a81047bd7d2a4cc96b9ef5e20d0d63b5f":[4,0,43,10],
"classTreeNode.html#a8e38dd591d8801d7ee3a7dbad90c67fc":[4,0,43,1],
"classTreeNode.html#a984a98d5ccf7ef1f5a18094c6821f35d":[4,0,43,0],
"classTreeNode.html#aa48fbc17903eb8cfa40353e29f853c6f":[4,0,43,4],
"classTreeNode.html#aaac5b8d9dc9e5ae1f367d1adbcf20e18":[4,0,43,12],
"classTreeNode.html#ab9f00f5253d56461bb2d420fd639c5ae":[4,0,43,2],
"classTreeNode.html#abdd82460187dca8d3e5d66f5d5c529ea":[4,0,43,8],
"classTreeNode.html#ad501f97eeec7f7d3353bfae838fbb6a8":[4,0,43,5],
"classTreeNode.html#af4e6e916c48c024a3dfeadac8174b527":[4,0,43,6],
"classTreeNode.html#af87331684d4b40240aec75e3286921d3":[4,0,43,3],
"classTreeNode.html#afa2f4b0aafa12d3d41ed00df8e0250c9":[4,0,43,11],
"classTreeNode.html#afc503b40004764163605d6dbdb4ef811":[4,0,43,13],
"classTypeFactory.html":[4,0,44],
"classTypeFactory.html#a1a119ad2956abe146213c6ca124d8dd4":[4,0,44,5],
"classTypeFactory.html#a33b404da3e19ea7e1245b8a4975721bf":[4,0,44,0],
"classTypeFactory.html#a3f43b03d6e3a0fd503fdec01ecf62e9f":[4,0,44,4],
"classTypeFactory.html#a5f119fe61c1cb9f4725ce746e4a047b3":[4,0,44,6],
"classTypeFactory.html#a650022aac1e2f30af5bc554a5663939f":[4,0,44,1],
"classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3":[4,0,44,2],
"classTypeFactory.html#ad82f537569ece3d3a4a376523fa94473":[4,0,44,3],
"classdbc__detail_1_1MultiplexError.html":[4,0,0,0],
"classdbc__detail_1_1MultiplexGraph.html":[4,0,0,1],
"classes.html":[4,1],
@@ -247,7 +249,5 @@ var NAVTREEINDEX0 =
"md_README.html#autotoc_md78":[2,16],
"md_README.html#autotoc_md80":[2,17],
"md_README.html#autotoc_md82":[2,18],
"md_README.html#autotoc_md83":[2,19],
"md_README.html#autotoc_md85":[2,20],
"md_README.html#autotoc_md87":[2,20,0]
"md_README.html#autotoc_md83":[2,19]
};
+119 -116
View File
@@ -1,5 +1,7 @@
var NAVTREEINDEX1 =
{
"md_README.html#autotoc_md85":[2,20],
"md_README.html#autotoc_md87":[2,20,0],
"md_README.html#autotoc_md89":[2,21],
"md_README.html#autotoc_md90":[2,21,0],
"md_README.html#autotoc_md91":[2,21,1],
@@ -60,6 +62,7 @@ var NAVTREEINDEX1 =
"md_tests_2README.html#autotoc_md169":[3,8],
"md_tests_2README.html#autotoc_md170":[3,9],
"md_tests_2README.html#autotoc_md171":[3,10],
"md_tests_2README.html#autotoc_md172":[3,11],
"multiplex__graph_8h_source.html":[5,0,0,19],
"multiplexing_8h_source.html":[5,0,0,20],
"pages.html":[],
@@ -112,122 +115,122 @@ var NAVTREEINDEX1 =
"structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e":[4,0,15,1],
"structDbcParserOptions.html":[4,0,16],
"structDbcParserOptions.html#ab31534f5c0853461b46cbb38149c33f9":[4,0,16,0],
"structDecodeFrame.html":[4,0,26],
"structDecodeFrame.html#a05e3d1c6143367553c2c3beba82a5c34":[4,0,26,0],
"structDecodeFrame.html#a1d3c54055c0cbceb73adf551f7067f23":[4,0,26,5],
"structDecodeFrame.html#a2551102670c4a540fced4c71da0b369d":[4,0,26,6],
"structDecodeFrame.html#a25819ef907a32391af5c9f7cae9cdb22":[4,0,26,8],
"structDecodeFrame.html#a3ee2348d781f8f15aaf87e8dcf57ec41":[4,0,26,3],
"structDecodeFrame.html#a475e669f390491a4d99383d3fee51300":[4,0,26,11],
"structDecodeFrame.html#a51111ac13988be372d5673d12cf3e060":[4,0,26,4],
"structDecodeFrame.html#a52e10215388db7df8b541b9d9909edcf":[4,0,26,2],
"structDecodeFrame.html#a732c2f6853d55ce8253db61207fc21d3":[4,0,26,12],
"structDecodeFrame.html#a7f4e71bbdec3f424b625e724e3dfbf14":[4,0,26,9],
"structDecodeFrame.html#aa0a7f8fd5bfde2148dfd0d838328f579":[4,0,26,1],
"structDecodeFrame.html#ad506b03108a40df7e8005638c9c59653":[4,0,26,10],
"structDecodeFrame.html#ad78241dc40c793aabb8495b6989b81a9":[4,0,26,7],
"structDecodeSignal.html":[4,0,27],
"structDecodeSignal.html#a0fb84e19a0ab3bd50b6f65c1075ebc25":[4,0,27,8],
"structDecodeSignal.html#a204f65c7ea45a2c148f19c12d922f99b":[4,0,27,14],
"structDecodeSignal.html#a38eed9ca7581423fd8bfbedcffc12092":[4,0,27,10],
"structDecodeSignal.html#a428c39913a366a8476dd291061354391":[4,0,27,6],
"structDecodeSignal.html#a4a6ba87142a9badbf0ca830e9e709cb7":[4,0,27,9],
"structDecodeSignal.html#a58cf5844f2272a23dcb9687d912e4780":[4,0,27,1],
"structDecodeSignal.html#a822155d9bf4ed5f3300c9e9befe606ff":[4,0,27,12],
"structDecodeSignal.html#a92db637af4e224a0ae70173050dc3f74":[4,0,27,7],
"structDecodeSignal.html#a9d37638129263b8902ba5be59baf39a8":[4,0,27,5],
"structDecodeSignal.html#aaf5d7527ddf65b6355c2b4f3626df22d":[4,0,27,2],
"structDecodeSignal.html#abdbae62a64d2df716bf60c6b67b30eaa":[4,0,27,11],
"structDecodeSignal.html#abdc4c4bb4a67a6d61d6ca81e8a52833d":[4,0,27,4],
"structDecodeSignal.html#acd4ef5ee30421d117b5756854302debb":[4,0,27,3],
"structDecodeSignal.html#ae28c905d4a2bc86419c2a8361bfea473":[4,0,27,13],
"structDecodeSignal.html#aea41c055cb255fe7bd178ed5727f28c9":[4,0,27,0],
"structDecodedFrameValue.html":[4,0,24],
"structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73":[4,0,24,1],
"structDecodedFrameValue.html#a33e971ba10030506007aa201c89f351d":[4,0,24,0],
"structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0":[4,0,24,3],
"structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9":[4,0,24,4],
"structDecodedFrameValue.html#adae123ac7fbb4a5c314b64b01109f4a8":[4,0,24,2],
"structDecodedSignalValue.html":[4,0,25],
"structDecodedSignalValue.html#a33df0fcd92b23b3e08539906fc6b4c4a":[4,0,25,2],
"structDecodedSignalValue.html#a503c90b4b1a610b8252c45e466367c28":[4,0,25,3],
"structDecodedSignalValue.html#a6847d05b3cb00d5e0f6c611968f57978":[4,0,25,4],
"structDecodedSignalValue.html#a828b5ef7faefc14fbf5dbd46249bcad2":[4,0,25,1],
"structDecodedSignalValue.html#a94161a80412b3961da8fd2fec43c25f6":[4,0,25,6],
"structDecodedSignalValue.html#aac0ed361af545cde48d0e6f41a859686":[4,0,25,5],
"structDecodedSignalValue.html#affc38af1bf31bcb6f2c33044bce92bd2":[4,0,25,0],
"structFrameInfo.html":[4,0,28],
"structFrameInfo.html#a099f02a77adfb9ac23e286ce75f4eef4":[4,0,28,10],
"structFrameInfo.html#a34b726afaad2ac5c697fdb2ac070cdaf":[4,0,28,2],
"structFrameInfo.html#a35bf839519ef3f48b5f52dd9bcd7e9ac":[4,0,28,9],
"structFrameInfo.html#a3f7e25d67ddae22f2ed50823a5a26084":[4,0,28,8],
"structFrameInfo.html#a4737a5420213ad4304724e39f3a4e55d":[4,0,28,4],
"structFrameInfo.html#a92749ec3798d4211a505860fb389a9e8":[4,0,28,6],
"structFrameInfo.html#a9ef2736053b593cf34ba2608cf8275c0":[4,0,28,11],
"structFrameInfo.html#aa2b198ea0f55e560c123d35e7b3ecab9":[4,0,28,5],
"structFrameInfo.html#abb53a7f93ed7abc0ea1ae4a8ccafcdcb":[4,0,28,0],
"structFrameInfo.html#ace75121294f9d89b762080ab5643293c":[4,0,28,7],
"structFrameInfo.html#aee518b33f1000bf0b7f6e4a87474c943":[4,0,28,3],
"structFrameInfo.html#af470b0742c05bfbffc31c51a68f5c05e":[4,0,28,1],
"structFrameKey.html":[4,0,29],
"structFrameKey.html#a022917652b4d3c2f2dfcc5a13ab7caa4":[4,0,29,2],
"structFrameKey.html#a33bde405c7ea53000d54b3dd6e058670":[4,0,29,0],
"structFrameKey.html#aa3179b709d02ef70cf0e736f040a2145":[4,0,29,3],
"structFrameKey.html#aaaec9f914e127787247fcda5e183b01f":[4,0,29,1],
"structFrameKeyHasher.html":[4,0,30],
"structFrameKeyHasher.html#a1612ce56b513790e3ed4c06ec7d28b9f":[4,0,30,0],
"structMultiplexRange.html":[4,0,32],
"structMultiplexing.html":[4,0,31],
"structMultiplexing.html#a79158d4fdbfd68a3d51a8ce79d34fd67":[4,0,31,0],
"structMultiplexing.html#aa174ac4a3af9b361d2de7517dfd4b69e":[4,0,31,2],
"structMultiplexing.html#aa91e54403c78a663686b2fd22282afaf":[4,0,31,1],
"structPendingAttribute.html":[4,0,33],
"structPendingAttribute.html#a0ec62fc577e3a2d5f63d926f829e2ab8":[4,0,33,0],
"structPendingAttribute.html#a9a68a0a54c313c3e43dfdcd6e7a55da9":[4,0,33,1],
"structPendingComment.html":[4,0,34],
"structPendingComment.html#a29a3733e0a4c8ae341695db3d21d9249":[4,0,34,5],
"structPendingComment.html#a6d1c3b1e149bb602a95224446709c771":[4,0,34,0],
"structPendingComment.html#a9abd7e15ed59eb4534c66ff74f276e07":[4,0,34,1],
"structPendingComment.html#aa344393f67770e12449a4f14f6fcf10b":[4,0,34,4],
"structPendingComment.html#ac03903ffb042d27ad66012eb18ea1437":[4,0,34,2],
"structPendingComment.html#ae7b5aea9c252a4ab87e02915d24fee27":[4,0,34,3],
"structPendingMultiplexing.html":[4,0,35],
"structPendingValueDescriptions.html":[4,0,36],
"structPendingValueDescriptions.html#a10ecbaeaed2cc3ac82fada73e7e041dd":[4,0,36,3],
"structPendingValueDescriptions.html#a5c19cff09b0e83bd3cd6085213c17da8":[4,0,36,4],
"structPendingValueDescriptions.html#a5f0082ceeaee77e2f823661547aad844":[4,0,36,0],
"structPendingValueDescriptions.html#a60f185e8d91010927c4aa3b4a750c9f4":[4,0,36,1],
"structPendingValueDescriptions.html#ac35446db10ebda5a12349759613f8c90":[4,0,36,2],
"structPgnLookupResult.html":[4,0,37],
"structPgnLookupResult.html#a6158833782348b3cc26037c2091fcc36":[4,0,37,1],
"structPgnLookupResult.html#aa5b79b61d2aef48fd6ae070cf5f901c1":[4,0,37,0],
"structRawCanFrame.html":[4,0,38],
"structRawCanFrame.html#a0acb487612104c99c9907344c035df83":[4,0,38,2],
"structRawCanFrame.html#a2d0e7fa0e3d5c20bbed55ed8f7888ff4":[4,0,38,0],
"structRawCanFrame.html#a462193d275adc1dba8bd18ffa0e36bb7":[4,0,38,1],
"structSignalInfo.html":[4,0,39],
"structSignalInfo.html#a1008b5201f71848177217bd52fb84baa":[4,0,39,3],
"structSignalInfo.html#a1f214f03e94ef5794de2d3367bfcbd01":[4,0,39,10],
"structSignalInfo.html#a2c95562fd0b29327a7fd7b1e6feee7f3":[4,0,39,11],
"structSignalInfo.html#a379e422a00cad56f896cacf60455b088":[4,0,39,1],
"structSignalInfo.html#a43f47d0433d0cc39076bd7278b46af9c":[4,0,39,12],
"structSignalInfo.html#a52a52b320eef92fbcb4626307f9a498f":[4,0,39,5],
"structSignalInfo.html#a781766eddbf6641071623c8e5b9acb4a":[4,0,39,14],
"structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8":[4,0,39,0],
"structSignalInfo.html#ab7d0769f47aa540656b22e4e49db517e":[4,0,39,7],
"structSignalInfo.html#ac99ba7563a5dad01e39c4257216953f5":[4,0,39,13],
"structSignalInfo.html#ace290724f9801521609aedaa946d61f1":[4,0,39,2],
"structSignalInfo.html#ada7bf94fbeaa26bd08c73982b5af255b":[4,0,39,8],
"structSignalInfo.html#adf1c4331b9eabced0d7fdda40ff0eb52":[4,0,39,9],
"structSignalInfo.html#ae4f78d99a2750aa564d7eba860171499":[4,0,39,6],
"structSignalInfo.html#af363b1563fb4c7cc8973f9a80c06846c":[4,0,39,4],
"structSignalKey.html":[4,0,40],
"structSignalKey.html#a17525dc0116be7f4f58f3c3fae1022e2":[4,0,40,1],
"structSignalKey.html#a25f4ece1bf685791b576f68e23d8ccc7":[4,0,40,2],
"structSignalKey.html#aa4221b34e75469bf5aa939976c334f46":[4,0,40,0],
"structSignalKey.html#abab371cce740f05111fd3b4013ca6944":[4,0,40,3],
"structSignalKeyHasher.html":[4,0,41],
"structSignalKeyHasher.html#af8869bcb714857af7ad005fbd13bea80":[4,0,41,0],
"structDecodeFrame.html":[4,0,27],
"structDecodeFrame.html#a05e3d1c6143367553c2c3beba82a5c34":[4,0,27,0],
"structDecodeFrame.html#a1d3c54055c0cbceb73adf551f7067f23":[4,0,27,5],
"structDecodeFrame.html#a2551102670c4a540fced4c71da0b369d":[4,0,27,6],
"structDecodeFrame.html#a25819ef907a32391af5c9f7cae9cdb22":[4,0,27,8],
"structDecodeFrame.html#a3ee2348d781f8f15aaf87e8dcf57ec41":[4,0,27,3],
"structDecodeFrame.html#a475e669f390491a4d99383d3fee51300":[4,0,27,11],
"structDecodeFrame.html#a51111ac13988be372d5673d12cf3e060":[4,0,27,4],
"structDecodeFrame.html#a52e10215388db7df8b541b9d9909edcf":[4,0,27,2],
"structDecodeFrame.html#a732c2f6853d55ce8253db61207fc21d3":[4,0,27,12],
"structDecodeFrame.html#a7f4e71bbdec3f424b625e724e3dfbf14":[4,0,27,9],
"structDecodeFrame.html#aa0a7f8fd5bfde2148dfd0d838328f579":[4,0,27,1],
"structDecodeFrame.html#ad506b03108a40df7e8005638c9c59653":[4,0,27,10],
"structDecodeFrame.html#ad78241dc40c793aabb8495b6989b81a9":[4,0,27,7],
"structDecodeSignal.html":[4,0,28],
"structDecodeSignal.html#a0fb84e19a0ab3bd50b6f65c1075ebc25":[4,0,28,8],
"structDecodeSignal.html#a204f65c7ea45a2c148f19c12d922f99b":[4,0,28,14],
"structDecodeSignal.html#a38eed9ca7581423fd8bfbedcffc12092":[4,0,28,10],
"structDecodeSignal.html#a428c39913a366a8476dd291061354391":[4,0,28,6],
"structDecodeSignal.html#a4a6ba87142a9badbf0ca830e9e709cb7":[4,0,28,9],
"structDecodeSignal.html#a58cf5844f2272a23dcb9687d912e4780":[4,0,28,1],
"structDecodeSignal.html#a822155d9bf4ed5f3300c9e9befe606ff":[4,0,28,12],
"structDecodeSignal.html#a92db637af4e224a0ae70173050dc3f74":[4,0,28,7],
"structDecodeSignal.html#a9d37638129263b8902ba5be59baf39a8":[4,0,28,5],
"structDecodeSignal.html#aaf5d7527ddf65b6355c2b4f3626df22d":[4,0,28,2],
"structDecodeSignal.html#abdbae62a64d2df716bf60c6b67b30eaa":[4,0,28,11],
"structDecodeSignal.html#abdc4c4bb4a67a6d61d6ca81e8a52833d":[4,0,28,4],
"structDecodeSignal.html#acd4ef5ee30421d117b5756854302debb":[4,0,28,3],
"structDecodeSignal.html#ae28c905d4a2bc86419c2a8361bfea473":[4,0,28,13],
"structDecodeSignal.html#aea41c055cb255fe7bd178ed5727f28c9":[4,0,28,0],
"structDecodedFrameValue.html":[4,0,25],
"structDecodedFrameValue.html#a32143efe2023a1ecd977a9ae93e50b73":[4,0,25,1],
"structDecodedFrameValue.html#a33e971ba10030506007aa201c89f351d":[4,0,25,0],
"structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0":[4,0,25,3],
"structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9":[4,0,25,4],
"structDecodedFrameValue.html#adae123ac7fbb4a5c314b64b01109f4a8":[4,0,25,2],
"structDecodedSignalValue.html":[4,0,26],
"structDecodedSignalValue.html#a33df0fcd92b23b3e08539906fc6b4c4a":[4,0,26,2],
"structDecodedSignalValue.html#a503c90b4b1a610b8252c45e466367c28":[4,0,26,3],
"structDecodedSignalValue.html#a6847d05b3cb00d5e0f6c611968f57978":[4,0,26,4],
"structDecodedSignalValue.html#a828b5ef7faefc14fbf5dbd46249bcad2":[4,0,26,1],
"structDecodedSignalValue.html#a94161a80412b3961da8fd2fec43c25f6":[4,0,26,6],
"structDecodedSignalValue.html#aac0ed361af545cde48d0e6f41a859686":[4,0,26,5],
"structDecodedSignalValue.html#affc38af1bf31bcb6f2c33044bce92bd2":[4,0,26,0],
"structFrameInfo.html":[4,0,29],
"structFrameInfo.html#a099f02a77adfb9ac23e286ce75f4eef4":[4,0,29,10],
"structFrameInfo.html#a34b726afaad2ac5c697fdb2ac070cdaf":[4,0,29,2],
"structFrameInfo.html#a35bf839519ef3f48b5f52dd9bcd7e9ac":[4,0,29,9],
"structFrameInfo.html#a3f7e25d67ddae22f2ed50823a5a26084":[4,0,29,8],
"structFrameInfo.html#a4737a5420213ad4304724e39f3a4e55d":[4,0,29,4],
"structFrameInfo.html#a92749ec3798d4211a505860fb389a9e8":[4,0,29,6],
"structFrameInfo.html#a9ef2736053b593cf34ba2608cf8275c0":[4,0,29,11],
"structFrameInfo.html#aa2b198ea0f55e560c123d35e7b3ecab9":[4,0,29,5],
"structFrameInfo.html#abb53a7f93ed7abc0ea1ae4a8ccafcdcb":[4,0,29,0],
"structFrameInfo.html#ace75121294f9d89b762080ab5643293c":[4,0,29,7],
"structFrameInfo.html#aee518b33f1000bf0b7f6e4a87474c943":[4,0,29,3],
"structFrameInfo.html#af470b0742c05bfbffc31c51a68f5c05e":[4,0,29,1],
"structFrameKey.html":[4,0,30],
"structFrameKey.html#a022917652b4d3c2f2dfcc5a13ab7caa4":[4,0,30,2],
"structFrameKey.html#a33bde405c7ea53000d54b3dd6e058670":[4,0,30,0],
"structFrameKey.html#aa3179b709d02ef70cf0e736f040a2145":[4,0,30,3],
"structFrameKey.html#aaaec9f914e127787247fcda5e183b01f":[4,0,30,1],
"structFrameKeyHasher.html":[4,0,31],
"structFrameKeyHasher.html#a1612ce56b513790e3ed4c06ec7d28b9f":[4,0,31,0],
"structMultiplexRange.html":[4,0,33],
"structMultiplexing.html":[4,0,32],
"structMultiplexing.html#a79158d4fdbfd68a3d51a8ce79d34fd67":[4,0,32,0],
"structMultiplexing.html#aa174ac4a3af9b361d2de7517dfd4b69e":[4,0,32,2],
"structMultiplexing.html#aa91e54403c78a663686b2fd22282afaf":[4,0,32,1],
"structPendingAttribute.html":[4,0,34],
"structPendingAttribute.html#a0ec62fc577e3a2d5f63d926f829e2ab8":[4,0,34,0],
"structPendingAttribute.html#a9a68a0a54c313c3e43dfdcd6e7a55da9":[4,0,34,1],
"structPendingComment.html":[4,0,35],
"structPendingComment.html#a29a3733e0a4c8ae341695db3d21d9249":[4,0,35,5],
"structPendingComment.html#a6d1c3b1e149bb602a95224446709c771":[4,0,35,0],
"structPendingComment.html#a9abd7e15ed59eb4534c66ff74f276e07":[4,0,35,1],
"structPendingComment.html#aa344393f67770e12449a4f14f6fcf10b":[4,0,35,4],
"structPendingComment.html#ac03903ffb042d27ad66012eb18ea1437":[4,0,35,2],
"structPendingComment.html#ae7b5aea9c252a4ab87e02915d24fee27":[4,0,35,3],
"structPendingMultiplexing.html":[4,0,36],
"structPendingValueDescriptions.html":[4,0,37],
"structPendingValueDescriptions.html#a10ecbaeaed2cc3ac82fada73e7e041dd":[4,0,37,3],
"structPendingValueDescriptions.html#a5c19cff09b0e83bd3cd6085213c17da8":[4,0,37,4],
"structPendingValueDescriptions.html#a5f0082ceeaee77e2f823661547aad844":[4,0,37,0],
"structPendingValueDescriptions.html#a60f185e8d91010927c4aa3b4a750c9f4":[4,0,37,1],
"structPendingValueDescriptions.html#ac35446db10ebda5a12349759613f8c90":[4,0,37,2],
"structPgnLookupResult.html":[4,0,38],
"structPgnLookupResult.html#a6158833782348b3cc26037c2091fcc36":[4,0,38,1],
"structPgnLookupResult.html#aa5b79b61d2aef48fd6ae070cf5f901c1":[4,0,38,0],
"structRawCanFrame.html":[4,0,39],
"structRawCanFrame.html#a0acb487612104c99c9907344c035df83":[4,0,39,2],
"structRawCanFrame.html#a2d0e7fa0e3d5c20bbed55ed8f7888ff4":[4,0,39,0],
"structRawCanFrame.html#a462193d275adc1dba8bd18ffa0e36bb7":[4,0,39,1],
"structSignalInfo.html":[4,0,40],
"structSignalInfo.html#a1008b5201f71848177217bd52fb84baa":[4,0,40,3],
"structSignalInfo.html#a1f214f03e94ef5794de2d3367bfcbd01":[4,0,40,10],
"structSignalInfo.html#a2c95562fd0b29327a7fd7b1e6feee7f3":[4,0,40,11],
"structSignalInfo.html#a379e422a00cad56f896cacf60455b088":[4,0,40,1],
"structSignalInfo.html#a43f47d0433d0cc39076bd7278b46af9c":[4,0,40,12],
"structSignalInfo.html#a52a52b320eef92fbcb4626307f9a498f":[4,0,40,5],
"structSignalInfo.html#a781766eddbf6641071623c8e5b9acb4a":[4,0,40,14],
"structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8":[4,0,40,0],
"structSignalInfo.html#ab7d0769f47aa540656b22e4e49db517e":[4,0,40,7],
"structSignalInfo.html#ac99ba7563a5dad01e39c4257216953f5":[4,0,40,13],
"structSignalInfo.html#ace290724f9801521609aedaa946d61f1":[4,0,40,2],
"structSignalInfo.html#ada7bf94fbeaa26bd08c73982b5af255b":[4,0,40,8],
"structSignalInfo.html#adf1c4331b9eabced0d7fdda40ff0eb52":[4,0,40,9],
"structSignalInfo.html#ae4f78d99a2750aa564d7eba860171499":[4,0,40,6],
"structSignalInfo.html#af363b1563fb4c7cc8973f9a80c06846c":[4,0,40,4],
"structSignalKey.html":[4,0,41],
"structSignalKey.html#a17525dc0116be7f4f58f3c3fae1022e2":[4,0,41,1],
"structSignalKey.html#a25f4ece1bf685791b576f68e23d8ccc7":[4,0,41,2],
"structSignalKey.html#aa4221b34e75469bf5aa939976c334f46":[4,0,41,0],
"structSignalKey.html#abab371cce740f05111fd3b4013ca6944":[4,0,41,3],
"structSignalKeyHasher.html":[4,0,42],
"structSignalKeyHasher.html#af8869bcb714857af7ad005fbd13bea80":[4,0,42,0],
"tests_2main_8cpp_source.html":[5,0,3,7],
"text__utils_8h_source.html":[5,0,0,23],
"tree__node_8cpp.html":[5,0,0,24],
+1 -1
View File
@@ -13,6 +13,6 @@ var searchData=
['live_20path_10',['live path',['../md_README.html#autotoc_md127',1,'']]],
['local_20core_20regression_20checks_11',['Local core regression checks',['../md_README.html#autotoc_md147',1,'']]],
['local_20regression_20checks_12',['Local regression checks',['../md_tests_2README.html#autotoc_md161',1,'']]],
['long_20signal_20definitions_13',['Long signal definitions',['../md_tests_2README.html#autotoc_md170',1,'']]],
['long_20signal_20definitions_13',['Long signal definitions',['../md_tests_2README.html#autotoc_md171',1,'']]],
['lookup_14',['J1939 Opt-in and PGN Lookup',['../md_README.html#autotoc_md114',1,'']]]
];
+1 -1
View File
@@ -8,7 +8,7 @@ var searchData=
['rawvalue_5',['rawValue',['../structDecodedSignalValue.html#a503c90b4b1a610b8252c45e466367c28',1,'DecodedSignalValue']]],
['receivers_6',['receivers',['../structSignalInfo.html#a2c95562fd0b29327a7fd7b1e6feee7f3',1,'SignalInfo::receivers'],['../structDecodeSignal.html#abdbae62a64d2df716bf60c6b67b30eaa',1,'DecodeSignal::receivers']]],
['recommended_20next_20steps_7',['Recommended Next Steps',['../md_README.html#autotoc_md140',1,'']]],
['registertype_8',['registertype',['../classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d',1,'DbcStatementDispatcher::RegisterType()'],['../classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3',1,'TypeFactory::registerType()']]],
['registertype_8',['registertype',['../classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3',1,'TypeFactory::registerType()'],['../classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d',1,'DbcStatementDispatcher::RegisterType()']]],
['regression_20checks_9',['regression checks',['../md_README.html#autotoc_md147',1,'Local core regression checks'],['../md_tests_2README.html#autotoc_md161',1,'Local regression checks']]],
['regression_20coverage_10',['Additional regression coverage',['../md_tests_2README.html#autotoc_md165',1,'']]],
['regression_20tests_11',['regression tests',['../md_tests_2README.html',1,'QtTest regression tests'],['../md_README.html#autotoc_md154',1,'Regression tests']]],
+27 -26
View File
@@ -5,33 +5,34 @@ var searchData=
['settree_2',['SetTree',['../classDbcTreeModel.html#a8cb5a81d456cdead42b75fd3462ee00a',1,'DbcTreeModel']]],
['severity_3',['severity',['../structDbcDiagnostic.html#a75040a94f0313a606478020b0491f81d',1,'DbcDiagnostic']]],
['signal_20definition_4',['Signal definition',['../md_README.html#autotoc_md104',1,'']]],
['signal_20definitions_5',['Long signal definitions',['../md_tests_2README.html#autotoc_md170',1,'']]],
['signal_20definitions_5',['Long signal definitions',['../md_tests_2README.html#autotoc_md171',1,'']]],
['signal_20identifiers_6',['Stable frame and signal identifiers',['../md_README.html#autotoc_md91',1,'']]],
['signal_20validation_20and_20parse_20errors_7',['Signal validation and parse errors',['../md_README.html#autotoc_md106',1,'']]],
['signal_20value_20descriptions_20tt_20val_5f_20tt_8',['Signal value descriptions (&lt;tt&gt;VAL_&lt;/tt&gt;)',['../md_README.html#autotoc_md136',1,'']]],
['signal_5finfo_2eh_9',['signal_info.h',['../signal__info_8h.html',1,'']]],
['signaldecodestatus_10',['SignalDecodeStatus',['../dbc__decoder_8h.html#a5f4a41ee2810487020135b45e8d7559a',1,'dbc_decoder.h']]],
['signalinfo_11',['SignalInfo',['../structSignalInfo.html',1,'']]],
['signalinfo_20tt_12',['&lt;tt&gt;SignalInfo&lt;/tt&gt;',['../md_README.html#autotoc_md58',1,'']]],
['signalkey_13',['signalkey',['../structSignalKey.html',1,'SignalKey'],['../structSignalKey.html#aa4221b34e75469bf5aa939976c334f46',1,'SignalKey::SignalKey()']]],
['signalkeyhasher_14',['SignalKeyHasher',['../structSignalKeyHasher.html',1,'']]],
['signallines_15',['signalLines',['../structDbcParseContext.html#af8b411c938a2ea9100c4aaae452e6546',1,'DbcParseContext']]],
['signalname_16',['signalname',['../structPendingValueDescriptions.html#ac35446db10ebda5a12349759613f8c90',1,'PendingValueDescriptions::signalName'],['../structPendingComment.html#ae7b5aea9c252a4ab87e02915d24fee27',1,'PendingComment::signalName']]],
['stable_20frame_20and_20signal_20identifiers_17',['Stable frame and signal identifiers',['../md_README.html#autotoc_md91',1,'']]],
['stage_201_20already_20implemented_18',['Stage 1 - already implemented',['../md_README.html#autotoc_md141',1,'']]],
['stage_202_19',['Stage 2',['../md_README.html#autotoc_md142',1,'']]],
['stage_203_20',['Stage 3',['../md_README.html#autotoc_md143',1,'']]],
['stage_204_21',['Stage 4',['../md_README.html#autotoc_md144',1,'']]],
['standalone_20tree_20tests_20without_20qt_22',['Standalone tree tests without Qt',['../md_README.html#autotoc_md150',1,'']]],
['startbit_23',['startbit',['../structDecodeSignal.html#aaf5d7527ddf65b6355c2b4f3626df22d',1,'DecodeSignal::startBit'],['../structSignalInfo.html#ace290724f9801521609aedaa946d61f1',1,'SignalInfo::startBit']]],
['statement_24',['statement',['../structPendingAttribute.html#a0ec62fc577e3a2d5f63d926f829e2ab8',1,'PendingAttribute']]],
['statement_20handler_20factory_25',['Statement Handler Factory',['../md_README.html#autotoc_md134',1,'']]],
['status_26',['status',['../structDecodedSignalValue.html#a94161a80412b3961da8fd2fec43c25f6',1,'DecodedSignalValue::status'],['../structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9',1,'DecodedFrameValue::status']]],
['steps_27',['Recommended Next Steps',['../md_README.html#autotoc_md140',1,'']]],
['strategy_28',['Unified Decode Strategy',['../md_README.html#autotoc_md126',1,'']]],
['structured_20diagnostics_29',['Structured diagnostics',['../md_README.html#autotoc_md96',1,'']]],
['structures_30',['Parsed Data Structures',['../md_README.html#autotoc_md57',1,'']]],
['support_31',['Parser Support',['../md_README.html#autotoc_md95',1,'']]],
['supported_20dbc_20syntax_32',['Supported DBC Syntax',['../md_README.html#autotoc_md99',1,'']]],
['syntax_33',['Supported DBC Syntax',['../md_README.html#autotoc_md99',1,'']]]
['signal_20value_20types_9',['Unsupported signal value types',['../md_tests_2README.html#autotoc_md170',1,'']]],
['signal_5finfo_2eh_10',['signal_info.h',['../signal__info_8h.html',1,'']]],
['signaldecodestatus_11',['SignalDecodeStatus',['../dbc__decoder_8h.html#a5f4a41ee2810487020135b45e8d7559a',1,'dbc_decoder.h']]],
['signalinfo_12',['SignalInfo',['../structSignalInfo.html',1,'']]],
['signalinfo_20tt_13',['&lt;tt&gt;SignalInfo&lt;/tt&gt;',['../md_README.html#autotoc_md58',1,'']]],
['signalkey_14',['signalkey',['../structSignalKey.html',1,'SignalKey'],['../structSignalKey.html#aa4221b34e75469bf5aa939976c334f46',1,'SignalKey::SignalKey()']]],
['signalkeyhasher_15',['SignalKeyHasher',['../structSignalKeyHasher.html',1,'']]],
['signallines_16',['signalLines',['../structDbcParseContext.html#af8b411c938a2ea9100c4aaae452e6546',1,'DbcParseContext']]],
['signalname_17',['signalname',['../structPendingValueDescriptions.html#ac35446db10ebda5a12349759613f8c90',1,'PendingValueDescriptions::signalName'],['../structPendingComment.html#ae7b5aea9c252a4ab87e02915d24fee27',1,'PendingComment::signalName']]],
['stable_20frame_20and_20signal_20identifiers_18',['Stable frame and signal identifiers',['../md_README.html#autotoc_md91',1,'']]],
['stage_201_20already_20implemented_19',['Stage 1 - already implemented',['../md_README.html#autotoc_md141',1,'']]],
['stage_202_20',['Stage 2',['../md_README.html#autotoc_md142',1,'']]],
['stage_203_21',['Stage 3',['../md_README.html#autotoc_md143',1,'']]],
['stage_204_22',['Stage 4',['../md_README.html#autotoc_md144',1,'']]],
['standalone_20tree_20tests_20without_20qt_23',['Standalone tree tests without Qt',['../md_README.html#autotoc_md150',1,'']]],
['startbit_24',['startbit',['../structDecodeSignal.html#aaf5d7527ddf65b6355c2b4f3626df22d',1,'DecodeSignal::startBit'],['../structSignalInfo.html#ace290724f9801521609aedaa946d61f1',1,'SignalInfo::startBit']]],
['statement_25',['statement',['../structPendingAttribute.html#a0ec62fc577e3a2d5f63d926f829e2ab8',1,'PendingAttribute']]],
['statement_20handler_20factory_26',['Statement Handler Factory',['../md_README.html#autotoc_md134',1,'']]],
['status_27',['status',['../structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9',1,'DecodedFrameValue::status'],['../structDecodedSignalValue.html#a94161a80412b3961da8fd2fec43c25f6',1,'DecodedSignalValue::status']]],
['steps_28',['Recommended Next Steps',['../md_README.html#autotoc_md140',1,'']]],
['strategy_29',['Unified Decode Strategy',['../md_README.html#autotoc_md126',1,'']]],
['structured_20diagnostics_30',['Structured diagnostics',['../md_README.html#autotoc_md96',1,'']]],
['structures_31',['Parsed Data Structures',['../md_README.html#autotoc_md57',1,'']]],
['support_32',['Parser Support',['../md_README.html#autotoc_md95',1,'']]],
['supported_20dbc_20syntax_33',['Supported DBC Syntax',['../md_README.html#autotoc_md99',1,'']]],
['syntax_34',['Supported DBC Syntax',['../md_README.html#autotoc_md99',1,'']]]
];
+4 -3
View File
@@ -10,7 +10,7 @@ var searchData=
['the_20tree_20is_20not_20enough_7',['Why the Tree Is Not Enough',['../md_README.html#autotoc_md132',1,'']]],
['to_20end_20pipeline_20coverage_8',['End-to-end pipeline coverage',['../md_tests_2README.html#autotoc_md168',1,'']]],
['trace_20path_9',['trace path',['../md_README.html#autotoc_md128',1,'']]],
['transmitter_10',['transmitter',['../structDecodeFrame.html#ad78241dc40c793aabb8495b6989b81a9',1,'DecodeFrame::transmitter'],['../structFrameInfo.html#a92749ec3798d4211a505860fb389a9e8',1,'FrameInfo::transmitter']]],
['transmitter_10',['transmitter',['../structFrameInfo.html#a92749ec3798d4211a505860fb389a9e8',1,'FrameInfo::transmitter'],['../structDecodeFrame.html#ad78241dc40c793aabb8495b6989b81a9',1,'DecodeFrame::transmitter']]],
['tree_11',['Build UI tree',['../md_README.html#autotoc_md122',1,'']]],
['tree_20and_20optional_20model_20tests_12',['Tree and optional model tests',['../md_tests_2README.html#autotoc_md164',1,'']]],
['tree_20is_20not_20enough_13',['Why the Tree Is Not Enough',['../md_README.html#autotoc_md132',1,'']]],
@@ -18,7 +18,7 @@ var searchData=
['tree_20tests_20without_20qt_15',['Standalone tree tests without Qt',['../md_README.html#autotoc_md150',1,'']]],
['tree_5fnode_2ecpp_16',['tree_node.cpp',['../tree__node_8cpp.html',1,'']]],
['tree_5fnode_2eh_17',['tree_node.h',['../tree__node_8h.html',1,'']]],
['treenode_18',['treenode',['../classTreeNode.html#ab9f00f5253d56461bb2d420fd639c5ae',1,'TreeNode::TreeNode(const SignalInfo &amp;signal)'],['../classTreeNode.html#a8e38dd591d8801d7ee3a7dbad90c67fc',1,'TreeNode::TreeNode(const FrameInfo &amp;frame)'],['../classTreeNode.html#a984a98d5ccf7ef1f5a18094c6821f35d',1,'TreeNode::TreeNode()'],['../classTreeNode.html',1,'TreeNode']]],
['treenode_18',['treenode',['../classTreeNode.html',1,'TreeNode'],['../classTreeNode.html#a984a98d5ccf7ef1f5a18094c6821f35d',1,'TreeNode::TreeNode()'],['../classTreeNode.html#a8e38dd591d8801d7ee3a7dbad90c67fc',1,'TreeNode::TreeNode(const FrameInfo &amp;frame)'],['../classTreeNode.html#ab9f00f5253d56461bb2d420fd639c5ae',1,'TreeNode::TreeNode(const SignalInfo &amp;signal)']]],
['treenode_20tt_19',['&lt;tt&gt;TreeNode&lt;/tt&gt;',['../md_README.html#autotoc_md65',1,'']]],
['tt_20byteorder_20tt_20',['&lt;tt&gt;ByteOrder&lt;/tt&gt;',['../md_README.html#autotoc_md70',1,'']]],
['tt_20dbcdatabase_20tt_21',['&lt;tt&gt;DbcDatabase&lt;/tt&gt;',['../md_README.html#autotoc_md62',1,'']]],
@@ -37,5 +37,6 @@ var searchData=
['tt_20valuetype_20tt_34',['&lt;tt&gt;ValueType&lt;/tt&gt;',['../md_README.html#autotoc_md72',1,'']]],
['type_35',['type',['../structAttributeDefinition.html#a5de5484174a8c5f6b309041089d20afc',1,'AttributeDefinition']]],
['typefactory_36',['TypeFactory',['../classTypeFactory.html',1,'']]],
['typefactory_3c_20std_3a_3astring_2c_20dbcstatementhandler_20_3e_37',['TypeFactory&lt; std::string, DbcStatementHandler &gt;',['../classTypeFactory.html',1,'']]]
['typefactory_3c_20std_3a_3astring_2c_20dbcstatementhandler_20_3e_37',['TypeFactory&lt; std::string, DbcStatementHandler &gt;',['../classTypeFactory.html',1,'']]],
['types_38',['Unsupported signal value types',['../md_tests_2README.html#autotoc_md170',1,'']]]
];
+3 -2
View File
@@ -7,6 +7,7 @@ var searchData=
['unified_20decode_20strategy_4',['Unified Decode Strategy',['../md_README.html#autotoc_md126',1,'']]],
['unit_5',['unit',['../structDecodeSignal.html#a38eed9ca7581423fd8bfbedcffc12092',1,'DecodeSignal::unit'],['../structSignalInfo.html#a1f214f03e94ef5794de2d3367bfcbd01',1,'SignalInfo::unit']]],
['unreleased_6',['Unreleased',['../md_changelog.html#autotoc_md7',1,'']]],
['usage_7',['Example Usage',['../md_README.html#autotoc_md120',1,'']]],
['use_20in_20frametap_8',['Intended Use in FrameTap',['../md_README.html#autotoc_md130',1,'']]]
['unsupported_20signal_20value_20types_7',['Unsupported signal value types',['../md_tests_2README.html#autotoc_md170',1,'']]],
['usage_8',['Example Usage',['../md_README.html#autotoc_md120',1,'']]],
['use_20in_20frametap_9',['Intended Use in FrameTap',['../md_README.html#autotoc_md130',1,'']]]
];
+7 -6
View File
@@ -4,14 +4,15 @@ var searchData=
['val_5f_20tt_1',['Signal value descriptions (&lt;tt&gt;VAL_&lt;/tt&gt;)',['../md_README.html#autotoc_md136',1,'']]],
['valid_2',['valid',['../structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0',1,'DecodedFrameValue::valid'],['../structDecodedSignalValue.html#aac0ed361af545cde48d0e6f41a859686',1,'DecodedSignalValue::valid']]],
['validatemultiplexing_3',['ValidateMultiplexing',['../structDbcParseContext.html#a908056de0a97316a4ebecb3f99cc400b',1,'DbcParseContext']]],
['validation_4',['Extended validation',['../md_tests_2README.html#autotoc_md171',1,'']]],
['validation_4',['Extended validation',['../md_tests_2README.html#autotoc_md172',1,'']]],
['validation_20and_20parse_20errors_5',['validation and parse errors',['../md_README.html#autotoc_md102',1,'Frame validation and parse errors'],['../md_README.html#autotoc_md106',1,'Signal validation and parse errors']]],
['validation_20coverage_6',['Database validation coverage',['../md_tests_2README.html#autotoc_md167',1,'']]],
['value_7',['value',['../structAttributeAssignment.html#a93de8c51c5154219bf18beadcec5708f',1,'AttributeAssignment::value'],['../structMultiplexing.html#a79158d4fdbfd68a3d51a8ce79d34fd67',1,'Multiplexing::value']]],
['value_7',['value',['../structMultiplexing.html#a79158d4fdbfd68a3d51a8ce79d34fd67',1,'Multiplexing::value'],['../structAttributeAssignment.html#a93de8c51c5154219bf18beadcec5708f',1,'AttributeAssignment::value']]],
['value_20descriptions_20tt_20val_5f_20tt_8',['Signal value descriptions (&lt;tt&gt;VAL_&lt;/tt&gt;)',['../md_README.html#autotoc_md136',1,'']]],
['value_20representation_20and_20precision_9',['Raw value representation and precision',['../md_README.html#autotoc_md87',1,'']]],
['valuedescriptions_10',['valuedescriptions',['../structDecodeSignal.html#a822155d9bf4ed5f3300c9e9befe606ff',1,'DecodeSignal::valueDescriptions'],['../structSignalInfo.html#a43f47d0433d0cc39076bd7278b46af9c',1,'SignalInfo::valueDescriptions']]],
['valuetype_11',['valuetype',['../structDecodeSignal.html#a9d37638129263b8902ba5be59baf39a8',1,'DecodeSignal::valueType'],['../decode__database_8h.html#ad9971b6ef33e02ba2c75d19c1d2518a1',1,'ValueType:&#160;decode_database.h']]],
['valuetype_20tt_12',['&lt;tt&gt;ValueType&lt;/tt&gt;',['../md_README.html#autotoc_md72',1,'']]],
['variants_20in_20qt_20creator_13',['Configure all build variants in Qt Creator',['../md_README.html#autotoc_md159',1,'']]]
['value_20types_10',['Unsupported signal value types',['../md_tests_2README.html#autotoc_md170',1,'']]],
['valuedescriptions_11',['valuedescriptions',['../structSignalInfo.html#a43f47d0433d0cc39076bd7278b46af9c',1,'SignalInfo::valueDescriptions'],['../structDecodeSignal.html#a822155d9bf4ed5f3300c9e9befe606ff',1,'DecodeSignal::valueDescriptions']]],
['valuetype_12',['valuetype',['../structDecodeSignal.html#a9d37638129263b8902ba5be59baf39a8',1,'DecodeSignal::valueType'],['../decode__database_8h.html#ad9971b6ef33e02ba2c75d19c1d2518a1',1,'ValueType:&#160;decode_database.h']]],
['valuetype_20tt_13',['&lt;tt&gt;ValueType&lt;/tt&gt;',['../md_README.html#autotoc_md72',1,'']]],
['variants_20in_20qt_20creator_14',['Configure all build variants in Qt Creator',['../md_README.html#autotoc_md159',1,'']]]
];
+40 -39
View File
@@ -36,43 +36,44 @@ var searchData=
['dbcstatementdispatcher_33',['dbcstatementdispatcher',['../classDbcStatementDispatcher.html',1,'DbcStatementDispatcher'],['../classDbcStatementDispatcher.html#a2f064359b59d8644b8a8196653d47482',1,'DbcStatementDispatcher::DbcStatementDispatcher()']]],
['dbcstatementhandler_34',['DbcStatementHandler',['../classDbcStatementHandler.html',1,'']]],
['dbctreebuilder_35',['DbcTreeBuilder',['../classDbcTreeBuilder.html',1,'']]],
['dbctreemodel_36',['dbctreemodel',['../classDbcTreeModel.html#a4f7214b727d812885bf077352ec9ece1',1,'DbcTreeModel::DbcTreeModel()'],['../classDbcTreeModel.html',1,'DbcTreeModel']]],
['dbcvaluedescriptionhandler_37',['DbcValueDescriptionHandler',['../classDbcValueDescriptionHandler.html',1,'']]],
['debian_20ubuntu_38',['GCC, gcov, and LCOV on Debian/Ubuntu',['../md_README.html#autotoc_md157',1,'']]],
['decode_39',['decode',['../classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7',1,'DbcDecoder::Decode(const DecodeDatabase &amp;database, const RawCanFrame &amp;frame) const'],['../classDbcDecoder.html#ade48a94b6fcda6563bd1b2c6ff49439e',1,'DbcDecoder::Decode(const DecodeDatabase &amp;database, const RawCanFrame &amp;frame, const std::vector&lt; SignalKey &gt; &amp;selection) const']]],
['decode_20a_20raw_20frame_40',['Decode a raw frame',['../md_README.html#autotoc_md124',1,'']]],
['decode_20database_41',['Build runtime decode database',['../md_README.html#autotoc_md123',1,'']]],
['decode_20flow_42',['Decode Flow',['../md_README.html#autotoc_md116',1,'']]],
['decode_20layer_43',['Runtime Decode Layer',['../md_README.html#autotoc_md67',1,'']]],
['decode_20layer_20exists_44',['Why the Runtime Decode Layer Exists',['../md_README.html#autotoc_md53',1,'']]],
['decode_20module_20documentation_45',['DBC Parser and Runtime Decode Module Documentation',['../md_README.html',1,'']]],
['decode_20path_46',['2. Runtime decode path',['../md_README.html#autotoc_md51',1,'']]],
['decode_20strategy_47',['Unified Decode Strategy',['../md_README.html#autotoc_md126',1,'']]],
['decode_5fdatabase_2eh_48',['decode_database.h',['../decode__database_8h.html',1,'']]],
['decodedatabase_49',['decodedatabase',['../classDecodeDatabase.html#a51a44cf7c3f23c98ec8781afe0097c0c',1,'DecodeDatabase::DecodeDatabase()'],['../classDecodeDatabase.html',1,'DecodeDatabase']]],
['decodedatabase_20tt_50',['&lt;tt&gt;DecodeDatabase&lt;/tt&gt;',['../md_README.html#autotoc_md80',1,'']]],
['decodedframevalue_51',['DecodedFrameValue',['../structDecodedFrameValue.html',1,'']]],
['decodedframevalue_20tt_52',['&lt;tt&gt;DecodedFrameValue&lt;/tt&gt;',['../md_README.html#autotoc_md89',1,'']]],
['decodedsignalvalue_53',['DecodedSignalValue',['../structDecodedSignalValue.html',1,'']]],
['decodedsignalvalue_20tt_54',['&lt;tt&gt;DecodedSignalValue&lt;/tt&gt;',['../md_README.html#autotoc_md85',1,'']]],
['decodeframe_55',['DecodeFrame',['../structDecodeFrame.html',1,'']]],
['decodeframe_20tt_56',['&lt;tt&gt;DecodeFrame&lt;/tt&gt;',['../md_README.html#autotoc_md76',1,'']]],
['decoder_20coverage_57',['Decoder coverage',['../md_tests_2README.html#autotoc_md162',1,'']]],
['decoder_20layer_58',['Decoder Layer',['../md_README.html#autotoc_md82',1,'']]],
['decodesignal_59',['DecodeSignal',['../structDecodeSignal.html',1,'']]],
['decodesignal_20tt_60',['&lt;tt&gt;DecodeSignal&lt;/tt&gt;',['../md_README.html#autotoc_md74',1,'']]],
['defaultvalue_61',['defaultValue',['../structAttributeDefinition.html#ae0949edf67f9d4e60e4cb376a95da4f2',1,'AttributeDefinition']]],
['definition_62',['definition',['../structDecodedSignalValue.html#a828b5ef7faefc14fbf5dbd46249bcad2',1,'DecodedSignalValue::definition'],['../structDecodedFrameValue.html#a33e971ba10030506007aa201c89f351d',1,'DecodedFrameValue::definition'],['../structPgnLookupResult.html#aa5b79b61d2aef48fd6ae070cf5f901c1',1,'PgnLookupResult::definition'],['../md_README.html#autotoc_md100',1,'Frame definition'],['../md_README.html#autotoc_md104',1,'Signal definition']]],
['definition_20lifetime_20and_20reload_20coverage_63',['Definition lifetime and reload coverage',['../md_tests_2README.html#autotoc_md166',1,'']]],
['definition_20ownership_20and_20reload_64',['Definition ownership and reload',['../md_README.html#autotoc_md90',1,'']]],
['definitions_65',['Long signal definitions',['../md_tests_2README.html#autotoc_md170',1,'']]],
['demo_66',['Build and run the demo',['../md_README.html#autotoc_md151',1,'']]],
['descriptions_67',['descriptions',['../structPendingValueDescriptions.html#a10ecbaeaed2cc3ac82fada73e7e041dd',1,'PendingValueDescriptions']]],
['descriptions_20tt_20val_5f_20tt_68',['Signal value descriptions (&lt;tt&gt;VAL_&lt;/tt&gt;)',['../md_README.html#autotoc_md136',1,'']]],
['diagnostic_69',['diagnostic',['../classDbcDiagnosticError.html#ab3965082f01d66b6d5c20525af44235d',1,'DbcDiagnosticError']]],
['diagnostics_70',['diagnostics',['../structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679',1,'DbcParseResult::diagnostics'],['../md_README.html#autotoc_md96',1,'Structured diagnostics']]],
['dispatch_71',['Dispatch',['../classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed',1,'DbcStatementDispatcher']]],
['dlc_72',['dlc',['../structDecodeFrame.html#a51111ac13988be372d5673d12cf3e060',1,'DecodeFrame::dlc'],['../structFrameInfo.html#aa2b198ea0f55e560c123d35e7b3ecab9',1,'FrameInfo::dlc']]],
['documentation_73',['documentation',['../md_README.html',1,'DBC Parser and Runtime Decode Module Documentation'],['../md_changelog.html#autotoc_md42',1,'Documentation'],['../md_README.html#autotoc_md152',1,'Generate API documentation']]],
['documentation_20and_20maintenance_74',['documentation and maintenance',['../md_changelog.html#autotoc_md45',1,'Documentation and maintenance'],['../md_changelog.html#autotoc_md37',1,'Documentation and maintenance']]]
['dbctreemodel_36',['dbctreemodel',['../classDbcTreeModel.html',1,'DbcTreeModel'],['../classDbcTreeModel.html#a4f7214b727d812885bf077352ec9ece1',1,'DbcTreeModel::DbcTreeModel()']]],
['dbcunsupportedsignaltypehandler_37',['DbcUnsupportedSignalTypeHandler',['../classDbcUnsupportedSignalTypeHandler.html',1,'']]],
['dbcvaluedescriptionhandler_38',['DbcValueDescriptionHandler',['../classDbcValueDescriptionHandler.html',1,'']]],
['debian_20ubuntu_39',['GCC, gcov, and LCOV on Debian/Ubuntu',['../md_README.html#autotoc_md157',1,'']]],
['decode_40',['decode',['../classDbcDecoder.html#ade48a94b6fcda6563bd1b2c6ff49439e',1,'DbcDecoder::Decode(const DecodeDatabase &amp;database, const RawCanFrame &amp;frame, const std::vector&lt; SignalKey &gt; &amp;selection) const'],['../classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7',1,'DbcDecoder::Decode(const DecodeDatabase &amp;database, const RawCanFrame &amp;frame) const']]],
['decode_20a_20raw_20frame_41',['Decode a raw frame',['../md_README.html#autotoc_md124',1,'']]],
['decode_20database_42',['Build runtime decode database',['../md_README.html#autotoc_md123',1,'']]],
['decode_20flow_43',['Decode Flow',['../md_README.html#autotoc_md116',1,'']]],
['decode_20layer_44',['Runtime Decode Layer',['../md_README.html#autotoc_md67',1,'']]],
['decode_20layer_20exists_45',['Why the Runtime Decode Layer Exists',['../md_README.html#autotoc_md53',1,'']]],
['decode_20module_20documentation_46',['DBC Parser and Runtime Decode Module Documentation',['../md_README.html',1,'']]],
['decode_20path_47',['2. Runtime decode path',['../md_README.html#autotoc_md51',1,'']]],
['decode_20strategy_48',['Unified Decode Strategy',['../md_README.html#autotoc_md126',1,'']]],
['decode_5fdatabase_2eh_49',['decode_database.h',['../decode__database_8h.html',1,'']]],
['decodedatabase_50',['decodedatabase',['../classDecodeDatabase.html#a51a44cf7c3f23c98ec8781afe0097c0c',1,'DecodeDatabase::DecodeDatabase()'],['../classDecodeDatabase.html',1,'DecodeDatabase']]],
['decodedatabase_20tt_51',['&lt;tt&gt;DecodeDatabase&lt;/tt&gt;',['../md_README.html#autotoc_md80',1,'']]],
['decodedframevalue_52',['DecodedFrameValue',['../structDecodedFrameValue.html',1,'']]],
['decodedframevalue_20tt_53',['&lt;tt&gt;DecodedFrameValue&lt;/tt&gt;',['../md_README.html#autotoc_md89',1,'']]],
['decodedsignalvalue_54',['DecodedSignalValue',['../structDecodedSignalValue.html',1,'']]],
['decodedsignalvalue_20tt_55',['&lt;tt&gt;DecodedSignalValue&lt;/tt&gt;',['../md_README.html#autotoc_md85',1,'']]],
['decodeframe_56',['DecodeFrame',['../structDecodeFrame.html',1,'']]],
['decodeframe_20tt_57',['&lt;tt&gt;DecodeFrame&lt;/tt&gt;',['../md_README.html#autotoc_md76',1,'']]],
['decoder_20coverage_58',['Decoder coverage',['../md_tests_2README.html#autotoc_md162',1,'']]],
['decoder_20layer_59',['Decoder Layer',['../md_README.html#autotoc_md82',1,'']]],
['decodesignal_60',['DecodeSignal',['../structDecodeSignal.html',1,'']]],
['decodesignal_20tt_61',['&lt;tt&gt;DecodeSignal&lt;/tt&gt;',['../md_README.html#autotoc_md74',1,'']]],
['defaultvalue_62',['defaultValue',['../structAttributeDefinition.html#ae0949edf67f9d4e60e4cb376a95da4f2',1,'AttributeDefinition']]],
['definition_63',['definition',['../structDecodedSignalValue.html#a828b5ef7faefc14fbf5dbd46249bcad2',1,'DecodedSignalValue::definition'],['../structDecodedFrameValue.html#a33e971ba10030506007aa201c89f351d',1,'DecodedFrameValue::definition'],['../structPgnLookupResult.html#aa5b79b61d2aef48fd6ae070cf5f901c1',1,'PgnLookupResult::definition'],['../md_README.html#autotoc_md100',1,'Frame definition'],['../md_README.html#autotoc_md104',1,'Signal definition']]],
['definition_20lifetime_20and_20reload_20coverage_64',['Definition lifetime and reload coverage',['../md_tests_2README.html#autotoc_md166',1,'']]],
['definition_20ownership_20and_20reload_65',['Definition ownership and reload',['../md_README.html#autotoc_md90',1,'']]],
['definitions_66',['Long signal definitions',['../md_tests_2README.html#autotoc_md171',1,'']]],
['demo_67',['Build and run the demo',['../md_README.html#autotoc_md151',1,'']]],
['descriptions_68',['descriptions',['../structPendingValueDescriptions.html#a10ecbaeaed2cc3ac82fada73e7e041dd',1,'PendingValueDescriptions']]],
['descriptions_20tt_20val_5f_20tt_69',['Signal value descriptions (&lt;tt&gt;VAL_&lt;/tt&gt;)',['../md_README.html#autotoc_md136',1,'']]],
['diagnostic_70',['diagnostic',['../classDbcDiagnosticError.html#ab3965082f01d66b6d5c20525af44235d',1,'DbcDiagnosticError']]],
['diagnostics_71',['diagnostics',['../structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679',1,'DbcParseResult::diagnostics'],['../md_README.html#autotoc_md96',1,'Structured diagnostics']]],
['dispatch_72',['Dispatch',['../classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed',1,'DbcStatementDispatcher']]],
['dlc_73',['dlc',['../structDecodeFrame.html#a51111ac13988be372d5673d12cf3e060',1,'DecodeFrame::dlc'],['../structFrameInfo.html#aa2b198ea0f55e560c123d35e7b3ecab9',1,'FrameInfo::dlc']]],
['documentation_74',['documentation',['../md_README.html',1,'DBC Parser and Runtime Decode Module Documentation'],['../md_changelog.html#autotoc_md42',1,'Documentation'],['../md_README.html#autotoc_md152',1,'Generate API documentation']]],
['documentation_20and_20maintenance_75',['documentation and maintenance',['../md_changelog.html#autotoc_md45',1,'Documentation and maintenance'],['../md_changelog.html#autotoc_md37',1,'Documentation and maintenance']]]
];
+1 -1
View File
@@ -9,6 +9,6 @@ var searchData=
['example_20usage_6',['Example Usage',['../md_README.html#autotoc_md120',1,'']]],
['examples_2fmain_2ecpp_7',['main.cpp',['../examples_2main_8cpp.html',1,'']]],
['exists_8',['Why the Runtime Decode Layer Exists',['../md_README.html#autotoc_md53',1,'']]],
['extended_20validation_9',['Extended validation',['../md_tests_2README.html#autotoc_md171',1,'']]],
['extended_20validation_9',['Extended validation',['../md_tests_2README.html#autotoc_md172',1,'']]],
['extraction_10',['Intel and Motorola Extraction',['../md_README.html#autotoc_md118',1,'']]]
];
+1 -1
View File
@@ -1,6 +1,6 @@
var searchData=
[
['handle_0',['handle',['../classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739',1,'DbcStatementHandler::Handle()'],['../classDbcFrameHandler.html#a0d3f43bbcc5e191460bc31827e74ce89',1,'DbcFrameHandler::Handle()'],['../classDbcSignalHandler.html#ad7d891ec1414fb645f85ccd410f2737b',1,'DbcSignalHandler::Handle()'],['../classDbcCommentHandler.html#aa4fce77b585a441d251d8535ef7a51a6',1,'DbcCommentHandler::Handle()'],['../classDbcAttributeHandler.html#a397f23259b7ff79abb4b5141489caa83',1,'DbcAttributeHandler::Handle()'],['../classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a',1,'DbcValueDescriptionHandler::Handle()'],['../classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e',1,'DbcMultiplexingHandler::Handle()'],['../classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693',1,'DbcHeaderHandler::Handle()']]],
['handle_0',['handle',['../classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739',1,'DbcStatementHandler::Handle()'],['../classDbcFrameHandler.html#a0d3f43bbcc5e191460bc31827e74ce89',1,'DbcFrameHandler::Handle()'],['../classDbcSignalHandler.html#ad7d891ec1414fb645f85ccd410f2737b',1,'DbcSignalHandler::Handle()'],['../classDbcCommentHandler.html#aa4fce77b585a441d251d8535ef7a51a6',1,'DbcCommentHandler::Handle()'],['../classDbcAttributeHandler.html#a397f23259b7ff79abb4b5141489caa83',1,'DbcAttributeHandler::Handle()'],['../classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a',1,'DbcValueDescriptionHandler::Handle()'],['../classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e',1,'DbcMultiplexingHandler::Handle()'],['../classDbcUnsupportedSignalTypeHandler.html#ae4132fcdbb134d51143133c1fb83a9df',1,'DbcUnsupportedSignalTypeHandler::Handle()'],['../classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693',1,'DbcHeaderHandler::Handle()']]],
['handler_20factory_1',['Statement Handler Factory',['../md_README.html#autotoc_md134',1,'']]],
['haserrors_2',['HasErrors',['../structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d',1,'DbcParseResult']]],
['haspgn_3',['haspgn',['../structDecodeFrame.html#a2551102670c4a540fced4c71da0b369d',1,'DecodeFrame::hasPgn'],['../structFrameInfo.html#a4737a5420213ad4304724e39f3a4e55d',1,'FrameInfo::hasPgn']]],
+7 -6
View File
@@ -19,10 +19,11 @@ var searchData=
['dbcstatementhandler_16',['DbcStatementHandler',['../classDbcStatementHandler.html',1,'']]],
['dbctreebuilder_17',['DbcTreeBuilder',['../classDbcTreeBuilder.html',1,'']]],
['dbctreemodel_18',['DbcTreeModel',['../classDbcTreeModel.html',1,'']]],
['dbcvaluedescriptionhandler_19',['DbcValueDescriptionHandler',['../classDbcValueDescriptionHandler.html',1,'']]],
['decodedatabase_20',['DecodeDatabase',['../classDecodeDatabase.html',1,'']]],
['decodedframevalue_21',['DecodedFrameValue',['../structDecodedFrameValue.html',1,'']]],
['decodedsignalvalue_22',['DecodedSignalValue',['../structDecodedSignalValue.html',1,'']]],
['decodeframe_23',['DecodeFrame',['../structDecodeFrame.html',1,'']]],
['decodesignal_24',['DecodeSignal',['../structDecodeSignal.html',1,'']]]
['dbcunsupportedsignaltypehandler_19',['DbcUnsupportedSignalTypeHandler',['../classDbcUnsupportedSignalTypeHandler.html',1,'']]],
['dbcvaluedescriptionhandler_20',['DbcValueDescriptionHandler',['../classDbcValueDescriptionHandler.html',1,'']]],
['decodedatabase_21',['DecodeDatabase',['../classDecodeDatabase.html',1,'']]],
['decodedframevalue_22',['DecodedFrameValue',['../structDecodedFrameValue.html',1,'']]],
['decodedsignalvalue_23',['DecodedSignalValue',['../structDecodedSignalValue.html',1,'']]],
['decodeframe_24',['DecodeFrame',['../structDecodeFrame.html',1,'']]],
['decodesignal_25',['DecodeSignal',['../structDecodeSignal.html',1,'']]]
];
+1 -1
View File
@@ -1,6 +1,6 @@
var searchData=
[
['handle_0',['handle',['../classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739',1,'DbcStatementHandler::Handle()'],['../classDbcFrameHandler.html#a0d3f43bbcc5e191460bc31827e74ce89',1,'DbcFrameHandler::Handle()'],['../classDbcSignalHandler.html#ad7d891ec1414fb645f85ccd410f2737b',1,'DbcSignalHandler::Handle()'],['../classDbcCommentHandler.html#aa4fce77b585a441d251d8535ef7a51a6',1,'DbcCommentHandler::Handle()'],['../classDbcAttributeHandler.html#a397f23259b7ff79abb4b5141489caa83',1,'DbcAttributeHandler::Handle()'],['../classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a',1,'DbcValueDescriptionHandler::Handle()'],['../classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e',1,'DbcMultiplexingHandler::Handle()'],['../classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693',1,'DbcHeaderHandler::Handle()']]],
['handle_0',['handle',['../classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739',1,'DbcStatementHandler::Handle()'],['../classDbcFrameHandler.html#a0d3f43bbcc5e191460bc31827e74ce89',1,'DbcFrameHandler::Handle()'],['../classDbcSignalHandler.html#ad7d891ec1414fb645f85ccd410f2737b',1,'DbcSignalHandler::Handle()'],['../classDbcCommentHandler.html#aa4fce77b585a441d251d8535ef7a51a6',1,'DbcCommentHandler::Handle()'],['../classDbcAttributeHandler.html#a397f23259b7ff79abb4b5141489caa83',1,'DbcAttributeHandler::Handle()'],['../classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a',1,'DbcValueDescriptionHandler::Handle()'],['../classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e',1,'DbcMultiplexingHandler::Handle()'],['../classDbcUnsupportedSignalTypeHandler.html#ae4132fcdbb134d51143133c1fb83a9df',1,'DbcUnsupportedSignalTypeHandler::Handle()'],['../classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693',1,'DbcHeaderHandler::Handle()']]],
['haserrors_1',['HasErrors',['../structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d',1,'DbcParseResult']]],
['headerdata_2',['headerData',['../classDbcTreeModel.html#aad5834e8edb00808cbfa498ea8c63fe9',1,'DbcTreeModel']]]
];
+1 -1
View File
@@ -1,6 +1,6 @@
var searchData=
[
['registertype_0',['registertype',['../classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d',1,'DbcStatementDispatcher::RegisterType()'],['../classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3',1,'TypeFactory::registerType()']]],
['registertype_0',['registertype',['../classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3',1,'TypeFactory::registerType()'],['../classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d',1,'DbcStatementDispatcher::RegisterType()']]],
['resolveattributes_1',['ResolveAttributes',['../structDbcParseContext.html#a1ac7f4a54550aaddef08749806f87001',1,'DbcParseContext']]],
['resolvecomments_2',['ResolveComments',['../structDbcParseContext.html#aeae343c57a244634489a0e0b960155d7',1,'DbcParseContext']]],
['resolvevaluedescriptions_3',['ResolveValueDescriptions',['../structDbcParseContext.html#ab5552dad944fde7fa6add6464ddb5369',1,'DbcParseContext']]],
+1 -1
View File
@@ -133,7 +133,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__database_8h_source.html#l00023">23</a> of file <a class="el" href="dbc__database_8h_source.html">dbc_database.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__tree__builder_8cpp_source.html#l00014">DbcTreeBuilder::Build()</a>, <a class="el" href="dbc__decode__builder_8cpp_source.html#l00015">DbcDecodeBuilder::Build()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00311">DbcFrameHandler::Handle()</a>, <a class="el" href="dbc__attributes_8cpp_source.html#l00259">DbcParseContext::ResolveAttributes()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00567">DbcParseContext::ValidateMultiplexing()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__tree__builder_8cpp_source.html#l00014">DbcTreeBuilder::Build()</a>, <a class="el" href="dbc__decode__builder_8cpp_source.html#l00015">DbcDecodeBuilder::Build()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00311">DbcFrameHandler::Handle()</a>, <a class="el" href="dbc__attributes_8cpp_source.html#l00259">DbcParseContext::ResolveAttributes()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00572">DbcParseContext::ValidateMultiplexing()</a>.</p>
</div>
</div>
+6 -6
View File
@@ -118,7 +118,7 @@ Public Attributes</h2></td></tr>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Diagnostic message and physical source location. </p>
<p class="definition">Definition at line <a class="el" href="dbc__diagnostic_8h_source.html#l00029">29</a> of file <a class="el" href="dbc__diagnostic_8h_source.html">dbc_diagnostic.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__diagnostic_8h_source.html#l00030">30</a> of file <a class="el" href="dbc__diagnostic_8h_source.html">dbc_diagnostic.h</a>.</p>
</div><h2 class="groupheader">Member Data Documentation</h2>
<a id="a75040a94f0313a606478020b0491f81d" name="a75040a94f0313a606478020b0491f81d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75040a94f0313a606478020b0491f81d">&#9670;&#160;</a></span>severity</h2>
@@ -133,7 +133,7 @@ Public Attributes</h2></td></tr>
</div><div class="memdoc">
<p>Message severity. </p>
<p class="definition">Definition at line <a class="el" href="dbc__diagnostic_8h_source.html#l00030">30</a> of file <a class="el" href="dbc__diagnostic_8h_source.html">dbc_diagnostic.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__diagnostic_8h_source.html#l00031">31</a> of file <a class="el" href="dbc__diagnostic_8h_source.html">dbc_diagnostic.h</a>.</p>
</div>
</div>
@@ -150,7 +150,7 @@ Public Attributes</h2></td></tr>
</div><div class="memdoc">
<p>Stable diagnostic category. </p>
<p class="definition">Definition at line <a class="el" href="dbc__diagnostic_8h_source.html#l00031">31</a> of file <a class="el" href="dbc__diagnostic_8h_source.html">dbc_diagnostic.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__diagnostic_8h_source.html#l00032">32</a> of file <a class="el" href="dbc__diagnostic_8h_source.html">dbc_diagnostic.h</a>.</p>
</div>
</div>
@@ -167,7 +167,7 @@ Public Attributes</h2></td></tr>
</div><div class="memdoc">
<p>Input file path. </p>
<p class="definition">Definition at line <a class="el" href="dbc__diagnostic_8h_source.html#l00032">32</a> of file <a class="el" href="dbc__diagnostic_8h_source.html">dbc_diagnostic.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__diagnostic_8h_source.html#l00033">33</a> of file <a class="el" href="dbc__diagnostic_8h_source.html">dbc_diagnostic.h</a>.</p>
</div>
</div>
@@ -184,7 +184,7 @@ Public Attributes</h2></td></tr>
</div><div class="memdoc">
<p>One-based physical line; zero for file-level errors. </p>
<p class="definition">Definition at line <a class="el" href="dbc__diagnostic_8h_source.html#l00033">33</a> of file <a class="el" href="dbc__diagnostic_8h_source.html">dbc_diagnostic.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__diagnostic_8h_source.html#l00034">34</a> of file <a class="el" href="dbc__diagnostic_8h_source.html">dbc_diagnostic.h</a>.</p>
</div>
</div>
@@ -201,7 +201,7 @@ Public Attributes</h2></td></tr>
</div><div class="memdoc">
<p>Human-readable diagnostic details. </p>
<p class="definition">Definition at line <a class="el" href="dbc__diagnostic_8h_source.html#l00034">34</a> of file <a class="el" href="dbc__diagnostic_8h_source.html">dbc_diagnostic.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__diagnostic_8h_source.html#l00035">35</a> of file <a class="el" href="dbc__diagnostic_8h_source.html">dbc_diagnostic.h</a>.</p>
</div>
</div>
+7 -7
View File
@@ -159,7 +159,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00517">517</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00522">522</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
</div>
</div>
@@ -181,7 +181,7 @@ Public Attributes</h2></td></tr>
<p>Validate selectors, branch ranges, and signal overlap. </p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00567">567</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00572">572</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
<p class="reference">References <a class="el" href="dbc__statement__handler_8h_source.html#l00061">database</a>, <a class="el" href="dbc__database_8h_source.html#l00023">DbcDatabase::frames</a>, <a class="el" href="signal__info_8h_source.html#l00031">SignalInfo::isSigned</a>, <a class="el" href="signal__info_8h_source.html#l00026">SignalInfo::multiplexing</a>, and <a class="el" href="dbc__statement__handler_8h_source.html#l00070">signalLines</a>.</p>
@@ -263,7 +263,7 @@ Public Attributes</h2></td></tr>
<p>Resolve deferred raw descriptions against unique targets. </p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00468">468</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00473">473</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
<p class="reference">References <a class="el" href="dbc__statement__handler_8h_source.html#l00061">database</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00065">pendingValues</a>, and <a class="el" href="signal__info_8h_source.html#l00038">SignalInfo::valueDescriptions</a>.</p>
@@ -285,7 +285,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00061">61</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00311">DbcFrameHandler::Handle()</a>, <a class="el" href="dbc__attributes_8cpp_source.html#l00259">ResolveAttributes()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00385">ResolveComments()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00468">ResolveValueDescriptions()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00567">ValidateMultiplexing()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00311">DbcFrameHandler::Handle()</a>, <a class="el" href="dbc__attributes_8cpp_source.html#l00259">ResolveAttributes()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00385">ResolveComments()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00473">ResolveValueDescriptions()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00572">ValidateMultiplexing()</a>.</p>
</div>
</div>
@@ -342,7 +342,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00064">64</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00325">DbcSignalHandler::Handle()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00339">DbcCommentHandler::Handle()</a>, <a class="el" href="dbc__attributes_8cpp_source.html#l00255">DbcAttributeHandler::Handle()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00435">DbcValueDescriptionHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00484">DbcMultiplexingHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00325">DbcSignalHandler::Handle()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00339">DbcCommentHandler::Handle()</a>, <a class="el" href="dbc__attributes_8cpp_source.html#l00255">DbcAttributeHandler::Handle()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00440">DbcValueDescriptionHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00489">DbcMultiplexingHandler::Handle()</a>.</p>
</div>
</div>
@@ -361,7 +361,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00065">65</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00435">DbcValueDescriptionHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00468">ResolveValueDescriptions()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00440">DbcValueDescriptionHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00473">ResolveValueDescriptions()</a>.</p>
</div>
</div>
@@ -396,7 +396,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00070">70</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00311">DbcFrameHandler::Handle()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00325">DbcSignalHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00567">ValidateMultiplexing()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00311">DbcFrameHandler::Handle()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00325">DbcSignalHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00572">ValidateMultiplexing()</a>.</p>
</div>
</div>
+9 -7
View File
@@ -119,7 +119,7 @@ Public Attributes</h2></td></tr>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Parsed database and diagnostics; the database is empty on error. </p>
<p class="definition">Definition at line <a class="el" href="dbc__diagnostic_8h_source.html#l00038">38</a> of file <a class="el" href="dbc__diagnostic_8h_source.html">dbc_diagnostic.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__diagnostic_8h_source.html#l00039">39</a> of file <a class="el" href="dbc__diagnostic_8h_source.html">dbc_diagnostic.h</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a4da8641de3f6b55c7447c4421e05d20d" name="a4da8641de3f6b55c7447c4421e05d20d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4da8641de3f6b55c7447c4421e05d20d">&#9670;&#160;</a></span>HasErrors()</h2>
@@ -146,9 +146,11 @@ Public Attributes</h2></td></tr>
<p>Return whether any diagnostic has error severity. </p>
<p class="definition">Definition at line <a class="el" href="dbc__diagnostic_8h_source.html#l00043">43</a> of file <a class="el" href="dbc__diagnostic_8h_source.html">dbc_diagnostic.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__diagnostic_8h_source.html#l00044">44</a> of file <a class="el" href="dbc__diagnostic_8h_source.html">dbc_diagnostic.h</a>.</p>
<p class="reference">References <a class="el" href="dbc__diagnostic_8h_source.html#l00040">diagnostics</a>.</p>
<p class="reference">References <a class="el" href="dbc__diagnostic_8h_source.html#l00041">diagnostics</a>.</p>
<p class="reference">Referenced by <a class="el" href="examples_2main_8cpp_source.html#l00101">main()</a>.</p>
</div>
</div>
@@ -166,9 +168,9 @@ Public Attributes</h2></td></tr>
</div><div class="memdoc">
<p>Parsed content, published only on success. </p>
<p class="definition">Definition at line <a class="el" href="dbc__diagnostic_8h_source.html#l00039">39</a> of file <a class="el" href="dbc__diagnostic_8h_source.html">dbc_diagnostic.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__diagnostic_8h_source.html#l00040">40</a> of file <a class="el" href="dbc__diagnostic_8h_source.html">dbc_diagnostic.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__parser_8cpp_source.html#l00090">DbcParser::ParseFile()</a>, and <a class="el" href="dbc__parser_8cpp_source.html#l00103">DbcParser::ParseFileWithDiagnostics()</a>.</p>
<p class="reference">Referenced by <a class="el" href="examples_2main_8cpp_source.html#l00101">main()</a>, <a class="el" href="dbc__parser_8cpp_source.html#l00092">DbcParser::ParseFile()</a>, and <a class="el" href="dbc__parser_8cpp_source.html#l00105">DbcParser::ParseFileWithDiagnostics()</a>.</p>
</div>
</div>
@@ -185,9 +187,9 @@ Public Attributes</h2></td></tr>
</div><div class="memdoc">
<p>Warnings and the first error, if any. </p>
<p class="definition">Definition at line <a class="el" href="dbc__diagnostic_8h_source.html#l00040">40</a> of file <a class="el" href="dbc__diagnostic_8h_source.html">dbc_diagnostic.h</a>.</p>
<p class="definition">Definition at line <a class="el" href="dbc__diagnostic_8h_source.html#l00041">41</a> of file <a class="el" href="dbc__diagnostic_8h_source.html">dbc_diagnostic.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__diagnostic_8h_source.html#l00043">HasErrors()</a>, <a class="el" href="dbc__parser_8cpp_source.html#l00090">DbcParser::ParseFile()</a>, and <a class="el" href="dbc__parser_8cpp_source.html#l00103">DbcParser::ParseFileWithDiagnostics()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__diagnostic_8h_source.html#l00044">HasErrors()</a>, <a class="el" href="examples_2main_8cpp_source.html#l00101">main()</a>, <a class="el" href="dbc__parser_8cpp_source.html#l00092">DbcParser::ParseFile()</a>, and <a class="el" href="dbc__parser_8cpp_source.html#l00105">DbcParser::ParseFileWithDiagnostics()</a>.</p>
</div>
</div>
+1 -1
View File
@@ -124,7 +124,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__parser_8h_source.html#l00021">21</a> of file <a class="el" href="dbc__parser_8h_source.html">dbc_parser.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__parser_8cpp_source.html#l00103">DbcParser::ParseFileWithDiagnostics()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__parser_8cpp_source.html#l00105">DbcParser::ParseFileWithDiagnostics()</a>.</p>
</div>
</div>
@@ -135,7 +135,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00014">14</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00435">DbcValueDescriptionHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00440">DbcValueDescriptionHandler::Handle()</a>.</p>
</div>
</div>
@@ -154,7 +154,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00015">15</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00435">DbcValueDescriptionHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00440">DbcValueDescriptionHandler::Handle()</a>.</p>
</div>
</div>
@@ -173,7 +173,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00016">16</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00435">DbcValueDescriptionHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00440">DbcValueDescriptionHandler::Handle()</a>.</p>
</div>
</div>
@@ -192,7 +192,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00017">17</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00435">DbcValueDescriptionHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00440">DbcValueDescriptionHandler::Handle()</a>.</p>
</div>
</div>
@@ -211,7 +211,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00018">18</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00435">DbcValueDescriptionHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00440">DbcValueDescriptionHandler::Handle()</a>.</p>
</div>
</div>
+3 -3
View File
@@ -155,7 +155,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00026">26</a> of file <a class="el" href="signal__info_8h_source.html">signal_info.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00567">DbcParseContext::ValidateMultiplexing()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00572">DbcParseContext::ValidateMultiplexing()</a>.</p>
</div>
</div>
@@ -250,7 +250,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00031">31</a> of file <a class="el" href="signal__info_8h_source.html">signal_info.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00567">DbcParseContext::ValidateMultiplexing()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00572">DbcParseContext::ValidateMultiplexing()</a>.</p>
</div>
</div>
@@ -373,7 +373,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00038">38</a> of file <a class="el" href="signal__info_8h_source.html">signal_info.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00468">DbcParseContext::ResolveValueDescriptions()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00473">DbcParseContext::ResolveValueDescriptions()</a>.</p>
</div>
</div>