Fixed SIGSEGV

This commit is contained in:
deeaitch committed 2026-10-23 21:04:43 -04:00
1 parent f03882d3f4
commit 5b0019d50d
50 files changed
+1565 -821

No files matched your search

+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#l00339">339</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#l00422">422</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#l00023">PendingComment::canId</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00027">PendingComment::comment</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00024">PendingComment::isExtended</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00025">PendingComment::isSignal</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00028">PendingComment::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#l00074">DbcParseContext::pendingComments</a>, and <a class="el" href="dbc__statement__handler_8h_source.html#l00026">PendingComment::signalName</a>.</p>
+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#l00311">311</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#l00394">394</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="frame__info_8h_source.html#l00027">FrameInfo::canId</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00062">DbcParseContext::currentFrame</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00061">DbcParseContext::database</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00063">DbcParseContext::enableJ1939</a>, <a class="el" href="dbc__database_8h_source.html#l00023">DbcDatabase::frames</a>, <a class="el" href="frame__info_8h_source.html#l00030">FrameInfo::hasPgn</a>, <a class="el" href="frame__info_8h_source.html#l00028">FrameInfo::isExtended</a>, <a class="el" href="frame__info_8h_source.html#l00029">FrameInfo::pgn</a>, and <a class="el" href="dbc__statement__handler_8h_source.html#l00070">DbcParseContext::signalLines</a>.</p>
+1 -1
View File
@@ -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#l00426">426</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#l00509">509</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#l00489">489</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#l00567">567</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>
+1 -1
View File
@@ -219,7 +219,7 @@ Public Member Functions</h2></td></tr>
<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#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">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#l00511">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="examples_2main_8cpp_source.html#l00101">main()</a>, and <a class="el" href="dbc__parser_8cpp_source.html#l00092">ParseFile()</a>.</p>
+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#l00325">325</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#l00408">408</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#l00062">DbcParseContext::currentFrame</a>, <a class="el" href="frame__info_8h_source.html#l00031">FrameInfo::dlc</a>, <a class="el" href="signal__info_8h_source.html#l00030">SignalInfo::isLittleEndian</a>, <a class="el" href="signal__info_8h_source.html#l00029">SignalInfo::length</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00064">DbcParseContext::lineNumber</a>, <a class="el" href="frame__info_8h_source.html#l00026">FrameInfo::name</a>, <a class="el" href="signal__info_8h_source.html#l00027">SignalInfo::name</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00070">DbcParseContext::signalLines</a>, and <a class="el" href="signal__info_8h_source.html#l00028">SignalInfo::startBit</a>.</p>
+2 -2
View File
@@ -133,7 +133,7 @@ Public Member Functions</h2></td></tr>
<p>Register supported statement handlers through <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_8cpp_source.html#l00403">403</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#l00486">486</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
</div>
</div>
@@ -199,7 +199,7 @@ 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#l00428">428</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#l00511">511</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#l00105">DbcParser::ParseFileWithDiagnostics()</a>.</p>
@@ -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#l00422">422</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#l00505">505</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
</div>
</div>
@@ -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#l00440">440</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#l00523">523</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>
@@ -993,7 +993,7 @@ $(document).ready(function(){initNavTree('dbc__coverage__test_8cpp_source.html',
<div class="line"><a id="l00893" name="l00893"></a><span class="lineno"> 893</span>}</div>
<div class="line"><a id="l00894" name="l00894"></a><span class="lineno"> 894</span><span class="preprocessor">#include &quot;dbc_coverage_test.moc&quot;</span></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>
<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="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#l00422">dbc_statement_handler.cpp:422</a></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>
@@ -1004,7 +1004,7 @@ $(document).ready(function(){initNavTree('dbc__coverage__test_8cpp_source.html',
<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#l00440">dbc_statement_handler.cpp:440</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#l00523">dbc_statement_handler.cpp:523</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>
+1 -1
View File
@@ -284,7 +284,7 @@ $(document).ready(function(){initNavTree('dbc__parser_8cpp_source.html',''); ini
<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="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#l00511">dbc_statement_handler.cpp:511</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#l00030">dbc_diagnostic.h:30</a></div></div>
+1 -1
View File
@@ -1780,7 +1780,7 @@ $(document).ready(function(){initNavTree('dbc__parser__test_8cpp_source.html',''
<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_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_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="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#l00511">dbc_statement_handler.cpp:511</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="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>
File diff suppressed because it is too large. Load diff
@@ -281,28 +281,28 @@ $(document).ready(function(){initNavTree('dbc__statement__handler_8h_source.html
<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>
<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="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#l00422">dbc_statement_handler.cpp:422</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="aclassDbcDiagnosticError_html_aa9997368f79a9a0723481aaeffc44618"><div class="ttname"><a href="classDbcDiagnosticError.html#aa9997368f79a9a0723481aaeffc44618">DbcDiagnosticError::DbcDiagnosticError</a></div><div class="ttdeci">DbcDiagnosticError(DbcDiagnosticCode code, const std::string &amp;filePath, std::size_t lineNumber, const std::string &amp;message)</div><div class="ttdoc">Create an exception with a structured source diagnostic.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00035">dbc_statement_handler.h:35</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="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="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#l00394">dbc_statement_handler.cpp:394</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="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#l00509">dbc_statement_handler.cpp:509</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#l00489">dbc_statement_handler.cpp:489</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#l00567">dbc_statement_handler.cpp:567</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="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#l00408">dbc_statement_handler.cpp:408</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#l00428">dbc_statement_handler.cpp:428</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#l00486">dbc_statement_handler.cpp:486</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#l00511">dbc_statement_handler.cpp:511</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="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#l00505">dbc_statement_handler.cpp:505</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#l00440">dbc_statement_handler.cpp:440</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#l00523">dbc_statement_handler.cpp:523</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>
@@ -314,11 +314,11 @@ $(document).ready(function(){initNavTree('dbc__statement__handler_8h_source.html
<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#l00572">dbc_statement_handler.cpp:572</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#l00644">dbc_statement_handler.cpp:644</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#l00473">dbc_statement_handler.cpp:473</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#l00551">dbc_statement_handler.cpp:551</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_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#l00468">dbc_statement_handler.cpp:468</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>
<div class="ttc" id="astructDbcParseContext_html_af8b411c938a2ea9100c4aaae452e6546"><div class="ttname"><a href="structDbcParseContext.html#af8b411c938a2ea9100c4aaae452e6546">DbcParseContext::signalLines</a></div><div class="ttdeci">std::vector&lt; std::vector&lt; std::size_t &gt; &gt; signalLines</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00070">dbc_statement_handler.h:70</a></div></div>
<div class="ttc" id="astructDbcParseContext_html_afbfa4b26a58b41ada3dabc619066035c"><div class="ttname"><a href="structDbcParseContext.html#afbfa4b26a58b41ada3dabc619066035c">DbcParseContext::pendingAttributes</a></div><div class="ttdeci">std::vector&lt; PendingAttribute &gt; pendingAttributes</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00078">dbc_statement_handler.h:78</a></div></div>
@@ -0,0 +1,338 @@
<!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: dbc_statement_test.cpp Source File</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>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_codefold(0); });
/* @license-end */
</script>
</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('dbc__statement__test_8cpp_source.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">dbc_statement_test.cpp</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#include &quot;<a class="code" href="dbc__decode__builder_8h.html">dbc_decode_builder.h</a>&quot;</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#include &quot;<a class="code" href="dbc__decoder_8h.html">dbc_decoder.h</a>&quot;</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="preprocessor">#include &quot;<a class="code" href="dbc__parser_8h.html">dbc_parser.h</a>&quot;</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="preprocessor">#include &lt;QTemporaryFile&gt;</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#include &lt;QtTest&gt;</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#include &lt;iomanip&gt;</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#include &lt;sstream&gt;</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#include &lt;stdexcept&gt;</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span> </div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="keyword">namespace </span>{</div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> std::string WriteFixture(QTemporaryFile &amp;file, <span class="keyword">const</span> std::string &amp;text) {</div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> <span class="keywordflow">if</span> (!file.open() || file.write(text.data(), <span class="keyword">static_cast&lt;</span>qint64<span class="keyword">&gt;</span>(text.size())) != <span class="keyword">static_cast&lt;</span>qint64<span class="keyword">&gt;</span>(text.size()) || !file.flush())</div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Cannot write statement fixture&quot;</span>);</div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> <span class="keywordflow">return</span> file.fileName().toStdString();</div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> }</div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> std::string Quote(<span class="keyword">const</span> std::string &amp;text) {</div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> std::ostringstream stream;</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> stream &lt;&lt; std::quoted(text);</div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> <span class="keywordflow">return</span> stream.str();</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> }</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> std::string RepeatedRanges() {</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> std::string ranges = <span class="stringliteral">&quot;1-1&quot;</span>;</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> index = 1U; index &lt; 10000U; ++index)</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> ranges += <span class="stringliteral">&quot;,1-1&quot;</span>;</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="keywordflow">return</span> ranges;</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> }</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">const</span> std::string definitions =</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <span class="stringliteral">&quot;BO_ 1 Frame: 2 ECU\n&quot;</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="stringliteral">&quot;SG_ Mode M : 0|8@1+ (1,0) [0|255] \&quot;\&quot; ECU\n&quot;</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="stringliteral">&quot;SG_ Value m1 : 8|8@1+ (1,0) [0|255] \&quot;\&quot; ECU\n&quot;</span>;</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span>}<span class="comment">// namespace</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> </div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="keyword">class </span>StatementParserTest : <span class="keyword">public</span> QObject {</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> Q_OBJECT</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="keyword">private</span> Q_SLOTS:</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordtype">void</span> longValueDescriptions_data();</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keywordtype">void</span> longValueDescriptions();</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keywordtype">void</span> longMultiplexRanges_data();</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keywordtype">void</span> longMultiplexRanges();</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keywordtype">void</span> invalidLongStatements_data();</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordtype">void</span> invalidLongStatements();</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span>};</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="keywordtype">void</span> StatementParserTest::longValueDescriptions_data() {</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> QTest::addColumn&lt;std::string&gt;(<span class="stringliteral">&quot;description&quot;</span>);</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> QTest::addColumn&lt;unsigned&gt;(<span class="stringliteral">&quot;count&quot;</span>);</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> QTest::addColumn&lt;bool&gt;(<span class="stringliteral">&quot;beforeDefinitions&quot;</span>);</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> QTest::newRow(<span class="stringliteral">&quot;50000-character-description&quot;</span>) &lt;&lt; std::string(50000U, <span class="charliteral">&#39;x&#39;</span>) &lt;&lt; 1U &lt;&lt; <span class="keyword">false</span>;</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> std::string escaped;</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> index = 0U; index &lt; 12500U; ++index)</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> escaped += <span class="stringliteral">&quot;\&quot;\\; &quot;</span>;</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> QTest::newRow(<span class="stringliteral">&quot;50000-escaped-characters&quot;</span>) &lt;&lt; escaped &lt;&lt; 1U &lt;&lt; <span class="keyword">true</span>;</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> QTest::newRow(<span class="stringliteral">&quot;10000-pairs&quot;</span>) &lt;&lt; std::string(<span class="stringliteral">&quot;Description&quot;</span>) &lt;&lt; 10000U &lt;&lt; <span class="keyword">true</span>;</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> QTest::newRow(<span class="stringliteral">&quot;50000-spaces&quot;</span>) &lt;&lt; std::string(50000U, <span class="charliteral">&#39; &#39;</span>) &lt;&lt; 1U &lt;&lt; <span class="keyword">false</span>;</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span>}</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="keywordtype">void</span> StatementParserTest::longValueDescriptions() {</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> QFETCH(std::string, description);</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> QFETCH(<span class="keywordtype">unsigned</span>, count);</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> QFETCH(<span class="keywordtype">bool</span>, beforeDefinitions);</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> std::string statement = <span class="stringliteral">&quot;VAL_ 1 Value&quot;</span>;</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> index = 0U; index &lt; count; ++index)</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> statement += <span class="stringliteral">&quot; &quot;</span> + std::to_string(index) + <span class="stringliteral">&quot; &quot;</span> + Quote(description);</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> statement += <span class="stringliteral">&quot;;\n&quot;</span>;</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keyword">const</span> std::string frame = <span class="stringliteral">&quot;BO_ 1 Frame: 4 ECU\nSG_ Value : 0|32@1+ (1,0) [0|1e10] \&quot;\&quot; ECU\n&quot;</span>;</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> QTemporaryFile file;</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="keyword">const</span> std::string path = WriteFixture(file, beforeDefinitions ? statement + frame : frame + statement);</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keyword">const</span> <a class="code hl_class" href="classDbcParser.html">DbcParser</a> parser;</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> result = parser.<a class="code hl_function" href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">ParseFileWithDiagnostics</a>(path);</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> QVERIFY(!result.<a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>());</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> QVERIFY(result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.empty());</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">const</span> std::vector&lt;DbcDatabase&gt; databases = {result.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>, parser.<a class="code hl_function" href="classDbcParser.html#aef72826942c9095d653fafa435855e56">ParseFile</a>(path)};</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a> &amp;database: databases) {</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keyword">const</span> ValueDescriptions &amp;values = database.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>.at(0).signals.at(0).valueDescriptions;</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> QCOMPARE(values.size(), <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(count));</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> index = 0U; index &lt; count; ++index)</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> QCOMPARE(values.at(std::uint64_t(index)), description);</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</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>(database);</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <a class="code hl_struct" href="structRawCanFrame.html">RawCanFrame</a> raw;</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a2d0e7fa0e3d5c20bbed55ed8f7888ff4">canId</a> = 1U;</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> last = count - 1U;</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">data</a> = {<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(last), <span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(last &gt;&gt; 8U), 0U, 0U};</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedFrameValue.html">DecodedFrameValue</a> decoded = <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="l00087" name="l00087"></a><span class="lineno"> 87</span> QCOMPARE(decoded.<a class="code hl_variable" href="structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9">status</a>, FrameDecodeStatus::Valid);</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keyword">const</span> std::string *label = decoded.signals.at(0).GetValueDescription();</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> QVERIFY(label);</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> QCOMPARE(*label, description);</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> }</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span>}</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> </div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="keywordtype">void</span> StatementParserTest::longMultiplexRanges_data() {</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> QTest::addColumn&lt;std::string&gt;(<span class="stringliteral">&quot;ranges&quot;</span>);</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> QTest::addColumn&lt;unsigned&gt;(<span class="stringliteral">&quot;count&quot;</span>);</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> QTest::addColumn&lt;bool&gt;(<span class="stringliteral">&quot;beforeDefinitions&quot;</span>);</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> QTest::newRow(<span class="stringliteral">&quot;10000-ranges&quot;</span>) &lt;&lt; RepeatedRanges() &lt;&lt; 10000U &lt;&lt; <span class="keyword">false</span>;</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keyword">const</span> std::string paddedOne = std::string(50000U, <span class="charliteral">&#39;0&#39;</span>) + <span class="stringliteral">&quot;1&quot;</span>;</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> QTest::newRow(<span class="stringliteral">&quot;long-bounds&quot;</span>) &lt;&lt; paddedOne + <span class="stringliteral">&quot;-&quot;</span> + paddedOne &lt;&lt; 1U &lt;&lt; <span class="keyword">true</span>;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> QTest::newRow(<span class="stringliteral">&quot;long-whitespace&quot;</span>) &lt;&lt; std::string(50000U, <span class="charliteral">&#39; &#39;</span>) + <span class="stringliteral">&quot;1\t-\t1&quot;</span> + std::string(50000U, <span class="charliteral">&#39; &#39;</span>) &lt;&lt; 1U &lt;&lt; <span class="keyword">false</span>;</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span>}</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> </div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="keywordtype">void</span> StatementParserTest::longMultiplexRanges() {</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> QFETCH(std::string, ranges);</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> QFETCH(<span class="keywordtype">unsigned</span>, count);</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> QFETCH(<span class="keywordtype">bool</span>, beforeDefinitions);</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keyword">const</span> std::string statement = <span class="stringliteral">&quot;SG_MUL_VAL_ 1 Value Mode &quot;</span> + ranges + <span class="stringliteral">&quot;;\n&quot;</span>;</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> QTemporaryFile file;</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keyword">const</span> std::string path = WriteFixture(file, beforeDefinitions ? statement + definitions : definitions + statement);</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keyword">const</span> <a class="code hl_class" href="classDbcParser.html">DbcParser</a> parser;</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> result = parser.<a class="code hl_function" href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">ParseFileWithDiagnostics</a>(path);</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> QVERIFY(!result.<a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>());</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> QVERIFY(result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.empty());</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keyword">const</span> std::vector&lt;DbcDatabase&gt; databases = {result.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>, parser.<a class="code hl_function" href="classDbcParser.html#aef72826942c9095d653fafa435855e56">ParseFile</a>(path)};</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a> &amp;database: databases) {</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="structMultiplexing.html">Multiplexing</a> &amp;mux = database.frames.at(0).signals.at(1).multiplexing;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> QCOMPARE(mux.<a class="code hl_variable" href="structMultiplexing.html#aa91e54403c78a663686b2fd22282afaf">selector</a>, std::string(<span class="stringliteral">&quot;Mode&quot;</span>));</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> QCOMPARE(mux.<a class="code hl_variable" href="structMultiplexing.html#aa174ac4a3af9b361d2de7517dfd4b69e">ranges</a>.size(), <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(count));</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code hl_struct" href="structMultiplexRange.html">MultiplexRange</a> &amp;range: mux.ranges) {</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> QCOMPARE(range.minimum, std::uint64_t(1));</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> QCOMPARE(range.maximum, std::uint64_t(1));</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> }</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</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>(database);</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <a class="code hl_struct" href="structRawCanFrame.html">RawCanFrame</a> raw;</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a2d0e7fa0e3d5c20bbed55ed8f7888ff4">canId</a> = 1U;</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">data</a> = {1U, 42U};</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedFrameValue.html">DecodedFrameValue</a> active = <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="l00129" name="l00129"></a><span class="lineno"> 129</span> QCOMPARE(active.<a class="code hl_variable" href="structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9">status</a>, FrameDecodeStatus::Valid);</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> QVERIFY(active.signals.at(1).<a class="code hl_variable" href="structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0">valid</a>);</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> QCOMPARE(std::get&lt;std::uint64_t&gt;(active.signals[1].rawValue), std::uint64_t(42));</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">data</a>[0] = 2U;</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedFrameValue.html">DecodedFrameValue</a> inactive = <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="l00134" name="l00134"></a><span class="lineno"> 134</span> QCOMPARE(inactive.signals.at(1).<a class="code hl_variable" href="structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9">status</a>, SignalDecodeStatus::Inactive);</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> }</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> </div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span><span class="keywordtype">void</span> StatementParserTest::invalidLongStatements_data() {</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> QTest::addColumn&lt;std::string&gt;(<span class="stringliteral">&quot;statement&quot;</span>);</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> QTest::addColumn&lt;DbcDiagnosticCode&gt;(<span class="stringliteral">&quot;code&quot;</span>);</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="keyword">const</span> std::string text(50000U, <span class="charliteral">&#39;x&#39;</span>);</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="keyword">const</span> std::string value = <span class="stringliteral">&quot;VAL_ 1 Value 0 \&quot;&quot;</span> + text;</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> QTest::newRow(<span class="stringliteral">&quot;val-missing-quote&quot;</span>) &lt;&lt; value + <span class="stringliteral">&quot;;&quot;</span> &lt;&lt; DbcDiagnosticCode::InvalidValueDescription;</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> QTest::newRow(<span class="stringliteral">&quot;val-dangling-escape&quot;</span>) &lt;&lt; value + <span class="stringliteral">&quot;\\&quot;</span> &lt;&lt; DbcDiagnosticCode::InvalidValueDescription;</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> QTest::newRow(<span class="stringliteral">&quot;val-invalid-escape&quot;</span>) &lt;&lt; value + <span class="stringliteral">&quot;\\q\&quot;;&quot;</span> &lt;&lt; DbcDiagnosticCode::InvalidValueDescription;</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> QTest::newRow(<span class="stringliteral">&quot;val-missing-semicolon&quot;</span>) &lt;&lt; value + <span class="stringliteral">&quot;\&quot;&quot;</span> &lt;&lt; DbcDiagnosticCode::InvalidValueDescription;</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> QTest::newRow(<span class="stringliteral">&quot;val-trailing-text&quot;</span>) &lt;&lt; value + <span class="stringliteral">&quot;\&quot;; junk&quot;</span> &lt;&lt; DbcDiagnosticCode::InvalidValueDescription;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> QTest::newRow(<span class="stringliteral">&quot;val-missing-pair-separator&quot;</span>) &lt;&lt; value + <span class="stringliteral">&quot;\&quot;1 \&quot;On\&quot;;&quot;</span> &lt;&lt; DbcDiagnosticCode::InvalidValueDescription;</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> QTest::newRow(<span class="stringliteral">&quot;val-missing-number-separator&quot;</span>) &lt;&lt; <span class="stringliteral">&quot;VAL_ 1 Value 0\&quot;&quot;</span> + text + <span class="stringliteral">&quot;\&quot;;&quot;</span> &lt;&lt; DbcDiagnosticCode::InvalidValueDescription;</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> QTest::newRow(<span class="stringliteral">&quot;val-duplicate&quot;</span>) &lt;&lt; value + <span class="stringliteral">&quot;\&quot; 00 \&quot;Duplicate\&quot;;&quot;</span> &lt;&lt; DbcDiagnosticCode::InvalidValueDescription;</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> QTest::newRow(<span class="stringliteral">&quot;val-overflow&quot;</span>) &lt;&lt; <span class="stringliteral">&quot;VAL_ 1 Value &quot;</span> + std::string(50000U, <span class="charliteral">&#39;9&#39;</span>) + <span class="stringliteral">&quot; \&quot;Bad\&quot;;&quot;</span> &lt;&lt; DbcDiagnosticCode::InvalidValueDescription;</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> QTest::newRow(<span class="stringliteral">&quot;val-long-missing-reference&quot;</span>) &lt;&lt; <span class="stringliteral">&quot;VAL_ 1 &quot;</span> + text + <span class="stringliteral">&quot; 0 \&quot;Bad\&quot;;&quot;</span> &lt;&lt; DbcDiagnosticCode::InvalidValueDescription;</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <span class="keyword">const</span> std::string mux = <span class="stringliteral">&quot;SG_MUL_VAL_ 1 Value Mode &quot;</span> + RepeatedRanges();</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> QTest::newRow(<span class="stringliteral">&quot;mux-missing-semicolon&quot;</span>) &lt;&lt; mux &lt;&lt; DbcDiagnosticCode::InvalidMultiplexing;</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> QTest::newRow(<span class="stringliteral">&quot;mux-trailing-comma&quot;</span>) &lt;&lt; mux + <span class="stringliteral">&quot;,;&quot;</span> &lt;&lt; DbcDiagnosticCode::InvalidMultiplexing;</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> QTest::newRow(<span class="stringliteral">&quot;mux-empty-range&quot;</span>) &lt;&lt; mux + <span class="stringliteral">&quot;,,1-1;&quot;</span> &lt;&lt; DbcDiagnosticCode::InvalidMultiplexing;</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> QTest::newRow(<span class="stringliteral">&quot;mux-reversed-range&quot;</span>) &lt;&lt; mux + <span class="stringliteral">&quot;,2-1;&quot;</span> &lt;&lt; DbcDiagnosticCode::InvalidMultiplexing;</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> QTest::newRow(<span class="stringliteral">&quot;mux-signed-bound&quot;</span>) &lt;&lt; mux + <span class="stringliteral">&quot;,+1-1;&quot;</span> &lt;&lt; DbcDiagnosticCode::InvalidMultiplexing;</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> QTest::newRow(<span class="stringliteral">&quot;mux-suffix&quot;</span>) &lt;&lt; mux + <span class="stringliteral">&quot;x;&quot;</span> &lt;&lt; DbcDiagnosticCode::InvalidMultiplexing;</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> QTest::newRow(<span class="stringliteral">&quot;mux-overflow&quot;</span>) &lt;&lt; mux + <span class="stringliteral">&quot;,0-18446744073709551616;&quot;</span> &lt;&lt; DbcDiagnosticCode::InvalidMultiplexing;</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> QTest::newRow(<span class="stringliteral">&quot;mux-long-overflow&quot;</span>) &lt;&lt; <span class="stringliteral">&quot;SG_MUL_VAL_ 1 Value Mode 0-&quot;</span> + std::string(50000U, <span class="charliteral">&#39;9&#39;</span>) + <span class="stringliteral">&quot;;&quot;</span> &lt;&lt; DbcDiagnosticCode::InvalidMultiplexing;</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> QTest::newRow(<span class="stringliteral">&quot;mux-trailing-text&quot;</span>) &lt;&lt; mux + <span class="stringliteral">&quot;; junk&quot;</span> &lt;&lt; DbcDiagnosticCode::InvalidMultiplexing;</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> QTest::newRow(<span class="stringliteral">&quot;mux-long-missing-reference&quot;</span>) &lt;&lt; <span class="stringliteral">&quot;SG_MUL_VAL_ 1 &quot;</span> + text + <span class="stringliteral">&quot; Mode 1-1;&quot;</span> &lt;&lt; DbcDiagnosticCode::InvalidMultiplexing;</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="keywordtype">void</span> StatementParserTest::invalidLongStatements() {</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> QFETCH(std::string, statement);</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> QFETCH(DbcDiagnosticCode, code);</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> QTemporaryFile file;</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <span class="keyword">const</span> std::string path = WriteFixture(file, <span class="stringliteral">&quot;\n&quot;</span> + statement + <span class="stringliteral">&quot;\n&quot;</span> + definitions);</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <span class="keyword">const</span> <a class="code hl_class" href="classDbcParser.html">DbcParser</a> parser;</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> result = parser.<a class="code hl_function" href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">ParseFileWithDiagnostics</a>(path);</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> QVERIFY(result.<a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>());</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> QVERIFY(result.<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="l00175" name="l00175"></a><span class="lineno"> 175</span> QCOMPARE(result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.size(), std::size_t(1));</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDbcDiagnostic.html">DbcDiagnostic</a> &amp;error = result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>[0];</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> QCOMPARE(error.<a class="code hl_variable" href="structDbcDiagnostic.html#a75040a94f0313a606478020b0491f81d">severity</a>, DbcDiagnosticSeverity::Error);</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> QCOMPARE(error.<a class="code hl_variable" href="structDbcDiagnostic.html#aa315a4a40b15f2e8cb34264d94a0f914">code</a>, code);</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> QCOMPARE(error.<a class="code hl_variable" href="structDbcDiagnostic.html#ac9f02705ed6a633cbb9526d0e392fb95">filePath</a>, path);</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> QCOMPARE(error.<a class="code hl_variable" href="structDbcDiagnostic.html#adb201de8d32b768d5f559bed21e8f819">lineNumber</a>, std::size_t(2));</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="keywordflow">try</span> {</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> parser.<a class="code hl_function" href="classDbcParser.html#aef72826942c9095d653fafa435855e56">ParseFile</a>(path);</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> QFAIL(<span class="stringliteral">&quot;Malformed statements must throw through ParseFile&quot;</span>);</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::runtime_error &amp;exception) {</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> QCOMPARE(std::string(exception.what()), path + <span class="stringliteral">&quot;:2: &quot;</span> + error.<a class="code hl_variable" href="structDbcDiagnostic.html#a124bae82eebeaef46426bd124685ef1b">message</a>);</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> }</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span>}</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> </div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span><span class="keywordtype">int</span> RunStatementParserTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv) {</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> StatementParserTest tests;</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> <span class="keywordflow">return</span> QTest::qExec(&amp;tests, argc, argv);</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span>}</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> </div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span><span class="preprocessor">#include &quot;dbc_statement_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#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_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="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="adbc__decode__builder_8h_html"><div class="ttname"><a href="dbc__decode__builder_8h.html">dbc_decode_builder.h</a></div><div class="ttdoc">Runtime decode database builder.</div></div>
<div class="ttc" id="adbc__decoder_8h_html"><div class="ttname"><a href="dbc__decoder_8h.html">dbc_decoder.h</a></div><div class="ttdoc">CAN frame decoding API and result types.</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="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="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 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_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>
<div class="ttc" id="astructDecodedFrameValue_html_a645f433798d48a2787e7f00dfbb7dff9"><div class="ttname"><a href="structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9">DecodedFrameValue::status</a></div><div class="ttdeci">FrameDecodeStatus status</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8h_source.html#l00079">dbc_decoder.h:79</a></div></div>
<div class="ttc" id="astructMultiplexRange_html"><div class="ttname"><a href="structMultiplexRange.html">MultiplexRange</a></div><div class="ttdoc">Inclusive raw selector range, without expanding individual values.</div><div class="ttdef"><b>Definition</b> <a href="multiplexing_8h_source.html#l00018">multiplexing.h:18</a></div></div>
<div class="ttc" id="astructMultiplexing_html"><div class="ttname"><a href="structMultiplexing.html">Multiplexing</a></div><div class="ttdoc">Basic markers and optional explicit extended multiplexing condition.</div><div class="ttdef"><b>Definition</b> <a href="multiplexing_8h_source.html#l00024">multiplexing.h:24</a></div></div>
<div class="ttc" id="astructMultiplexing_html_aa174ac4a3af9b361d2de7517dfd4b69e"><div class="ttname"><a href="structMultiplexing.html#aa174ac4a3af9b361d2de7517dfd4b69e">Multiplexing::ranges</a></div><div class="ttdeci">std::vector&lt; MultiplexRange &gt; ranges</div><div class="ttdef"><b>Definition</b> <a href="multiplexing_8h_source.html#l00028">multiplexing.h:28</a></div></div>
<div class="ttc" id="astructMultiplexing_html_aa91e54403c78a663686b2fd22282afaf"><div class="ttname"><a href="structMultiplexing.html#aa91e54403c78a663686b2fd22282afaf">Multiplexing::selector</a></div><div class="ttdeci">std::string selector</div><div class="ttdef"><b>Definition</b> <a href="multiplexing_8h_source.html#l00027">multiplexing.h:27</a></div></div>
<div class="ttc" id="astructRawCanFrame_html"><div class="ttname"><a href="structRawCanFrame.html">RawCanFrame</a></div><div class="ttdoc">Raw CAN frame used for runtime or trace decoding.</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8h_source.html#l00025">dbc_decoder.h:25</a></div></div>
<div class="ttc" id="astructRawCanFrame_html_a0acb487612104c99c9907344c035df83"><div class="ttname"><a href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">RawCanFrame::data</a></div><div class="ttdeci">std::vector&lt; std::uint8_t &gt; data</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8h_source.html#l00028">dbc_decoder.h:28</a></div></div>
<div class="ttc" id="astructRawCanFrame_html_a2d0e7fa0e3d5c20bbed55ed8f7888ff4"><div class="ttname"><a href="structRawCanFrame.html#a2d0e7fa0e3d5c20bbed55ed8f7888ff4">RawCanFrame::canId</a></div><div class="ttdeci">std::uint32_t canId</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8h_source.html#l00026">dbc_decoder.h:26</a></div></div>
</div><!-- fragment --></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="dir_59425e443f801f1f2fd8bbe4959a3ccf.html">tests</a></li><li class="navelem"><b>dbc_statement_test.cpp</b></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>
@@ -106,6 +106,8 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="dbc__pipeline__test_8cpp_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>dbc_pipeline_test.cpp</b></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="dbc__statement__test_8cpp_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>dbc_statement_test.cpp</b></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="dbc__tree__model__test_8cpp_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>dbc_tree_model_test.cpp</b></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="dbc__validation__test_8cpp_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>dbc_validation_test.cpp</b></td></tr>
@@ -5,6 +5,7 @@ var dir_59425e443f801f1f2fd8bbe4959a3ccf =
[ "dbc_lifetime_test.cpp", "dbc__lifetime__test_8cpp_source.html", null ],
[ "dbc_parser_test.cpp", "dbc__parser__test_8cpp_source.html", null ],
[ "dbc_pipeline_test.cpp", "dbc__pipeline__test_8cpp_source.html", null ],
[ "dbc_statement_test.cpp", "dbc__statement__test_8cpp_source.html", null ],
[ "dbc_tree_model_test.cpp", "dbc__tree__model__test_8cpp_source.html", null ],
[ "dbc_validation_test.cpp", "dbc__validation__test_8cpp_source.html", null ],
[ "tests/main.cpp", "tests_2main_8cpp_source.html", null ],
+5 -4
View File
@@ -135,10 +135,11 @@ $(document).ready(function(){initNavTree('files.html',''); initResizable(); });
<tr id="row_3_2_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="dbc__lifetime__test_8cpp_source.html"><span class="icondoc"></span></a><b>dbc_lifetime_test.cpp</b></td><td class="desc"></td></tr>
<tr id="row_3_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="dbc__parser__test_8cpp_source.html"><span class="icondoc"></span></a><b>dbc_parser_test.cpp</b></td><td class="desc"></td></tr>
<tr id="row_3_4_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="dbc__pipeline__test_8cpp_source.html"><span class="icondoc"></span></a><b>dbc_pipeline_test.cpp</b></td><td class="desc"></td></tr>
<tr id="row_3_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="dbc__tree__model__test_8cpp_source.html"><span class="icondoc"></span></a><b>dbc_tree_model_test.cpp</b></td><td class="desc"></td></tr>
<tr id="row_3_6_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="dbc__validation__test_8cpp_source.html"><span class="icondoc"></span></a><b>dbc_validation_test.cpp</b></td><td class="desc"></td></tr>
<tr id="row_3_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="tests_2main_8cpp_source.html"><span class="icondoc"></span></a><b>main.cpp</b></td><td class="desc"></td></tr>
<tr id="row_3_8_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="tree__node__test_8cpp_source.html"><span class="icondoc"></span></a><b>tree_node_test.cpp</b></td><td class="desc"></td></tr>
<tr id="row_3_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="dbc__statement__test_8cpp_source.html"><span class="icondoc"></span></a><b>dbc_statement_test.cpp</b></td><td class="desc"></td></tr>
<tr id="row_3_6_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="dbc__tree__model__test_8cpp_source.html"><span class="icondoc"></span></a><b>dbc_tree_model_test.cpp</b></td><td class="desc"></td></tr>
<tr id="row_3_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="dbc__validation__test_8cpp_source.html"><span class="icondoc"></span></a><b>dbc_validation_test.cpp</b></td><td class="desc"></td></tr>
<tr id="row_3_8_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="tests_2main_8cpp_source.html"><span class="icondoc"></span></a><b>main.cpp</b></td><td class="desc"></td></tr>
<tr id="row_3_9_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="tree__node__test_8cpp_source.html"><span class="icondoc"></span></a><b>tree_node_test.cpp</b></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
+7 -4
View File
@@ -168,9 +168,10 @@
<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="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 title="Long value descriptions and multiplex ranges" ref="md_tests_2README.html#autotoc_md170"/>
<section title="Unsupported signal value types" ref="md_tests_2README.html#autotoc_md171"/>
<section title="Long signal definitions" ref="md_tests_2README.html#autotoc_md172"/>
<section title="Extended validation" ref="md_tests_2README.html#autotoc_md173"/>
</section>
<section title="Classes" ref="annotated.html">
<section title="Class List" ref="annotated.html">
@@ -779,6 +780,7 @@
<section title="dbc_lifetime_test.cpp" ref="dbc__lifetime__test_8cpp_source.html"/>
<section title="dbc_parser_test.cpp" ref="dbc__parser__test_8cpp_source.html"/>
<section title="dbc_pipeline_test.cpp" ref="dbc__pipeline__test_8cpp_source.html"/>
<section title="dbc_statement_test.cpp" ref="dbc__statement__test_8cpp_source.html"/>
<section title="dbc_tree_model_test.cpp" ref="dbc__tree__model__test_8cpp_source.html"/>
<section title="dbc_validation_test.cpp" ref="dbc__validation__test_8cpp_source.html"/>
<section title="tests/main.cpp" ref="tests_2main_8cpp_source.html"/>
@@ -1020,9 +1022,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"/>
@@ -1180,6 +1182,7 @@
<file>dbc__pipeline__test_8cpp_source.html</file>
<file>dbc__statement__handler_8cpp_source.html</file>
<file>dbc__statement__handler_8h_source.html</file>
<file>dbc__statement__test_8cpp_source.html</file>
<file>dbc__tree__builder_8cpp.html</file>
<file>dbc__tree__builder_8cpp_source.html</file>
<file>dbc__tree__builder_8h.html</file>
+4 -4
View File
@@ -645,7 +645,7 @@ Multiplexing</h1>
<div class="line"> SG_ Value m0 : 16|8@1+ (1,0) [0|255] &quot;&quot; ECU</div>
<div class="line">SG_MUL_VAL_ 1 Child Root 1-2, 4-4;</div>
<div class="line">SG_MUL_VAL_ 1 Value Child 3-5;</div>
</div><!-- fragment --><p>Here <code>Value</code> is active when <code>Root</code> is 1, 2, or 4 <b>and</b> <code>Child</code> is 3 through 5. Explicit ranges override the marker value. Repeated statements for the same signal/selector merge their range alternatives. Each signal has at most one parent selector; conflicting parent references are rejected. Multiple independent root selectors are supported. Statements and selectors may precede or follow their targets. Decimal values retain the full <code>uint64_t</code> range and must fit the parent's bit width. Ranges are stored without expanding individual values. Malformed ranges, unresolved references, signed selectors, ambiguous implicit selectors, and dependency cycles produce <code>InvalidMultiplexing</code> diagnostics. Statement errors retain the <code>SG_MUL_VAL_</code> source line; graph and overlap errors identify the affected signal declaration.</p>
</div><!-- fragment --><p>Here <code>Value</code> is active when <code>Root</code> is 1, 2, or 4 <b>and</b> <code>Child</code> is 3 through 5. Explicit ranges override the marker value. Repeated statements for the same signal/selector merge their range alternatives. Each signal has at most one parent selector; conflicting parent references are rejected. Multiple independent root selectors are supported. Statements and selectors may precede or follow their targets. Decimal values retain the full <code>uint64_t</code> range and must fit the parent's bit width. Ranges are stored without expanding individual values. <code>SG_MUL_VAL_</code> headers, decimal bounds, and range lists are scanned iteratively, without regular expressions or a new statement-length limit. Long valid lists are preserved; malformed ranges and trailing text produce source-located errors. Malformed ranges, unresolved references, signed selectors, ambiguous implicit selectors, and dependency cycles produce <code>InvalidMultiplexing</code> diagnostics. Statement errors retain the <code>SG_MUL_VAL_</code> source line; graph and overlap errors identify the affected signal declaration.</p>
<p>Signal bits may overlap only when the complete ancestor conditions prove the signals mutually exclusive: at least one shared selector has disjoint ranges. This includes nested siblings using the same payload bits and independent selectors, whose branches may be active simultaneously. Validation uses Intel or Motorola bit traversal, including mixed byte orders. Metadata survives runtime and tree builders; the optional Qt adapter does not add multiplexing roles yet.</p>
<p>The decoder checks ancestors from root to leaf using <b>raw unsigned values</b>. An inactive ancestor leaves descendants inactive even if their selector bytes are absent. Missing bytes on an otherwise active selector path produce <code>SelectorUnavailable</code>. Selective decoding reads required ancestors internally; result order remains selection or definition order. Factor, offset, and <code>VAL_</code> descriptions do not influence branch selection.</p>
<p>Each result has <code>SignalDecodeStatus status</code>:</p>
@@ -876,7 +876,7 @@ Signal value descriptions (&lt;tt&gt;VAL_&lt;/tt&gt;)</h1>
<div class="fragment"><div class="line">BO_ 256 Status: 8 ECU</div>
<div class="line"> SG_ State : 0|8@1+ (1,0) [0|255] &quot;&quot; ECU</div>
<div class="line">VAL_ 256 State 0 &quot;Off&quot; 1 &quot;On&quot; 2 &quot;Error&quot;;</div>
</div><!-- fragment --><p>Each statement must occupy one physical line, contain at least one integer/text pair, and end with a semicolon. Spaces and tabs are accepted between fields; descriptions may contain whitespace, semicolons, and empty text. Inside quoted text, escape a quote or a backslash with a preceding backslash; other escapes are rejected. Keys are decimal integers in <code>INT64_MIN..UINT64_MAX</code>, with an optional minus sign; plus signs, fractions, hexadecimal numbers, exponents, and overflow are rejected. Keys never pass through <code>double</code>.</p>
</div><!-- fragment --><p>Each statement must occupy one physical line, contain at least one integer/text pair, and end with a semicolon. Spaces and tabs are accepted between fields; descriptions may contain whitespace, semicolons, and empty text. Inside quoted text, escape a quote or a backslash with a preceding backslash; other escapes are rejected. Headers, quoted descriptions, and pairs are scanned iteratively, without regular expressions or repeatedly removing the parsed prefix. Long valid descriptions and lists are preserved without a new length limit; malformed input returns the same source-located diagnostics as short statements. Keys are decimal integers in <code>INT64_MIN..UINT64_MAX</code>, with an optional minus sign; plus signs, fractions, hexadecimal numbers, exponents, and overflow are rejected. Keys never pass through <code>double</code>.</p>
<p><code>VAL_</code> may appear before or after its frame and signal declarations. References are resolved after reading the file using the same CAN ID normalization as <code>BO_</code>, including bit 31 for extended identifiers. Standard and extended frames with the same normalized ID remain distinct. Missing or ambiguous references, malformed statements, and duplicate integer keys produce <code>path:line: description</code> errors at the originating <code>VAL_</code> line. Distinct keys from multiple statements are merged; <code>0</code>, <code>00</code>, and <code>-0</code> are the same key. Keys need not fit the referenced signal's bit width or signedness; unreachable keys simply cannot match a decode.</p>
<p>Mappings are available as <code><a class="el" href="structSignalInfo.html#a43f47d0433d0cc39076bd7278b46af9c">SignalInfo::valueDescriptions</a></code> and <code><a class="el" href="structDecodeSignal.html#a822155d9bf4ed5f3300c9e9befe606ff">DecodeSignal::valueDescriptions</a></code>, and survive both database builders, including <code><a class="el" href="classTreeNode.html#a226518612d0d00b5988a2c44fc21d3f1" title="Get signal payload if node is signal.">TreeNode::GetSignal()</a></code>. Consumers can look up a decoded result directly:</p>
<div class="fragment"><div class="line"><span class="keyword">const</span> <a class="code hl_struct" href="structDecodedSignalValue.html">DecodedSignalValue</a> &amp;value = decodedFrame.signals.at(0);</div>
@@ -972,7 +972,7 @@ Build Integration</h1>
</div><!-- fragment --><p><code>core/core_files.pri</code> lists the library sources and headers. Consumers include <code>core/core.pri</code> for include paths and library linkage; the test source lists live in <code>tests/parser_tests.pri</code> and <code>tests/decoder_tests.pri</code>. When building a consumer separately, pass <code>DBC_CORE_BUILD_DIR=/absolute/path/to/build/core</code> to qmake.</p>
<h2><a class="anchor" id="autotoc_md147"></a>
Local core regression checks</h2>
<p>Run <code>bash tests/run_core_ci.sh release</code> or <code>bash tests/run_core_ci.sh sanitize</code> to build the core archive with Qt 6.8.2, run all six core QtTest suites (parser, decoder, coverage, lifetime, validation, and pipeline/builder integration), and run both the qmake and standalone Qt-free tree tests. The sanitizer mode uses AddressSanitizer and UndefinedBehaviorSanitizer, with leak detection enabled by default and fatal sanitizer errors.</p>
<p>Run <code>bash tests/run_core_ci.sh release</code> or <code>bash tests/run_core_ci.sh sanitize</code> to build the core archive with Qt 6.8.2, run all seven core QtTest suites (parser, statement robustness, decoder, coverage, lifetime, validation, and pipeline/builder integration), and run both the qmake and standalone Qt-free tree tests. The sanitizer mode uses AddressSanitizer and UndefinedBehaviorSanitizer, with leak detection enabled by default and fatal sanitizer errors.</p>
<p>See <a href="tests/README.md#local-regression-checks">Local regression checks</a> for prerequisites and environment overrides. No automatic CI workflow is configured.</p>
<h2><a class="anchor" id="autotoc_md148"></a>
Build core without Qt libraries</h2>
@@ -1080,7 +1080,7 @@ Regression tests</h1>
<p>See <a class="el" href="md_tests_2README.html">tests/README.md</a> for QtTest build and execution commands. Tests cover frame validation and error locations, Intel and Motorola extraction, signal syntax and payload bounds, <code>VAL_</code> syntax and reference validation, raw description lookup and preservation through both builders, statement dispatch, signed and unsigned 64-bit boundaries, physical conversion, numeric output, and invalid signal payloads. <code><a class="el" href="dbc__pipeline__test_8cpp_source.html">dbc_pipeline_test.cpp</a></code> follows temporary DBC fixtures through parsed metadata, runtime frame/signal lookups, decoded raw/physical values and descriptions, and tree nodes. It verifies all supported metadata in both builders, standard and extended frames sharing a numeric ID, empty databases, comments, and replacement with another fixture or an empty database.</p>
<h1><a class="anchor" id="autotoc_md155"></a>
Code review and additional checks</h1>
<p>Attribute numeric parsing shares one locale-independent converter for integer and floating-point values. Default application skips unrelated scopes, CAN ID normalization uses the validated identifier mask, and signal layout validation owns the length checks. Statement handlers continue to use <code><a class="el" href="classTypeFactory.html" title="Registry-based factory for creating objects by runtime identifier.">TypeFactory</a></code>. Core, adapter, example, and test C++ sources use explicit return types and contain no lambdas. Public metadata and parser-state comments use Doxygen descriptions.</p>
<p>Attribute numeric parsing shares one locale-independent converter for integer and floating-point values. Default application skips unrelated scopes, CAN ID normalization uses the validated identifier mask, and signal layout validation owns the length checks. Statement handlers continue to use <code><a class="el" href="classTypeFactory.html" title="Registry-based factory for creating objects by runtime identifier.">TypeFactory</a></code>. Core, adapter, example, and test C++ sources use explicit return types and contain no lambdas. DBC statement parsing uses iterative scanners rather than regular expressions. Public metadata and parser-state comments use Doxygen descriptions.</p>
<p>See <a href="tests/README.md#extended-validation">tests/README.md</a> for attribute boundary regressions, sanitizer commands, and the latest validation results.</p>
<h1><a class="anchor" id="autotoc_md156"></a>
Measuring code coverage</h1>
+2
View File
@@ -115,6 +115,8 @@ Testing</h3>
<h3><a class="anchor" id="autotoc_md11"></a>
Fixed</h3>
<ul>
<li>Replace the remaining <code>VAL_</code> and <code>SG_MUL_VAL_</code> regular expressions with a shared forward-only statement reader. Long descriptions and range lists no longer exhaust the stack. Preserve quoted escapes, exact integer values, deferred references, duplicate checks, and source-located diagnostics without imposing a new statement-length limit. Avoid repeatedly erasing <code>VAL_</code> prefixes.</li>
<li>Add and register a dedicated statement robustness suite for 50,000-character fields, 10,000 value pairs/ranges, malformed long inputs, both parser APIs, metadata preservation, value lookup, and active/inactive branch decoding. Release and ASan/UBSan builds with the optional Qt adapter each pass 2,449 core checks, seven model checks, and the qmake tree test. One locale case skips; leak checking remains disabled due to ptrace.</li>
<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>
+9 -4
View File
@@ -109,10 +109,10 @@ $(document).ready(function(){initNavTree('md_tests_2README.html',''); initResiza
<div class="line"> DBC_CORE_BUILD_DIR=/absolute/path/to/build/core</div>
<div class="line">make</div>
<div class="line">make check</div>
</div><!-- fragment --><p><code>parser_tests.pri</code> and <code>decoder_tests.pri</code> include the original test sources; <code>tests.pro</code> also includes <code><a class="el" href="dbc__coverage__test_8cpp_source.html">dbc_coverage_test.cpp</a></code>, <code><a class="el" href="dbc__lifetime__test_8cpp_source.html">dbc_lifetime_test.cpp</a></code>, <code><a class="el" href="dbc__validation__test_8cpp_source.html">dbc_validation_test.cpp</a></code>, and <code><a class="el" href="dbc__pipeline__test_8cpp_source.html">dbc_pipeline_test.cpp</a></code>. <code>../core/core.pri</code> supplies the library include path and linkage.</p>
</div><!-- fragment --><p><code>parser_tests.pri</code> includes <code><a class="el" href="dbc__parser__test_8cpp_source.html">dbc_parser_test.cpp</a></code> and <code><a class="el" href="dbc__statement__test_8cpp_source.html">dbc_statement_test.cpp</a></code>; <code>decoder_tests.pri</code> includes the decoder test source; <code>tests.pro</code> also includes <code><a class="el" href="dbc__coverage__test_8cpp_source.html">dbc_coverage_test.cpp</a></code>, <code><a class="el" href="dbc__lifetime__test_8cpp_source.html">dbc_lifetime_test.cpp</a></code>, <code><a class="el" href="dbc__validation__test_8cpp_source.html">dbc_validation_test.cpp</a></code>, and <code><a class="el" href="dbc__pipeline__test_8cpp_source.html">dbc_pipeline_test.cpp</a></code>. <code>../core/core.pri</code> supplies the library include path and linkage.</p>
<h1><a class="anchor" id="autotoc_md161"></a>
Local regression checks</h1>
<p><code>run_core_ci.sh</code> builds the core archive, runs all six QtTest suites and the qmake tree target with <code>make check</code>, then compiles and runs the standalone C++17 tree/builder test without Qt. A failed command returns a nonzero status. The <code>sanitize</code> mode applies ASan/UBSan flags to core, tests, and the standalone executable, with leak detection enabled by default and sanitizer errors fatal. The optional adapter is not built. No automatic CI workflow is configured.</p>
<p><code>run_core_ci.sh</code> builds the core archive, runs all seven QtTest suites and the qmake tree target with <code>make check</code>, then compiles and runs the standalone C++17 tree/builder test without Qt. A failed command returns a nonzero status. The <code>sanitize</code> mode applies ASan/UBSan flags to core, tests, and the standalone executable, with leak detection enabled by default and sanitizer errors fatal. The optional adapter is not built. No automatic CI workflow is configured.</p>
<p>From the repository root, with Qt 6.8.2 available:</p>
<div class="fragment"><div class="line">bash tests/run_core_ci.sh release</div>
<div class="line">bash tests/run_core_ci.sh sanitize</div>
@@ -160,15 +160,20 @@ 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>
Long value descriptions and multiplex ranges</h1>
<p><code><a class="el" href="dbc__statement__test_8cpp_source.html">dbc_statement_test.cpp</a></code> adds a separate <code>StatementParserTest</code> suite to the existing parser qmake source list and the main test runner. Both parser APIs are checked with 50,000-character descriptions (including quotes, backslashes, semicolons, and spaces), 10,000 <code>VAL_</code> pairs, 10,000 multiplex ranges, and long numeric bounds and whitespace. Valid metadata must survive parsing without truncation, support value-description lookup after decoding, and activate or skip multiplex branches correctly. Statements may precede or follow definitions.</p>
<p>Malformed long statements cover incomplete quotes/escapes, invalid escapes, missing separators and semicolons, duplicate keys, numeric overflow, empty and reversed ranges, trailing text, and unresolved long names. The diagnostic API must return an empty database with the correct category, path, and source line; the throwing API must report that same location.</p>
<p>Verified with Qt 6.8.2 in separate Release and ASan/UBSan builds with <code>CONFIG+=dbc_qt</code>: each passed 2,449 core QtTest checks (including 29 checks in the new suite), seven model checks, and the qmake tree test. One named-locale case skipped because the locale is unavailable. Sanitizer errors were fatal; local leak checking used <code>detect_leaks=0</code> because of the documented ptrace restriction.</p>
<h1><a class="anchor" id="autotoc_md171"></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>
<h1><a class="anchor" id="autotoc_md172"></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_md172"></a>
<h1><a class="anchor" id="autotoc_md173"></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>
+5 -4
View File
@@ -181,9 +181,10 @@ 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 ],
[ "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 ]
[ "Long value descriptions and multiplex ranges", "md_tests_2README.html#autotoc_md170", null ],
[ "Unsupported signal value types", "md_tests_2README.html#autotoc_md171", null ],
[ "Long signal definitions", "md_tests_2README.html#autotoc_md172", null ],
[ "Extended validation", "md_tests_2README.html#autotoc_md173", null ]
] ],
[ "Classes", "annotated.html", [
[ "Class List", "annotated.html", "annotated_dup" ],
@@ -211,7 +212,7 @@ var NAVTREE =
var NAVTREEINDEX =
[
"annotated.html",
"md_README.html#autotoc_md85"
"md_README.html#autotoc_md83"
];
var SYNCONMSG = 'click to disable panel synchronisation';
+4 -4
View File
@@ -141,14 +141,15 @@ var NAVTREEINDEX0 =
"dbc__pipeline__test_8cpp_source.html":[5,0,3,4],
"dbc__statement__handler_8cpp_source.html":[5,0,0,10],
"dbc__statement__handler_8h_source.html":[5,0,0,11],
"dbc__statement__test_8cpp_source.html":[5,0,3,5],
"dbc__tree__builder_8cpp.html":[5,0,0,12],
"dbc__tree__builder_8cpp_source.html":[5,0,0,12],
"dbc__tree__builder_8h.html":[5,0,0,13],
"dbc__tree__builder_8h_source.html":[5,0,0,13],
"dbc__tree__model_8cpp_source.html":[5,0,2,0],
"dbc__tree__model_8h_source.html":[5,0,2,1],
"dbc__tree__model__test_8cpp_source.html":[5,0,3,5],
"dbc__validation__test_8cpp_source.html":[5,0,3,6],
"dbc__tree__model__test_8cpp_source.html":[5,0,3,6],
"dbc__validation__test_8cpp_source.html":[5,0,3,7],
"decode__database_8cpp_source.html":[5,0,0,14],
"decode__database_8h.html":[5,0,0,15],
"decode__database_8h.html#aaeb92d42f5a6e27b8ba19f18d69d142b":[5,0,0,15,4],
@@ -248,6 +249,5 @@ var NAVTREEINDEX0 =
"md_README.html#autotoc_md76":[2,15],
"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_md82":[2,18]
};
+4 -2
View File
@@ -1,5 +1,6 @@
var NAVTREEINDEX1 =
{
"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_md89":[2,21],
@@ -63,6 +64,7 @@ var NAVTREEINDEX1 =
"md_tests_2README.html#autotoc_md170":[3,9],
"md_tests_2README.html#autotoc_md171":[3,10],
"md_tests_2README.html#autotoc_md172":[3,11],
"md_tests_2README.html#autotoc_md173":[3,12],
"multiplex__graph_8h_source.html":[5,0,0,19],
"multiplexing_8h_source.html":[5,0,0,20],
"pages.html":[],
@@ -231,7 +233,7 @@ var NAVTREEINDEX1 =
"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],
"tests_2main_8cpp_source.html":[5,0,3,8],
"text__utils_8h_source.html":[5,0,0,23],
"tree__node_8cpp.html":[5,0,0,24],
"tree__node_8cpp_source.html":[5,0,0,24],
@@ -241,7 +243,7 @@ var NAVTREEINDEX1 =
"tree__node_8h.html#acac9cbaeea226ed297804c012dc12b16a3bb3e8c8a24891ba0f7608bcc96f8b0a":[5,0,0,25,1,1],
"tree__node_8h.html#acac9cbaeea226ed297804c012dc12b16afa03eb688ad8aa1db593d33dabd89bad":[5,0,0,25,1,0],
"tree__node_8h_source.html":[5,0,0,25],
"tree__node__test_8cpp_source.html":[5,0,3,8],
"tree__node__test_8cpp_source.html":[5,0,3,9],
"typefactory_8h_source.html":[5,0,0,26],
"value__descriptions_8h_source.html":[5,0,0,27]
};
+3 -2
View File
@@ -13,6 +13,7 @@ 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_md171',1,'']]],
['lookup_14',['J1939 Opt-in and PGN Lookup',['../md_README.html#autotoc_md114',1,'']]]
['long_20signal_20definitions_13',['Long signal definitions',['../md_tests_2README.html#autotoc_md172',1,'']]],
['long_20value_20descriptions_20and_20multiplex_20ranges_14',['Long value descriptions and multiplex ranges',['../md_tests_2README.html#autotoc_md170',1,'']]],
['lookup_15',['J1939 Opt-in and PGN Lookup',['../md_README.html#autotoc_md114',1,'']]]
];
+6 -5
View File
@@ -6,14 +6,15 @@ var searchData=
['measuring_20code_20coverage_3',['Measuring code coverage',['../md_README.html#autotoc_md156',1,'']]],
['message_4',['message',['../structDbcDiagnostic.html#a124bae82eebeaef46426bd124685ef1b',1,'DbcDiagnostic']]],
['metadata_5',['Attributes and frame metadata',['../md_README.html#autotoc_md97',1,'']]],
['minimum_6',['minimum',['../structSignalInfo.html#ada7bf94fbeaa26bd08c73982b5af255b',1,'SignalInfo::minimum'],['../structDecodeSignal.html#a0fb84e19a0ab3bd50b6f65c1075ebc25',1,'DecodeSignal::minimum'],['../structAttributeDefinition.html#a18245dba995929a61fd6de1fcdbc8a89',1,'AttributeDefinition::minimum']]],
['minimum_6',['minimum',['../structAttributeDefinition.html#a18245dba995929a61fd6de1fcdbc8a89',1,'AttributeDefinition::minimum'],['../structDecodeSignal.html#a0fb84e19a0ab3bd50b6f65c1075ebc25',1,'DecodeSignal::minimum'],['../structSignalInfo.html#ada7bf94fbeaa26bd08c73982b5af255b',1,'SignalInfo::minimum']]],
['model_20adapter_7',['Optional Qt model adapter',['../md_README.html#autotoc_md149',1,'']]],
['model_20tests_8',['Tree and optional model tests',['../md_tests_2README.html#autotoc_md164',1,'']]],
['module_20documentation_9',['DBC Parser and Runtime Decode Module Documentation',['../md_README.html',1,'']]],
['module_20layout_10',['Module Layout',['../md_README.html#autotoc_md55',1,'']]],
['motorola_20extraction_11',['Intel and Motorola Extraction',['../md_README.html#autotoc_md118',1,'']]],
['multiplexerror_12',['MultiplexError',['../classdbc__detail_1_1MultiplexError.html',1,'dbc_detail']]],
['multiplexgraph_13',['MultiplexGraph',['../classdbc__detail_1_1MultiplexGraph.html',1,'dbc_detail']]],
['multiplexing_14',['multiplexing',['../md_README.html#autotoc_md108',1,'Multiplexing'],['../structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8',1,'SignalInfo::multiplexing'],['../structDecodeSignal.html#aea41c055cb255fe7bd178ed5727f28c9',1,'DecodeSignal::multiplexing'],['../structMultiplexing.html',1,'Multiplexing']]],
['multiplexrange_15',['MultiplexRange',['../structMultiplexRange.html',1,'']]]
['multiplex_20ranges_12',['Long value descriptions and multiplex ranges',['../md_tests_2README.html#autotoc_md170',1,'']]],
['multiplexerror_13',['MultiplexError',['../classdbc__detail_1_1MultiplexError.html',1,'dbc_detail']]],
['multiplexgraph_14',['MultiplexGraph',['../classdbc__detail_1_1MultiplexGraph.html',1,'dbc_detail']]],
['multiplexing_15',['multiplexing',['../structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8',1,'SignalInfo::multiplexing'],['../md_README.html#autotoc_md108',1,'Multiplexing'],['../structDecodeSignal.html#aea41c055cb255fe7bd178ed5727f28c9',1,'DecodeSignal::multiplexing'],['../structMultiplexing.html',1,'Multiplexing']]],
['multiplexrange_16',['MultiplexRange',['../structMultiplexRange.html',1,'']]]
];
+3 -3
View File
@@ -1,14 +1,14 @@
var searchData=
[
['ranges_0',['ranges',['../structMultiplexing.html#aa174ac4a3af9b361d2de7517dfd4b69e',1,'Multiplexing']]],
['ranges_0',['ranges',['../md_tests_2README.html#autotoc_md170',1,'Long value descriptions and multiplex ranges'],['../structMultiplexing.html#aa174ac4a3af9b361d2de7517dfd4b69e',1,'Multiplexing::ranges']]],
['raw_20frame_1',['Decode a raw frame',['../md_README.html#autotoc_md124',1,'']]],
['raw_20value_20representation_20and_20precision_2',['Raw value representation and precision',['../md_README.html#autotoc_md87',1,'']]],
['rawcanframe_3',['RawCanFrame',['../structRawCanFrame.html',1,'']]],
['rawcanframe_20tt_4',['&lt;tt&gt;RawCanFrame&lt;/tt&gt;',['../md_README.html#autotoc_md83',1,'']]],
['rawvalue_5',['rawValue',['../structDecodedSignalValue.html#a503c90b4b1a610b8252c45e466367c28',1,'DecodedSignalValue']]],
['receivers_6',['receivers',['../structSignalInfo.html#a2c95562fd0b29327a7fd7b1e6feee7f3',1,'SignalInfo::receivers'],['../structDecodeSignal.html#abdbae62a64d2df716bf60c6b67b30eaa',1,'DecodeSignal::receivers']]],
['receivers_6',['receivers',['../structDecodeSignal.html#abdbae62a64d2df716bf60c6b67b30eaa',1,'DecodeSignal::receivers'],['../structSignalInfo.html#a2c95562fd0b29327a7fd7b1e6feee7f3',1,'SignalInfo::receivers']]],
['recommended_20next_20steps_7',['Recommended Next Steps',['../md_README.html#autotoc_md140',1,'']]],
['registertype_8',['registertype',['../classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3',1,'TypeFactory::registerType()'],['../classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d',1,'DbcStatementDispatcher::RegisterType()']]],
['registertype_8',['registertype',['../classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d',1,'DbcStatementDispatcher::RegisterType()'],['../classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3',1,'TypeFactory::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']]],
+2 -2
View File
@@ -5,11 +5,11 @@ 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_md171',1,'']]],
['signal_20definitions_5',['Long signal definitions',['../md_tests_2README.html#autotoc_md172',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_20value_20types_9',['Unsupported signal value types',['../md_tests_2README.html#autotoc_md170',1,'']]],
['signal_20value_20types_9',['Unsupported signal value types',['../md_tests_2README.html#autotoc_md171',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,'']]],
+1 -1
View File
@@ -38,5 +38,5 @@ var searchData=
['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,'']]],
['types_38',['Unsupported signal value types',['../md_tests_2README.html#autotoc_md170',1,'']]]
['types_38',['Unsupported signal value types',['../md_tests_2README.html#autotoc_md171',1,'']]]
];
+1 -1
View File
@@ -7,7 +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,'']]],
['unsupported_20signal_20value_20types_7',['Unsupported signal value types',['../md_tests_2README.html#autotoc_md170',1,'']]],
['unsupported_20signal_20value_20types_7',['Unsupported signal value types',['../md_tests_2README.html#autotoc_md171',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,'']]]
];
+9 -8
View File
@@ -4,15 +4,16 @@ 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_md172',1,'']]],
['validation_4',['Extended validation',['../md_tests_2README.html#autotoc_md173',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',['../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,'']]],
['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,'']]]
['value_20descriptions_20and_20multiplex_20ranges_8',['Long value descriptions and multiplex ranges',['../md_tests_2README.html#autotoc_md170',1,'']]],
['value_20descriptions_20tt_20val_5f_20tt_9',['Signal value descriptions (&lt;tt&gt;VAL_&lt;/tt&gt;)',['../md_README.html#autotoc_md136',1,'']]],
['value_20representation_20and_20precision_10',['Raw value representation and precision',['../md_README.html#autotoc_md87',1,'']]],
['value_20types_11',['Unsupported signal value types',['../md_tests_2README.html#autotoc_md171',1,'']]],
['valuedescriptions_12',['valuedescriptions',['../structSignalInfo.html#a43f47d0433d0cc39076bd7278b46af9c',1,'SignalInfo::valueDescriptions'],['../structDecodeSignal.html#a822155d9bf4ed5f3300c9e9befe606ff',1,'DecodeSignal::valueDescriptions']]],
['valuetype_13',['valuetype',['../structDecodeSignal.html#a9d37638129263b8902ba5be59baf39a8',1,'DecodeSignal::valueType'],['../decode__database_8h.html#ad9971b6ef33e02ba2c75d19c1d2518a1',1,'ValueType:&#160;decode_database.h']]],
['valuetype_20tt_14',['&lt;tt&gt;ValueType&lt;/tt&gt;',['../md_README.html#autotoc_md72',1,'']]],
['variants_20in_20qt_20creator_15',['Configure all build variants in Qt Creator',['../md_README.html#autotoc_md159',1,'']]]
];
+21 -20
View File
@@ -3,7 +3,7 @@ var searchData=
['a_20raw_20frame_0',['Decode a raw frame',['../md_README.html#autotoc_md124',1,'']]],
['adapter_1',['Optional Qt model adapter',['../md_README.html#autotoc_md149',1,'']]],
['addchild_2',['AddChild',['../classTreeNode.html#af87331684d4b40240aec75e3286921d3',1,'TreeNode']]],
['added_3',['added',['../md_changelog.html#autotoc_md29',1,'Added'],['../md_changelog.html#autotoc_md44',1,'Added'],['../md_changelog.html#autotoc_md33',1,'Added'],['../md_changelog.html#autotoc_md26',1,'Added'],['../md_changelog.html#autotoc_md23',1,'Added'],['../md_changelog.html#autotoc_md21',1,'Added'],['../md_changelog.html#autotoc_md16',1,'Added'],['../md_changelog.html#autotoc_md14',1,'Added'],['../md_changelog.html#autotoc_md9',1,'Added']]],
['added_3',['added',['../md_changelog.html#autotoc_md26',1,'Added'],['../md_changelog.html#autotoc_md44',1,'Added'],['../md_changelog.html#autotoc_md33',1,'Added'],['../md_changelog.html#autotoc_md29',1,'Added'],['../md_changelog.html#autotoc_md23',1,'Added'],['../md_changelog.html#autotoc_md21',1,'Added'],['../md_changelog.html#autotoc_md16',1,'Added'],['../md_changelog.html#autotoc_md14',1,'Added'],['../md_changelog.html#autotoc_md9',1,'Added']]],
['additional_20checks_4',['Code review and additional checks',['../md_README.html#autotoc_md155',1,'']]],
['additional_20regression_20coverage_5',['Additional regression coverage',['../md_tests_2README.html#autotoc_md165',1,'']]],
['all_20build_20variants_20in_20qt_20creator_6',['Configure all build variants in Qt Creator',['../md_README.html#autotoc_md159',1,'']]],
@@ -14,23 +14,24 @@ var searchData=
['and_20lcov_20on_20debian_20ubuntu_11',['GCC, gcov, and LCOV on Debian/Ubuntu',['../md_README.html#autotoc_md157',1,'']]],
['and_20maintenance_12',['and maintenance',['../md_changelog.html#autotoc_md37',1,'Documentation and maintenance'],['../md_changelog.html#autotoc_md45',1,'Documentation and maintenance']]],
['and_20motorola_20extraction_13',['Intel and Motorola Extraction',['../md_README.html#autotoc_md118',1,'']]],
['and_20optional_20model_20tests_14',['Tree and optional model tests',['../md_tests_2README.html#autotoc_md164',1,'']]],
['and_20parse_20errors_15',['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']]],
['and_20pgn_20lookup_16',['J1939 Opt-in and PGN Lookup',['../md_README.html#autotoc_md114',1,'']]],
['and_20precision_17',['Raw value representation and precision',['../md_README.html#autotoc_md87',1,'']]],
['and_20reload_18',['Definition ownership and reload',['../md_README.html#autotoc_md90',1,'']]],
['and_20reload_20coverage_19',['Definition lifetime and reload coverage',['../md_tests_2README.html#autotoc_md166',1,'']]],
['and_20run_20the_20demo_20',['Build and run the demo',['../md_README.html#autotoc_md151',1,'']]],
['and_20runtime_20decode_20module_20documentation_21',['DBC Parser and Runtime Decode Module Documentation',['../md_README.html',1,'']]],
['and_20signal_20identifiers_22',['Stable frame and signal identifiers',['../md_README.html#autotoc_md91',1,'']]],
['and_20ui_20path_23',['1. Parse and UI path',['../md_README.html#autotoc_md50',1,'']]],
['api_20documentation_24',['Generate API documentation',['../md_README.html#autotoc_md152',1,'']]],
['architecture_25',['High-Level Architecture',['../md_README.html#autotoc_md49',1,'']]],
['attribute_20coverage_26',['Attribute coverage',['../md_tests_2README.html#autotoc_md169',1,'']]],
['attributeassignment_27',['AttributeAssignment',['../structAttributeAssignment.html',1,'']]],
['attributeassignments_28',['attributeAssignments',['../structDbcDatabase.html#aa7bdf56eb8b7ab5b873e1c096b46d8b6',1,'DbcDatabase']]],
['attributedefinition_29',['AttributeDefinition',['../structAttributeDefinition.html',1,'']]],
['attributedefinitions_30',['attributeDefinitions',['../structDbcDatabase.html#a14862245081989f2abf126b5ea6dfdfa',1,'DbcDatabase']]],
['attributes_31',['attributes',['../structSignalInfo.html#a781766eddbf6641071623c8e5b9acb4a',1,'SignalInfo::attributes'],['../structFrameInfo.html#a9ef2736053b593cf34ba2608cf8275c0',1,'FrameInfo::attributes'],['../structDecodeFrame.html#ad506b03108a40df7e8005638c9c59653',1,'DecodeFrame::attributes'],['../structDecodeSignal.html#a204f65c7ea45a2c148f19c12d922f99b',1,'DecodeSignal::attributes'],['../structDbcDatabase.html#a321839ad81af176444358eb23114eaee',1,'DbcDatabase::attributes']]],
['attributes_20and_20frame_20metadata_32',['Attributes and frame metadata',['../md_README.html#autotoc_md97',1,'']]]
['and_20multiplex_20ranges_14',['Long value descriptions and multiplex ranges',['../md_tests_2README.html#autotoc_md170',1,'']]],
['and_20optional_20model_20tests_15',['Tree and optional model tests',['../md_tests_2README.html#autotoc_md164',1,'']]],
['and_20parse_20errors_16',['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']]],
['and_20pgn_20lookup_17',['J1939 Opt-in and PGN Lookup',['../md_README.html#autotoc_md114',1,'']]],
['and_20precision_18',['Raw value representation and precision',['../md_README.html#autotoc_md87',1,'']]],
['and_20reload_19',['Definition ownership and reload',['../md_README.html#autotoc_md90',1,'']]],
['and_20reload_20coverage_20',['Definition lifetime and reload coverage',['../md_tests_2README.html#autotoc_md166',1,'']]],
['and_20run_20the_20demo_21',['Build and run the demo',['../md_README.html#autotoc_md151',1,'']]],
['and_20runtime_20decode_20module_20documentation_22',['DBC Parser and Runtime Decode Module Documentation',['../md_README.html',1,'']]],
['and_20signal_20identifiers_23',['Stable frame and signal identifiers',['../md_README.html#autotoc_md91',1,'']]],
['and_20ui_20path_24',['1. Parse and UI path',['../md_README.html#autotoc_md50',1,'']]],
['api_20documentation_25',['Generate API documentation',['../md_README.html#autotoc_md152',1,'']]],
['architecture_26',['High-Level Architecture',['../md_README.html#autotoc_md49',1,'']]],
['attribute_20coverage_27',['Attribute coverage',['../md_tests_2README.html#autotoc_md169',1,'']]],
['attributeassignment_28',['AttributeAssignment',['../structAttributeAssignment.html',1,'']]],
['attributeassignments_29',['attributeAssignments',['../structDbcDatabase.html#aa7bdf56eb8b7ab5b873e1c096b46d8b6',1,'DbcDatabase']]],
['attributedefinition_30',['AttributeDefinition',['../structAttributeDefinition.html',1,'']]],
['attributedefinitions_31',['attributeDefinitions',['../structDbcDatabase.html#a14862245081989f2abf126b5ea6dfdfa',1,'DbcDatabase']]],
['attributes_32',['attributes',['../structSignalInfo.html#a781766eddbf6641071623c8e5b9acb4a',1,'SignalInfo::attributes'],['../structFrameInfo.html#a9ef2736053b593cf34ba2608cf8275c0',1,'FrameInfo::attributes'],['../structDecodeFrame.html#ad506b03108a40df7e8005638c9c59653',1,'DecodeFrame::attributes'],['../structDecodeSignal.html#a204f65c7ea45a2c148f19c12d922f99b',1,'DecodeSignal::attributes'],['../structDbcDatabase.html#a321839ad81af176444358eb23114eaee',1,'DbcDatabase::attributes']]],
['attributes_20and_20frame_20metadata_33',['Attributes and frame metadata',['../md_README.html#autotoc_md97',1,'']]]
];
+9 -8
View File
@@ -66,14 +66,15 @@ var searchData=
['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,'']]],
['definitions_66',['Long signal definitions',['../md_tests_2README.html#autotoc_md172',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']]]
['descriptions_20and_20multiplex_20ranges_69',['Long value descriptions and multiplex ranges',['../md_tests_2README.html#autotoc_md170',1,'']]],
['descriptions_20tt_20val_5f_20tt_70',['Signal value descriptions (&lt;tt&gt;VAL_&lt;/tt&gt;)',['../md_README.html#autotoc_md136',1,'']]],
['diagnostic_71',['diagnostic',['../classDbcDiagnosticError.html#ab3965082f01d66b6d5c20525af44235d',1,'DbcDiagnosticError']]],
['diagnostics_72',['diagnostics',['../structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679',1,'DbcParseResult::diagnostics'],['../md_README.html#autotoc_md96',1,'Structured diagnostics']]],
['dispatch_73',['Dispatch',['../classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed',1,'DbcStatementDispatcher']]],
['dlc_74',['dlc',['../structDecodeFrame.html#a51111ac13988be372d5673d12cf3e060',1,'DecodeFrame::dlc'],['../structFrameInfo.html#aa2b198ea0f55e560c123d35e7b3ecab9',1,'FrameInfo::dlc']]],
['documentation_75',['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_76',['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_md172',1,'']]],
['extended_20validation_9',['Extended validation',['../md_tests_2README.html#autotoc_md173',1,'']]],
['extraction_10',['Intel and Motorola Extraction',['../md_README.html#autotoc_md118',1,'']]]
];
+1 -1
View File
@@ -1,6 +1,6 @@
var searchData=
[
['registertype_0',['registertype',['../classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3',1,'TypeFactory::registerType()'],['../classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d',1,'DbcStatementDispatcher::RegisterType()']]],
['registertype_0',['registertype',['../classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d',1,'DbcStatementDispatcher::RegisterType()'],['../classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3',1,'TypeFactory::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#l00572">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#l00394">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#l00644">DbcParseContext::ValidateMultiplexing()</a>.</p>
</div>
</div>
+11 -11
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#l00522">522</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#l00594">594</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#l00572">572</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#l00644">644</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>
@@ -205,7 +205,7 @@ Public Attributes</h2></td></tr>
<p>Resolve deferred comments after all definitions are known. </p>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00385">385</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#l00468">468</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="frame__info_8h_source.html#l00033">FrameInfo::comment</a>, <a class="el" href="signal__info_8h_source.html#l00039">SignalInfo::comment</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00061">database</a>, and <a class="el" href="dbc__statement__handler_8h_source.html#l00074">pendingComments</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#l00473">473</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#l00551">551</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#l00473">ResolveValueDescriptions()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00572">ValidateMultiplexing()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00394">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#l00468">ResolveComments()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00551">ResolveValueDescriptions()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00644">ValidateMultiplexing()</a>.</p>
</div>
</div>
@@ -304,7 +304,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00062">62</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>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00325">DbcSignalHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00394">DbcFrameHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00408">DbcSignalHandler::Handle()</a>.</p>
</div>
</div>
@@ -323,7 +323,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00063">63</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>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00394">DbcFrameHandler::Handle()</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#l00440">DbcValueDescriptionHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00489">DbcMultiplexingHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00408">DbcSignalHandler::Handle()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00422">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#l00523">DbcValueDescriptionHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00567">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#l00440">DbcValueDescriptionHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00473">ResolveValueDescriptions()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00523">DbcValueDescriptionHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00551">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#l00572">ValidateMultiplexing()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00394">DbcFrameHandler::Handle()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00408">DbcSignalHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00644">ValidateMultiplexing()</a>.</p>
</div>
</div>
@@ -415,7 +415,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00074">74</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#l00339">DbcCommentHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00385">ResolveComments()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00422">DbcCommentHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00468">ResolveComments()</a>.</p>
</div>
</div>
+7 -7
View File
@@ -149,7 +149,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00026">26</a> of file <a class="el" href="frame__info_8h_source.html">frame_info.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00325">DbcSignalHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00408">DbcSignalHandler::Handle()</a>.</p>
</div>
</div>
@@ -168,7 +168,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00027">27</a> of file <a class="el" href="frame__info_8h_source.html">frame_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#l00311">DbcFrameHandler::Handle()</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#l00394">DbcFrameHandler::Handle()</a>.</p>
</div>
</div>
@@ -187,7 +187,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00028">28</a> of file <a class="el" href="frame__info_8h_source.html">frame_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#l00311">DbcFrameHandler::Handle()</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#l00394">DbcFrameHandler::Handle()</a>.</p>
</div>
</div>
@@ -206,7 +206,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00029">29</a> of file <a class="el" href="frame__info_8h_source.html">frame_info.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00311">DbcFrameHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00394">DbcFrameHandler::Handle()</a>.</p>
</div>
</div>
@@ -225,7 +225,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00030">30</a> of file <a class="el" href="frame__info_8h_source.html">frame_info.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00311">DbcFrameHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00394">DbcFrameHandler::Handle()</a>.</p>
</div>
</div>
@@ -244,7 +244,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00031">31</a> of file <a class="el" href="frame__info_8h_source.html">frame_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#l00325">DbcSignalHandler::Handle()</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#l00408">DbcSignalHandler::Handle()</a>.</p>
</div>
</div>
@@ -280,7 +280,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00033">33</a> of file <a class="el" href="frame__info_8h_source.html">frame_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#l00385">DbcParseContext::ResolveComments()</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::ResolveComments()</a>.</p>
</div>
</div>
+6 -6
View File
@@ -137,7 +137,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00023">23</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#l00339">DbcCommentHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00422">DbcCommentHandler::Handle()</a>.</p>
</div>
</div>
@@ -156,7 +156,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00024">24</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#l00339">DbcCommentHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00422">DbcCommentHandler::Handle()</a>.</p>
</div>
</div>
@@ -175,7 +175,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00025">25</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#l00339">DbcCommentHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00422">DbcCommentHandler::Handle()</a>.</p>
</div>
</div>
@@ -194,7 +194,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00026">26</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#l00339">DbcCommentHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00422">DbcCommentHandler::Handle()</a>.</p>
</div>
</div>
@@ -213,7 +213,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00027">27</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#l00339">DbcCommentHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00422">DbcCommentHandler::Handle()</a>.</p>
</div>
</div>
@@ -232,7 +232,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00028">28</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#l00339">DbcCommentHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00422">DbcCommentHandler::Handle()</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#l00440">DbcValueDescriptionHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00523">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#l00440">DbcValueDescriptionHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00523">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#l00440">DbcValueDescriptionHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00523">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#l00440">DbcValueDescriptionHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00523">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#l00440">DbcValueDescriptionHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00523">DbcValueDescriptionHandler::Handle()</a>.</p>
</div>
</div>
+8 -8
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#l00572">DbcParseContext::ValidateMultiplexing()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00644">DbcParseContext::ValidateMultiplexing()</a>.</p>
</div>
</div>
@@ -174,7 +174,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00027">27</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#l00325">DbcSignalHandler::Handle()</a>.</p>
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00408">DbcSignalHandler::Handle()</a>.</p>
</div>
</div>
@@ -193,7 +193,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00028">28</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#l00325">DbcSignalHandler::Handle()</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#l00408">DbcSignalHandler::Handle()</a>.</p>
</div>
</div>
@@ -212,7 +212,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00029">29</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#l00325">DbcSignalHandler::Handle()</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#l00408">DbcSignalHandler::Handle()</a>.</p>
</div>
</div>
@@ -231,7 +231,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00030">30</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#l00325">DbcSignalHandler::Handle()</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#l00408">DbcSignalHandler::Handle()</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#l00572">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#l00644">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#l00473">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#l00551">DbcParseContext::ResolveValueDescriptions()</a>.</p>
</div>
</div>
@@ -392,7 +392,7 @@ Public Attributes</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00039">39</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#l00385">DbcParseContext::ResolveComments()</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::ResolveComments()</a>.</p>
</div>
</div>
+21 -19
View File
@@ -102,25 +102,27 @@ $(document).ready(function(){initNavTree('tests_2main_8cpp_source.html',''); ini
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#include &lt;QtTest&gt;</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="keywordtype">int</span> RunParserTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="keywordtype">int</span> RunDecoderTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="keywordtype">int</span> RunCoverageTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span> </div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="keywordtype">int</span> RunLifetimeTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span> </div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="keywordtype">int</span> RunValidationTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> </div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</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="l00013" name="l00013"></a><span class="lineno"> 13</span> </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="keywordtype">int</span> <a class="code hl_function" href="examples_2main_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv) {</div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> QCoreApplication application(argc, argv);</div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> <span class="keyword">const</span> <span class="keywordtype">int</span> parserResult = RunParserTests(argc, argv);</div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> <span class="keyword">const</span> <span class="keywordtype">int</span> decoderResult = RunDecoderTests(argc, argv);</div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> <span class="keyword">const</span> <span class="keywordtype">int</span> coverageResult = RunCoverageTests(argc, argv);</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> <span class="keyword">const</span> <span class="keywordtype">int</span> lifetimeResult = RunLifetimeTests(argc, argv);</div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> <span class="keyword">const</span> <span class="keywordtype">int</span> validationResult = RunValidationTests(argc, argv);</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> <span class="keyword">const</span> <span class="keywordtype">int</span> pipelineResult = RunPipelineTests(argc, argv);</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> <span class="keywordflow">return</span> pipelineResult | validationResult | parserResult | decoderResult | coverageResult | lifetimeResult;</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span>}</div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="keywordtype">int</span> RunStatementParserTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="keywordtype">int</span> RunDecoderTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="keywordtype">int</span> RunCoverageTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="keywordtype">int</span> RunLifetimeTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span> </div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="keywordtype">int</span> RunValidationTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</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="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="keywordtype">int</span> <a class="code hl_function" href="examples_2main_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv) {</div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> QCoreApplication application(argc, argv);</div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> <span class="keyword">const</span> <span class="keywordtype">int</span> parserResult = RunParserTests(argc, argv);</div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> <span class="keyword">const</span> <span class="keywordtype">int</span> statementResult = RunStatementParserTests(argc, argv);</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> <span class="keyword">const</span> <span class="keywordtype">int</span> decoderResult = RunDecoderTests(argc, argv);</div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> <span class="keyword">const</span> <span class="keywordtype">int</span> coverageResult = RunCoverageTests(argc, argv);</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> <span class="keyword">const</span> <span class="keywordtype">int</span> lifetimeResult = RunLifetimeTests(argc, argv);</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">const</span> <span class="keywordtype">int</span> validationResult = RunValidationTests(argc, argv);</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">const</span> <span class="keywordtype">int</span> pipelineResult = RunPipelineTests(argc, argv);</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <span class="keywordflow">return</span> statementResult | pipelineResult | validationResult | parserResult | decoderResult | coverageResult | lifetimeResult;</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span>}</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><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->