simlyfy
This commit is contained in:
1 parent
849ce31e2f
commit
a55d1c58ed
272 files changed
+41866
-261
No files matched your search
@@ -0,0 +1,253 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_attributes.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_attributes.cpp<span style="font-size: 80%;"> (<a href="dbc_attributes.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">98.8 %</td>
|
||||
<td class="headerCovTableEntry">260</td>
|
||||
<td class="headerCovTableEntry">257</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">20</td>
|
||||
<td class="headerCovTableEntry">20</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">73.5 %</td>
|
||||
<td class="headerCovTableEntry">604</td>
|
||||
<td class="headerCovTableEntry">444</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="dbc_attributes.cpp.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L232">(anonymous namespace)::ApplyDefault(DbcDatabase&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, AttributeDefinition const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">15</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L212">(anonymous namespace)::Target(DbcDatabase&, AttributeAssignment const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">15</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L203">(anonymous namespace)::ParseId(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, AttributeAssignment&)</a></td>
|
||||
|
||||
<td class="coverFnHi">32</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L225">(anonymous namespace)::ValidateCycleTime(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::variant<long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">36</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L97">(anonymous namespace)::ParseScope(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">110</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L93">(anonymous namespace)::IsScope(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">115</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L121">(anonymous namespace)::Value((anonymous namespace)::Token const&, AttributeDefinition const&, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">204</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L196">(anonymous namespace)::FindDefinition(DbcDatabase&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">218</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L83">(anonymous namespace)::AttributeTokens::End() const</a></td>
|
||||
|
||||
<td class="coverFnHi">245</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L82">(anonymous namespace)::AttributeTokens::Empty() const</a></td>
|
||||
|
||||
<td class="coverFnHi">262</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L76">(anonymous namespace)::AttributeTokens::Quoted()</a></td>
|
||||
|
||||
<td class="coverFnHi">315</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L146">(anonymous namespace)::Define((anonymous namespace)::AttributeTokens&, DbcDatabase&)</a></td>
|
||||
|
||||
<td class="coverFnHi">393</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L253">DbcParseContext::ResolveAttributes(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<DbcDiagnostic, std::allocator<DbcDiagnostic> >&)</a></td>
|
||||
|
||||
<td class="coverFnHi">549</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L64">(anonymous namespace)::AttributeTokens::AttributeTokens(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">621</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L12">(anonymous namespace)::Tokenize(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">621</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L249">DbcAttributeHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">621</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L106">long (anonymous namespace)::ParseNumber<long>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">866</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_attributes.cpp.gcov.html#L106">double (anonymous namespace)::ParseNumber<double>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">239</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_attributes.cpp.gcov.html#L106">long (anonymous namespace)::ParseNumber<long>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">627</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L70">(anonymous namespace)::AttributeTokens::Word()</a></td>
|
||||
|
||||
<td class="coverFnHi">1681</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L65">(anonymous namespace)::AttributeTokens::Take()</a></td>
|
||||
|
||||
<td class="coverFnHi">2639</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,253 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_attributes.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_attributes.cpp<span style="font-size: 80%;"> (<a href="dbc_attributes.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">98.8 %</td>
|
||||
<td class="headerCovTableEntry">260</td>
|
||||
<td class="headerCovTableEntry">257</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">20</td>
|
||||
<td class="headerCovTableEntry">20</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">73.5 %</td>
|
||||
<td class="headerCovTableEntry">604</td>
|
||||
<td class="headerCovTableEntry">444</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="dbc_attributes.cpp.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L232">(anonymous namespace)::ApplyDefault(DbcDatabase&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, AttributeDefinition const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">15</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L64">(anonymous namespace)::AttributeTokens::AttributeTokens(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">621</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L82">(anonymous namespace)::AttributeTokens::Empty() const</a></td>
|
||||
|
||||
<td class="coverFnHi">262</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L83">(anonymous namespace)::AttributeTokens::End() const</a></td>
|
||||
|
||||
<td class="coverFnHi">245</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L76">(anonymous namespace)::AttributeTokens::Quoted()</a></td>
|
||||
|
||||
<td class="coverFnHi">315</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L65">(anonymous namespace)::AttributeTokens::Take()</a></td>
|
||||
|
||||
<td class="coverFnHi">2639</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L70">(anonymous namespace)::AttributeTokens::Word()</a></td>
|
||||
|
||||
<td class="coverFnHi">1681</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L146">(anonymous namespace)::Define((anonymous namespace)::AttributeTokens&, DbcDatabase&)</a></td>
|
||||
|
||||
<td class="coverFnHi">393</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L196">(anonymous namespace)::FindDefinition(DbcDatabase&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">218</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L93">(anonymous namespace)::IsScope(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">115</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L203">(anonymous namespace)::ParseId(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, AttributeAssignment&)</a></td>
|
||||
|
||||
<td class="coverFnHi">32</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L97">(anonymous namespace)::ParseScope(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">110</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L212">(anonymous namespace)::Target(DbcDatabase&, AttributeAssignment const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">15</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L12">(anonymous namespace)::Tokenize(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">621</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L225">(anonymous namespace)::ValidateCycleTime(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::variant<long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">36</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L121">(anonymous namespace)::Value((anonymous namespace)::Token const&, AttributeDefinition const&, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">204</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L249">DbcAttributeHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">621</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L253">DbcParseContext::ResolveAttributes(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<DbcDiagnostic, std::allocator<DbcDiagnostic> >&)</a></td>
|
||||
|
||||
<td class="coverFnHi">549</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L106">long (anonymous namespace)::ParseNumber<long>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">866</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_attributes.cpp.gcov.html#L106">double (anonymous namespace)::ParseNumber<double>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">239</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_attributes.cpp.gcov.html#L106">long (anonymous namespace)::ParseNumber<long>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">627</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,451 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_attributes.cpp</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_attributes.cpp<span style="font-size: 80%;"> (source / <a href="dbc_attributes.cpp.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">98.8 %</td>
|
||||
<td class="headerCovTableEntry">260</td>
|
||||
<td class="headerCovTableEntry">257</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">20</td>
|
||||
<td class="headerCovTableEntry">20</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">73.5 %</td>
|
||||
<td class="headerCovTableEntry">604</td>
|
||||
<td class="headerCovTableEntry">444</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : // SPDX-License-Identifier: MIT</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : #include "dbc_statement_handler.h"</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : #include <charconv></span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : #include <cmath></span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : #include <limits></span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : #include <set></span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : </span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : namespace {</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : struct Token {</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : std::string text;</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : bool quoted = false;</span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : };</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : </span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> :<span class="tlaGNC"> 621 : std::vector<Token> Tokenize(const std::string &text) {</span></span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> :<span class="tlaGNC"> 621 : std::vector<Token> tokens;</span></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> :<span class="tlaGNC"> 621 : std::size_t index = 0U;</span></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> [<span class="tlaGBC" title="Branch 0 was taken 5528 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 613 times"> + </span>]:<span class="tlaGNC"> 6141 : while (index < text.size()) {</span></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> :<span class="tlaGNC"> 5528 : const char character = text[index++];</span></span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> [<span class="tlaGBC" title="Branch 0 was taken 3390 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2138 times"> + </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaGBC" title="Branch 3 was taken 3390 times"> + </span>]:<span class="tlaGNC"> 5528 : if (character == ' ' || character == '\t')</span></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> :<span class="tlaGNC"> 2138 : continue;</span></span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> :<span class="tlaGNC"> 3390 : Token token;</span></span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> [<span class="tlaGBC" title="Branch 0 was taken 652 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2738 times"> + </span>]:<span class="tlaGNC"> 3390 : if (character == '"') {</span></span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> :<span class="tlaGNC"> 652 : token.quoted = true;</span></span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> :<span class="tlaGNC"> 652 : bool closed = false;</span></span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> [<span class="tlaGBC" title="Branch 0 was taken 1936 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 1938 : while (index < text.size()) {</span></span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> :<span class="tlaGNC"> 1936 : char next = text[index++];</span></span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> [<span class="tlaGBC" title="Branch 0 was taken 648 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1288 times"> + </span>]:<span class="tlaGNC"> 1936 : if (next == '"') {</span></span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> :<span class="tlaGNC"> 648 : closed = true;</span></span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> :<span class="tlaGNC"> 648 : break;</span></span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : : }</span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1284 times"> + </span>]:<span class="tlaGNC"> 1288 : if (next == '\\') {</span></span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span>]:<span class="tlaGNC"> 4 : if (index == text.size())</span></span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> [<span class="tlaUNC" title="Branch 0 was not executed"> # </span><span class="tlaUNC" title="Branch 1 was not executed"> # </span>]:<span class="tlaUNC"> 0 : throw std::runtime_error("Incomplete attribute escape.");</span></span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> :<span class="tlaGNC"> 4 : next = text[index++];</span></span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1 time"> + </span>]:<span class="tlaGNC"> 4 : if (next != '"' && next != '\\')</span></span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Invalid attribute escape.");</span></span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : : }</span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> [<span class="tlaGBC" title="Branch 0 was taken 1286 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1286 : token.text += next;</span></span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : : }</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 648 times"> + </span>]:<span class="tlaGNC"> 650 : if (!closed)</span></span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Unterminated attribute string.");</span></span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> [<span class="tlaGBC" title="Branch 0 was taken 33 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 615 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 33 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1296 : if (index < text.size() && text[index] != ' ' && text[index] != '\t' &&</span></span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> [<span class="tlaGBC" title="Branch 0 was taken 648 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 23 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 10 times"> + </span> :<span class="tlaGNC"> 1296 : text[index] != ',' && text[index] != ';')</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 21 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 646 times"> + </span>]
|
||||
<span id="L44"><span class="lineNum"> 44</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Missing separator after attribute string.");</span></span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> [<span class="tlaGBC" title="Branch 0 was taken 2125 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 613 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 10 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2115 times"> + </span>]:<span class="tlaGNC"> 2738 : } else if (character == ';' || character == ',') {</span></span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> [<span class="tlaGBC" title="Branch 0 was taken 623 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 623 : token.text = character;</span></span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : : } else {</span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> [<span class="tlaGBC" title="Branch 0 was taken 2115 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2115 : token.text = character;</span></span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> [<span class="tlaGBC" title="Branch 0 was taken 7618 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1521 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 7618 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 18280 : while (index < text.size() && text[index] != ' ' && text[index] != '\t' &&</span></span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> [<span class="tlaGBC" title="Branch 0 was taken 9139 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 7028 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 590 times"> + </span> :<span class="tlaGNC"> 18280 : text[index] != ';' && text[index] != ',') {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 7028 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 7028 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 2113 times"> + </span>]
|
||||
<span id="L51"><span class="lineNum"> 51</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 7026 times"> + </span>]:<span class="tlaGNC"> 7028 : if (text[index] == '"')</span></span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Missing separator before attribute string.");</span></span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> [<span class="tlaGBC" title="Branch 0 was taken 7026 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 7026 : token.text += text[index++];</span></span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> : : }</span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> : : }</span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> [<span class="tlaGBC" title="Branch 0 was taken 3382 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 3382 : tokens.push_back(token);</span></span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> :<span class="tlaGNC"> 3390 : }</span></span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> [<span class="tlaGBC" title="Branch 0 was taken 613 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 613 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 613 : if (tokens.empty() || tokens.back().quoted || tokens.back().text != ";")</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 613 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 611 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 2 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 611 times"> + </span>]
|
||||
<span id="L59"><span class="lineNum"> 59</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Attribute statement requires a semicolon.");</span></span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> :<span class="tlaGNC"> 611 : tokens.pop_back();</span></span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> :<span class="tlaGNC"> 611 : return tokens;</span></span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> :<span class="tlaGNC"> 10 : }</span></span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> : : </span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> : : class AttributeTokens {</span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> : : public:</span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> :<span class="tlaGNC"> 621 : explicit AttributeTokens(const std::string &line) : tokens(Tokenize(line)) {}</span></span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> :<span class="tlaGNC"> 2639 : Token Take() {</span></span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2635 times"> + </span>]:<span class="tlaGNC"> 2639 : if (position == tokens.size())</span></span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::runtime_error("Incomplete attribute statement.");</span></span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> :<span class="tlaGNC"> 2635 : return tokens[position++];</span></span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> : : }</span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> :<span class="tlaGNC"> 1681 : std::string Word() {</span></span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> [<span class="tlaGBC" title="Branch 0 was taken 1681 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1681 : const Token token = Take();</span></span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> [<span class="tlaGBC" title="Branch 0 was taken 1679 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 1679 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 1681 : if (token.quoted || token.text == "," || token.text == ";")</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 1679 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 1679 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaUNC" title="Branch 8 was not taken"> - </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 1679 times"> + </span><span class="tlaGBC" title="Branch 10 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 11 was taken 1679 times"> + </span>]
|
||||
<span id="L75"><span class="lineNum"> 75</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Expected an attribute keyword or number.");</span></span>
|
||||
<span id="L76"><span class="lineNum"> 76</span> [<span class="tlaGBC" title="Branch 0 was taken 1679 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 3358 : return token.text;</span></span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> :<span class="tlaGNC"> 1681 : }</span></span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> :<span class="tlaGNC"> 315 : std::string Quoted() {</span></span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> [<span class="tlaGBC" title="Branch 0 was taken 311 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span>]:<span class="tlaGNC"> 315 : const Token token = Take();</span></span>
|
||||
<span id="L80"><span class="lineNum"> 80</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 309 times"> + </span>]:<span class="tlaGNC"> 311 : if (!token.quoted)</span></span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Expected a quoted attribute name or string.");</span></span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> [<span class="tlaGBC" title="Branch 0 was taken 309 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 618 : return token.text;</span></span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> :<span class="tlaGNC"> 311 : }</span></span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> :<span class="tlaGNC"> 262 : bool Empty() const { return position == tokens.size(); }</span></span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> :<span class="tlaGNC"> 245 : void End() const {</span></span>
|
||||
<span id="L86"><span class="lineNum"> 86</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 245 times"> + </span>]:<span class="tlaGNC"> 245 : if (!Empty())</span></span>
|
||||
<span id="L87"><span class="lineNum"> 87</span> [<span class="tlaUNC" title="Branch 0 was not executed"> # </span><span class="tlaUNC" title="Branch 1 was not executed"> # </span>]:<span class="tlaUNC"> 0 : throw std::runtime_error("Unexpected trailing attribute fields.");</span></span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> :<span class="tlaGNC"> 245 : }</span></span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> : : </span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> : : private:</span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> : : std::vector<Token> tokens;</span>
|
||||
<span id="L92"><span class="lineNum"> 92</span> : : std::size_t position = 0U;</span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> : : };</span>
|
||||
<span id="L94"><span class="lineNum"> 94</span> : : </span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> :<span class="tlaGNC"> 115 : bool IsScope(const std::string &text) {</span></span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> [<span class="tlaGBC" title="Branch 0 was taken 88 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 27 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 83 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 5 times"> + </span> :<span class="tlaGNC"> 115 : return text == "BO_" || text == "SG_" || text == "BU_" || text == "EV_";</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 82 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 6 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 7 was taken 81 times"> + </span>]
|
||||
<span id="L97"><span class="lineNum"> 97</span> : : }</span>
|
||||
<span id="L98"><span class="lineNum"> 98</span> : : </span>
|
||||
<span id="L99"><span class="lineNum"> 99</span> :<span class="tlaGNC"> 110 : AttributeScope ParseScope(const std::string &text) {</span></span>
|
||||
<span id="L100"><span class="lineNum"> 100</span> [<span class="tlaGBC" title="Branch 0 was taken 93 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 17 times"> + </span>]:<span class="tlaGNC"> 110 : if (text == "BO_") return AttributeScope::Frame;</span></span>
|
||||
<span id="L101"><span class="lineNum"> 101</span> [<span class="tlaGBC" title="Branch 0 was taken 11 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6 times"> + </span>]:<span class="tlaGNC"> 17 : if (text == "SG_") return AttributeScope::Signal;</span></span>
|
||||
<span id="L102"><span class="lineNum"> 102</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span>]:<span class="tlaGNC"> 6 : if (text == "BU_") return AttributeScope::Node;</span></span>
|
||||
<span id="L103"><span class="lineNum"> 103</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 4 : if (text == "EV_") return AttributeScope::Environment;</span></span>
|
||||
<span id="L104"><span class="lineNum"> 104</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Unsupported attribute scope: " + text);</span></span>
|
||||
<span id="L105"><span class="lineNum"> 105</span> : : }</span>
|
||||
<span id="L106"><span class="lineNum"> 106</span> : : </span>
|
||||
<span id="L107"><span class="lineNum"> 107</span> : : template<class Numeric></span>
|
||||
<span id="L108"><span class="lineNum"> 108</span> :<span class="tlaGNC"> 866 : Numeric ParseNumber(const std::string &text) {</span></span>
|
||||
<span id="L109"><span class="lineNum"> 109</span> :<span class="tlaGNC"> 866 : const char *begin = text.data();</span></span>
|
||||
<span id="L110"><span class="lineNum"> 110</span> :<span class="tlaGNC"> 866 : const char *end = begin + text.size();</span></span>
|
||||
<span id="L111"><span class="lineNum"> 111</span> [<span class="tlaGBC" title="Branch 0 was taken 866 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 78 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 788 times"> + </span>]:<span class="tlaGNC"> 866 : if (begin != end && *begin == '+') {</span></span>
|
||||
<span id="L112"><span class="lineNum"> 112</span> :<span class="tlaGNC"> 78 : ++begin;</span></span>
|
||||
<span id="L113"><span class="lineNum"> 113</span> [<span class="tlaGBC" title="Branch 0 was taken 54 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 24 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 30 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 24 times"> + </span> :<span class="tlaGNC"> 78 : if (begin != end && (*begin == '-' || *begin == '+'))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 24 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 6 times"> + </span>]
|
||||
<span id="L114"><span class="lineNum"> 114</span> [<span class="tlaGBC" title="Branch 0 was taken 48 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 48 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 48 : throw std::runtime_error("Invalid attribute number: " + text);</span></span>
|
||||
<span id="L115"><span class="lineNum"> 115</span> : : }</span>
|
||||
<span id="L116"><span class="lineNum"> 116</span> :<span class="tlaGNC"> 818 : Numeric value = 0;</span></span>
|
||||
<span id="L117"><span class="lineNum"> 117</span> [<span class="tlaGBC" title="Branch 0 was taken 595 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 818 : const std::from_chars_result parsed = std::from_chars(begin, end, value);</span></span>
|
||||
<span id="L118"><span class="lineNum"> 118</span> [<span class="tlaGBC" title="Branch 0 was taken 794 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 24 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 664 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 130 times"> + </span> :<span class="tlaGNC"> 818 : if (begin == end || parsed.ec != std::errc() || parsed.ptr != end || !std::isfinite(value))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 576 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 88 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 28 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 548 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 270 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 548 times"> + </span>]
|
||||
<span id="L119"><span class="lineNum"> 119</span> [<span class="tlaGBC" title="Branch 0 was taken 270 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 270 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 270 : throw std::runtime_error("Invalid attribute number: " + text);</span></span>
|
||||
<span id="L120"><span class="lineNum"> 120</span> :<span class="tlaGNC"> 548 : return value;</span></span>
|
||||
<span id="L121"><span class="lineNum"> 121</span> : : }</span>
|
||||
<span id="L122"><span class="lineNum"> 122</span> : : </span>
|
||||
<span id="L123"><span class="lineNum"> 123</span> :<span class="tlaGNC"> 204 : AttributeValue Value(const Token &token, const AttributeDefinition &definition, bool isDefault) {</span></span>
|
||||
<span id="L124"><span class="lineNum"> 124</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 198 times"> + </span>]:<span class="tlaGNC"> 204 : if (definition.type == AttributeType::String) {</span></span>
|
||||
<span id="L125"><span class="lineNum"> 125</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 6 : if (!token.quoted) throw std::runtime_error("Attribute STRING requires quoted text.");</span></span>
|
||||
<span id="L126"><span class="lineNum"> 126</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : return token.text;</span></span>
|
||||
<span id="L127"><span class="lineNum"> 127</span> : : }</span>
|
||||
<span id="L128"><span class="lineNum"> 128</span> [<span class="tlaGBC" title="Branch 0 was taken 10 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 188 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 5 times"> + </span> :<span class="tlaGNC"> 198 : if (definition.type == AttributeType::Enum && isDefault && token.quoted) {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 1 time"> + </span>]
|
||||
<span id="L129"><span class="lineNum"> 129</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 9 : for (std::size_t index = 0U; index < definition.enumValues.size(); ++index) {</span></span>
|
||||
<span id="L130"><span class="lineNum"> 130</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 5 times"> + </span>]:<span class="tlaGNC"> 7 : if (definition.enumValues[index] == token.text)</span></span>
|
||||
<span id="L131"><span class="lineNum"> 131</span> :<span class="tlaGNC"> 2 : return static_cast<std::int64_t>(index);</span></span>
|
||||
<span id="L132"><span class="lineNum"> 132</span> : : }</span>
|
||||
<span id="L133"><span class="lineNum"> 133</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Unknown attribute ENUM default label.");</span></span>
|
||||
<span id="L134"><span class="lineNum"> 134</span> : : }</span>
|
||||
<span id="L135"><span class="lineNum"> 135</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 192 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 194 : if (token.quoted) throw std::runtime_error("Numeric attribute requires an unquoted number.");</span></span>
|
||||
<span id="L136"><span class="lineNum"> 136</span> [<span class="tlaGBC" title="Branch 0 was taken 53 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 139 times"> + </span>]:<span class="tlaGNC"> 192 : if (definition.type == AttributeType::Float) {</span></span>
|
||||
<span id="L137"><span class="lineNum"> 137</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 48 times"> + </span>]:<span class="tlaGNC"> 53 : const double value = ParseNumber<double>(token.text);</span></span>
|
||||
<span id="L138"><span class="lineNum"> 138</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 3 times"> + </span>]:<span class="tlaGNC"> 5 : if (value < definition.minimum || value > definition.maximum)</span></span>
|
||||
<span id="L139"><span class="lineNum"> 139</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Attribute FLOAT value outside definition range.");</span></span>
|
||||
<span id="L140"><span class="lineNum"> 140</span> :<span class="tlaGNC"> 3 : return value;</span></span>
|
||||
<span id="L141"><span class="lineNum"> 141</span> : : }</span>
|
||||
<span id="L142"><span class="lineNum"> 142</span> [<span class="tlaGBC" title="Branch 0 was taken 31 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 108 times"> + </span>]:<span class="tlaGNC"> 139 : const std::int64_t value = ParseNumber<std::int64_t>(token.text);</span></span>
|
||||
<span id="L143"><span class="lineNum"> 143</span> [<span class="tlaGBC" title="Branch 0 was taken 31 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 27 times"> + </span>]:<span class="tlaGNC"> 31 : if (value < definition.integerMinimum || value > definition.integerMaximum)</span></span>
|
||||
<span id="L144"><span class="lineNum"> 144</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::runtime_error("Attribute integer/ENUM value outside definition range.");</span></span>
|
||||
<span id="L145"><span class="lineNum"> 145</span> :<span class="tlaGNC"> 27 : return value;</span></span>
|
||||
<span id="L146"><span class="lineNum"> 146</span> : : }</span>
|
||||
<span id="L147"><span class="lineNum"> 147</span> : : </span>
|
||||
<span id="L148"><span class="lineNum"> 148</span> :<span class="tlaGNC"> 393 : void Define(AttributeTokens &tokens, DbcDatabase &database) {</span></span>
|
||||
<span id="L149"><span class="lineNum"> 149</span> :<span class="tlaGNC"> 393 : AttributeDefinition definition;</span></span>
|
||||
<span id="L150"><span class="lineNum"> 150</span> [<span class="tlaGBC" title="Branch 0 was taken 393 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 393 : const Token first = tokens.Take();</span></span>
|
||||
<span id="L151"><span class="lineNum"> 151</span> [<span class="tlaGBC" title="Branch 0 was taken 393 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 393 : std::string name = first.text;</span></span>
|
||||
<span id="L152"><span class="lineNum"> 152</span> [<span class="tlaGBC" title="Branch 0 was taken 76 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 317 times"> + </span>]:<span class="tlaGNC"> 393 : if (!first.quoted) {</span></span>
|
||||
<span id="L153"><span class="lineNum"> 153</span> [<span class="tlaGBC" title="Branch 0 was taken 74 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 76 : definition.scope = ParseScope(first.text);</span></span>
|
||||
<span id="L154"><span class="lineNum"> 154</span> [<span class="tlaGBC" title="Branch 0 was taken 72 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 74 : name = tokens.Quoted();</span></span>
|
||||
<span id="L155"><span class="lineNum"> 155</span> : : }</span>
|
||||
<span id="L156"><span class="lineNum"> 156</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 389 times"> + </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 389 : if (name.empty()) throw std::runtime_error("Empty attribute name.");</span></span>
|
||||
<span id="L157"><span class="lineNum"> 157</span> [<span class="tlaGBC" title="Branch 0 was taken 387 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 389 : const std::string type = tokens.Word();</span></span>
|
||||
<span id="L158"><span class="lineNum"> 158</span> [<span class="tlaGBC" title="Branch 0 was taken 387 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 230 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 157 times"> + </span> :<span class="tlaGNC"> 387 : if (type == "INT" || type == "HEX") {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 230 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 98 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 132 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 255 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 132 times"> + </span>]
|
||||
<span id="L159"><span class="lineNum"> 159</span> [<span class="tlaGBC" title="Branch 0 was taken 255 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 157 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 98 times"> + </span>]:<span class="tlaGNC"> 255 : definition.type = type == "INT" ? AttributeType::Integer : AttributeType::Hex;</span></span>
|
||||
<span id="L160"><span class="lineNum"> 160</span> [<span class="tlaGBC" title="Branch 0 was taken 255 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 201 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 54 times"> + </span>]:<span class="tlaGNC"> 309 : definition.integerMinimum = ParseNumber<std::int64_t>(tokens.Word());</span></span>
|
||||
<span id="L161"><span class="lineNum"> 161</span> [<span class="tlaGBC" title="Branch 0 was taken 201 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 145 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 56 times"> + </span>]:<span class="tlaGNC"> 257 : definition.integerMaximum = ParseNumber<std::int64_t>(tokens.Word());</span></span>
|
||||
<span id="L162"><span class="lineNum"> 162</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 143 times"> + </span>]:<span class="tlaGNC"> 145 : if (definition.integerMinimum > definition.integerMaximum)</span></span>
|
||||
<span id="L163"><span class="lineNum"> 163</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Reversed attribute integer range.");</span></span>
|
||||
<span id="L164"><span class="lineNum"> 164</span> [<span class="tlaGBC" title="Branch 0 was taken 132 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 106 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 26 times"> + </span>]:<span class="tlaGNC"> 132 : } else if (type == "FLOAT") {</span></span>
|
||||
<span id="L165"><span class="lineNum"> 165</span> :<span class="tlaGNC"> 106 : definition.type = AttributeType::Float;</span></span>
|
||||
<span id="L166"><span class="lineNum"> 166</span> [<span class="tlaGBC" title="Branch 0 was taken 106 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 80 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 26 times"> + </span>]:<span class="tlaGNC"> 132 : definition.minimum = ParseNumber<double>(tokens.Word());</span></span>
|
||||
<span id="L167"><span class="lineNum"> 167</span> [<span class="tlaGBC" title="Branch 0 was taken 80 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 54 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 26 times"> + </span>]:<span class="tlaGNC"> 106 : definition.maximum = ParseNumber<double>(tokens.Word());</span></span>
|
||||
<span id="L168"><span class="lineNum"> 168</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 52 times"> + </span>]:<span class="tlaGNC"> 54 : if (definition.minimum > definition.maximum)</span></span>
|
||||
<span id="L169"><span class="lineNum"> 169</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Reversed attribute FLOAT range.");</span></span>
|
||||
<span id="L170"><span class="lineNum"> 170</span> [<span class="tlaGBC" title="Branch 0 was taken 26 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 11 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 15 times"> + </span>]:<span class="tlaGNC"> 26 : } else if (type == "STRING") {</span></span>
|
||||
<span id="L171"><span class="lineNum"> 171</span> :<span class="tlaGNC"> 11 : definition.type = AttributeType::String;</span></span>
|
||||
<span id="L172"><span class="lineNum"> 172</span> [<span class="tlaGBC" title="Branch 0 was taken 15 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 13 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2 times"> + </span>]:<span class="tlaGNC"> 15 : } else if (type == "ENUM") {</span></span>
|
||||
<span id="L173"><span class="lineNum"> 173</span> :<span class="tlaGNC"> 13 : definition.type = AttributeType::Enum;</span></span>
|
||||
<span id="L174"><span class="lineNum"> 174</span> :<span class="tlaGNC"> 13 : std::set<std::string> labels;</span></span>
|
||||
<span id="L175"><span class="lineNum"> 175</span> : : for (;;) {</span>
|
||||
<span id="L176"><span class="lineNum"> 176</span> [<span class="tlaGBC" title="Branch 0 was taken 19 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span>]:<span class="tlaGNC"> 23 : const std::string label = tokens.Quoted();</span></span>
|
||||
<span id="L177"><span class="lineNum"> 177</span> [<span class="tlaGBC" title="Branch 0 was taken 19 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 17 times"> + </span>]:<span class="tlaGNC"> 19 : if (!labels.insert(label).second)</span></span>
|
||||
<span id="L178"><span class="lineNum"> 178</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Duplicate attribute ENUM label.");</span></span>
|
||||
<span id="L179"><span class="lineNum"> 179</span> [<span class="tlaGBC" title="Branch 0 was taken 17 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 17 : definition.enumValues.push_back(label);</span></span>
|
||||
<span id="L180"><span class="lineNum"> 180</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 10 times"> + </span>]:<span class="tlaGNC"> 17 : if (tokens.Empty()) break;</span></span>
|
||||
<span id="L181"><span class="lineNum"> 181</span> [<span class="tlaGBC" title="Branch 0 was taken 10 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 10 : const Token separator = tokens.Take();</span></span>
|
||||
<span id="L182"><span class="lineNum"> 182</span> [<span class="tlaGBC" title="Branch 0 was taken 10 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 10 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 10 : if (separator.quoted || separator.text != ",") throw std::runtime_error("Expected ENUM comma.");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 4 was not taken"> - </span><span class="tlaGBC" title="Branch 5 was taken 10 times"> + </span><span class="tlaUNC" title="Branch 6 was not taken"> - </span><span class="tlaGBC" title="Branch 7 was taken 10 times"> + </span><span class="tlaUNC" title="Branch 8 was not taken"> - </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span>]
|
||||
<span id="L183"><span class="lineNum"> 183</span> [<span class="tlaGBC" title="Branch 0 was taken 10 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 7 times"> + </span>]:<span class="tlaGNC"> 29 : }</span></span>
|
||||
<span id="L184"><span class="lineNum"> 184</span> :<span class="tlaGNC"> 7 : definition.integerMaximum = static_cast<std::int64_t>(definition.enumValues.size() - 1U);</span></span>
|
||||
<span id="L185"><span class="lineNum"> 185</span> :<span class="tlaGNC"> 13 : } else {</span></span>
|
||||
<span id="L186"><span class="lineNum"> 186</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Unsupported attribute definition type: " + type);</span></span>
|
||||
<span id="L187"><span class="lineNum"> 187</span> : : }</span>
|
||||
<span id="L188"><span class="lineNum"> 188</span> [<span class="tlaGBC" title="Branch 0 was taken 213 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 213 : tokens.End();</span></span>
|
||||
<span id="L189"><span class="lineNum"> 189</span> [<span class="tlaGBC" title="Branch 0 was taken 213 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 209 times"> + </span> :<span class="tlaGNC"> 213 : if (name == "VFrameFormat" && (definition.scope != AttributeScope::Frame || definition.type != AttributeType::Enum))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 2 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 211 times"> + </span>]
|
||||
<span id="L190"><span class="lineNum"> 190</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("VFrameFormat requires a BO_ ENUM definition.");</span></span>
|
||||
<span id="L191"><span class="lineNum"> 191</span> [<span class="tlaGBC" title="Branch 0 was taken 211 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 8 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 203 times"> + </span> :<span class="tlaGNC"> 217 : if (name == "GenMsgCycleTime" && (definition.scope != AttributeScope::Frame ||</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 209 times"> + </span>]
|
||||
<span id="L192"><span class="lineNum"> 192</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 6 : (definition.type != AttributeType::Integer && definition.type != AttributeType::Hex)))</span></span>
|
||||
<span id="L193"><span class="lineNum"> 193</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("GenMsgCycleTime requires a BO_ integer definition.");</span></span>
|
||||
<span id="L194"><span class="lineNum"> 194</span> [<span class="tlaGBC" title="Branch 0 was taken 209 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 207 times"> + </span>]:<span class="tlaGNC"> 209 : if (!database.attributeDefinitions.emplace(name, definition).second)</span></span>
|
||||
<span id="L195"><span class="lineNum"> 195</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Duplicate attribute definition: " + name);</span></span>
|
||||
<span id="L196"><span class="lineNum"> 196</span> :<span class="tlaGNC"> 945 : }</span></span>
|
||||
<span id="L197"><span class="lineNum"> 197</span> : : </span>
|
||||
<span id="L198"><span class="lineNum"> 198</span> :<span class="tlaGNC"> 218 : AttributeDefinition &FindDefinition(DbcDatabase &database, const std::string &name) {</span></span>
|
||||
<span id="L199"><span class="lineNum"> 199</span> [<span class="tlaGBC" title="Branch 0 was taken 218 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 218 : const std::map<std::string, AttributeDefinition>::iterator found = database.attributeDefinitions.find(name);</span></span>
|
||||
<span id="L200"><span class="lineNum"> 200</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 214 times"> + </span>]:<span class="tlaGNC"> 218 : if (found == database.attributeDefinitions.end())</span></span>
|
||||
<span id="L201"><span class="lineNum"> 201</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::runtime_error("Undefined attribute: " + name);</span></span>
|
||||
<span id="L202"><span class="lineNum"> 202</span> :<span class="tlaGNC"> 428 : return found->second;</span></span>
|
||||
<span id="L203"><span class="lineNum"> 203</span> : : }</span>
|
||||
<span id="L204"><span class="lineNum"> 204</span> : : </span>
|
||||
<span id="L205"><span class="lineNum"> 205</span> :<span class="tlaGNC"> 32 : void ParseId(const std::string &text, AttributeAssignment &assignment) {</span></span>
|
||||
<span id="L206"><span class="lineNum"> 206</span> :<span class="tlaGNC"> 32 : const std::int64_t raw = ParseNumber<std::int64_t>(text);</span></span>
|
||||
<span id="L207"><span class="lineNum"> 207</span> [<span class="tlaGBC" title="Branch 0 was taken 30 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 28 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2 times"> + </span> :<span class="tlaGNC"> 32 : if (raw < 0 || raw > std::numeric_limits<std::uint32_t>::max() || (raw & 0x60000000U) != 0)</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 26 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 26 times"> + </span>]
|
||||
<span id="L208"><span class="lineNum"> 208</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6 : throw std::runtime_error("Invalid attribute CAN ID.");</span></span>
|
||||
<span id="L209"><span class="lineNum"> 209</span> :<span class="tlaGNC"> 26 : const std::uint32_t id = static_cast<std::uint32_t>(raw);</span></span>
|
||||
<span id="L210"><span class="lineNum"> 210</span> :<span class="tlaGNC"> 26 : assignment.canId = id & 0x1fffffffU;</span></span>
|
||||
<span id="L211"><span class="lineNum"> 211</span> [<span class="tlaGBC" title="Branch 0 was taken 24 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaGBC" title="Branch 3 was taken 24 times"> + </span>]:<span class="tlaGNC"> 26 : assignment.isExtended = (id & 0x80000000U) != 0U || id > 0x7ffU;</span></span>
|
||||
<span id="L212"><span class="lineNum"> 212</span> :<span class="tlaGNC"> 26 : }</span></span>
|
||||
<span id="L213"><span class="lineNum"> 213</span> : : </span>
|
||||
<span id="L214"><span class="lineNum"> 214</span> :<span class="tlaGNC"> 15 : AttributeMap &Target(DbcDatabase &database, const AttributeAssignment &assignment) {</span></span>
|
||||
<span id="L215"><span class="lineNum"> 215</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 12 times"> + </span>]:<span class="tlaGNC"> 15 : if (assignment.scope == AttributeScope::Database) return database.attributes;</span></span>
|
||||
<span id="L216"><span class="lineNum"> 216</span> [<span class="tlaGBC" title="Branch 0 was taken 14 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 16 : for (FrameInfo &frame: database.frames) {</span></span>
|
||||
<span id="L217"><span class="lineNum"> 217</span> [<span class="tlaGBC" title="Branch 0 was taken 12 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 10 times"> + </span>]:<span class="tlaGNC"> 14 : if (frame.canId != assignment.canId || frame.isExtended != assignment.isExtended) continue;</span></span>
|
||||
<span id="L218"><span class="lineNum"> 218</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3 times"> + </span>]:<span class="tlaGNC"> 11 : if (assignment.scope == AttributeScope::Frame) return frame.attributes;</span></span>
|
||||
<span id="L219"><span class="lineNum"> 219</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 3 : for (SignalInfo &signal: frame.signals) {</span></span>
|
||||
<span id="L220"><span class="lineNum"> 220</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1 : if (signal.name == assignment.targetName) return signal.attributes;</span></span>
|
||||
<span id="L221"><span class="lineNum"> 221</span> : : }</span>
|
||||
<span id="L222"><span class="lineNum"> 222</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Unresolved attribute signal: " + assignment.targetName);</span></span>
|
||||
<span id="L223"><span class="lineNum"> 223</span> : : }</span>
|
||||
<span id="L224"><span class="lineNum"> 224</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Unresolved attribute frame.");</span></span>
|
||||
<span id="L225"><span class="lineNum"> 225</span> : : }</span>
|
||||
<span id="L226"><span class="lineNum"> 226</span> : : </span>
|
||||
<span id="L227"><span class="lineNum"> 227</span> :<span class="tlaGNC"> 36 : void ValidateCycleTime(const std::string &name, const AttributeValue &value) {</span></span>
|
||||
<span id="L228"><span class="lineNum"> 228</span> [<span class="tlaGBC" title="Branch 0 was taken 28 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 8 times"> + </span>]:<span class="tlaGNC"> 36 : if (name != "GenMsgCycleTime") return;</span></span>
|
||||
<span id="L229"><span class="lineNum"> 229</span> :<span class="tlaGNC"> 8 : const std::int64_t milliseconds = std::get<std::int64_t>(value);</span></span>
|
||||
<span id="L230"><span class="lineNum"> 230</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 4 times"> + </span> :<span class="tlaGNC"> 8 : if (milliseconds < 0 || milliseconds > std::numeric_limits<std::uint32_t>::max())</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 4 times"> + </span>]
|
||||
<span id="L231"><span class="lineNum"> 231</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::runtime_error("GenMsgCycleTime must fit unsigned 32-bit milliseconds.");</span></span>
|
||||
<span id="L232"><span class="lineNum"> 232</span> : : }</span>
|
||||
<span id="L233"><span class="lineNum"> 233</span> : : </span>
|
||||
<span id="L234"><span class="lineNum"> 234</span> :<span class="tlaGNC"> 15 : void ApplyDefault(DbcDatabase &database, const std::string &name, const AttributeDefinition &definition) {</span></span>
|
||||
<span id="L235"><span class="lineNum"> 235</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 15 times"> + </span>]:<span class="tlaGNC"> 15 : if (!definition.defaultValue) return;</span></span>
|
||||
<span id="L236"><span class="lineNum"> 236</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 10 times"> + </span>]:<span class="tlaGNC"> 15 : if (definition.scope == AttributeScope::Database) {</span></span>
|
||||
<span id="L237"><span class="lineNum"> 237</span> :<span class="tlaGNC"> 5 : database.attributes[name] = *definition.defaultValue;</span></span>
|
||||
<span id="L238"><span class="lineNum"> 238</span> :<span class="tlaGNC"> 5 : return;</span></span>
|
||||
<span id="L239"><span class="lineNum"> 239</span> : : }</span>
|
||||
<span id="L240"><span class="lineNum"> 240</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaGBC" title="Branch 3 was taken 2 times"> + </span>]:<span class="tlaGNC"> 10 : if (definition.scope != AttributeScope::Frame && definition.scope != AttributeScope::Signal)</span></span>
|
||||
<span id="L241"><span class="lineNum"> 241</span> :<span class="tlaUNC"> 0 : return;</span></span>
|
||||
<span id="L242"><span class="lineNum"> 242</span> [<span class="tlaGBC" title="Branch 0 was taken 18 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 10 times"> + </span>]:<span class="tlaGNC"> 28 : for (FrameInfo &frame: database.frames) {</span></span>
|
||||
<span id="L243"><span class="lineNum"> 243</span> [<span class="tlaGBC" title="Branch 0 was taken 14 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 14 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 18 : if (definition.scope == AttributeScope::Frame) frame.attributes[name] = *definition.defaultValue;</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 14 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L244"><span class="lineNum"> 244</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 14 times"> + </span>]:<span class="tlaGNC"> 18 : if (definition.scope == AttributeScope::Signal) {</span></span>
|
||||
<span id="L245"><span class="lineNum"> 245</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 6 : for (SignalInfo &signal: frame.signals) signal.attributes[name] = *definition.defaultValue;</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 4 times"> + </span>]
|
||||
<span id="L246"><span class="lineNum"> 246</span> : : }</span>
|
||||
<span id="L247"><span class="lineNum"> 247</span> : : }</span>
|
||||
<span id="L248"><span class="lineNum"> 248</span> : : }</span>
|
||||
<span id="L249"><span class="lineNum"> 249</span> : : }// namespace</span>
|
||||
<span id="L250"><span class="lineNum"> 250</span> : : </span>
|
||||
<span id="L251"><span class="lineNum"> 251</span> :<span class="tlaGNC"> 621 : void DbcAttributeHandler::Handle(const std::string &line, DbcParseContext &context) const {</span></span>
|
||||
<span id="L252"><span class="lineNum"> 252</span> :<span class="tlaGNC"> 621 : context.pendingAttributes.push_back({line, context.lineNumber});</span></span>
|
||||
<span id="L253"><span class="lineNum"> 253</span> [<span class="tlaGBC" title="Branch 0 was taken 621 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 621 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 1242 : }</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 4 was not taken"> - </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L254"><span class="lineNum"> 254</span> : : </span>
|
||||
<span id="L255"><span class="lineNum"> 255</span> :<span class="tlaGNC"> 549 : void DbcParseContext::ResolveAttributes(const std::string &filePath, std::vector<DbcDiagnostic> &diagnostics) {</span></span>
|
||||
<span id="L256"><span class="lineNum"> 256</span> :<span class="tlaGNC"> 549 : std::map<std::string, std::size_t> defaultLines;</span></span>
|
||||
<span id="L257"><span class="lineNum"> 257</span> :<span class="tlaGNC"> 549 : std::vector<std::size_t> assignmentLines;</span></span>
|
||||
<span id="L258"><span class="lineNum"> 258</span> : : // Resolve each phase independently of source ordering.</span>
|
||||
<span id="L259"><span class="lineNum"> 259</span> :<span class="tlaGNC"> 549 : const char *keywords[] = {"BA_DEF_", "BA_DEF_DEF_", "BA_"};</span></span>
|
||||
<span id="L260"><span class="lineNum"> 260</span> [<span class="tlaGBC" title="Branch 0 was taken 1177 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 163 times"> + </span>]:<span class="tlaGNC"> 1340 : for (const char *phase: keywords) {</span></span>
|
||||
<span id="L261"><span class="lineNum"> 261</span> [<span class="tlaGBC" title="Branch 0 was taken 1303 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 791 times"> + </span>]:<span class="tlaGNC"> 2094 : for (const PendingAttribute &pending: pendingAttributes) {</span></span>
|
||||
<span id="L262"><span class="lineNum"> 262</span> [<span class="tlaGBC" title="Branch 0 was taken 1303 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1303 : const std::string keyword = pending.statement.substr(0U, pending.statement.find_first_of(" \t"));</span></span>
|
||||
<span id="L263"><span class="lineNum"> 263</span> [<span class="tlaGBC" title="Branch 0 was taken 1303 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 682 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 621 times"> + </span>]:<span class="tlaGNC"> 1303 : if (keyword != phase) continue;</span></span>
|
||||
<span id="L264"><span class="lineNum"> 264</span> : : try {</span>
|
||||
<span id="L265"><span class="lineNum"> 265</span> [<span class="tlaGBC" title="Branch 0 was taken 611 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 10 times"> + </span>]:<span class="tlaGNC"> 621 : AttributeTokens tokens(pending.statement);</span></span>
|
||||
<span id="L266"><span class="lineNum"> 266</span> [<span class="tlaGBC" title="Branch 0 was taken 611 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 611 : tokens.Word();</span></span>
|
||||
<span id="L267"><span class="lineNum"> 267</span> [<span class="tlaGBC" title="Branch 0 was taken 611 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 393 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 218 times"> + </span>]:<span class="tlaGNC"> 611 : if (keyword == "BA_DEF_") {</span></span>
|
||||
<span id="L268"><span class="lineNum"> 268</span> [<span class="tlaGBC" title="Branch 0 was taken 207 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 186 times"> + </span>]:<span class="tlaGNC"> 393 : Define(tokens, database);</span></span>
|
||||
<span id="L269"><span class="lineNum"> 269</span> :<span class="tlaGNC"> 207 : continue;</span></span>
|
||||
<span id="L270"><span class="lineNum"> 270</span> : : }</span>
|
||||
<span id="L271"><span class="lineNum"> 271</span> [<span class="tlaGBC" title="Branch 0 was taken 218 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 218 : const std::string name = tokens.Quoted();</span></span>
|
||||
<span id="L272"><span class="lineNum"> 272</span> [<span class="tlaGBC" title="Branch 0 was taken 214 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span>]:<span class="tlaGNC"> 218 : AttributeDefinition &definition = FindDefinition(database, name);</span></span>
|
||||
<span id="L273"><span class="lineNum"> 273</span> [<span class="tlaGBC" title="Branch 0 was taken 214 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 99 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 115 times"> + </span>]:<span class="tlaGNC"> 214 : if (keyword == "BA_DEF_DEF_") {</span></span>
|
||||
<span id="L274"><span class="lineNum"> 274</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 97 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 99 : if (definition.defaultValue) throw std::runtime_error("Duplicate attribute default: " + name);</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L275"><span class="lineNum"> 275</span> [<span class="tlaGBC" title="Branch 0 was taken 97 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 17 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 80 times"> + </span>]:<span class="tlaGNC"> 177 : definition.defaultValue = Value(tokens.Take(), definition, true);</span></span>
|
||||
<span id="L276"><span class="lineNum"> 276</span> [<span class="tlaGBC" title="Branch 0 was taken 15 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 17 : ValidateCycleTime(name, *definition.defaultValue);</span></span>
|
||||
<span id="L277"><span class="lineNum"> 277</span> [<span class="tlaGBC" title="Branch 0 was taken 15 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 15 : tokens.End();</span></span>
|
||||
<span id="L278"><span class="lineNum"> 278</span> [<span class="tlaGBC" title="Branch 0 was taken 15 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 15 : defaultLines[name] = pending.lineNumber;</span></span>
|
||||
<span id="L279"><span class="lineNum"> 279</span> [<span class="tlaGBC" title="Branch 0 was taken 15 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 15 : ApplyDefault(database, name, definition);</span></span>
|
||||
<span id="L280"><span class="lineNum"> 280</span> :<span class="tlaGNC"> 15 : continue;</span></span>
|
||||
<span id="L281"><span class="lineNum"> 281</span> : : }</span>
|
||||
<span id="L282"><span class="lineNum"> 282</span> :<span class="tlaGNC"> 115 : AttributeAssignment assignment;</span></span>
|
||||
<span id="L283"><span class="lineNum"> 283</span> [<span class="tlaGBC" title="Branch 0 was taken 115 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 115 : assignment.name = name;</span></span>
|
||||
<span id="L284"><span class="lineNum"> 284</span> [<span class="tlaGBC" title="Branch 0 was taken 115 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 115 : Token value = tokens.Take();</span></span>
|
||||
<span id="L285"><span class="lineNum"> 285</span> [<span class="tlaGBC" title="Branch 0 was taken 115 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 115 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 115 : if (!value.quoted && IsScope(value.text)) {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 34 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 81 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 34 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 81 times"> + </span>]
|
||||
<span id="L286"><span class="lineNum"> 286</span> [<span class="tlaGBC" title="Branch 0 was taken 34 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 34 : assignment.scope = ParseScope(value.text);</span></span>
|
||||
<span id="L287"><span class="lineNum"> 287</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 27 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2 times"> + </span>]:<span class="tlaGNC"> 34 : if (assignment.scope == AttributeScope::Frame || assignment.scope == AttributeScope::Signal)</span></span>
|
||||
<span id="L288"><span class="lineNum"> 288</span> [<span class="tlaGBC" title="Branch 0 was taken 32 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 26 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 6 times"> + </span>]:<span class="tlaGNC"> 38 : ParseId(tokens.Word(), assignment);</span></span>
|
||||
<span id="L289"><span class="lineNum"> 289</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 21 times"> + </span>]:<span class="tlaGNC"> 28 : if (assignment.scope != AttributeScope::Frame)</span></span>
|
||||
<span id="L290"><span class="lineNum"> 290</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 7 : assignment.targetName = tokens.Word();</span></span>
|
||||
<span id="L291"><span class="lineNum"> 291</span> [<span class="tlaGBC" title="Branch 0 was taken 28 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 28 : value = tokens.Take();</span></span>
|
||||
<span id="L292"><span class="lineNum"> 292</span> : : }</span>
|
||||
<span id="L293"><span class="lineNum"> 293</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 107 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 109 : if (assignment.scope != definition.scope) throw std::runtime_error("Attribute assignment scope differs from definition.");</span></span>
|
||||
<span id="L294"><span class="lineNum"> 294</span> [<span class="tlaGBC" title="Branch 0 was taken 19 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 88 times"> + </span>]:<span class="tlaGNC"> 107 : assignment.value = Value(value, definition, false);</span></span>
|
||||
<span id="L295"><span class="lineNum"> 295</span> [<span class="tlaGBC" title="Branch 0 was taken 17 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 19 : ValidateCycleTime(name, assignment.value);</span></span>
|
||||
<span id="L296"><span class="lineNum"> 296</span> [<span class="tlaGBC" title="Branch 0 was taken 17 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 17 : tokens.End();</span></span>
|
||||
<span id="L297"><span class="lineNum"> 297</span> : : // Repeated explicit assignments use the last value, matching comments.</span>
|
||||
<span id="L298"><span class="lineNum"> 298</span> [<span class="tlaGBC" title="Branch 0 was taken 16 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 2 was taken 15 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1 time"> + </span>]:<span class="tlaGNC"> 17 : if (assignment.scope != AttributeScope::Node && assignment.scope != AttributeScope::Environment)</span></span>
|
||||
<span id="L299"><span class="lineNum"> 299</span> [<span class="tlaGBC" title="Branch 0 was taken 11 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 11 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 15 : Target(database, assignment)[name] = assignment.value;</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 11 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L300"><span class="lineNum"> 300</span> [<span class="tlaGBC" title="Branch 0 was taken 13 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 13 : database.attributeAssignments.push_back(assignment);</span></span>
|
||||
<span id="L301"><span class="lineNum"> 301</span> [<span class="tlaGBC" title="Branch 0 was taken 13 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 13 : assignmentLines.push_back(pending.lineNumber);</span></span>
|
||||
<span id="L302"><span class="lineNum"> 302</span> [<span class="tlaGBC" title="Branch 0 was taken 13 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 15 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 13 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 222 times"> + </span> :<span class="tlaGNC"> 1406 : } catch (const std::exception &error) {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 4 was not taken"> - </span><span class="tlaGBC" title="Branch 5 was taken 386 times"> + </span>]
|
||||
<span id="L303"><span class="lineNum"> 303</span> [<span class="tlaGBC" title="Branch 0 was taken 386 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 386 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1158 : throw DbcDiagnosticError(DbcDiagnosticCode::InvalidAttribute, filePath, pending.lineNumber, error.what());</span></span>
|
||||
<span id="L304"><span class="lineNum"> 304</span> :<span class="tlaGNC"> 386 : }</span></span>
|
||||
<span id="L305"><span class="lineNum"> 305</span> [<span class="tlaGBC" title="Branch 0 was taken 13 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 904 times"> + </span>]:<span class="tlaGNC"> 1303 : }</span></span>
|
||||
<span id="L306"><span class="lineNum"> 306</span> : : }</span>
|
||||
<span id="L307"><span class="lineNum"> 307</span> [<span class="tlaGBC" title="Branch 0 was taken 179 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 163 times"> + </span>]:<span class="tlaGNC"> 342 : for (FrameInfo &frame: database.frames) {</span></span>
|
||||
<span id="L308"><span class="lineNum"> 308</span> [<span class="tlaGBC" title="Branch 0 was taken 12 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 179 times"> + </span>]:<span class="tlaGNC"> 191 : for (const AttributeMap::value_type &attribute: frame.attributes) {</span></span>
|
||||
<span id="L309"><span class="lineNum"> 309</span> [<span class="tlaGBC" title="Branch 0 was taken 12 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 5 times"> + </span> :<span class="tlaGNC"> 16 : if (attribute.first != "VFrameFormat" && attribute.first != "GenMsgCycleTime") continue;</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 7 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 3 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 9 times"> + </span>]
|
||||
<span id="L310"><span class="lineNum"> 310</span> [<span class="tlaGBC" title="Branch 0 was taken 9 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 9 : std::size_t line = defaultLines[attribute.first];</span></span>
|
||||
<span id="L311"><span class="lineNum"> 311</span> [<span class="tlaGBC" title="Branch 0 was taken 28 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 9 times"> + </span>]:<span class="tlaGNC"> 37 : for (std::size_t index = 0U; index < database.attributeAssignments.size(); ++index) {</span></span>
|
||||
<span id="L312"><span class="lineNum"> 312</span> :<span class="tlaGNC"> 28 : const AttributeAssignment &assignment = database.attributeAssignments[index];</span></span>
|
||||
<span id="L313"><span class="lineNum"> 313</span> [<span class="tlaGBC" title="Branch 0 was taken 12 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 40 : if (assignment.name == attribute.first && assignment.scope == AttributeScope::Frame &&</span></span>
|
||||
<span id="L314"><span class="lineNum"> 314</span> [<span class="tlaGBC" title="Branch 0 was taken 12 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 16 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 9 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 3 times"> + </span> :<span class="tlaGNC"> 40 : assignment.canId == frame.canId && assignment.isExtended == frame.isExtended)</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 23 times"> + </span>]
|
||||
<span id="L315"><span class="lineNum"> 315</span> :<span class="tlaGNC"> 5 : line = assignmentLines[index];</span></span>
|
||||
<span id="L316"><span class="lineNum"> 316</span> : : }</span>
|
||||
<span id="L317"><span class="lineNum"> 317</span> [<span class="tlaGBC" title="Branch 0 was taken 9 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 9 : const std::int64_t value = std::get<std::int64_t>(attribute.second);</span></span>
|
||||
<span id="L318"><span class="lineNum"> 318</span> [<span class="tlaGBC" title="Branch 0 was taken 9 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 5 times"> + </span>]:<span class="tlaGNC"> 9 : if (attribute.first == "GenMsgCycleTime") {</span></span>
|
||||
<span id="L319"><span class="lineNum"> 319</span> :<span class="tlaGNC"> 4 : frame.cycleTimeMs = static_cast<std::uint32_t>(value);</span></span>
|
||||
<span id="L320"><span class="lineNum"> 320</span> :<span class="tlaGNC"> 4 : continue;</span></span>
|
||||
<span id="L321"><span class="lineNum"> 321</span> : : }</span>
|
||||
<span id="L322"><span class="lineNum"> 322</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 5 : frame.frameFormat = database.attributeDefinitions.at(attribute.first).enumValues[static_cast<std::size_t>(value)];</span></span>
|
||||
<span id="L323"><span class="lineNum"> 323</span> :<span class="tlaGNC"> 5 : const std::string &format = *frame.frameFormat;</span></span>
|
||||
<span id="L324"><span class="lineNum"> 324</span> :<span class="tlaGNC"> 5 : std::string warning;</span></span>
|
||||
<span id="L325"><span class="lineNum"> 325</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2 times"> + </span> :<span class="tlaGNC"> 5 : if (format != "StandardCAN" && format != "ExtendedCAN")</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 8 was taken 2 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 3 times"> + </span>]
|
||||
<span id="L326"><span class="lineNum"> 326</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 2 : warning = "Unsupported VFrameFormat '" + format + "' is preserved; decoding may be incomplete.";</span></span>
|
||||
<span id="L327"><span class="lineNum"> 327</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 3 was taken 2 times"> + </span>]:<span class="tlaGNC"> 3 : else if ((format == "ExtendedCAN") != frame.isExtended)</span></span>
|
||||
<span id="L328"><span class="lineNum"> 328</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1 : warning = "VFrameFormat '" + format + "' conflicts with the BO_ CAN ID; ID interpretation is unchanged.";</span></span>
|
||||
<span id="L329"><span class="lineNum"> 329</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 5 : if (!warning.empty())</span></span>
|
||||
<span id="L330"><span class="lineNum"> 330</span> :<span class="tlaGNC"> 3 : diagnostics.push_back({DbcDiagnosticSeverity::Warning, DbcDiagnosticCode::UnsupportedAttribute, filePath, line, warning});</span></span>
|
||||
<span id="L331"><span class="lineNum"> 331</span> :<span class="tlaGNC"> 5 : }</span></span>
|
||||
<span id="L332"><span class="lineNum"> 332</span> : : }</span>
|
||||
<span id="L333"><span class="lineNum"> 333</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 938 : }</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaUNC" title="Branch 6 was not taken"> - </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span>]
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_decode_builder.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_decode_builder.cpp<span style="font-size: 80%;"> (<a href="dbc_decode_builder.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">40</td>
|
||||
<td class="headerCovTableEntry">40</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">62.5 %</td>
|
||||
<td class="headerCovTableEntry">40</td>
|
||||
<td class="headerCovTableEntry">25</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="dbc_decode_builder.cpp.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decode_builder.cpp.gcov.html#L13">DbcDecodeBuilder::Build(DbcDatabase const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">108</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_decode_builder.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_decode_builder.cpp<span style="font-size: 80%;"> (<a href="dbc_decode_builder.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">40</td>
|
||||
<td class="headerCovTableEntry">40</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">62.5 %</td>
|
||||
<td class="headerCovTableEntry">40</td>
|
||||
<td class="headerCovTableEntry">25</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="dbc_decode_builder.cpp.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decode_builder.cpp.gcov.html#L13">DbcDecodeBuilder::Build(DbcDatabase const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">108</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,146 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_decode_builder.cpp</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_decode_builder.cpp<span style="font-size: 80%;"> (source / <a href="dbc_decode_builder.cpp.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">40</td>
|
||||
<td class="headerCovTableEntry">40</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">62.5 %</td>
|
||||
<td class="headerCovTableEntry">40</td>
|
||||
<td class="headerCovTableEntry">25</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : * @file dbc_decode_builder.cpp</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : * @brief Conversion of parsed metadata to runtime definitions.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : #include "dbc_decode_builder.h"</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : #include <utility></span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : </span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> :<span class="tlaGNC"> 108 : DecodeDatabase DbcDecodeBuilder::Build(const DbcDatabase &source) const {</span></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> :<span class="tlaGNC"> 108 : std::vector<DecodeFrame> frames;</span></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> [<span class="tlaGBC" title="Branch 0 was taken 108 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 108 : frames.reserve(source.frames.size());</span></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : </span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 108 times"> + </span>]:<span class="tlaGNC"> 248 : for (const FrameInfo &sourceFrame: source.frames) {</span></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> :<span class="tlaGNC"> 140 : DecodeFrame targetFrame;</span></span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : : </span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : targetFrame.attributes = sourceFrame.attributes;</span></span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : targetFrame.frameFormat = sourceFrame.frameFormat;</span></span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> :<span class="tlaGNC"> 140 : targetFrame.cycleTimeMs = sourceFrame.cycleTimeMs;</span></span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : targetFrame.name = sourceFrame.name;</span></span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> :<span class="tlaGNC"> 140 : targetFrame.canId = sourceFrame.canId;</span></span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> :<span class="tlaGNC"> 140 : targetFrame.isExtended = sourceFrame.isExtended;</span></span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> :<span class="tlaGNC"> 140 : targetFrame.dlc = sourceFrame.dlc;</span></span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> :<span class="tlaGNC"> 140 : targetFrame.pgn = sourceFrame.pgn;</span></span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> :<span class="tlaGNC"> 140 : targetFrame.hasPgn = sourceFrame.hasPgn;</span></span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : targetFrame.transmitter = sourceFrame.transmitter;</span></span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : targetFrame.comment = sourceFrame.comment;</span></span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : : </span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : targetFrame.signals.reserve(sourceFrame.signals.size());</span></span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> [<span class="tlaGBC" title="Branch 0 was taken 173 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 140 times"> + </span>]:<span class="tlaGNC"> 313 : for (const SignalInfo &sourceSignal: sourceFrame.signals) {</span></span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> :<span class="tlaGNC"> 173 : DecodeSignal targetSignal;</span></span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : : </span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> [<span class="tlaGBC" title="Branch 0 was taken 173 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 173 : targetSignal.attributes = sourceSignal.attributes;</span></span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> :<span class="tlaGNC"> 173 : targetSignal.multiplexing = sourceSignal.multiplexing;</span></span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> [<span class="tlaGBC" title="Branch 0 was taken 173 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 173 : targetSignal.name = sourceSignal.name;</span></span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> :<span class="tlaGNC"> 173 : targetSignal.startBit = sourceSignal.startBit;</span></span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> :<span class="tlaGNC"> 173 : targetSignal.length = sourceSignal.length;</span></span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> [<span class="tlaGBC" title="Branch 0 was taken 155 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 18 times"> + </span>]:<span class="tlaGNC"> 173 : targetSignal.byteOrder = sourceSignal.isLittleEndian ? ByteOrder::Intel : ByteOrder::Motorola;</span></span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 167 times"> + </span>]:<span class="tlaGNC"> 173 : targetSignal.valueType = sourceSignal.isSigned ? ValueType::Signed : ValueType::Unsigned;</span></span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> :<span class="tlaGNC"> 173 : targetSignal.factor = sourceSignal.factor;</span></span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> :<span class="tlaGNC"> 173 : targetSignal.offset = sourceSignal.offset;</span></span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> :<span class="tlaGNC"> 173 : targetSignal.minimum = sourceSignal.minimum;</span></span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> :<span class="tlaGNC"> 173 : targetSignal.maximum = sourceSignal.maximum;</span></span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> [<span class="tlaGBC" title="Branch 0 was taken 173 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 173 : targetSignal.unit = sourceSignal.unit;</span></span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> [<span class="tlaGBC" title="Branch 0 was taken 173 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 173 : targetSignal.receivers = sourceSignal.receivers;</span></span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> [<span class="tlaGBC" title="Branch 0 was taken 173 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 173 : targetSignal.comment = sourceSignal.comment;</span></span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> [<span class="tlaGBC" title="Branch 0 was taken 173 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 173 : targetSignal.valueDescriptions = sourceSignal.valueDescriptions;</span></span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> : : </span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> [<span class="tlaGBC" title="Branch 0 was taken 173 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 173 : targetFrame.signals.push_back(std::move(targetSignal));</span></span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> :<span class="tlaGNC"> 173 : }</span></span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> : : </span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : frames.push_back(std::move(targetFrame));</span></span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> :<span class="tlaGNC"> 140 : }</span></span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> : : </span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> [<span class="tlaGBC" title="Branch 0 was taken 68 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 40 times"> + </span>]:<span class="tlaGNC"> 176 : return DecodeDatabase(frames);</span></span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> :<span class="tlaGNC"> 108 : }</span></span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,181 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_decoder.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_decoder.cpp<span style="font-size: 80%;"> (<a href="dbc_decoder.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">94.9 %</td>
|
||||
<td class="headerCovTableEntry">156</td>
|
||||
<td class="headerCovTableEntry">148</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">72.8 %</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
<td class="headerCovTableEntry">115</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="dbc_decoder.cpp.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L39">DbcDecoder::Decode(DecodeDatabase const&, RawCanFrame const&, std::vector<SignalKey, std::allocator<SignalKey> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">12</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L18">DbcDecoder::FindFrame(DecodeDatabase const&, unsigned int, bool) const</a></td>
|
||||
|
||||
<td class="coverFnHi">32</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L250">DbcDecoder::SignExtend(unsigned long, unsigned int)</a></td>
|
||||
|
||||
<td class="coverFnHi">81</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L216">DbcDecoder::ExtractMotorola(std::vector<unsigned char, std::allocator<unsigned char> > const&, unsigned int, unsigned int, unsigned long&)</a></td>
|
||||
|
||||
<td class="coverFnHi">3138</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L193">DbcDecoder::ExtractIntel(std::vector<unsigned char, std::allocator<unsigned char> > const&, unsigned int, unsigned int, unsigned long&)</a></td>
|
||||
|
||||
<td class="coverFnHi">3242</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L111">DbcDecoder::ReadSelector(DecodeFrame const&, RawCanFrame const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">6341</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L131">DbcDecoder::DecodeOneSignal(DecodeSignal const&, unsigned char, RawCanFrame const&, DbcDecoder::SelectorState const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">6375</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L181">DbcDecoder::ExtractUnsigned(std::vector<unsigned char, std::allocator<unsigned char> > const&, DecodeSignal const&, unsigned long&)</a></td>
|
||||
|
||||
<td class="coverFnHi">6380</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L34">DbcDecoder::Decode(DecodeDatabase const&, RawCanFrame const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">6396</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L99">DbcDecoder::IsValidDefinition(DecodeSignal const&, unsigned char)</a></td>
|
||||
|
||||
<td class="coverFnHi">6396</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L45">DbcDecoder::DecodeImpl(DecodeDatabase const&, RawCanFrame const&, std::vector<SignalKey, std::allocator<SignalKey> > const*) const</a></td>
|
||||
|
||||
<td class="coverFnHi">6408</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L24">DbcDecoder::ResolveFrame(DecodeDatabase const&, unsigned int, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">6440</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,181 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_decoder.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_decoder.cpp<span style="font-size: 80%;"> (<a href="dbc_decoder.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">94.9 %</td>
|
||||
<td class="headerCovTableEntry">156</td>
|
||||
<td class="headerCovTableEntry">148</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">72.8 %</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
<td class="headerCovTableEntry">115</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="dbc_decoder.cpp.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L34">DbcDecoder::Decode(DecodeDatabase const&, RawCanFrame const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">6396</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L39">DbcDecoder::Decode(DecodeDatabase const&, RawCanFrame const&, std::vector<SignalKey, std::allocator<SignalKey> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">12</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L45">DbcDecoder::DecodeImpl(DecodeDatabase const&, RawCanFrame const&, std::vector<SignalKey, std::allocator<SignalKey> > const*) const</a></td>
|
||||
|
||||
<td class="coverFnHi">6408</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L131">DbcDecoder::DecodeOneSignal(DecodeSignal const&, unsigned char, RawCanFrame const&, DbcDecoder::SelectorState const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">6375</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L193">DbcDecoder::ExtractIntel(std::vector<unsigned char, std::allocator<unsigned char> > const&, unsigned int, unsigned int, unsigned long&)</a></td>
|
||||
|
||||
<td class="coverFnHi">3242</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L216">DbcDecoder::ExtractMotorola(std::vector<unsigned char, std::allocator<unsigned char> > const&, unsigned int, unsigned int, unsigned long&)</a></td>
|
||||
|
||||
<td class="coverFnHi">3138</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L181">DbcDecoder::ExtractUnsigned(std::vector<unsigned char, std::allocator<unsigned char> > const&, DecodeSignal const&, unsigned long&)</a></td>
|
||||
|
||||
<td class="coverFnHi">6380</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L18">DbcDecoder::FindFrame(DecodeDatabase const&, unsigned int, bool) const</a></td>
|
||||
|
||||
<td class="coverFnHi">32</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L99">DbcDecoder::IsValidDefinition(DecodeSignal const&, unsigned char)</a></td>
|
||||
|
||||
<td class="coverFnHi">6396</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L111">DbcDecoder::ReadSelector(DecodeFrame const&, RawCanFrame const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">6341</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L24">DbcDecoder::ResolveFrame(DecodeDatabase const&, unsigned int, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">6440</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L250">DbcDecoder::SignExtend(unsigned long, unsigned int)</a></td>
|
||||
|
||||
<td class="coverFnHi">81</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,353 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_decoder.cpp</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_decoder.cpp<span style="font-size: 80%;"> (source / <a href="dbc_decoder.cpp.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">94.9 %</td>
|
||||
<td class="headerCovTableEntry">156</td>
|
||||
<td class="headerCovTableEntry">148</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">72.8 %</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
<td class="headerCovTableEntry">115</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : * @file dbc_decoder.cpp</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : * @brief CAN signal extraction and physical value conversion.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : #include "dbc_decoder.h"</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : #include "j1939.h"</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : #include "signal_layout.h"</span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : : #include <cmath></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : #include <stdexcept></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : : #include <unordered_set></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : #include <utility></span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : : </span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> :<span class="tlaGNC"> 32 : std::shared_ptr<const DecodeFrame> DbcDecoder::FindFrame(const DecodeDatabase &database,</span></span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : : std::uint32_t canId,</span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : : bool isExtended) const {</span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> [<span class="tlaGBC" title="Branch 0 was taken 32 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 32 : return ResolveFrame(database, canId, isExtended).definition;</span></span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : : }</span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : : </span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> :<span class="tlaGNC"> 6440 : PgnLookupResult DbcDecoder::ResolveFrame(const DecodeDatabase &database,</span></span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : : std::uint32_t canId, bool isExtended) {</span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> [<span class="tlaGBC" title="Branch 0 was taken 6440 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6440 : const std::shared_ptr<const DecodeFrame> exact = database.FindFrame(FrameKey(canId, isExtended));</span></span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> [<span class="tlaGBC" title="Branch 0 was taken 6335 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 105 times"> + </span>]:<span class="tlaGNC"> 6440 : if (exact)</span></span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> :<span class="tlaGNC"> 6335 : return {exact, false};</span></span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> [<span class="tlaGBC" title="Branch 0 was taken 87 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 18 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 80 times"> + </span>]:<span class="tlaGNC"> 105 : if (!isExtended || canId > 0x1FFFFFFFU)</span></span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> :<span class="tlaGNC"> 25 : return {};</span></span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> [<span class="tlaGBC" title="Branch 0 was taken 80 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 80 : return database.FindFrameByPgn(ExtractJ1939Pgn(canId));</span></span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> :<span class="tlaGNC"> 6440 : }</span></span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : : </span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> :<span class="tlaGNC"> 6396 : DecodedFrameValue DbcDecoder::Decode(const DecodeDatabase &database,</span></span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : : const RawCanFrame &frame) const {</span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> :<span class="tlaGNC"> 6396 : return DecodeImpl(database, frame, nullptr);</span></span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : : }</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : : </span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> :<span class="tlaGNC"> 12 : DecodedFrameValue DbcDecoder::Decode(const DecodeDatabase &database,</span></span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : : const RawCanFrame &frame,</span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> : : const std::vector<SignalKey> &selection) const {</span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> :<span class="tlaGNC"> 12 : return DecodeImpl(database, frame, &selection);</span></span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> : : }</span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : : </span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> :<span class="tlaGNC"> 6408 : DecodedFrameValue DbcDecoder::DecodeImpl(const DecodeDatabase &database,</span></span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> : : const RawCanFrame &frame,</span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> : : const std::vector<SignalKey> *selection) const {</span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> :<span class="tlaGNC"> 6408 : DecodedFrameValue result;</span></span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> :<span class="tlaGNC"> 6408 : result.key = FrameKey(frame.canId, frame.isExtended);</span></span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> [<span class="tlaGBC" title="Branch 0 was taken 6408 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6408 : const PgnLookupResult match = ResolveFrame(database, frame.canId, frame.isExtended);</span></span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> [<span class="tlaGBC" title="Branch 0 was taken 8 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6400 times"> + </span>]:<span class="tlaGNC"> 6408 : if (match.ambiguous) {</span></span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> :<span class="tlaGNC"> 8 : result.status = FrameDecodeStatus::AmbiguousFrame;</span></span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> :<span class="tlaGNC"> 8 : return result;</span></span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> : : }</span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> :<span class="tlaGNC"> 6400 : const std::shared_ptr<const DecodeFrame> definition = match.definition;</span></span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> [<span class="tlaGBC" title="Branch 0 was taken 55 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6345 times"> + </span>]:<span class="tlaGNC"> 6400 : if (definition == nullptr)</span></span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> :<span class="tlaGNC"> 55 : return result;</span></span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> :<span class="tlaGNC"> 6345 : result.key = definition->GetKey();</span></span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> : : </span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> :<span class="tlaGNC"> 6345 : std::vector<const DecodeSignal *> selected;</span></span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> [<span class="tlaGBC" title="Branch 0 was taken 8 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6337 times"> + </span>]:<span class="tlaGNC"> 6345 : if (selection != nullptr) {</span></span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> [<span class="tlaGBC" title="Branch 0 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 8 : selected.reserve(selection->size());</span></span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> :<span class="tlaGNC"> 8 : std::unordered_set<SignalKey, SignalKeyHasher> keys;</span></span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> [<span class="tlaGBC" title="Branch 0 was taken 8 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span>]:<span class="tlaGNC"> 12 : for (const SignalKey &key: *selection) {</span></span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span>]:<span class="tlaGNC"> 8 : if (!(key.frame == result.key))</span></span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::invalid_argument("Selected signal belongs to another frame: " + key.name);</span></span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaGBC" title="Branch 3 was taken 4 times"> + </span>]:<span class="tlaGNC"> 4 : if (!keys.insert(key).second)</span></span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> [<span class="tlaUNC" title="Branch 0 was not executed"> # </span><span class="tlaUNC" title="Branch 1 was not executed"> # </span><span class="tlaUNC" title="Branch 2 was not executed"> # </span><span class="tlaUNC" title="Branch 3 was not executed"> # </span>]:<span class="tlaUNC"> 0 : throw std::invalid_argument("Duplicate selected signal: " + key.name);</span></span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : const std::shared_ptr<const DecodeSignal> signal = database.FindSignal(key);</span></span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span>]:<span class="tlaGNC"> 4 : if (!signal)</span></span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> [<span class="tlaUNC" title="Branch 0 was not executed"> # </span><span class="tlaUNC" title="Branch 1 was not executed"> # </span><span class="tlaUNC" title="Branch 2 was not executed"> # </span><span class="tlaUNC" title="Branch 3 was not executed"> # </span>]:<span class="tlaUNC"> 0 : throw std::invalid_argument("Unknown selected signal: " + key.name);</span></span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : selected.push_back(signal.get());</span></span>
|
||||
<span id="L75"><span class="lineNum"> 75</span> :<span class="tlaGNC"> 4 : }</span></span>
|
||||
<span id="L76"><span class="lineNum"> 76</span> :<span class="tlaGNC"> 8 : }</span></span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> : : </span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> :<span class="tlaGNC"> 6341 : result.definition = definition;</span></span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> :<span class="tlaGNC"> 6341 : result.valid = true;</span></span>
|
||||
<span id="L80"><span class="lineNum"> 80</span> :<span class="tlaGNC"> 6341 : result.status = frame.data.size() < definition->dlc</span></span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> [<span class="tlaGBC" title="Branch 0 was taken 6238 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 103 times"> + </span>]:<span class="tlaGNC"> 6341 : ? FrameDecodeStatus::InsufficientPayload</span></span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> : : : FrameDecodeStatus::Valid;</span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> : : </span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> [<span class="tlaGBC" title="Branch 0 was taken 6341 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6341 : const SelectorState selector = ReadSelector(*definition, frame);</span></span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6337 times"> + </span>]:<span class="tlaGNC"> 6341 : const std::size_t count = selection != nullptr ? selected.size() : definition->signals.size();</span></span>
|
||||
<span id="L86"><span class="lineNum"> 86</span> [<span class="tlaGBC" title="Branch 0 was taken 6341 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6341 : result.signals.reserve(count);</span></span>
|
||||
<span id="L87"><span class="lineNum"> 87</span> [<span class="tlaGBC" title="Branch 0 was taken 6375 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6341 times"> + </span>]:<span class="tlaGNC"> 12716 : for (std::size_t index = 0U; index < count; ++index) {</span></span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6371 times"> + </span>]:<span class="tlaGNC"> 6375 : const DecodeSignal &signal = selection != nullptr ? *selected[index] : definition->signals[index];</span></span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> [<span class="tlaGBC" title="Branch 0 was taken 6375 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6375 : DecodedSignalValue decoded = DecodeOneSignal(signal, definition->dlc, frame, selector);</span></span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> [<span class="tlaGBC" title="Branch 0 was taken 44 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6331 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 31 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 13 times"> + </span>]:<span class="tlaGNC"> 6375 : if (!decoded.valid && decoded.status != SignalDecodeStatus::Inactive &&</span></span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 26 times"> + </span>]:<span class="tlaGNC"> 31 : result.status == FrameDecodeStatus::Valid)</span></span>
|
||||
<span id="L92"><span class="lineNum"> 92</span> :<span class="tlaGNC"> 5 : result.status = FrameDecodeStatus::SignalErrors;</span></span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> :<span class="tlaGNC"> 6375 : decoded.definition = std::shared_ptr<const DecodeSignal>(definition, &signal);</span></span>
|
||||
<span id="L94"><span class="lineNum"> 94</span> [<span class="tlaGBC" title="Branch 0 was taken 6375 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6375 : decoded.key = SignalKey(result.key, signal.name);</span></span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> [<span class="tlaGBC" title="Branch 0 was taken 6375 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6375 : result.signals.push_back(std::move(decoded));</span></span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> :<span class="tlaGNC"> 6375 : }</span></span>
|
||||
<span id="L97"><span class="lineNum"> 97</span> : : </span>
|
||||
<span id="L98"><span class="lineNum"> 98</span> :<span class="tlaGNC"> 6341 : return result;</span></span>
|
||||
<span id="L99"><span class="lineNum"> 99</span> :<span class="tlaGNC"> 6420 : }</span></span>
|
||||
<span id="L100"><span class="lineNum"> 100</span> : : </span>
|
||||
<span id="L101"><span class="lineNum"> 101</span> :<span class="tlaGNC"> 6396 : bool DbcDecoder::IsValidDefinition(const DecodeSignal &signal, std::uint8_t dlc) {</span></span>
|
||||
<span id="L102"><span class="lineNum"> 102</span> [<span class="tlaGBC" title="Branch 0 was taken 3144 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3252 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 3144 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 6396 : if ((signal.byteOrder != ByteOrder::Intel && signal.byteOrder != ByteOrder::Motorola) ||</span></span>
|
||||
<span id="L103"><span class="lineNum"> 103</span> [<span class="tlaGBC" title="Branch 0 was taken 85 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6311 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 85 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 6396 : (signal.valueType != ValueType::Unsigned && signal.valueType != ValueType::Signed) ||</span></span>
|
||||
<span id="L104"><span class="lineNum"> 104</span> [<span class="tlaGBC" title="Branch 0 was taken 71 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6325 times"> + </span>]:<span class="tlaGNC"> 6396 : (signal.multiplexing.role != MultiplexRole::Unconditional &&</span></span>
|
||||
<span id="L105"><span class="lineNum"> 105</span> [<span class="tlaGBC" title="Branch 0 was taken 29 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 42 times"> + </span>]:<span class="tlaGNC"> 71 : signal.multiplexing.role != MultiplexRole::Selector &&</span></span>
|
||||
<span id="L106"><span class="lineNum"> 106</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 29 times"> + </span>]:<span class="tlaGNC"> 29 : signal.multiplexing.role != MultiplexRole::Branch))</span></span>
|
||||
<span id="L107"><span class="lineNum"> 107</span> :<span class="tlaUNC"> 0 : return false;</span></span>
|
||||
<span id="L108"><span class="lineNum"> 108</span> : : </span>
|
||||
<span id="L109"><span class="lineNum"> 109</span> :<span class="tlaGNC"> 6396 : return IsValidSignalLayout(signal.startBit, signal.length,</span></span>
|
||||
<span id="L110"><span class="lineNum"> 110</span> :<span class="tlaGNC"> 6396 : signal.byteOrder == ByteOrder::Intel, dlc);</span></span>
|
||||
<span id="L111"><span class="lineNum"> 111</span> : : }</span>
|
||||
<span id="L112"><span class="lineNum"> 112</span> : : </span>
|
||||
<span id="L113"><span class="lineNum"> 113</span> :<span class="tlaGNC"> 6341 : DbcDecoder::SelectorState DbcDecoder::ReadSelector(const DecodeFrame &definition,</span></span>
|
||||
<span id="L114"><span class="lineNum"> 114</span> : : const RawCanFrame &frame) {</span>
|
||||
<span id="L115"><span class="lineNum"> 115</span> :<span class="tlaGNC"> 6341 : SelectorState selector;</span></span>
|
||||
<span id="L116"><span class="lineNum"> 116</span> :<span class="tlaGNC"> 6341 : std::size_t count = 0U;</span></span>
|
||||
<span id="L117"><span class="lineNum"> 117</span> [<span class="tlaGBC" title="Branch 0 was taken 6375 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6341 times"> + </span>]:<span class="tlaGNC"> 12716 : for (const DecodeSignal &signal: definition.signals) {</span></span>
|
||||
<span id="L118"><span class="lineNum"> 118</span> [<span class="tlaGBC" title="Branch 0 was taken 21 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6354 times"> + </span>]:<span class="tlaGNC"> 6375 : if (signal.multiplexing.role == MultiplexRole::Selector) {</span></span>
|
||||
<span id="L119"><span class="lineNum"> 119</span> :<span class="tlaGNC"> 21 : selector.definition = &signal;</span></span>
|
||||
<span id="L120"><span class="lineNum"> 120</span> :<span class="tlaGNC"> 21 : ++count;</span></span>
|
||||
<span id="L121"><span class="lineNum"> 121</span> : : }</span>
|
||||
<span id="L122"><span class="lineNum"> 122</span> : : }</span>
|
||||
<span id="L123"><span class="lineNum"> 123</span> [<span class="tlaGBC" title="Branch 0 was taken 6320 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 21 times"> + </span>]:<span class="tlaGNC"> 6341 : if (count != 1U)</span></span>
|
||||
<span id="L124"><span class="lineNum"> 124</span> :<span class="tlaGNC"> 6320 : return selector;</span></span>
|
||||
<span id="L125"><span class="lineNum"> 125</span> : : </span>
|
||||
<span id="L126"><span class="lineNum"> 126</span> :<span class="tlaGNC"> 21 : const DecodeSignal &signal = *selector.definition;</span></span>
|
||||
<span id="L127"><span class="lineNum"> 127</span> [<span class="tlaGBC" title="Branch 0 was taken 21 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 42 : selector.valid = signal.valueType == ValueType::Unsigned &&</span></span>
|
||||
<span id="L128"><span class="lineNum"> 128</span> [<span class="tlaGBC" title="Branch 0 was taken 21 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 21 : IsValidDefinition(signal, definition.dlc);</span></span>
|
||||
<span id="L129"><span class="lineNum"> 129</span> [<span class="tlaGBC" title="Branch 0 was taken 21 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 19 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2 times"> + </span>]:<span class="tlaGNC"> 21 : selector.available = selector.valid && ExtractUnsigned(frame.data, signal, selector.value);</span></span>
|
||||
<span id="L130"><span class="lineNum"> 130</span> :<span class="tlaGNC"> 21 : return selector;</span></span>
|
||||
<span id="L131"><span class="lineNum"> 131</span> : : }</span>
|
||||
<span id="L132"><span class="lineNum"> 132</span> : : </span>
|
||||
<span id="L133"><span class="lineNum"> 133</span> :<span class="tlaGNC"> 6375 : DecodedSignalValue DbcDecoder::DecodeOneSignal(const DecodeSignal &signal,</span></span>
|
||||
<span id="L134"><span class="lineNum"> 134</span> : : std::uint8_t dlc,</span>
|
||||
<span id="L135"><span class="lineNum"> 135</span> : : const RawCanFrame &frame,</span>
|
||||
<span id="L136"><span class="lineNum"> 136</span> : : const SelectorState &selector) {</span>
|
||||
<span id="L137"><span class="lineNum"> 137</span> :<span class="tlaGNC"> 6375 : DecodedSignalValue decoded;</span></span>
|
||||
<span id="L138"><span class="lineNum"> 138</span> :<span class="tlaGNC"> 6375 : std::uint64_t unsignedValue = 0U;</span></span>
|
||||
<span id="L139"><span class="lineNum"> 139</span> : : </span>
|
||||
<span id="L140"><span class="lineNum"> 140</span> [<span class="tlaGBC" title="Branch 0 was taken 6375 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 6375 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 12750 : if (!IsValidDefinition(signal, dlc) ||</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 4 was not taken"> - </span><span class="tlaGBC" title="Branch 5 was taken 6375 times"> + </span>]
|
||||
<span id="L141"><span class="lineNum"> 141</span> [<span class="tlaGBC" title="Branch 0 was taken 50 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6325 times"> + </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaGBC" title="Branch 3 was taken 50 times"> + </span>]:<span class="tlaGNC"> 6375 : (signal.multiplexing.role != MultiplexRole::Unconditional && !selector.valid)) {</span></span>
|
||||
<span id="L142"><span class="lineNum"> 142</span> :<span class="tlaUNC"> 0 : return decoded;</span></span>
|
||||
<span id="L143"><span class="lineNum"> 143</span> : : }</span>
|
||||
<span id="L144"><span class="lineNum"> 144</span> [<span class="tlaGBC" title="Branch 0 was taken 29 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6346 times"> + </span>]:<span class="tlaGNC"> 6375 : if (signal.multiplexing.role == MultiplexRole::Branch) {</span></span>
|
||||
<span id="L145"><span class="lineNum"> 145</span> [<span class="tlaGBC" title="Branch 0 was taken 23 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaGBC" title="Branch 3 was taken 23 times"> + </span>]:<span class="tlaGNC"> 29 : if (selector.definition->length < 64U && signal.multiplexing.value >= (std::uint64_t(1U) << selector.definition->length)) {</span></span>
|
||||
<span id="L146"><span class="lineNum"> 146</span> :<span class="tlaUNC"> 0 : return decoded;</span></span>
|
||||
<span id="L147"><span class="lineNum"> 147</span> : : }</span>
|
||||
<span id="L148"><span class="lineNum"> 148</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 26 times"> + </span>]:<span class="tlaGNC"> 29 : if (!selector.available) {</span></span>
|
||||
<span id="L149"><span class="lineNum"> 149</span> :<span class="tlaGNC"> 3 : decoded.status = SignalDecodeStatus::SelectorUnavailable;</span></span>
|
||||
<span id="L150"><span class="lineNum"> 150</span> :<span class="tlaGNC"> 3 : return decoded;</span></span>
|
||||
<span id="L151"><span class="lineNum"> 151</span> : : }</span>
|
||||
<span id="L152"><span class="lineNum"> 152</span> [<span class="tlaGBC" title="Branch 0 was taken 13 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 13 times"> + </span>]:<span class="tlaGNC"> 26 : if (signal.multiplexing.value != selector.value) {</span></span>
|
||||
<span id="L153"><span class="lineNum"> 153</span> :<span class="tlaGNC"> 13 : decoded.status = SignalDecodeStatus::Inactive;</span></span>
|
||||
<span id="L154"><span class="lineNum"> 154</span> :<span class="tlaGNC"> 13 : return decoded;</span></span>
|
||||
<span id="L155"><span class="lineNum"> 155</span> : : }</span>
|
||||
<span id="L156"><span class="lineNum"> 156</span> : : }</span>
|
||||
<span id="L157"><span class="lineNum"> 157</span> [<span class="tlaGBC" title="Branch 0 was taken 6359 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 23 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 6336 times"> + </span>]:<span class="tlaGNC"> 6359 : if (!ExtractUnsigned(frame.data, signal, unsignedValue)) {</span></span>
|
||||
<span id="L158"><span class="lineNum"> 158</span> :<span class="tlaGNC"> 23 : decoded.status = SignalDecodeStatus::InsufficientPayload;</span></span>
|
||||
<span id="L159"><span class="lineNum"> 159</span> :<span class="tlaGNC"> 23 : return decoded;</span></span>
|
||||
<span id="L160"><span class="lineNum"> 160</span> : : }</span>
|
||||
<span id="L161"><span class="lineNum"> 161</span> : : </span>
|
||||
<span id="L162"><span class="lineNum"> 162</span> [<span class="tlaGBC" title="Branch 0 was taken 81 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6255 times"> + </span>]:<span class="tlaGNC"> 6336 : if (signal.valueType == ValueType::Signed)</span></span>
|
||||
<span id="L163"><span class="lineNum"> 163</span> [<span class="tlaGBC" title="Branch 0 was taken 81 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 81 : decoded.rawValue = SignExtend(unsignedValue, signal.length);</span></span>
|
||||
<span id="L164"><span class="lineNum"> 164</span> : : else</span>
|
||||
<span id="L165"><span class="lineNum"> 165</span> :<span class="tlaGNC"> 6255 : decoded.rawValue = unsignedValue;</span></span>
|
||||
<span id="L166"><span class="lineNum"> 166</span> : : </span>
|
||||
<span id="L167"><span class="lineNum"> 167</span> : : double numericValue;</span>
|
||||
<span id="L168"><span class="lineNum"> 168</span> [<span class="tlaGBC" title="Branch 0 was taken 81 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6255 times"> + </span>]:<span class="tlaGNC"> 6336 : if (const std::int64_t *signedValue = std::get_if<std::int64_t>(&decoded.rawValue))</span></span>
|
||||
<span id="L169"><span class="lineNum"> 169</span> :<span class="tlaGNC"> 81 : numericValue = static_cast<double>(*signedValue);</span></span>
|
||||
<span id="L170"><span class="lineNum"> 170</span> : : else</span>
|
||||
<span id="L171"><span class="lineNum"> 171</span> [<span class="tlaGBC" title="Branch 0 was taken 6255 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6255 : numericValue = static_cast<double>(std::get<std::uint64_t>(decoded.rawValue));</span></span>
|
||||
<span id="L172"><span class="lineNum"> 172</span> :<span class="tlaGNC"> 6336 : decoded.physicalValue = numericValue * signal.factor + signal.offset;</span></span>
|
||||
<span id="L173"><span class="lineNum"> 173</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6331 times"> + </span>]:<span class="tlaGNC"> 6336 : if (!std::isfinite(decoded.physicalValue)) {</span></span>
|
||||
<span id="L174"><span class="lineNum"> 174</span> :<span class="tlaGNC"> 5 : decoded.status = SignalDecodeStatus::PhysicalConversionFailed;</span></span>
|
||||
<span id="L175"><span class="lineNum"> 175</span> :<span class="tlaGNC"> 5 : return decoded;</span></span>
|
||||
<span id="L176"><span class="lineNum"> 176</span> : : }</span>
|
||||
<span id="L177"><span class="lineNum"> 177</span> :<span class="tlaGNC"> 6331 : decoded.valid = true;</span></span>
|
||||
<span id="L178"><span class="lineNum"> 178</span> :<span class="tlaGNC"> 6331 : decoded.status = SignalDecodeStatus::Valid;</span></span>
|
||||
<span id="L179"><span class="lineNum"> 179</span> : : </span>
|
||||
<span id="L180"><span class="lineNum"> 180</span> :<span class="tlaGNC"> 6331 : return decoded;</span></span>
|
||||
<span id="L181"><span class="lineNum"> 181</span> :<span class="tlaUNC"> 0 : }</span></span>
|
||||
<span id="L182"><span class="lineNum"> 182</span> : : </span>
|
||||
<span id="L183"><span class="lineNum"> 183</span> :<span class="tlaGNC"> 6380 : bool DbcDecoder::ExtractUnsigned(const std::vector<std::uint8_t> &data,</span></span>
|
||||
<span id="L184"><span class="lineNum"> 184</span> : : const DecodeSignal &signal,</span>
|
||||
<span id="L185"><span class="lineNum"> 185</span> : : std::uint64_t &value) {</span>
|
||||
<span id="L186"><span class="lineNum"> 186</span> [<span class="tlaGBC" title="Branch 0 was taken 6380 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaGBC" title="Branch 3 was taken 6380 times"> + </span>]:<span class="tlaGNC"> 6380 : if ((signal.length == 0U) || (signal.length > 64U))</span></span>
|
||||
<span id="L187"><span class="lineNum"> 187</span> :<span class="tlaUNC"> 0 : return false;</span></span>
|
||||
<span id="L188"><span class="lineNum"> 188</span> : : </span>
|
||||
<span id="L189"><span class="lineNum"> 189</span> [<span class="tlaGBC" title="Branch 0 was taken 3242 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3138 times"> + </span>]:<span class="tlaGNC"> 6380 : if (signal.byteOrder == ByteOrder::Intel)</span></span>
|
||||
<span id="L190"><span class="lineNum"> 190</span> :<span class="tlaGNC"> 3242 : return ExtractIntel(data, signal.startBit, signal.length, value);</span></span>
|
||||
<span id="L191"><span class="lineNum"> 191</span> : : </span>
|
||||
<span id="L192"><span class="lineNum"> 192</span> :<span class="tlaGNC"> 3138 : return ExtractMotorola(data, signal.startBit, signal.length, value);</span></span>
|
||||
<span id="L193"><span class="lineNum"> 193</span> : : }</span>
|
||||
<span id="L194"><span class="lineNum"> 194</span> : : </span>
|
||||
<span id="L195"><span class="lineNum"> 195</span> :<span class="tlaGNC"> 3242 : bool DbcDecoder::ExtractIntel(const std::vector<std::uint8_t> &data,</span></span>
|
||||
<span id="L196"><span class="lineNum"> 196</span> : : std::uint32_t startBit,</span>
|
||||
<span id="L197"><span class="lineNum"> 197</span> : : std::uint32_t length,</span>
|
||||
<span id="L198"><span class="lineNum"> 198</span> : : std::uint64_t &value) {</span>
|
||||
<span id="L199"><span class="lineNum"> 199</span> :<span class="tlaGNC"> 3242 : value = 0U;</span></span>
|
||||
<span id="L200"><span class="lineNum"> 200</span> : : </span>
|
||||
<span id="L201"><span class="lineNum"> 201</span> [<span class="tlaGBC" title="Branch 0 was taken 102334 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3224 times"> + </span>]:<span class="tlaGNC"> 105558 : for (std::uint32_t bitIndex = 0U; bitIndex < length; ++bitIndex) {</span></span>
|
||||
<span id="L202"><span class="lineNum"> 202</span> :<span class="tlaGNC"> 102334 : const std::uint64_t absoluteBit = std::uint64_t(startBit) + bitIndex;</span></span>
|
||||
<span id="L203"><span class="lineNum"> 203</span> :<span class="tlaGNC"> 102334 : const std::uint64_t byteIndex = absoluteBit / 8U;</span></span>
|
||||
<span id="L204"><span class="lineNum"> 204</span> :<span class="tlaGNC"> 102334 : const std::uint32_t bitInByte = absoluteBit % 8U;</span></span>
|
||||
<span id="L205"><span class="lineNum"> 205</span> : : </span>
|
||||
<span id="L206"><span class="lineNum"> 206</span> [<span class="tlaGBC" title="Branch 0 was taken 18 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 102316 times"> + </span>]:<span class="tlaGNC"> 102334 : if (byteIndex >= data.size())</span></span>
|
||||
<span id="L207"><span class="lineNum"> 207</span> :<span class="tlaGNC"> 18 : return false;</span></span>
|
||||
<span id="L208"><span class="lineNum"> 208</span> : : </span>
|
||||
<span id="L209"><span class="lineNum"> 209</span> : : const std::uint64_t bitValue =</span>
|
||||
<span id="L210"><span class="lineNum"> 210</span> :<span class="tlaGNC"> 102316 : (static_cast<std::uint64_t>((data[byteIndex] >> bitInByte) & 0x01U) << bitIndex);</span></span>
|
||||
<span id="L211"><span class="lineNum"> 211</span> : : </span>
|
||||
<span id="L212"><span class="lineNum"> 212</span> :<span class="tlaGNC"> 102316 : value |= bitValue;</span></span>
|
||||
<span id="L213"><span class="lineNum"> 213</span> : : }</span>
|
||||
<span id="L214"><span class="lineNum"> 214</span> : : </span>
|
||||
<span id="L215"><span class="lineNum"> 215</span> :<span class="tlaGNC"> 3224 : return true;</span></span>
|
||||
<span id="L216"><span class="lineNum"> 216</span> : : }</span>
|
||||
<span id="L217"><span class="lineNum"> 217</span> : : </span>
|
||||
<span id="L218"><span class="lineNum"> 218</span> :<span class="tlaGNC"> 3138 : bool DbcDecoder::ExtractMotorola(const std::vector<std::uint8_t> &data,</span></span>
|
||||
<span id="L219"><span class="lineNum"> 219</span> : : std::uint32_t startBit,</span>
|
||||
<span id="L220"><span class="lineNum"> 220</span> : : std::uint32_t length,</span>
|
||||
<span id="L221"><span class="lineNum"> 221</span> : : std::uint64_t &value) {</span>
|
||||
<span id="L222"><span class="lineNum"> 222</span> : : /*</span>
|
||||
<span id="L223"><span class="lineNum"> 223</span> : : * DBC Motorola bit numbering:</span>
|
||||
<span id="L224"><span class="lineNum"> 224</span> : : * - startBit points to the most significant bit of the signal</span>
|
||||
<span id="L225"><span class="lineNum"> 225</span> : : * - inside a byte, bit numbering goes 7..0</span>
|
||||
<span id="L226"><span class="lineNum"> 226</span> : : * - crossing byte boundary moves to the next byte, bit 7</span>
|
||||
<span id="L227"><span class="lineNum"> 227</span> : : * Example: a signal starting at 7 follows 7..0, 15..8, 23..16.</span>
|
||||
<span id="L228"><span class="lineNum"> 228</span> : : */</span>
|
||||
<span id="L229"><span class="lineNum"> 229</span> : : </span>
|
||||
<span id="L230"><span class="lineNum"> 230</span> :<span class="tlaGNC"> 3138 : value = 0U;</span></span>
|
||||
<span id="L231"><span class="lineNum"> 231</span> : : </span>
|
||||
<span id="L232"><span class="lineNum"> 232</span> :<span class="tlaGNC"> 3138 : std::size_t byteIndex = startBit / 8U;</span></span>
|
||||
<span id="L233"><span class="lineNum"> 233</span> :<span class="tlaGNC"> 3138 : std::uint32_t bitInByte = startBit % 8U;</span></span>
|
||||
<span id="L234"><span class="lineNum"> 234</span> : : </span>
|
||||
<span id="L235"><span class="lineNum"> 235</span> [<span class="tlaGBC" title="Branch 0 was taken 101601 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3131 times"> + </span>]:<span class="tlaGNC"> 104732 : for (std::uint32_t bitIndex = 0U; bitIndex < length; ++bitIndex) {</span></span>
|
||||
<span id="L236"><span class="lineNum"> 236</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 101594 times"> + </span>]:<span class="tlaGNC"> 101601 : if (byteIndex >= data.size())</span></span>
|
||||
<span id="L237"><span class="lineNum"> 237</span> :<span class="tlaGNC"> 7 : return false;</span></span>
|
||||
<span id="L238"><span class="lineNum"> 238</span> : : </span>
|
||||
<span id="L239"><span class="lineNum"> 239</span> :<span class="tlaGNC"> 101594 : value <<= 1U;</span></span>
|
||||
<span id="L240"><span class="lineNum"> 240</span> :<span class="tlaGNC"> 101594 : value |= static_cast<std::uint64_t>((data[byteIndex] >> bitInByte) & 0x01U);</span></span>
|
||||
<span id="L241"><span class="lineNum"> 241</span> : : </span>
|
||||
<span id="L242"><span class="lineNum"> 242</span> [<span class="tlaGBC" title="Branch 0 was taken 12688 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 88906 times"> + </span>]:<span class="tlaGNC"> 101594 : if (bitInByte == 0U) {</span></span>
|
||||
<span id="L243"><span class="lineNum"> 243</span> :<span class="tlaGNC"> 12688 : ++byteIndex;</span></span>
|
||||
<span id="L244"><span class="lineNum"> 244</span> :<span class="tlaGNC"> 12688 : bitInByte = 7U;</span></span>
|
||||
<span id="L245"><span class="lineNum"> 245</span> : : } else</span>
|
||||
<span id="L246"><span class="lineNum"> 246</span> :<span class="tlaGNC"> 88906 : --bitInByte;</span></span>
|
||||
<span id="L247"><span class="lineNum"> 247</span> : : }</span>
|
||||
<span id="L248"><span class="lineNum"> 248</span> : : </span>
|
||||
<span id="L249"><span class="lineNum"> 249</span> :<span class="tlaGNC"> 3131 : return true;</span></span>
|
||||
<span id="L250"><span class="lineNum"> 250</span> : : }</span>
|
||||
<span id="L251"><span class="lineNum"> 251</span> : : </span>
|
||||
<span id="L252"><span class="lineNum"> 252</span> :<span class="tlaGNC"> 81 : std::int64_t DbcDecoder::SignExtend(std::uint64_t value, std::uint32_t bitLength) {</span></span>
|
||||
<span id="L253"><span class="lineNum"> 253</span> [<span class="tlaGBC" title="Branch 0 was taken 81 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaGBC" title="Branch 3 was taken 81 times"> + </span>]:<span class="tlaGNC"> 81 : if ((bitLength == 0U) || (bitLength > 64U))</span></span>
|
||||
<span id="L254"><span class="lineNum"> 254</span> :<span class="tlaUNC"> 0 : return 0;</span></span>
|
||||
<span id="L255"><span class="lineNum"> 255</span> : : </span>
|
||||
<span id="L256"><span class="lineNum"> 256</span> :<span class="tlaGNC"> 81 : const std::uint64_t signMask = std::uint64_t(1U) << (bitLength - 1U);</span></span>
|
||||
<span id="L257"><span class="lineNum"> 257</span> :<span class="tlaGNC"> 81 : const std::uint64_t valueMask = (bitLength == 64U)</span></span>
|
||||
<span id="L258"><span class="lineNum"> 258</span> [<span class="tlaGBC" title="Branch 0 was taken 68 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 13 times"> + </span>]:<span class="tlaGNC"> 81 : ? ~std::uint64_t(0U)</span></span>
|
||||
<span id="L259"><span class="lineNum"> 259</span> :<span class="tlaGNC"> 68 : : (std::uint64_t(1U) << bitLength) - 1U;</span></span>
|
||||
<span id="L260"><span class="lineNum"> 260</span> :<span class="tlaGNC"> 81 : value &= valueMask;</span></span>
|
||||
<span id="L261"><span class="lineNum"> 261</span> : : </span>
|
||||
<span id="L262"><span class="lineNum"> 262</span> [<span class="tlaGBC" title="Branch 0 was taken 41 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 40 times"> + </span>]:<span class="tlaGNC"> 81 : if ((value & signMask) == 0U)</span></span>
|
||||
<span id="L263"><span class="lineNum"> 263</span> :<span class="tlaGNC"> 41 : return static_cast<std::int64_t>(value);</span></span>
|
||||
<span id="L264"><span class="lineNum"> 264</span> : : </span>
|
||||
<span id="L265"><span class="lineNum"> 265</span> : : // The complemented magnitude fits int64_t, including for INT64_MIN.</span>
|
||||
<span id="L266"><span class="lineNum"> 266</span> :<span class="tlaGNC"> 40 : return -1 - static_cast<std::int64_t>((~value) & valueMask);</span></span>
|
||||
<span id="L267"><span class="lineNum"> 267</span> : : }</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,117 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_decoder.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_decoder.h<span style="font-size: 80%;"> (<a href="dbc_decoder.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">75.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">3</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="dbc_decoder.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.h.gcov.html#L61">DecodedSignalValue::GetValueDescription[abi:cxx11]() const</a></td>
|
||||
|
||||
<td class="coverFnHi">79</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.h.gcov.html#L27">RawCanFrame::RawCanFrame()</a></td>
|
||||
|
||||
<td class="coverFnHi">2220</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.h.gcov.html#L65">DecodedSignalValue::DecodedSignalValue()</a></td>
|
||||
|
||||
<td class="coverFnHi">6380</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.h.gcov.html#L78">DecodedFrameValue::DecodedFrameValue()</a></td>
|
||||
|
||||
<td class="coverFnHi">6409</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,117 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_decoder.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_decoder.h<span style="font-size: 80%;"> (<a href="dbc_decoder.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">75.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">3</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="dbc_decoder.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.h.gcov.html#L78">DecodedFrameValue::DecodedFrameValue()</a></td>
|
||||
|
||||
<td class="coverFnHi">6409</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.h.gcov.html#L65">DecodedSignalValue::DecodedSignalValue()</a></td>
|
||||
|
||||
<td class="coverFnHi">6380</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.h.gcov.html#L61">DecodedSignalValue::GetValueDescription[abi:cxx11]() const</a></td>
|
||||
|
||||
<td class="coverFnHi">79</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.h.gcov.html#L27">RawCanFrame::RawCanFrame()</a></td>
|
||||
|
||||
<td class="coverFnHi">2220</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,246 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_decoder.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_decoder.h<span style="font-size: 80%;"> (source / <a href="dbc_decoder.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">75.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">3</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : * @file dbc_decoder.h</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : * @brief CAN frame decoding API and result types.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : #ifndef DBC_DECODER_H</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : #define DBC_DECODER_H</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : </span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : : #include <cstdint></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : #include <variant></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : : #include <vector></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : </span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : : #include "decode_database.h"</span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : : </span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : : /**</span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : : * @brief Raw CAN frame used for runtime or trace decoding.</span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : : */</span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : : struct RawCanFrame {</span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : : std::uint32_t canId = 0U; /**< Normalized CAN ID. */</span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : : bool isExtended = false; /**< true for extended frame. */</span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : : std::vector<std::uint8_t> data; /**< Payload bytes. */</span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : : </span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> :<span class="tlaGNC"> 2220 : RawCanFrame() = default;</span></span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : : };</span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> : : </span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : : /** @brief Outcome of signal extraction and physical conversion. */</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : : enum class SignalDecodeStatus {</span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : : InvalidDefinition,</span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : : InsufficientPayload,</span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> : : SelectorUnavailable,</span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : : Inactive,</span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> : : Valid,</span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : : PhysicalConversionFailed</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : : };</span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> : : </span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : : /** Frame summary: short payload takes precedence over individual signal errors. */</span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> : : enum class FrameDecodeStatus {</span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> : : UnknownFrame,</span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> : : InsufficientPayload,</span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : : SignalErrors,</span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : : Valid,</span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> : : AmbiguousFrame</span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> : : };</span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> : : </span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> : : /**</span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> : : * @brief One decoded signal value.</span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> : : */</span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> : : struct DecodedSignalValue {</span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> : : std::shared_ptr<const DecodeSignal> definition; /**< Owning immutable definition. */</span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> : : SignalKey key; /**< Stable application identifier. */</span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> : : RawSignalValue rawValue = std::uint64_t(0U); /**< Exact raw value for Valid or PhysicalConversionFailed. */</span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> : : double physicalValue = 0.0; /**< Conversion result, possibly NaN/Inf on failure. */</span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> : : bool valid = false; /**< true if decoding succeeded. */</span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> : : SignalDecodeStatus status = SignalDecodeStatus::InvalidDefinition; /**< Detailed signal outcome. */</span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> : : </span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> : : /** Lookup using the raw integer; nullptr for invalid or unmapped values. */</span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> :<span class="tlaGNC"> 79 : const std::string *GetValueDescription() const {</span></span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> [<span class="tlaGBC" title="Branch 0 was taken 64 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 15 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 64 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 79 : return valid && definition ? FindValueDescription(definition->valueDescriptions, rawValue) : nullptr;</span></span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> : : }</span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> : : </span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> :<span class="tlaGNC"> 6380 : DecodedSignalValue() = default;</span></span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> : : };</span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> : : </span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> : : /**</span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> : : * @brief Fully decoded frame.</span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> : : */</span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> : : struct DecodedFrameValue {</span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> : : std::shared_ptr<const DecodeFrame> definition; /**< Owning immutable definition. */</span>
|
||||
<span id="L75"><span class="lineNum"> 75</span> : : FrameKey key; /**< Matched definition key; received key if unmatched. */</span>
|
||||
<span id="L76"><span class="lineNum"> 76</span> : : std::vector<DecodedSignalValue> signals; /**< Decoded signal values. */</span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> : : bool valid = false; /**< true if frame was matched. */</span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> : : FrameDecodeStatus status = FrameDecodeStatus::UnknownFrame; /**< Inspect signals for individual failures. */</span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> : : </span>
|
||||
<span id="L80"><span class="lineNum"> 80</span> :<span class="tlaGNC"> 6409 : DecodedFrameValue() = default;</span></span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> : : };</span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> : : </span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> : : /**</span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> : : * @brief Runtime CAN decoder using prebuilt decode database.</span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> : : */</span>
|
||||
<span id="L86"><span class="lineNum"> 86</span> : : class DbcDecoder {</span>
|
||||
<span id="L87"><span class="lineNum"> 87</span> : : public:</span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> : : /**</span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> : : * @brief Find exact CAN ID first, then unique PGN among explicitly J1939 definitions.</span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> : : * @param database Runtime decode database.</span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> : : * @param canId Normalized CAN ID.</span>
|
||||
<span id="L92"><span class="lineNum"> 92</span> : : * @param isExtended true for extended frame.</span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> : : * @return Owning immutable handle, or nullptr for missing/ambiguous matches. Safe across reload.</span>
|
||||
<span id="L94"><span class="lineNum"> 94</span> : : */</span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> : : std::shared_ptr<const DecodeFrame> FindFrame(const DecodeDatabase &database,</span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> : : std::uint32_t canId,</span>
|
||||
<span id="L97"><span class="lineNum"> 97</span> : : bool isExtended) const;</span>
|
||||
<span id="L98"><span class="lineNum"> 98</span> : : </span>
|
||||
<span id="L99"><span class="lineNum"> 99</span> : : /**</span>
|
||||
<span id="L100"><span class="lineNum"> 100</span> : : * @brief Decode one raw CAN frame.</span>
|
||||
<span id="L101"><span class="lineNum"> 101</span> : : * @param database Runtime decode database.</span>
|
||||
<span id="L102"><span class="lineNum"> 102</span> : : * @param frame Raw CAN frame.</span>
|
||||
<span id="L103"><span class="lineNum"> 103</span> : : * Short payloads decode available signals; bytes beyond declared DLC are ignored.</span>
|
||||
<span id="L104"><span class="lineNum"> 104</span> : : * @return Decoded frame value.</span>
|
||||
<span id="L105"><span class="lineNum"> 105</span> : : */</span>
|
||||
<span id="L106"><span class="lineNum"> 106</span> : : DecodedFrameValue Decode(const DecodeDatabase &database,</span>
|
||||
<span id="L107"><span class="lineNum"> 107</span> : : const RawCanFrame &frame) const;</span>
|
||||
<span id="L108"><span class="lineNum"> 108</span> : : </span>
|
||||
<span id="L109"><span class="lineNum"> 109</span> : : /**</span>
|
||||
<span id="L110"><span class="lineNum"> 110</span> : : * @brief Decode selected signals in selection order using stable keys.</span>
|
||||
<span id="L111"><span class="lineNum"> 111</span> : : * An empty selection returns no signals. Multiplex selectors are read internally.</span>
|
||||
<span id="L112"><span class="lineNum"> 112</span> : : * Frame status summarizes selected signals; short payload still takes precedence.</span>
|
||||
<span id="L113"><span class="lineNum"> 113</span> : : * Unknown/ambiguous frames return before checking the selection.</span>
|
||||
<span id="L114"><span class="lineNum"> 114</span> : : * For PGN matches, selection keys must belong to the matched DBC definition.</span>
|
||||
<span id="L115"><span class="lineNum"> 115</span> : : * @throws std::invalid_argument for a foreign frame key, unknown signal, or duplicate key.</span>
|
||||
<span id="L116"><span class="lineNum"> 116</span> : : */</span>
|
||||
<span id="L117"><span class="lineNum"> 117</span> : : DecodedFrameValue Decode(const DecodeDatabase &database,</span>
|
||||
<span id="L118"><span class="lineNum"> 118</span> : : const RawCanFrame &frame,</span>
|
||||
<span id="L119"><span class="lineNum"> 119</span> : : const std::vector<SignalKey> &selection) const;</span>
|
||||
<span id="L120"><span class="lineNum"> 120</span> : : </span>
|
||||
<span id="L121"><span class="lineNum"> 121</span> : : private:</span>
|
||||
<span id="L122"><span class="lineNum"> 122</span> : : static PgnLookupResult ResolveFrame(const DecodeDatabase &database,</span>
|
||||
<span id="L123"><span class="lineNum"> 123</span> : : std::uint32_t canId, bool isExtended);</span>
|
||||
<span id="L124"><span class="lineNum"> 124</span> : : </span>
|
||||
<span id="L125"><span class="lineNum"> 125</span> : : DecodedFrameValue DecodeImpl(const DecodeDatabase &database,</span>
|
||||
<span id="L126"><span class="lineNum"> 126</span> : : const RawCanFrame &frame,</span>
|
||||
<span id="L127"><span class="lineNum"> 127</span> : : const std::vector<SignalKey> *selection) const;</span>
|
||||
<span id="L128"><span class="lineNum"> 128</span> : : </span>
|
||||
<span id="L129"><span class="lineNum"> 129</span> : : static bool IsValidDefinition(const DecodeSignal &signal, std::uint8_t dlc);</span>
|
||||
<span id="L130"><span class="lineNum"> 130</span> : : </span>
|
||||
<span id="L131"><span class="lineNum"> 131</span> : : struct SelectorState {</span>
|
||||
<span id="L132"><span class="lineNum"> 132</span> : : const DecodeSignal *definition = nullptr;</span>
|
||||
<span id="L133"><span class="lineNum"> 133</span> : : bool valid = false;</span>
|
||||
<span id="L134"><span class="lineNum"> 134</span> : : bool available = false;</span>
|
||||
<span id="L135"><span class="lineNum"> 135</span> : : std::uint64_t value = 0U;</span>
|
||||
<span id="L136"><span class="lineNum"> 136</span> : : };</span>
|
||||
<span id="L137"><span class="lineNum"> 137</span> : : </span>
|
||||
<span id="L138"><span class="lineNum"> 138</span> : : static SelectorState ReadSelector(const DecodeFrame &definition, const RawCanFrame &frame);</span>
|
||||
<span id="L139"><span class="lineNum"> 139</span> : : static DecodedSignalValue DecodeOneSignal(const DecodeSignal &signal,</span>
|
||||
<span id="L140"><span class="lineNum"> 140</span> : : std::uint8_t dlc,</span>
|
||||
<span id="L141"><span class="lineNum"> 141</span> : : const RawCanFrame &frame,</span>
|
||||
<span id="L142"><span class="lineNum"> 142</span> : : const SelectorState &selector);</span>
|
||||
<span id="L143"><span class="lineNum"> 143</span> : : </span>
|
||||
<span id="L144"><span class="lineNum"> 144</span> : : static bool ExtractUnsigned(const std::vector<std::uint8_t> &data,</span>
|
||||
<span id="L145"><span class="lineNum"> 145</span> : : const DecodeSignal &signal,</span>
|
||||
<span id="L146"><span class="lineNum"> 146</span> : : std::uint64_t &value);</span>
|
||||
<span id="L147"><span class="lineNum"> 147</span> : : </span>
|
||||
<span id="L148"><span class="lineNum"> 148</span> : : static bool ExtractIntel(const std::vector<std::uint8_t> &data,</span>
|
||||
<span id="L149"><span class="lineNum"> 149</span> : : std::uint32_t startBit,</span>
|
||||
<span id="L150"><span class="lineNum"> 150</span> : : std::uint32_t length,</span>
|
||||
<span id="L151"><span class="lineNum"> 151</span> : : std::uint64_t &value);</span>
|
||||
<span id="L152"><span class="lineNum"> 152</span> : : </span>
|
||||
<span id="L153"><span class="lineNum"> 153</span> : : static bool ExtractMotorola(const std::vector<std::uint8_t> &data,</span>
|
||||
<span id="L154"><span class="lineNum"> 154</span> : : std::uint32_t startBit,</span>
|
||||
<span id="L155"><span class="lineNum"> 155</span> : : std::uint32_t length,</span>
|
||||
<span id="L156"><span class="lineNum"> 156</span> : : std::uint64_t &value);</span>
|
||||
<span id="L157"><span class="lineNum"> 157</span> : : </span>
|
||||
<span id="L158"><span class="lineNum"> 158</span> : : static std::int64_t SignExtend(std::uint64_t value, std::uint32_t bitLength);</span>
|
||||
<span id="L159"><span class="lineNum"> 159</span> : : };</span>
|
||||
<span id="L160"><span class="lineNum"> 160</span> : : </span>
|
||||
<span id="L161"><span class="lineNum"> 161</span> : : #endif /* DBC_DECODER_H */</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_diagnostic.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_diagnostic.h<span style="font-size: 80%;"> (<a href="dbc_diagnostic.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="dbc_diagnostic.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_diagnostic.h.gcov.html#L41">DbcParseResult::HasErrors() const</a></td>
|
||||
|
||||
<td class="coverFnHi">293</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_diagnostic.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_diagnostic.h<span style="font-size: 80%;"> (<a href="dbc_diagnostic.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="dbc_diagnostic.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_diagnostic.h.gcov.html#L41">DbcParseResult::HasErrors() const</a></td>
|
||||
|
||||
<td class="coverFnHi">293</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,137 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_diagnostic.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_diagnostic.h<span style="font-size: 80%;"> (source / <a href="dbc_diagnostic.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : // SPDX-License-Identifier: MIT</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : #ifndef DBC_DIAGNOSTIC_H</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : #define DBC_DIAGNOSTIC_H</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : </span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : #include "dbc_database.h"</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : #include <cstddef></span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : #include <string></span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : #include <vector></span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : </span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : /** @brief Warning or fatal parse error. */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : enum class DbcDiagnosticSeverity {</span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : Warning,</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : Error</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : };</span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : : </span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : /** Stable categories; messages provide the details. */</span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : : enum class DbcDiagnosticCode {</span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : FileOpenError,</span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : : FileReadError,</span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : : InvalidStatement,</span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : : InvalidValueDescription,</span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : : InvalidMultiplexing,</span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : : UnsupportedStatement,</span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : : InvalidAttribute,</span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : : UnsupportedAttribute</span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : : };</span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : : </span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : : /** @brief Diagnostic message and physical source location. */</span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> : : struct DbcDiagnostic {</span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : : DbcDiagnosticSeverity severity; /**< Message severity. */</span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> : : DbcDiagnosticCode code; /**< Stable diagnostic category. */</span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : : std::string filePath; /**< Input file path. */</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : : std::size_t lineNumber; /**< One-based physical line; zero for file-level errors. */</span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : : std::string message; /**< Human-readable diagnostic details. */</span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : : };</span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> : : </span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : : /** @brief Parsed database and diagnostics; the database is empty on error. */</span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> : : struct DbcParseResult {</span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : : DbcDatabase database; /**< Parsed content, published only on success. */</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : : std::vector<DbcDiagnostic> diagnostics; /**< Warnings and the first error, if any. */</span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> : : </span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : : /** @brief Return whether any diagnostic has error severity. */</span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> :<span class="tlaGNC"> 293 : bool HasErrors() const {</span></span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> [<span class="tlaGBC" title="Branch 0 was taken 283 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 44 times"> + </span>]:<span class="tlaGNC"> 327 : for (const DbcDiagnostic &diagnostic: diagnostics) {</span></span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> [<span class="tlaGBC" title="Branch 0 was taken 249 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 34 times"> + </span>]:<span class="tlaGNC"> 283 : if (diagnostic.severity == DbcDiagnosticSeverity::Error)</span></span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> :<span class="tlaGNC"> 249 : return true;</span></span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : : }</span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> :<span class="tlaGNC"> 44 : return false;</span></span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> : : }</span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> : : };</span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> : : </span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> : : #endif /* DBC_DIAGNOSTIC_H */</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,117 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_parser.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_parser.cpp<span style="font-size: 80%;"> (<a href="dbc_parser.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">99.0 %</td>
|
||||
<td class="headerCovTableEntry">99</td>
|
||||
<td class="headerCovTableEntry">98</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">70.4 %</td>
|
||||
<td class="headerCovTableEntry">216</td>
|
||||
<td class="headerCovTableEntry">152</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="dbc_parser.cpp.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_parser.cpp.gcov.html#L21">(anonymous namespace)::ReadCommentLines(std::basic_ifstream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long&)</a></td>
|
||||
|
||||
<td class="coverFnHi">140</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_parser.cpp.gcov.html#L50">(anonymous namespace)::StatementErrorCode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">349</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_parser.cpp.gcov.html#L59">DbcParser::ParseFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">656</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_parser.cpp.gcov.html#L72">DbcParser::ParseFileWithDiagnostics(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">951</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,117 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_parser.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_parser.cpp<span style="font-size: 80%;"> (<a href="dbc_parser.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">99.0 %</td>
|
||||
<td class="headerCovTableEntry">99</td>
|
||||
<td class="headerCovTableEntry">98</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">70.4 %</td>
|
||||
<td class="headerCovTableEntry">216</td>
|
||||
<td class="headerCovTableEntry">152</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="dbc_parser.cpp.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_parser.cpp.gcov.html#L21">(anonymous namespace)::ReadCommentLines(std::basic_ifstream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long&)</a></td>
|
||||
|
||||
<td class="coverFnHi">140</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_parser.cpp.gcov.html#L50">(anonymous namespace)::StatementErrorCode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">349</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_parser.cpp.gcov.html#L59">DbcParser::ParseFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">656</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_parser.cpp.gcov.html#L72">DbcParser::ParseFileWithDiagnostics(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">951</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,261 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_parser.cpp</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_parser.cpp<span style="font-size: 80%;"> (source / <a href="dbc_parser.cpp.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">99.0 %</td>
|
||||
<td class="headerCovTableEntry">99</td>
|
||||
<td class="headerCovTableEntry">98</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">70.4 %</td>
|
||||
<td class="headerCovTableEntry">216</td>
|
||||
<td class="headerCovTableEntry">152</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : * @file dbc_parser.cpp</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : * @brief DBC file reading and diagnostic collection.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : #include "dbc_parser.h"</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : #include "dbc_statement_handler.h"</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : </span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : : #include "text_utils.h"</span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : #include <fstream></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : : #include <sstream></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : #include <stdexcept></span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : : #include <utility></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : : </span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : : namespace {</span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : : // Read through the closing unescaped quote, preserving comment whitespace.</span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> :<span class="tlaGNC"> 140 : void ReadCommentLines(std::ifstream &input, std::string &statement,</span></span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : : std::size_t &lineNumber) {</span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> :<span class="tlaGNC"> 140 : bool inQuote = false;</span></span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> :<span class="tlaGNC"> 140 : bool escaped = false;</span></span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : std::string part = statement;</span></span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : : for (;;) {</span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> [<span class="tlaGBC" title="Branch 0 was taken 3662 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 15 times"> + </span>]:<span class="tlaGNC"> 3677 : for (const char character: part) {</span></span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3657 times"> + </span>]:<span class="tlaGNC"> 3662 : if (escaped) {</span></span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> :<span class="tlaGNC"> 5 : escaped = false;</span></span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> [<span class="tlaGBC" title="Branch 0 was taken 1289 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2368 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1282 times"> + </span>]:<span class="tlaGNC"> 3657 : } else if (inQuote && character == '\\') {</span></span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> :<span class="tlaGNC"> 7 : escaped = true;</span></span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> [<span class="tlaGBC" title="Branch 0 was taken 268 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3382 times"> + </span>]:<span class="tlaGNC"> 3650 : } else if (character == '"') {</span></span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> [<span class="tlaGBC" title="Branch 0 was taken 132 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 136 times"> + </span>]:<span class="tlaGNC"> 268 : if (inQuote)</span></span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> :<span class="tlaGNC"> 132 : return;</span></span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> :<span class="tlaGNC"> 136 : inQuote = true;</span></span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> : : }</span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : : }</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> [<span class="tlaGBC" title="Branch 0 was taken 11 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 11 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 15 : if (!inQuote || !std::getline(input, part))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 11 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 8 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 7 times"> + </span>]
|
||||
<span id="L41"><span class="lineNum"> 41</span> :<span class="tlaGNC"> 8 : return;</span></span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> :<span class="tlaGNC"> 7 : ++lineNumber;</span></span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 5 times"> + </span> :<span class="tlaGNC"> 7 : if (!part.empty() && part.back() == '\r')</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 5 times"> + </span>]
|
||||
<span id="L44"><span class="lineNum"> 44</span> :<span class="tlaGNC"> 2 : part.pop_back();</span></span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 7 : statement += '\n';</span></span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 7 : statement += part;</span></span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : : // A physical newline cannot escape the next line's first character.</span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> :<span class="tlaGNC"> 7 : escaped = false;</span></span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> :<span class="tlaGNC"> 7 : }</span></span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> :<span class="tlaGNC"> 140 : }</span></span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> : : </span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> :<span class="tlaGNC"> 349 : DbcDiagnosticCode StatementErrorCode(const std::string &keyword) {</span></span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 345 times"> + </span>]:<span class="tlaGNC"> 349 : if (keyword == "SG_MUL_VAL_")</span></span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> :<span class="tlaGNC"> 4 : return DbcDiagnosticCode::UnsupportedStatement;</span></span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> [<span class="tlaGBC" title="Branch 0 was taken 25 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 320 times"> + </span>]:<span class="tlaGNC"> 345 : if (keyword == "VAL_")</span></span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> :<span class="tlaGNC"> 25 : return DbcDiagnosticCode::InvalidValueDescription;</span></span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> :<span class="tlaGNC"> 320 : return DbcDiagnosticCode::InvalidStatement;</span></span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> : : }</span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> : : }</span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> : : </span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> :<span class="tlaGNC"> 656 : DbcDatabase DbcParser::ParseFile(const std::string &filePath) const {</span></span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> [<span class="tlaGBC" title="Branch 0 was taken 656 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 656 : DbcParseResult result = ParseFileWithDiagnostics(filePath);</span></span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> [<span class="tlaGBC" title="Branch 0 was taken 545 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 117 times"> + </span>]:<span class="tlaGNC"> 662 : for (const DbcDiagnostic &diagnostic : result.diagnostics) {</span></span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> [<span class="tlaGBC" title="Branch 0 was taken 539 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6 times"> + </span>]:<span class="tlaGNC"> 545 : if (diagnostic.severity == DbcDiagnosticSeverity::Error) {</span></span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 536 times"> + </span>]:<span class="tlaGNC"> 539 : if (diagnostic.lineNumber == 0U)</span></span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 3 : throw std::runtime_error(diagnostic.message);</span></span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> [<span class="tlaGBC" title="Branch 0 was taken 536 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1072 : throw std::runtime_error(diagnostic.filePath + ":" +</span></span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> [<span class="tlaGBC" title="Branch 0 was taken 536 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 536 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 1608 : std::to_string(diagnostic.lineNumber) + ": " + diagnostic.message);</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 536 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 536 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 536 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span>]
|
||||
<span id="L69"><span class="lineNum"> 69</span> : : }</span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> : : }</span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> :<span class="tlaGNC"> 234 : return std::move(result.database);</span></span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> :<span class="tlaGNC"> 656 : }</span></span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> : : </span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> :<span class="tlaGNC"> 951 : DbcParseResult DbcParser::ParseFileWithDiagnostics(const std::string &filePath) const {</span></span>
|
||||
<span id="L75"><span class="lineNum"> 75</span> :<span class="tlaGNC"> 951 : DbcParseResult result;</span></span>
|
||||
<span id="L76"><span class="lineNum"> 76</span> [<span class="tlaGBC" title="Branch 0 was taken 951 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 951 : std::ifstream input(filePath.c_str());</span></span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 948 times"> + </span>]:<span class="tlaGNC"> 951 : if (!input.is_open()) {</span></span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> :<span class="tlaGNC"> 3 : result.diagnostics.push_back({DbcDiagnosticSeverity::Error,</span></span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> : : DbcDiagnosticCode::FileOpenError, filePath, 0U,</span>
|
||||
<span id="L80"><span class="lineNum"> 80</span> : : "Failed to open DBC file: " + filePath});</span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> :<span class="tlaGNC"> 3 : return result;</span></span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> : : }</span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> : : </span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> :<span class="tlaGNC"> 948 : DbcDatabase database;</span></span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> :<span class="tlaGNC"> 948 : DbcParseContext context{database, nullptr};</span></span>
|
||||
<span id="L86"><span class="lineNum"> 86</span> :<span class="tlaGNC"> 948 : context.enableJ1939 = options.enableJ1939;</span></span>
|
||||
<span id="L87"><span class="lineNum"> 87</span> [<span class="tlaGBC" title="Branch 0 was taken 948 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 948 : const DbcStatementDispatcher dispatcher;</span></span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> :<span class="tlaGNC"> 948 : bool inNamespace = false;</span></span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> :<span class="tlaGNC"> 948 : std::size_t lineNumber = 0U;</span></span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> :<span class="tlaGNC"> 948 : std::string line;</span></span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> [<span class="tlaGBC" title="Branch 0 was taken 3097 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 3097 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 3097 : while (std::getline(input, line)) {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2498 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 599 times"> + </span>]
|
||||
<span id="L92"><span class="lineNum"> 92</span> :<span class="tlaGNC"> 2498 : ++lineNumber;</span></span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> [<span class="tlaGBC" title="Branch 0 was taken 2162 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 336 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 19 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2143 times"> + </span> :<span class="tlaGNC"> 2498 : if (!line.empty() && line.back() == '\r')</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 19 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 2479 times"> + </span>]
|
||||
<span id="L94"><span class="lineNum"> 94</span> :<span class="tlaGNC"> 19 : line.pop_back();</span></span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> [<span class="tlaGBC" title="Branch 0 was taken 2498 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2498 : const std::string rawLine = line;</span></span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> :<span class="tlaGNC"> 2498 : const std::size_t statementLine = lineNumber;</span></span>
|
||||
<span id="L97"><span class="lineNum"> 97</span> [<span class="tlaGBC" title="Branch 0 was taken 2498 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2498 : line = dbc_detail::TrimText(line);</span></span>
|
||||
<span id="L98"><span class="lineNum"> 98</span> [<span class="tlaGBC" title="Branch 0 was taken 342 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2156 times"> + </span>]:<span class="tlaGNC"> 2498 : if (line.empty())</span></span>
|
||||
<span id="L99"><span class="lineNum"> 99</span> :<span class="tlaGNC"> 342 : continue;</span></span>
|
||||
<span id="L100"><span class="lineNum"> 100</span> : : </span>
|
||||
<span id="L101"><span class="lineNum"> 101</span> [<span class="tlaGBC" title="Branch 0 was taken 2156 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2156 : std::istringstream tokens(line);</span></span>
|
||||
<span id="L102"><span class="lineNum"> 102</span> :<span class="tlaGNC"> 2156 : std::string keyword;</span></span>
|
||||
<span id="L103"><span class="lineNum"> 103</span> :<span class="tlaGNC"> 2156 : std::string argument;</span></span>
|
||||
<span id="L104"><span class="lineNum"> 104</span> [<span class="tlaGBC" title="Branch 0 was taken 2156 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2156 : tokens >> keyword;</span></span>
|
||||
<span id="L105"><span class="lineNum"> 105</span> [<span class="tlaGBC" title="Branch 0 was taken 2156 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2156 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 2156 : const bool hasArgument = static_cast<bool>(tokens >> argument);</span></span>
|
||||
<span id="L106"><span class="lineNum"> 106</span> [<span class="tlaGBC" title="Branch 0 was taken 39 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 39 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 44 : if (inNamespace && !hasArgument && keyword != "BO_" && keyword != "SG_" &&</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 37 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 37 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 36 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 1 time"> + </span>]
|
||||
<span id="L107"><span class="lineNum"> 107</span> [<span class="tlaGBC" title="Branch 0 was taken 36 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 35 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1 time"> + </span> :<span class="tlaGNC"> 36 : keyword != "BS_" && keyword != "BS_:" &&</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 35 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 31 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 4 times"> + </span>]
|
||||
<span id="L108"><span class="lineNum"> 108</span> [<span class="tlaGBC" title="Branch 0 was taken 44 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2112 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 31 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 2200 : keyword != "BU_" && keyword != "BU_:")</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 30 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 6 was taken 30 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 29 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 10 was taken 29 times"> + </span><span class="tlaGBC" title="Branch 11 was taken 2127 times"> + </span>]
|
||||
<span id="L109"><span class="lineNum"> 109</span> :<span class="tlaGNC"> 29 : continue; // NS_ lists syntax symbols; BO_, SG_, BS_ and BU_ end the list.</span></span>
|
||||
<span id="L110"><span class="lineNum"> 110</span> [<span class="tlaGBC" title="Branch 0 was taken 2127 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2115 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 12 times"> + </span> :<span class="tlaGNC"> 2127 : inNamespace = keyword == "NS_" || keyword == "NS_:";</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2115 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 2112 times"> + </span>]
|
||||
<span id="L111"><span class="lineNum"> 111</span> : : </span>
|
||||
<span id="L112"><span class="lineNum"> 112</span> [<span class="tlaGBC" title="Branch 0 was taken 2127 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 140 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1987 times"> + </span>]:<span class="tlaGNC"> 2127 : if (keyword == "CM_") {</span></span>
|
||||
<span id="L113"><span class="lineNum"> 113</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : line = rawLine;</span></span>
|
||||
<span id="L114"><span class="lineNum"> 114</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : ReadCommentLines(input, line, lineNumber);</span></span>
|
||||
<span id="L115"><span class="lineNum"> 115</span> : : }</span>
|
||||
<span id="L116"><span class="lineNum"> 116</span> : : </span>
|
||||
<span id="L117"><span class="lineNum"> 117</span> : : try {</span>
|
||||
<span id="L118"><span class="lineNum"> 118</span> :<span class="tlaGNC"> 2127 : context.lineNumber = statementLine;</span></span>
|
||||
<span id="L119"><span class="lineNum"> 119</span> [<span class="tlaGBC" title="Branch 0 was taken 1778 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 349 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 37 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1741 times"> + </span>]:<span class="tlaGNC"> 2127 : if (!dispatcher.Dispatch(line, context)) {</span></span>
|
||||
<span id="L120"><span class="lineNum"> 120</span> :<span class="tlaGNC"> 37 : result.diagnostics.push_back({DbcDiagnosticSeverity::Warning,</span></span>
|
||||
<span id="L121"><span class="lineNum"> 121</span> : : DbcDiagnosticCode::UnsupportedStatement,</span>
|
||||
<span id="L122"><span class="lineNum"> 122</span> : : filePath, statementLine,</span>
|
||||
<span id="L123"><span class="lineNum"> 123</span> :<span class="tlaGNC"> 37 : "Unsupported statement '" + keyword +</span></span>
|
||||
<span id="L124"><span class="lineNum"> 124</span> : : "' is ignored; decoding or metadata may be incomplete."});</span>
|
||||
<span id="L125"><span class="lineNum"> 125</span> : : }</span>
|
||||
<span id="L126"><span class="lineNum"> 126</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 349 times"> + </span>]:<span class="tlaGNC"> 349 : } catch (const std::exception &error) {</span></span>
|
||||
<span id="L127"><span class="lineNum"> 127</span> :<span class="tlaGNC"> 349 : result.diagnostics.push_back({DbcDiagnosticSeverity::Error,</span></span>
|
||||
<span id="L128"><span class="lineNum"> 128</span> :<span class="tlaGNC"> 698 : StatementErrorCode(keyword), filePath,</span></span>
|
||||
<span id="L129"><span class="lineNum"> 129</span> :<span class="tlaUNC"> 0 : statementLine, error.what()});</span></span>
|
||||
<span id="L130"><span class="lineNum"> 130</span> :<span class="tlaGNC"> 349 : return result;</span></span>
|
||||
<span id="L131"><span class="lineNum"> 131</span> :<span class="tlaGNC"> 349 : }</span></span>
|
||||
<span id="L132"><span class="lineNum"> 132</span> [<span class="tlaGBC" title="Branch 0 was taken 1778 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 29 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 349 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1778 times"> + </span> :<span class="tlaGNC"> 3632 : }</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 29 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 349 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 1778 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 29 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 349 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 1778 times"> + </span><span class="tlaGBC" title="Branch 10 was taken 371 times"> + </span><span class="tlaGBC" title="Branch 11 was taken 349 times"> + </span>]
|
||||
<span id="L133"><span class="lineNum"> 133</span> : : </span>
|
||||
<span id="L134"><span class="lineNum"> 134</span> [<span class="tlaGBC" title="Branch 0 was taken 599 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 597 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2 times"> + </span> :<span class="tlaGNC"> 599 : if (input.bad() || !input.eof()) {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 597 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaUNC" title="Branch 6 was not taken"> - </span><span class="tlaGBC" title="Branch 7 was taken 597 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 2 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 597 times"> + </span>]
|
||||
<span id="L135"><span class="lineNum"> 135</span> :<span class="tlaGNC"> 2 : result.diagnostics.push_back({DbcDiagnosticSeverity::Error,</span></span>
|
||||
<span id="L136"><span class="lineNum"> 136</span> : : DbcDiagnosticCode::FileReadError, filePath, 0U,</span>
|
||||
<span id="L137"><span class="lineNum"> 137</span> : : "Failed to read DBC file: " + filePath});</span>
|
||||
<span id="L138"><span class="lineNum"> 138</span> :<span class="tlaGNC"> 2 : return result;</span></span>
|
||||
<span id="L139"><span class="lineNum"> 139</span> : : }</span>
|
||||
<span id="L140"><span class="lineNum"> 140</span> : : </span>
|
||||
<span id="L141"><span class="lineNum"> 141</span> : : try {</span>
|
||||
<span id="L142"><span class="lineNum"> 142</span> [<span class="tlaGBC" title="Branch 0 was taken 587 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 10 times"> + </span>]:<span class="tlaGNC"> 597 : context.ResolveComments(filePath);</span></span>
|
||||
<span id="L143"><span class="lineNum"> 143</span> [<span class="tlaGBC" title="Branch 0 was taken 576 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 11 times"> + </span>]:<span class="tlaGNC"> 587 : context.ResolveValueDescriptions(filePath);</span></span>
|
||||
<span id="L144"><span class="lineNum"> 144</span> [<span class="tlaGBC" title="Branch 0 was taken 549 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 27 times"> + </span>]:<span class="tlaGNC"> 576 : context.ValidateMultiplexing(filePath);</span></span>
|
||||
<span id="L145"><span class="lineNum"> 145</span> [<span class="tlaGBC" title="Branch 0 was taken 163 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 386 times"> + </span>]:<span class="tlaGNC"> 549 : context.ResolveAttributes(filePath, result.diagnostics);</span></span>
|
||||
<span id="L146"><span class="lineNum"> 146</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 434 times"> + </span>]:<span class="tlaGNC"> 434 : } catch (const DbcDiagnosticError &error) {</span></span>
|
||||
<span id="L147"><span class="lineNum"> 147</span> [<span class="tlaGBC" title="Branch 0 was taken 434 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 434 : result.diagnostics.push_back(error.diagnostic);</span></span>
|
||||
<span id="L148"><span class="lineNum"> 148</span> :<span class="tlaGNC"> 434 : return result;</span></span>
|
||||
<span id="L149"><span class="lineNum"> 149</span> [<span class="tlaGBC" title="Branch 0 was taken 434 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 434 : }</span></span>
|
||||
<span id="L150"><span class="lineNum"> 150</span> :<span class="tlaGNC"> 163 : result.database = std::move(database);</span></span>
|
||||
<span id="L151"><span class="lineNum"> 151</span> :<span class="tlaGNC"> 163 : return result;</span></span>
|
||||
<span id="L152"><span class="lineNum"> 152</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 1691 : }</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 37 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 37 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span><span class="tlaGBC" title="Branch 10 was taken 37 times"> + </span><span class="tlaUNC" title="Branch 11 was not taken"> - </span><span class="tlaGBC" title="Branch 12 was taken 37 times"> + </span><span class="tlaUNC" title="Branch 13 was not taken"> - </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 14 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 15 was not taken"> - </span><span class="tlaGBC" title="Branch 16 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 17 was not taken"> - </span><span class="tlaGBC" title="Branch 18 was taken 2 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 19 was not taken"> - </span><span class="tlaUNC" title="Branch 20 was not taken"> - </span><span class="tlaUNC" title="Branch 21 was not taken"> - </span><span class="tlaUNC" title="Branch 22 was not taken"> - </span><span class="tlaUNC" title="Branch 23 was not taken"> - </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 24 was taken 349 times"> + </span><span class="tlaUNC" title="Branch 25 was not taken"> - </span><span class="tlaGBC" title="Branch 26 was taken 349 times"> + </span><span class="tlaUNC" title="Branch 27 was not taken"> - </span><span class="tlaGBC" title="Branch 28 was taken 349 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 29 was not taken"> - </span><span class="tlaGBC" title="Branch 30 was taken 349 times"> + </span><span class="tlaUNC" title="Branch 31 was not taken"> - </span><span class="tlaUNC" title="Branch 32 was not taken"> - </span><span class="tlaUNC" title="Branch 33 was not taken"> - </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 34 was not taken"> - </span><span class="tlaUNC" title="Branch 35 was not taken"> - </span>]
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,84 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_parser.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_parser.h<span style="font-size: 80%;"> (<a href="dbc_parser.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="dbc_parser.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_parser.h.gcov.html#L42">DbcParser::DbcParser(DbcParserOptions)</a></td>
|
||||
|
||||
<td class="coverFnHi">930</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,84 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_parser.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_parser.h<span style="font-size: 80%;"> (<a href="dbc_parser.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="dbc_parser.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_parser.h.gcov.html#L42">DbcParser::DbcParser(DbcParserOptions)</a></td>
|
||||
|
||||
<td class="coverFnHi">930</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,145 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_parser.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_parser.h<span style="font-size: 80%;"> (source / <a href="dbc_parser.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : * @file dbc_parser.h</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : * @brief DBC file parser and interpretation options.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : #ifndef DBC_PARSER_H</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : #define DBC_PARSER_H</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : </span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : #include <string></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : </span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : #include "dbc_diagnostic.h"</span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : </span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : /** Explicit interpretation applied to extended frames in this file. */</span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : struct DbcParserOptions {</span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : bool enableJ1939 = false; /**< Derive J1939 PGNs from extended CAN IDs. */</span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : };</span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : </span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : /**</span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : * @brief Minimal DBC parser.</span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : *</span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : * Supports:</span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : * - BO_</span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> : * - SG_</span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : * - CM_ BO_</span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> : * - CM_ SG_</span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : * - basic M / mN multiplexing</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : * - VAL_ signal value descriptions</span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : * - BA_DEF_, BA_DEF_DEF_, BA_ typed attributes, frame format and cycle time</span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : *</span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> : * Frame/signal comments support multiline quoted text and deferred references.</span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : *</span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> : * Reports unsupported statements as warnings, except SG_MUL_VAL_ which is</span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : * an error. VERSION, NS_, BS_, BU_ and NS_ symbol declarations stay quiet.</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : */</span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> : class DbcParser {</span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : public:</span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> : /** @brief Create a parser with explicit extended-frame interpretation options. */</span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> <span class="tlaGNC"> 930 : explicit DbcParser(DbcParserOptions options = {}) : options(options) {}</span></span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> : </span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : /**</span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : * @brief Parse DBC file.</span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> : * @param filePath Path to input file.</span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> : * @return Parsed database.</span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> : * @throws std::runtime_error on file or parse errors.</span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> : * Line parse errors include the file path and one-based line number.</span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> : * Duplicate normalized CAN IDs of the same frame type and duplicate signal</span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> : * names within a frame are rejected at the repeated definition's line.</span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> : */</span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> : DbcDatabase ParseFile(const std::string &filePath) const;</span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> : </span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> : /**</span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> : * @brief Parse with warnings and a structured first error instead of throwing.</span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> : * @return Valid database with diagnostics; empty database on error.</span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> : * File errors use line zero; statement errors use physical one-based lines.</span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> : * Warnings indicate ignored syntax and possible incomplete decoding.</span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> : */</span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> : DbcParseResult ParseFileWithDiagnostics(const std::string &filePath) const;</span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> : </span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> : private:</span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> : DbcParserOptions options;</span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> : };</span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> : </span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> : #endif /* DBC_PARSER_H */</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,333 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_statement_handler.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_statement_handler.cpp<span style="font-size: 80%;"> (<a href="dbc_statement_handler.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">99.5 %</td>
|
||||
<td class="headerCovTableEntry">370</td>
|
||||
<td class="headerCovTableEntry">368</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">31</td>
|
||||
<td class="headerCovTableEntry">31</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">68.4 %</td>
|
||||
<td class="headerCovTableEntry">820</td>
|
||||
<td class="headerCovTableEntry">561</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="dbc_statement_handler.cpp.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L449">DbcUnsupportedMultiplexingHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">4</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L497">(anonymous namespace)::SignalsOverlap(SignalInfo const&, SignalInfo const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">57</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L464">(anonymous namespace)::AreMutuallyExclusive(SignalInfo const&, SignalInfo const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">58</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L115">(anonymous namespace)::FindUniqueSignal(FrameInfo&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">62</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L386">DbcHeaderHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">62</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L101">(anonymous namespace)::FindUniqueFrame(DbcDatabase&, unsigned int, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">67</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L400">DbcValueDescriptionHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">94</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L91">(anonymous namespace)::UnescapeDescription(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">96</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L71">(anonymous namespace)::ParseValueKey(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">104</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L454">(anonymous namespace)::SignalBits(SignalInfo const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">114</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L304">DbcCommentHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">149</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L470">(anonymous namespace)::ValidateBranch(SignalInfo const&, SignalInfo const*)</a></td>
|
||||
|
||||
<td class="coverFnHi">193</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L480">(anonymous namespace)::FindSelector(FrameInfo const&, std::vector<unsigned long, std::allocator<unsigned long> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">280</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L141">(anonymous namespace)::SplitReceivers(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">317</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L266">(anonymous namespace)::FindSignalByName(FrameInfo&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">364</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L53">(anonymous namespace)::ParseMultiplexingMarker(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">496</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L204">DbcSignalHandler::ParseSignalLine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">521</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L290">DbcSignalHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">526</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L510">DbcParseContext::ValidateMultiplexing(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">576</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L433">DbcParseContext::ResolveValueDescriptions(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">592</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L350">DbcParseContext::ResolveComments(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">597</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L276">DbcFrameHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">649</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L166">DbcFrameHandler::ParseFrameLine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">649</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L255">(anonymous namespace)::FindFrameById(DbcDatabase&, unsigned int, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">698</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L23">(anonymous namespace)::ParseCanId(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">784</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L155">(anonymous namespace)::NormalizeCanId(unsigned int, unsigned int&, bool&)</a></td>
|
||||
|
||||
<td class="coverFnHi">803</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L129">(anonymous namespace)::NextSignalBit(unsigned long, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">884</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L368">DbcStatementDispatcher::DbcStatementDispatcher()</a></td>
|
||||
|
||||
<td class="coverFnHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L32">(anonymous namespace)::ParsePhysicalValue(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)</a></td>
|
||||
|
||||
<td class="coverFnHi">1666</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L388">DbcStatementDispatcher::Dispatch(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">2132</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L12">(anonymous namespace)::ParseDecimal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, char const*)</a></td>
|
||||
|
||||
<td class="coverFnHi">2466</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,333 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_statement_handler.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_statement_handler.cpp<span style="font-size: 80%;"> (<a href="dbc_statement_handler.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">99.5 %</td>
|
||||
<td class="headerCovTableEntry">370</td>
|
||||
<td class="headerCovTableEntry">368</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">31</td>
|
||||
<td class="headerCovTableEntry">31</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">68.4 %</td>
|
||||
<td class="headerCovTableEntry">820</td>
|
||||
<td class="headerCovTableEntry">561</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="dbc_statement_handler.cpp.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L464">(anonymous namespace)::AreMutuallyExclusive(SignalInfo const&, SignalInfo const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">58</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L255">(anonymous namespace)::FindFrameById(DbcDatabase&, unsigned int, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">698</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L480">(anonymous namespace)::FindSelector(FrameInfo const&, std::vector<unsigned long, std::allocator<unsigned long> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">280</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L266">(anonymous namespace)::FindSignalByName(FrameInfo&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">364</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L101">(anonymous namespace)::FindUniqueFrame(DbcDatabase&, unsigned int, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">67</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L115">(anonymous namespace)::FindUniqueSignal(FrameInfo&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">62</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L129">(anonymous namespace)::NextSignalBit(unsigned long, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">884</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L155">(anonymous namespace)::NormalizeCanId(unsigned int, unsigned int&, bool&)</a></td>
|
||||
|
||||
<td class="coverFnHi">803</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L23">(anonymous namespace)::ParseCanId(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">784</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L12">(anonymous namespace)::ParseDecimal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, char const*)</a></td>
|
||||
|
||||
<td class="coverFnHi">2466</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L53">(anonymous namespace)::ParseMultiplexingMarker(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">496</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L32">(anonymous namespace)::ParsePhysicalValue(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)</a></td>
|
||||
|
||||
<td class="coverFnHi">1666</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L71">(anonymous namespace)::ParseValueKey(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">104</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L454">(anonymous namespace)::SignalBits(SignalInfo const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">114</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L497">(anonymous namespace)::SignalsOverlap(SignalInfo const&, SignalInfo const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">57</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L141">(anonymous namespace)::SplitReceivers(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">317</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L91">(anonymous namespace)::UnescapeDescription(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">96</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L470">(anonymous namespace)::ValidateBranch(SignalInfo const&, SignalInfo const*)</a></td>
|
||||
|
||||
<td class="coverFnHi">193</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L304">DbcCommentHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">149</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L276">DbcFrameHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">649</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L166">DbcFrameHandler::ParseFrameLine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">649</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L386">DbcHeaderHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">62</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L350">DbcParseContext::ResolveComments(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">597</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L433">DbcParseContext::ResolveValueDescriptions(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">592</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L510">DbcParseContext::ValidateMultiplexing(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">576</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L290">DbcSignalHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">526</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L204">DbcSignalHandler::ParseSignalLine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">521</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L368">DbcStatementDispatcher::DbcStatementDispatcher()</a></td>
|
||||
|
||||
<td class="coverFnHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L388">DbcStatementDispatcher::Dispatch(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">2132</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L449">DbcUnsupportedMultiplexingHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">4</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L400">DbcValueDescriptionHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">94</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,676 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_statement_handler.cpp</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_statement_handler.cpp<span style="font-size: 80%;"> (source / <a href="dbc_statement_handler.cpp.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">99.5 %</td>
|
||||
<td class="headerCovTableEntry">370</td>
|
||||
<td class="headerCovTableEntry">368</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">31</td>
|
||||
<td class="headerCovTableEntry">31</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">68.4 %</td>
|
||||
<td class="headerCovTableEntry">820</td>
|
||||
<td class="headerCovTableEntry">561</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : // SPDX-License-Identifier: MIT</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : #include "dbc_statement_handler.h"</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : #include "j1939.h"</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : #include "text_utils.h"</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : #include "signal_layout.h"</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : #include <charconv></span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : #include <cmath></span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : #include <limits></span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : #include <regex></span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : #include <sstream></span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : #include <stdexcept></span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : </span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : namespace {</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> :<span class="tlaGNC"> 2466 : std::uint32_t ParseDecimal(const std::string &text,</span></span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : : std::uint32_t maximum,</span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : const char *field) {</span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> :<span class="tlaGNC"> 2466 : std::uint32_t value = 0U;</span></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> [<span class="tlaGBC" title="Branch 0 was taken 2466 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2466 : const std::from_chars_result parsed = std::from_chars(text.data(), text.data() + text.size(), value);</span></span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> [<span class="tlaGBC" title="Branch 0 was taken 2429 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 37 times"> + </span>]:<span class="tlaGNC"> 4932 : if (text.empty() || parsed.ec != std::errc() ||</span></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> [<span class="tlaGBC" title="Branch 0 was taken 2466 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2410 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 19 times"> + </span> :<span class="tlaGNC"> 4932 : parsed.ptr != text.data() + text.size() || value > maximum)</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 2408 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 58 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 2408 times"> + </span>]
|
||||
<span id="L21"><span class="lineNum"> 21</span> [<span class="tlaGBC" title="Branch 0 was taken 58 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 58 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 174 : throw std::runtime_error(std::string("Invalid ") + field + ": " + text);</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 58 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 58 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 58 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span>]
|
||||
<span id="L22"><span class="lineNum"> 22</span> :<span class="tlaGNC"> 2408 : return value;</span></span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : : }</span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : : </span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> :<span class="tlaGNC"> 784 : std::uint32_t ParseCanId(const std::string &text) {</span></span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> :<span class="tlaGNC"> 784 : const std::uint32_t rawId = ParseDecimal(</span></span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : : text, std::numeric_limits<std::uint32_t>::max(), "CAN ID");</span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : : // Only bit 31 may accompany the actual 29-bit identifier.</span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> [<span class="tlaGBC" title="Branch 0 was taken 20 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 730 times"> + </span>]:<span class="tlaGNC"> 750 : if ((rawId & 0x60000000U) != 0U)</span></span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> [<span class="tlaGBC" title="Branch 0 was taken 20 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 20 : throw std::runtime_error("CAN ID exceeds the 29-bit identifier range.");</span></span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> :<span class="tlaGNC"> 730 : return rawId;</span></span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : : }</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : : </span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> :<span class="tlaGNC"> 1666 : double ParsePhysicalValue(const std::string &text, const char *field) {</span></span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : : static const std::regex number(</span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1664 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 1666 : R"(^[+-]?(?:[0-9]+(?:\.[0-9]*)?|\.[0-9]+)(?:[eE][+-]?[0-9]+)?$)");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaUNC" title="Branch 6 was not taken"> - </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span>]
|
||||
<span id="L37"><span class="lineNum"> 37</span> [<span class="tlaGBC" title="Branch 0 was taken 1666 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 112 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1554 times"> + </span>]:<span class="tlaGNC"> 1666 : if (!std::regex_match(text, number))</span></span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> [<span class="tlaGBC" title="Branch 0 was taken 112 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 112 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 336 : throw std::runtime_error(std::string("Invalid ") + field + ": " + text);</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 112 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 112 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 112 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span>]
|
||||
<span id="L39"><span class="lineNum"> 39</span> : : // Floating-point from_chars is locale-independent and does not accept</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : : // a leading '+', which the DBC numeric grammar permits.</span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> :<span class="tlaGNC"> 1554 : const char *begin = text.data();</span></span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> :<span class="tlaGNC"> 1554 : const char *end = begin + text.size();</span></span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> [<span class="tlaGBC" title="Branch 0 was taken 18 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1536 times"> + </span>]:<span class="tlaGNC"> 1554 : if (*begin == '+')</span></span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> :<span class="tlaGNC"> 18 : ++begin;</span></span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> :<span class="tlaGNC"> 1554 : double value = 0.0;</span></span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : : const std::from_chars_result parsed =</span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> :<span class="tlaGNC"> 1554 : std::from_chars(begin, end, value, std::chars_format::general);</span></span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> : : // Keep the existing rejection of conversion underflow into subnormal values.</span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> [<span class="tlaGBC" title="Branch 0 was taken 1530 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 24 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 1530 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 3084 : if (parsed.ec != std::errc() || parsed.ptr != end || !std::isfinite(value) ||</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 1530 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 16 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 1514 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 40 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 1514 times"> + </span>]
|
||||
<span id="L50"><span class="lineNum"> 50</span> :<span class="tlaGNC"> 1530 : std::fpclassify(value) == FP_SUBNORMAL)</span></span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> [<span class="tlaGBC" title="Branch 0 was taken 40 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 40 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 120 : throw std::runtime_error(std::string("Invalid ") + field + ": " + text);</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 40 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 40 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 40 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span>]
|
||||
<span id="L52"><span class="lineNum"> 52</span> :<span class="tlaGNC"> 1514 : return value;</span></span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> : : }</span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> : : </span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> :<span class="tlaGNC"> 496 : Multiplexing ParseMultiplexingMarker(const std::string &marker) {</span></span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> :<span class="tlaGNC"> 496 : Multiplexing result;</span></span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> [<span class="tlaGBC" title="Branch 0 was taken 496 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 34 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 462 times"> + </span>]:<span class="tlaGNC"> 496 : if (marker == "M")</span></span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> :<span class="tlaGNC"> 34 : result.role = MultiplexRole::Selector;</span></span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> [<span class="tlaGBC" title="Branch 0 was taken 38 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 424 times"> + </span>]:<span class="tlaGNC"> 462 : else if (!marker.empty()) {</span></span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 1 was taken 37 times"> + </span>]:<span class="tlaGNC"> 38 : if (marker[0] != 'm')</span></span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1 : throw std::runtime_error("Unsupported multiplexing marker.");</span></span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> [<span class="tlaGBC" title="Branch 0 was taken 37 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 37 : const std::string value = marker.substr(1U);</span></span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> : : const std::from_chars_result parsed =</span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> [<span class="tlaGBC" title="Branch 0 was taken 37 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 37 : std::from_chars(value.data(), value.data() + value.size(), result.value);</span></span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> [<span class="tlaGBC" title="Branch 0 was taken 36 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 2 was taken 33 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 3 times"> + </span> :<span class="tlaGNC"> 37 : if (value.empty() || parsed.ec != std::errc() || parsed.ptr != value.data() + value.size())</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 30 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 30 times"> + </span>]
|
||||
<span id="L66"><span class="lineNum"> 66</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 7 : throw std::runtime_error("Invalid or unsupported multiplexing marker.");</span></span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> :<span class="tlaGNC"> 30 : result.role = MultiplexRole::Branch;</span></span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> :<span class="tlaGNC"> 37 : }</span></span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> : : </span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> :<span class="tlaGNC"> 488 : return result;</span></span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> : : }</span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> : : </span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> :<span class="tlaGNC"> 104 : RawSignalValue ParseValueKey(const std::string &number) {</span></span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> :<span class="tlaGNC"> 104 : RawSignalValue key;</span></span>
|
||||
<span id="L75"><span class="lineNum"> 75</span> [<span class="tlaGBC" title="Branch 0 was taken 104 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 16 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 88 times"> + </span> :<span class="tlaGNC"> 104 : if (!number.empty() && number[0] == '-') {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 16 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 88 times"> + </span>]
|
||||
<span id="L76"><span class="lineNum"> 76</span> :<span class="tlaGNC"> 16 : std::int64_t value = 0;</span></span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> : : const std::from_chars_result parsed =</span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> [<span class="tlaGBC" title="Branch 0 was taken 16 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 16 : std::from_chars(number.data(), number.data() + number.size(), value);</span></span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> [<span class="tlaGBC" title="Branch 0 was taken 14 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaGBC" title="Branch 3 was taken 14 times"> + </span> :<span class="tlaGNC"> 16 : if (parsed.ec != std::errc() || parsed.ptr != number.data() + number.size())</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 14 times"> + </span>]
|
||||
<span id="L80"><span class="lineNum"> 80</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Invalid VAL_ integer: " + number);</span></span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> :<span class="tlaGNC"> 14 : key = NormalizeValueKey(RawSignalValue(value));</span></span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> : : } else {</span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> :<span class="tlaGNC"> 88 : std::uint64_t value = 0;</span></span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> : : const std::from_chars_result parsed =</span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> [<span class="tlaGBC" title="Branch 0 was taken 88 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 88 : std::from_chars(number.data(), number.data() + number.size(), value);</span></span>
|
||||
<span id="L86"><span class="lineNum"> 86</span> [<span class="tlaGBC" title="Branch 0 was taken 88 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 86 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2 times"> + </span> :<span class="tlaGNC"> 88 : if (number.empty() || parsed.ec != std::errc() || parsed.ptr != number.data() + number.size())</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 82 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 82 times"> + </span>]
|
||||
<span id="L87"><span class="lineNum"> 87</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 6 : throw std::runtime_error("Invalid VAL_ integer: " + number);</span></span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> :<span class="tlaGNC"> 82 : key = value;</span></span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> : : }</span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> :<span class="tlaGNC"> 96 : return key;</span></span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> : : }</span>
|
||||
<span id="L92"><span class="lineNum"> 92</span> : : </span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> :<span class="tlaGNC"> 96 : std::string UnescapeDescription(const std::string &quoted) {</span></span>
|
||||
<span id="L94"><span class="lineNum"> 94</span> :<span class="tlaGNC"> 96 : std::string description;</span></span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> [<span class="tlaGBC" title="Branch 0 was taken 628 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 96 times"> + </span>]:<span class="tlaGNC"> 724 : for (std::size_t i = 0; i < quoted.size(); ++i) {</span></span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 621 times"> + </span>]:<span class="tlaGNC"> 628 : if (quoted[i] == '\\')</span></span>
|
||||
<span id="L97"><span class="lineNum"> 97</span> :<span class="tlaGNC"> 7 : ++i;</span></span>
|
||||
<span id="L98"><span class="lineNum"> 98</span> [<span class="tlaGBC" title="Branch 0 was taken 628 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 628 : description += quoted[i];</span></span>
|
||||
<span id="L99"><span class="lineNum"> 99</span> : : }</span>
|
||||
<span id="L100"><span class="lineNum"> 100</span> :<span class="tlaGNC"> 96 : return description;</span></span>
|
||||
<span id="L101"><span class="lineNum"> 101</span> :<span class="tlaUNC"> 0 : }</span></span>
|
||||
<span id="L102"><span class="lineNum"> 102</span> : : </span>
|
||||
<span id="L103"><span class="lineNum"> 103</span> :<span class="tlaGNC"> 67 : FrameInfo *FindUniqueFrame(DbcDatabase &database, std::uint32_t canId, bool isExtended) {</span></span>
|
||||
<span id="L104"><span class="lineNum"> 104</span> :<span class="tlaGNC"> 67 : FrameInfo *frame = nullptr;</span></span>
|
||||
<span id="L105"><span class="lineNum"> 105</span> [<span class="tlaGBC" title="Branch 0 was taken 113 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 65 times"> + </span>]:<span class="tlaGNC"> 178 : for (FrameInfo &candidate : database.frames) {</span></span>
|
||||
<span id="L106"><span class="lineNum"> 106</span> [<span class="tlaGBC" title="Branch 0 was taken 84 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 29 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 66 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 18 times"> + </span>]:<span class="tlaGNC"> 113 : if (candidate.canId == canId && candidate.isExtended == isExtended) {</span></span>
|
||||
<span id="L107"><span class="lineNum"> 107</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 64 times"> + </span>]:<span class="tlaGNC"> 66 : if (frame)</span></span>
|
||||
<span id="L108"><span class="lineNum"> 108</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Ambiguous VAL_ frame reference.");</span></span>
|
||||
<span id="L109"><span class="lineNum"> 109</span> :<span class="tlaGNC"> 64 : frame = &candidate;</span></span>
|
||||
<span id="L110"><span class="lineNum"> 110</span> : : }</span>
|
||||
<span id="L111"><span class="lineNum"> 111</span> : : }</span>
|
||||
<span id="L112"><span class="lineNum"> 112</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 62 times"> + </span>]:<span class="tlaGNC"> 65 : if (!frame)</span></span>
|
||||
<span id="L113"><span class="lineNum"> 113</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 3 : throw std::runtime_error("Unresolved VAL_ frame reference.");</span></span>
|
||||
<span id="L114"><span class="lineNum"> 114</span> :<span class="tlaGNC"> 62 : return frame;</span></span>
|
||||
<span id="L115"><span class="lineNum"> 115</span> : : }</span>
|
||||
<span id="L116"><span class="lineNum"> 116</span> : : </span>
|
||||
<span id="L117"><span class="lineNum"> 117</span> :<span class="tlaGNC"> 62 : SignalInfo *FindUniqueSignal(FrameInfo &frame, const std::string &signalName) {</span></span>
|
||||
<span id="L118"><span class="lineNum"> 118</span> :<span class="tlaGNC"> 62 : SignalInfo *signal = nullptr;</span></span>
|
||||
<span id="L119"><span class="lineNum"> 119</span> [<span class="tlaGBC" title="Branch 0 was taken 89 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 60 times"> + </span>]:<span class="tlaGNC"> 149 : for (SignalInfo &candidate : frame.signals) {</span></span>
|
||||
<span id="L120"><span class="lineNum"> 120</span> [<span class="tlaGBC" title="Branch 0 was taken 59 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 30 times"> + </span>]:<span class="tlaGNC"> 89 : if (candidate.name == signalName) {</span></span>
|
||||
<span id="L121"><span class="lineNum"> 121</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 57 times"> + </span>]:<span class="tlaGNC"> 59 : if (signal)</span></span>
|
||||
<span id="L122"><span class="lineNum"> 122</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Ambiguous VAL_ signal reference: " + signalName);</span></span>
|
||||
<span id="L123"><span class="lineNum"> 123</span> :<span class="tlaGNC"> 57 : signal = &candidate;</span></span>
|
||||
<span id="L124"><span class="lineNum"> 124</span> : : }</span>
|
||||
<span id="L125"><span class="lineNum"> 125</span> : : }</span>
|
||||
<span id="L126"><span class="lineNum"> 126</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 55 times"> + </span>]:<span class="tlaGNC"> 60 : if (!signal)</span></span>
|
||||
<span id="L127"><span class="lineNum"> 127</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 5 : throw std::runtime_error("Unresolved VAL_ signal reference: " + signalName);</span></span>
|
||||
<span id="L128"><span class="lineNum"> 128</span> :<span class="tlaGNC"> 55 : return signal;</span></span>
|
||||
<span id="L129"><span class="lineNum"> 129</span> : : }</span>
|
||||
<span id="L130"><span class="lineNum"> 130</span> : : </span>
|
||||
<span id="L131"><span class="lineNum"> 131</span> :<span class="tlaGNC"> 884 : std::uint64_t NextSignalBit(std::uint64_t bit, bool isLittleEndian) {</span></span>
|
||||
<span id="L132"><span class="lineNum"> 132</span> [<span class="tlaGBC" title="Branch 0 was taken 724 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 160 times"> + </span>]:<span class="tlaGNC"> 884 : if (isLittleEndian)</span></span>
|
||||
<span id="L133"><span class="lineNum"> 133</span> :<span class="tlaGNC"> 724 : return bit + 1U;</span></span>
|
||||
<span id="L134"><span class="lineNum"> 134</span> : : // From bit 0, Motorola continues at bit 7 of the next byte (0 -> 15).</span>
|
||||
<span id="L135"><span class="lineNum"> 135</span> [<span class="tlaGBC" title="Branch 0 was taken 20 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 140 times"> + </span>]:<span class="tlaGNC"> 160 : return bit % 8U == 0U ? bit + 15U : bit - 1U;</span></span>
|
||||
<span id="L136"><span class="lineNum"> 136</span> : : }</span>
|
||||
<span id="L137"><span class="lineNum"> 137</span> : : </span>
|
||||
<span id="L138"><span class="lineNum"> 138</span> : : FrameInfo *FindFrameById(DbcDatabase &, std::uint32_t, bool);</span>
|
||||
<span id="L139"><span class="lineNum"> 139</span> : : SignalInfo *FindSignalByName(FrameInfo &, const std::string &);</span>
|
||||
<span id="L140"><span class="lineNum"> 140</span> : : } // namespace</span>
|
||||
<span id="L141"><span class="lineNum"> 141</span> : : </span>
|
||||
<span id="L142"><span class="lineNum"> 142</span> : : namespace {</span>
|
||||
<span id="L143"><span class="lineNum"> 143</span> :<span class="tlaGNC"> 317 : std::vector<std::string> SplitReceivers(const std::string &text) {</span></span>
|
||||
<span id="L144"><span class="lineNum"> 144</span> :<span class="tlaGNC"> 317 : std::vector<std::string> receivers;</span></span>
|
||||
<span id="L145"><span class="lineNum"> 145</span> :<span class="tlaGNC"> 317 : std::string token;</span></span>
|
||||
<span id="L146"><span class="lineNum"> 146</span> [<span class="tlaGBC" title="Branch 0 was taken 317 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 317 : std::istringstream stream(text);</span></span>
|
||||
<span id="L147"><span class="lineNum"> 147</span> : : </span>
|
||||
<span id="L148"><span class="lineNum"> 148</span> [<span class="tlaGBC" title="Branch 0 was taken 639 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 639 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 956 : while (std::getline(stream, token, ',')) {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 322 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 317 times"> + </span>]
|
||||
<span id="L149"><span class="lineNum"> 149</span> [<span class="tlaGBC" title="Branch 0 was taken 322 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 322 : token = dbc_detail::TrimText(token);</span></span>
|
||||
<span id="L150"><span class="lineNum"> 150</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 322 times"> + </span>]:<span class="tlaGNC"> 322 : if (!token.empty())</span></span>
|
||||
<span id="L151"><span class="lineNum"> 151</span> [<span class="tlaGBC" title="Branch 0 was taken 322 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 322 : receivers.push_back(token);</span></span>
|
||||
<span id="L152"><span class="lineNum"> 152</span> : : }</span>
|
||||
<span id="L153"><span class="lineNum"> 153</span> : : </span>
|
||||
<span id="L154"><span class="lineNum"> 154</span> :<span class="tlaGNC"> 317 : return receivers;</span></span>
|
||||
<span id="L155"><span class="lineNum"> 155</span> :<span class="tlaGNC"> 317 : }</span></span>
|
||||
<span id="L156"><span class="lineNum"> 156</span> : : </span>
|
||||
<span id="L157"><span class="lineNum"> 157</span> :<span class="tlaGNC"> 803 : void NormalizeCanId(std::uint32_t rawCanId, std::uint32_t &normalizedCanId, bool &isExtended) {</span></span>
|
||||
<span id="L158"><span class="lineNum"> 158</span> : : /*</span>
|
||||
<span id="L159"><span class="lineNum"> 159</span> : : * DBC commonly stores extended identifiers with bit 31 set.</span>
|
||||
<span id="L160"><span class="lineNum"> 160</span> : : * Example:</span>
|
||||
<span id="L161"><span class="lineNum"> 161</span> : : * raw id = 0x80000000 | actual_29_bit_id</span>
|
||||
<span id="L162"><span class="lineNum"> 162</span> : : */</span>
|
||||
<span id="L163"><span class="lineNum"> 163</span> [<span class="tlaGBC" title="Branch 0 was taken 724 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 79 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 23 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 701 times"> + </span>]:<span class="tlaGNC"> 803 : isExtended = (rawCanId & 0x80000000U) != 0U || rawCanId > 0x7FFU;</span></span>
|
||||
<span id="L164"><span class="lineNum"> 164</span> :<span class="tlaGNC"> 803 : normalizedCanId = rawCanId & 0x1FFFFFFFU;</span></span>
|
||||
<span id="L165"><span class="lineNum"> 165</span> :<span class="tlaGNC"> 803 : }</span></span>
|
||||
<span id="L166"><span class="lineNum"> 166</span> : : } // namespace</span>
|
||||
<span id="L167"><span class="lineNum"> 167</span> : : </span>
|
||||
<span id="L168"><span class="lineNum"> 168</span> :<span class="tlaGNC"> 649 : FrameInfo DbcFrameHandler::ParseFrameLine(const std::string &line) {</span></span>
|
||||
<span id="L169"><span class="lineNum"> 169</span> : : /*</span>
|
||||
<span id="L170"><span class="lineNum"> 170</span> : : * Example:</span>
|
||||
<span id="L171"><span class="lineNum"> 171</span> : : * BO_ 256 EngineData: 8 EEC1</span>
|
||||
<span id="L172"><span class="lineNum"> 172</span> : : */</span>
|
||||
<span id="L173"><span class="lineNum"> 173</span> : : </span>
|
||||
<span id="L174"><span class="lineNum"> 174</span> [<span class="tlaGBC" title="Branch 0 was taken 649 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 649 : std::istringstream stream(line);</span></span>
|
||||
<span id="L175"><span class="lineNum"> 175</span> :<span class="tlaGNC"> 649 : std::string keyword;</span></span>
|
||||
<span id="L176"><span class="lineNum"> 176</span> :<span class="tlaGNC"> 649 : std::string idText;</span></span>
|
||||
<span id="L177"><span class="lineNum"> 177</span> [<span class="tlaGBC" title="Branch 0 was taken 649 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 649 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 649 : if (!(stream >> keyword >> idText) || keyword != "BO_")</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 649 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 646 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 646 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span><span class="tlaUNC" title="Branch 10 was not taken"> - </span><span class="tlaGBC" title="Branch 11 was taken 646 times"> + </span><span class="tlaGBC" title="Branch 12 was taken 3 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 13 was taken 646 times"> + </span>]
|
||||
<span id="L178"><span class="lineNum"> 178</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 3 : throw std::runtime_error("Missing CAN ID in frame definition.");</span></span>
|
||||
<span id="L179"><span class="lineNum"> 179</span> : : </span>
|
||||
<span id="L180"><span class="lineNum"> 180</span> [<span class="tlaGBC" title="Branch 0 was taken 628 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 18 times"> + </span>]:<span class="tlaGNC"> 646 : const std::uint32_t rawCanId = ParseCanId(idText);</span></span>
|
||||
<span id="L181"><span class="lineNum"> 181</span> : : </span>
|
||||
<span id="L182"><span class="lineNum"> 182</span> :<span class="tlaGNC"> 628 : std::string nameText;</span></span>
|
||||
<span id="L183"><span class="lineNum"> 183</span> [<span class="tlaGBC" title="Branch 0 was taken 628 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 628 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 628 : if (!std::getline(stream, nameText, ':') || stream.eof())</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 627 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 6 was taken 627 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 1 time"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 626 times"> + </span><span class="tlaGBC" title="Branch 10 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 11 was taken 626 times"> + </span>]
|
||||
<span id="L184"><span class="lineNum"> 184</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Missing ':' in frame definition.");</span></span>
|
||||
<span id="L185"><span class="lineNum"> 185</span> [<span class="tlaGBC" title="Branch 0 was taken 626 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 626 : std::istringstream nameStream(nameText);</span></span>
|
||||
<span id="L186"><span class="lineNum"> 186</span> :<span class="tlaGNC"> 626 : FrameInfo frame;</span></span>
|
||||
<span id="L187"><span class="lineNum"> 187</span> :<span class="tlaGNC"> 626 : std::string extra;</span></span>
|
||||
<span id="L188"><span class="lineNum"> 188</span> [<span class="tlaGBC" title="Branch 0 was taken 626 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 626 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 626 : if (!(nameStream >> frame.name) || (nameStream >> extra))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 625 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 6 was taken 625 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 625 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span><span class="tlaGBC" title="Branch 10 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 11 was taken 624 times"> + </span><span class="tlaGBC" title="Branch 12 was taken 2 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 13 was taken 624 times"> + </span>]
|
||||
<span id="L189"><span class="lineNum"> 189</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Missing or invalid frame name.");</span></span>
|
||||
<span id="L190"><span class="lineNum"> 190</span> : : </span>
|
||||
<span id="L191"><span class="lineNum"> 191</span> :<span class="tlaGNC"> 624 : std::string lengthText;</span></span>
|
||||
<span id="L192"><span class="lineNum"> 192</span> [<span class="tlaGBC" title="Branch 0 was taken 624 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 624 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 624 : if (!(stream >> lengthText))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 5 was taken 623 times"> + </span>]
|
||||
<span id="L193"><span class="lineNum"> 193</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1 : throw std::runtime_error("Missing payload length in frame definition.");</span></span>
|
||||
<span id="L194"><span class="lineNum"> 194</span> [<span class="tlaGBC" title="Branch 0 was taken 617 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6 times"> + </span>]:<span class="tlaGNC"> 623 : frame.dlc = static_cast<std::uint8_t>(ParseDecimal(</span></span>
|
||||
<span id="L195"><span class="lineNum"> 195</span> :<span class="tlaGNC"> 623 : lengthText, std::numeric_limits<std::uint8_t>::max(), "payload length"));</span></span>
|
||||
<span id="L196"><span class="lineNum"> 196</span> [<span class="tlaGBC" title="Branch 0 was taken 617 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 617 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 617 : if (!(stream >> frame.transmitter))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 5 was taken 616 times"> + </span>]
|
||||
<span id="L197"><span class="lineNum"> 197</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1 : throw std::runtime_error("Missing transmitter in frame definition.");</span></span>
|
||||
<span id="L198"><span class="lineNum"> 198</span> [<span class="tlaGBC" title="Branch 0 was taken 616 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 616 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 616 : if (stream >> extra)</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 5 was taken 615 times"> + </span>]
|
||||
<span id="L199"><span class="lineNum"> 199</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1 : throw std::runtime_error("Unexpected trailing field in frame definition: " + extra);</span></span>
|
||||
<span id="L200"><span class="lineNum"> 200</span> : : </span>
|
||||
<span id="L201"><span class="lineNum"> 201</span> :<span class="tlaGNC"> 615 : NormalizeCanId(rawCanId, frame.canId, frame.isExtended);</span></span>
|
||||
<span id="L202"><span class="lineNum"> 202</span> : : </span>
|
||||
<span id="L203"><span class="lineNum"> 203</span> :<span class="tlaGNC"> 615 : return frame;</span></span>
|
||||
<span id="L204"><span class="lineNum"> 204</span> :<span class="tlaGNC"> 772 : }</span></span>
|
||||
<span id="L205"><span class="lineNum"> 205</span> : : </span>
|
||||
<span id="L206"><span class="lineNum"> 206</span> :<span class="tlaGNC"> 521 : SignalInfo DbcSignalHandler::ParseSignalLine(const std::string &line) {</span></span>
|
||||
<span id="L207"><span class="lineNum"> 207</span> : : // Match the complete statement before converting any numeric fields.</span>
|
||||
<span id="L208"><span class="lineNum"> 208</span> : : enum Field {</span>
|
||||
<span id="L209"><span class="lineNum"> 209</span> : : NameAndMarker = 1, StartBit, BitLength, ByteOrder, Signedness,</span>
|
||||
<span id="L210"><span class="lineNum"> 210</span> : : Factor, Offset, Minimum, Maximum, Unit, Receivers</span>
|
||||
<span id="L211"><span class="lineNum"> 211</span> : : };</span>
|
||||
<span id="L212"><span class="lineNum"> 212</span> : : static const std::regex syntax(</span>
|
||||
<span id="L213"><span class="lineNum"> 213</span> : : // Name and optional multiplexing marker.</span>
|
||||
<span id="L214"><span class="lineNum"> 214</span> : : R"dbc(^SG_[ \t]+([^:]+):[ \t]*)dbc"</span>
|
||||
<span id="L215"><span class="lineNum"> 215</span> : : // Bit position, length, byte order and signedness.</span>
|
||||
<span id="L216"><span class="lineNum"> 216</span> : : R"dbc(([^| \t]+)[ \t]*\|[ \t]*([^@ \t]+)[ \t]*@[ \t]*([01])([+-])[ \t]*)dbc"</span>
|
||||
<span id="L217"><span class="lineNum"> 217</span> : : // Scaling factor and offset.</span>
|
||||
<span id="L218"><span class="lineNum"> 218</span> : : R"dbc(\([ \t]*([^, \t]+)[ \t]*,[ \t]*([^ )\t]+)[ \t]*\)[ \t]*)dbc"</span>
|
||||
<span id="L219"><span class="lineNum"> 219</span> : : // Physical range.</span>
|
||||
<span id="L220"><span class="lineNum"> 220</span> : : R"dbc(\[[ \t]*([^| \t]+)[ \t]*\|[ \t]*([^\] \t]+)[ \t]*\][ \t]*)dbc"</span>
|
||||
<span id="L221"><span class="lineNum"> 221</span> : : // Unit and receivers.</span>
|
||||
<span id="L222"><span class="lineNum"> 222</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 519 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 521 : R"dbc("([^"\r\n]*)"[ \t]+([^ \t,]+(?:[ \t]*,[ \t]*[^ \t,]+)*)[ \t]*$)dbc");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaUNC" title="Branch 6 was not taken"> - </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span>]
|
||||
<span id="L223"><span class="lineNum"> 223</span> :<span class="tlaGNC"> 521 : std::smatch fields;</span></span>
|
||||
<span id="L224"><span class="lineNum"> 224</span> [<span class="tlaGBC" title="Branch 0 was taken 521 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 23 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 498 times"> + </span>]:<span class="tlaGNC"> 521 : if (!std::regex_match(line, fields, syntax))</span></span>
|
||||
<span id="L225"><span class="lineNum"> 225</span> [<span class="tlaGBC" title="Branch 0 was taken 23 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 23 : throw std::runtime_error("Malformed or unsupported SG_ signal definition.");</span></span>
|
||||
<span id="L226"><span class="lineNum"> 226</span> : : </span>
|
||||
<span id="L227"><span class="lineNum"> 227</span> :<span class="tlaGNC"> 498 : SignalInfo signal;</span></span>
|
||||
<span id="L228"><span class="lineNum"> 228</span> [<span class="tlaGBC" title="Branch 0 was taken 498 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 498 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 498 : std::istringstream nameFields(fields[NameAndMarker].str());</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 498 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L229"><span class="lineNum"> 229</span> :<span class="tlaGNC"> 498 : std::string marker;</span></span>
|
||||
<span id="L230"><span class="lineNum"> 230</span> :<span class="tlaGNC"> 498 : std::string extra;</span></span>
|
||||
<span id="L231"><span class="lineNum"> 231</span> [<span class="tlaGBC" title="Branch 0 was taken 498 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 498 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 498 : nameFields >> signal.name >> marker;</span></span>
|
||||
<span id="L232"><span class="lineNum"> 232</span> [<span class="tlaGBC" title="Branch 0 was taken 497 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 2 was taken 497 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 498 : if (signal.name.empty() || (nameFields >> extra))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 497 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 7 was taken 496 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 2 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 496 times"> + </span>]
|
||||
<span id="L233"><span class="lineNum"> 233</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Invalid signal name or multiplexing marker.");</span></span>
|
||||
<span id="L234"><span class="lineNum"> 234</span> [<span class="tlaGBC" title="Branch 0 was taken 488 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 8 times"> + </span>]:<span class="tlaGNC"> 496 : signal.multiplexing = ParseMultiplexingMarker(marker);</span></span>
|
||||
<span id="L235"><span class="lineNum"> 235</span> : : </span>
|
||||
<span id="L236"><span class="lineNum"> 236</span> [<span class="tlaGBC" title="Branch 0 was taken 488 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 488 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 495 : signal.startBit = ParseDecimal(fields[StartBit].str(),</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 481 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 7 times"> + </span>]
|
||||
<span id="L237"><span class="lineNum"> 237</span> : : std::numeric_limits<std::uint32_t>::max(), "signal start bit");</span>
|
||||
<span id="L238"><span class="lineNum"> 238</span> [<span class="tlaGBC" title="Branch 0 was taken 481 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 481 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 489 : signal.length = ParseDecimal(fields[BitLength].str(), 64U, "signal length");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 473 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 8 times"> + </span>]
|
||||
<span id="L239"><span class="lineNum"> 239</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 1 was taken 472 times"> + </span>]:<span class="tlaGNC"> 473 : if (signal.length == 0U)</span></span>
|
||||
<span id="L240"><span class="lineNum"> 240</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1 : throw std::runtime_error("Signal length must be within 1..64 bits.");</span></span>
|
||||
<span id="L241"><span class="lineNum"> 241</span> [<span class="tlaGBC" title="Branch 0 was taken 472 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 472 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 472 : signal.isLittleEndian = fields[ByteOrder].str() == "1";</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 472 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L242"><span class="lineNum"> 242</span> [<span class="tlaGBC" title="Branch 0 was taken 472 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 472 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 472 : signal.isSigned = fields[Signedness].str() == "-";</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 472 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L243"><span class="lineNum"> 243</span> : : </span>
|
||||
<span id="L244"><span class="lineNum"> 244</span> [<span class="tlaGBC" title="Branch 0 was taken 472 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 472 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 504 : signal.factor = ParsePhysicalValue(fields[Factor].str(), "signal factor");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 440 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 32 times"> + </span>]
|
||||
<span id="L245"><span class="lineNum"> 245</span> [<span class="tlaGBC" title="Branch 0 was taken 440 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 440 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 484 : signal.offset = ParsePhysicalValue(fields[Offset].str(), "signal offset");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 396 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 44 times"> + </span>]
|
||||
<span id="L246"><span class="lineNum"> 246</span> [<span class="tlaGBC" title="Branch 0 was taken 396 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 396 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 434 : signal.minimum = ParsePhysicalValue(fields[Minimum].str(), "signal minimum");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 358 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 38 times"> + </span>]
|
||||
<span id="L247"><span class="lineNum"> 247</span> [<span class="tlaGBC" title="Branch 0 was taken 358 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 358 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 396 : signal.maximum = ParsePhysicalValue(fields[Maximum].str(), "signal maximum");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 320 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 38 times"> + </span>]
|
||||
<span id="L248"><span class="lineNum"> 248</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 317 times"> + </span>]:<span class="tlaGNC"> 320 : if (signal.minimum > signal.maximum)</span></span>
|
||||
<span id="L249"><span class="lineNum"> 249</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 3 : throw std::runtime_error("Signal minimum exceeds maximum.");</span></span>
|
||||
<span id="L250"><span class="lineNum"> 250</span> [<span class="tlaGBC" title="Branch 0 was taken 317 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 317 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 317 : signal.unit = fields[Unit].str();</span></span>
|
||||
<span id="L251"><span class="lineNum"> 251</span> [<span class="tlaGBC" title="Branch 0 was taken 317 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 317 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 317 : signal.receivers = SplitReceivers(fields[Receivers].str());</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 317 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L252"><span class="lineNum"> 252</span> :<span class="tlaGNC"> 317 : return signal;</span></span>
|
||||
<span id="L253"><span class="lineNum"> 253</span> :<span class="tlaGNC"> 1245 : }</span></span>
|
||||
<span id="L254"><span class="lineNum"> 254</span> : : </span>
|
||||
<span id="L255"><span class="lineNum"> 255</span> : : </span>
|
||||
<span id="L256"><span class="lineNum"> 256</span> : : namespace {</span>
|
||||
<span id="L257"><span class="lineNum"> 257</span> :<span class="tlaGNC"> 698 : FrameInfo *FindFrameById(DbcDatabase &database,</span></span>
|
||||
<span id="L258"><span class="lineNum"> 258</span> : : std::uint32_t canId,</span>
|
||||
<span id="L259"><span class="lineNum"> 259</span> : : bool isExtended) {</span>
|
||||
<span id="L260"><span class="lineNum"> 260</span> [<span class="tlaGBC" title="Branch 0 was taken 144 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 613 times"> + </span>]:<span class="tlaGNC"> 757 : for (FrameInfo &frame : database.frames) {</span></span>
|
||||
<span id="L261"><span class="lineNum"> 261</span> [<span class="tlaGBC" title="Branch 0 was taken 109 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 35 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 85 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 24 times"> + </span>]:<span class="tlaGNC"> 144 : if (frame.canId == canId && frame.isExtended == isExtended)</span></span>
|
||||
<span id="L262"><span class="lineNum"> 262</span> :<span class="tlaGNC"> 85 : return &frame;</span></span>
|
||||
<span id="L263"><span class="lineNum"> 263</span> : : }</span>
|
||||
<span id="L264"><span class="lineNum"> 264</span> : : </span>
|
||||
<span id="L265"><span class="lineNum"> 265</span> :<span class="tlaGNC"> 613 : return nullptr;</span></span>
|
||||
<span id="L266"><span class="lineNum"> 266</span> : : }</span>
|
||||
<span id="L267"><span class="lineNum"> 267</span> : : </span>
|
||||
<span id="L268"><span class="lineNum"> 268</span> :<span class="tlaGNC"> 364 : SignalInfo *FindSignalByName(FrameInfo &frame, const std::string &signalName) {</span></span>
|
||||
<span id="L269"><span class="lineNum"> 269</span> [<span class="tlaGBC" title="Branch 0 was taken 126 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 315 times"> + </span>]:<span class="tlaGNC"> 441 : for (SignalInfo &signal : frame.signals) {</span></span>
|
||||
<span id="L270"><span class="lineNum"> 270</span> [<span class="tlaGBC" title="Branch 0 was taken 49 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 77 times"> + </span>]:<span class="tlaGNC"> 126 : if (signal.name == signalName)</span></span>
|
||||
<span id="L271"><span class="lineNum"> 271</span> :<span class="tlaGNC"> 49 : return &signal;</span></span>
|
||||
<span id="L272"><span class="lineNum"> 272</span> : : }</span>
|
||||
<span id="L273"><span class="lineNum"> 273</span> : : </span>
|
||||
<span id="L274"><span class="lineNum"> 274</span> :<span class="tlaGNC"> 315 : return nullptr;</span></span>
|
||||
<span id="L275"><span class="lineNum"> 275</span> : : }</span>
|
||||
<span id="L276"><span class="lineNum"> 276</span> : : }// namespace</span>
|
||||
<span id="L277"><span class="lineNum"> 277</span> : : </span>
|
||||
<span id="L278"><span class="lineNum"> 278</span> :<span class="tlaGNC"> 649 : void DbcFrameHandler::Handle(const std::string &line, DbcParseContext &context) const {</span></span>
|
||||
<span id="L279"><span class="lineNum"> 279</span> [<span class="tlaGBC" title="Branch 0 was taken 615 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 34 times"> + </span>]:<span class="tlaGNC"> 649 : FrameInfo frame = ParseFrameLine(line);</span></span>
|
||||
<span id="L280"><span class="lineNum"> 280</span> [<span class="tlaGBC" title="Branch 0 was taken 31 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 584 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 27 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 4 times"> + </span>]:<span class="tlaGNC"> 615 : if (context.enableJ1939 && frame.isExtended) {</span></span>
|
||||
<span id="L281"><span class="lineNum"> 281</span> :<span class="tlaGNC"> 27 : frame.hasPgn = true;</span></span>
|
||||
<span id="L282"><span class="lineNum"> 282</span> :<span class="tlaGNC"> 27 : frame.pgn = ExtractJ1939Pgn(frame.canId);</span></span>
|
||||
<span id="L283"><span class="lineNum"> 283</span> : : }</span>
|
||||
<span id="L284"><span class="lineNum"> 284</span> [<span class="tlaGBC" title="Branch 0 was taken 8 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 607 times"> + </span>]:<span class="tlaGNC"> 615 : if (FindFrameById(context.database, frame.canId, frame.isExtended) != nullptr)</span></span>
|
||||
<span id="L285"><span class="lineNum"> 285</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 16 : throw std::runtime_error("Duplicate " + std::string(frame.isExtended ? "extended" : "standard") +</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L286"><span class="lineNum"> 286</span> [<span class="tlaGBC" title="Branch 0 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 24 : " frame CAN ID: " + std::to_string(frame.canId));</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L287"><span class="lineNum"> 287</span> [<span class="tlaGBC" title="Branch 0 was taken 607 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 607 : context.database.frames.push_back(std::move(frame));</span></span>
|
||||
<span id="L288"><span class="lineNum"> 288</span> :<span class="tlaGNC"> 607 : context.currentFrame = &context.database.frames.back();</span></span>
|
||||
<span id="L289"><span class="lineNum"> 289</span> [<span class="tlaGBC" title="Branch 0 was taken 607 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 607 : context.signalLines.emplace_back();</span></span>
|
||||
<span id="L290"><span class="lineNum"> 290</span> :<span class="tlaGNC"> 615 : }</span></span>
|
||||
<span id="L291"><span class="lineNum"> 291</span> : : </span>
|
||||
<span id="L292"><span class="lineNum"> 292</span> :<span class="tlaGNC"> 526 : void DbcSignalHandler::Handle(const std::string &line, DbcParseContext &context) const {</span></span>
|
||||
<span id="L293"><span class="lineNum"> 293</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 521 times"> + </span>]:<span class="tlaGNC"> 526 : if (context.currentFrame == nullptr)</span></span>
|
||||
<span id="L294"><span class="lineNum"> 294</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 5 : throw std::runtime_error("Signal found before any frame definition.");</span></span>
|
||||
<span id="L295"><span class="lineNum"> 295</span> [<span class="tlaGBC" title="Branch 0 was taken 317 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 204 times"> + </span>]:<span class="tlaGNC"> 521 : SignalInfo signal = ParseSignalLine(line);</span></span>
|
||||
<span id="L296"><span class="lineNum"> 296</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 311 times"> + </span>]:<span class="tlaGNC"> 317 : if (FindSignalByName(*context.currentFrame, signal.name) != nullptr)</span></span>
|
||||
<span id="L297"><span class="lineNum"> 297</span> :<span class="tlaGNC"> 6 : throw std::runtime_error("Duplicate signal name '" + signal.name +</span></span>
|
||||
<span id="L298"><span class="lineNum"> 298</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 12 : "' in frame '" + context.currentFrame->name + "'.");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 6 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span>]
|
||||
<span id="L299"><span class="lineNum"> 299</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 304 times"> + </span>]:<span class="tlaGNC"> 311 : if (!IsValidSignalLayout(signal.startBit, signal.length, signal.isLittleEndian,</span></span>
|
||||
<span id="L300"><span class="lineNum"> 300</span> :<span class="tlaGNC"> 311 : context.currentFrame->dlc))</span></span>
|
||||
<span id="L301"><span class="lineNum"> 301</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 7 : throw std::runtime_error("Signal exceeds the frame payload length.");</span></span>
|
||||
<span id="L302"><span class="lineNum"> 302</span> [<span class="tlaGBC" title="Branch 0 was taken 304 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 304 : context.currentFrame->signals.push_back(std::move(signal));</span></span>
|
||||
<span id="L303"><span class="lineNum"> 303</span> [<span class="tlaGBC" title="Branch 0 was taken 304 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 304 : context.signalLines.back().push_back(context.lineNumber);</span></span>
|
||||
<span id="L304"><span class="lineNum"> 304</span> :<span class="tlaGNC"> 317 : }</span></span>
|
||||
<span id="L305"><span class="lineNum"> 305</span> : : </span>
|
||||
<span id="L306"><span class="lineNum"> 306</span> :<span class="tlaGNC"> 149 : void DbcCommentHandler::Handle(const std::string &line, DbcParseContext &context) const {</span></span>
|
||||
<span id="L307"><span class="lineNum"> 307</span> [<span class="tlaGBC" title="Branch 0 was taken 149 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 149 : std::istringstream stream(line);</span></span>
|
||||
<span id="L308"><span class="lineNum"> 308</span> :<span class="tlaGNC"> 149 : std::string keyword;</span></span>
|
||||
<span id="L309"><span class="lineNum"> 309</span> :<span class="tlaGNC"> 149 : std::string target;</span></span>
|
||||
<span id="L310"><span class="lineNum"> 310</span> [<span class="tlaGBC" title="Branch 0 was taken 149 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 149 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 149 : stream >> keyword >> target;</span></span>
|
||||
<span id="L311"><span class="lineNum"> 311</span> [<span class="tlaGBC" title="Branch 0 was taken 149 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 145 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 4 times"> + </span> :<span class="tlaGNC"> 149 : if (keyword != "CM_" || (target != "BO_" && target != "SG_"))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 145 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 78 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 67 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 78 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span><span class="tlaGBC" title="Branch 10 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 11 was taken 73 times"> + </span><span class="tlaGBC" title="Branch 12 was taken 9 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 13 was taken 140 times"> + </span>]
|
||||
<span id="L312"><span class="lineNum"> 312</span> :<span class="tlaGNC"> 9 : return;</span></span>
|
||||
<span id="L313"><span class="lineNum"> 313</span> : : </span>
|
||||
<span id="L314"><span class="lineNum"> 314</span> :<span class="tlaGNC"> 140 : PendingComment pending;</span></span>
|
||||
<span id="L315"><span class="lineNum"> 315</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : pending.isSignal = target == "SG_";</span></span>
|
||||
<span id="L316"><span class="lineNum"> 316</span> :<span class="tlaGNC"> 140 : pending.lineNumber = context.lineNumber;</span></span>
|
||||
<span id="L317"><span class="lineNum"> 317</span> :<span class="tlaGNC"> 140 : std::string idText;</span></span>
|
||||
<span id="L318"><span class="lineNum"> 318</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 140 : if (!(stream >> idText))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 138 times"> + </span>]
|
||||
<span id="L319"><span class="lineNum"> 319</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Missing CAN ID in CM_ statement.");</span></span>
|
||||
<span id="L320"><span class="lineNum"> 320</span> [<span class="tlaGBC" title="Branch 0 was taken 102 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 36 times"> + </span>]:<span class="tlaGNC"> 138 : NormalizeCanId(ParseCanId(idText), pending.canId, pending.isExtended);</span></span>
|
||||
<span id="L321"><span class="lineNum"> 321</span> [<span class="tlaGBC" title="Branch 0 was taken 55 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 47 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 55 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 157 : if (pending.isSignal && (!(stream >> pending.signalName) ||</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 55 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 55 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 2 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 53 times"> + </span><span class="tlaGBC" title="Branch 10 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 11 was taken 100 times"> + </span>]
|
||||
<span id="L322"><span class="lineNum"> 322</span> :<span class="tlaGNC"> 55 : pending.signalName.find_first_of("\";") != std::string::npos))</span></span>
|
||||
<span id="L323"><span class="lineNum"> 323</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Missing or invalid signal name in CM_ statement.");</span></span>
|
||||
<span id="L324"><span class="lineNum"> 324</span> : : </span>
|
||||
<span id="L325"><span class="lineNum"> 325</span> [<span class="tlaGBC" title="Branch 0 was taken 100 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 100 : stream >> std::ws;</span></span>
|
||||
<span id="L326"><span class="lineNum"> 326</span> [<span class="tlaGBC" title="Branch 0 was taken 100 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 96 times"> + </span>]:<span class="tlaGNC"> 100 : if (stream.get() != '"')</span></span>
|
||||
<span id="L327"><span class="lineNum"> 327</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::runtime_error("Missing opening quote in CM_ statement.");</span></span>
|
||||
<span id="L328"><span class="lineNum"> 328</span> :<span class="tlaGNC"> 96 : bool closed = false;</span></span>
|
||||
<span id="L329"><span class="lineNum"> 329</span> : : char character;</span>
|
||||
<span id="L330"><span class="lineNum"> 330</span> [<span class="tlaGBC" title="Branch 0 was taken 1096 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 1096 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 1096 : while (stream.get(character)) {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 1094 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 2 times"> + </span>]
|
||||
<span id="L331"><span class="lineNum"> 331</span> [<span class="tlaGBC" title="Branch 0 was taken 90 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1004 times"> + </span>]:<span class="tlaGNC"> 1094 : if (character == '"') {</span></span>
|
||||
<span id="L332"><span class="lineNum"> 332</span> :<span class="tlaGNC"> 90 : closed = true;</span></span>
|
||||
<span id="L333"><span class="lineNum"> 333</span> :<span class="tlaGNC"> 90 : break;</span></span>
|
||||
<span id="L334"><span class="lineNum"> 334</span> : : }</span>
|
||||
<span id="L335"><span class="lineNum"> 335</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 997 times"> + </span>]:<span class="tlaGNC"> 1004 : if (character == '\\') {</span></span>
|
||||
<span id="L336"><span class="lineNum"> 336</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 7 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 7 : if (!stream.get(character) || (character != '"' && character != '\\'))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 2 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 10 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 11 was taken 3 times"> + </span>]
|
||||
<span id="L337"><span class="lineNum"> 337</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::runtime_error("Invalid escape in CM_ statement.");</span></span>
|
||||
<span id="L338"><span class="lineNum"> 338</span> : : }</span>
|
||||
<span id="L339"><span class="lineNum"> 339</span> [<span class="tlaGBC" title="Branch 0 was taken 1000 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1000 : pending.comment += character;</span></span>
|
||||
<span id="L340"><span class="lineNum"> 340</span> : : }</span>
|
||||
<span id="L341"><span class="lineNum"> 341</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 90 times"> + </span>]:<span class="tlaGNC"> 92 : if (!closed)</span></span>
|
||||
<span id="L342"><span class="lineNum"> 342</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Unterminated CM_ comment.");</span></span>
|
||||
<span id="L343"><span class="lineNum"> 343</span> [<span class="tlaGBC" title="Branch 0 was taken 90 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 90 : stream >> std::ws;</span></span>
|
||||
<span id="L344"><span class="lineNum"> 344</span> [<span class="tlaGBC" title="Branch 0 was taken 90 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 86 times"> + </span>]:<span class="tlaGNC"> 90 : if (stream.get() != ';')</span></span>
|
||||
<span id="L345"><span class="lineNum"> 345</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::runtime_error("Missing semicolon in CM_ statement.");</span></span>
|
||||
<span id="L346"><span class="lineNum"> 346</span> [<span class="tlaGBC" title="Branch 0 was taken 86 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 86 : stream >> std::ws;</span></span>
|
||||
<span id="L347"><span class="lineNum"> 347</span> [<span class="tlaGBC" title="Branch 0 was taken 86 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 84 times"> + </span>]:<span class="tlaGNC"> 86 : if (!stream.eof())</span></span>
|
||||
<span id="L348"><span class="lineNum"> 348</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Unexpected trailing text in CM_ statement.");</span></span>
|
||||
<span id="L349"><span class="lineNum"> 349</span> [<span class="tlaGBC" title="Branch 0 was taken 84 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 84 : context.pendingComments.push_back(std::move(pending));</span></span>
|
||||
<span id="L350"><span class="lineNum"> 350</span> [<span class="tlaGBC" title="Branch 0 was taken 84 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 9 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 84 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 9 times"> + </span> :<span class="tlaGNC"> 391 : }</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 84 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 9 times"> + </span>]
|
||||
<span id="L351"><span class="lineNum"> 351</span> : : </span>
|
||||
<span id="L352"><span class="lineNum"> 352</span> :<span class="tlaGNC"> 597 : void DbcParseContext::ResolveComments(const std::string &filePath) {</span></span>
|
||||
<span id="L353"><span class="lineNum"> 353</span> [<span class="tlaGBC" title="Branch 0 was taken 83 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 587 times"> + </span>]:<span class="tlaGNC"> 670 : for (const PendingComment &pending: pendingComments) {</span></span>
|
||||
<span id="L354"><span class="lineNum"> 354</span> :<span class="tlaGNC"> 83 : FrameInfo *frame = FindFrameById(database, pending.canId, pending.isExtended);</span></span>
|
||||
<span id="L355"><span class="lineNum"> 355</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 77 times"> + </span>]:<span class="tlaGNC"> 83 : if (!frame)</span></span>
|
||||
<span id="L356"><span class="lineNum"> 356</span> : : throw DbcDiagnosticError(DbcDiagnosticCode::InvalidStatement, filePath,</span>
|
||||
<span id="L357"><span class="lineNum"> 357</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 18 : pending.lineNumber, "Unresolved CM_ frame reference.");</span></span>
|
||||
<span id="L358"><span class="lineNum"> 358</span> [<span class="tlaGBC" title="Branch 0 was taken 47 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 30 times"> + </span>]:<span class="tlaGNC"> 77 : if (pending.isSignal) {</span></span>
|
||||
<span id="L359"><span class="lineNum"> 359</span> :<span class="tlaGNC"> 47 : SignalInfo *signal = FindSignalByName(*frame, pending.signalName);</span></span>
|
||||
<span id="L360"><span class="lineNum"> 360</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 43 times"> + </span>]:<span class="tlaGNC"> 47 : if (!signal)</span></span>
|
||||
<span id="L361"><span class="lineNum"> 361</span> : : throw DbcDiagnosticError(DbcDiagnosticCode::InvalidStatement, filePath,</span>
|
||||
<span id="L362"><span class="lineNum"> 362</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 4 : pending.lineNumber, "Unresolved CM_ signal reference: " + pending.signalName);</span></span>
|
||||
<span id="L363"><span class="lineNum"> 363</span> [<span class="tlaGBC" title="Branch 0 was taken 43 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 43 : signal->comment = pending.comment;</span></span>
|
||||
<span id="L364"><span class="lineNum"> 364</span> : : } else {</span>
|
||||
<span id="L365"><span class="lineNum"> 365</span> [<span class="tlaGBC" title="Branch 0 was taken 30 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 30 : frame->comment = pending.comment;</span></span>
|
||||
<span id="L366"><span class="lineNum"> 366</span> : : }</span>
|
||||
<span id="L367"><span class="lineNum"> 367</span> : : }</span>
|
||||
<span id="L368"><span class="lineNum"> 368</span> :<span class="tlaGNC"> 587 : }</span></span>
|
||||
<span id="L369"><span class="lineNum"> 369</span> : : </span>
|
||||
<span id="L370"><span class="lineNum"> 370</span> :<span class="tlaGNC"> 949 : DbcStatementDispatcher::DbcStatementDispatcher() {</span></span>
|
||||
<span id="L371"><span class="lineNum"> 371</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcHeaderHandler>("VERSION");</span></span>
|
||||
<span id="L372"><span class="lineNum"> 372</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcHeaderHandler>("NS_");</span></span>
|
||||
<span id="L373"><span class="lineNum"> 373</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcHeaderHandler>("NS_:");</span></span>
|
||||
<span id="L374"><span class="lineNum"> 374</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcHeaderHandler>("BS_");</span></span>
|
||||
<span id="L375"><span class="lineNum"> 375</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcHeaderHandler>("BS_:");</span></span>
|
||||
<span id="L376"><span class="lineNum"> 376</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcHeaderHandler>("BU_");</span></span>
|
||||
<span id="L377"><span class="lineNum"> 377</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcHeaderHandler>("BU_:");</span></span>
|
||||
<span id="L378"><span class="lineNum"> 378</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcUnsupportedMultiplexingHandler>("SG_MUL_VAL_");</span></span>
|
||||
<span id="L379"><span class="lineNum"> 379</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcFrameHandler>("BO_");</span></span>
|
||||
<span id="L380"><span class="lineNum"> 380</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcSignalHandler>("SG_");</span></span>
|
||||
<span id="L381"><span class="lineNum"> 381</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcCommentHandler>("CM_");</span></span>
|
||||
<span id="L382"><span class="lineNum"> 382</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcValueDescriptionHandler>("VAL_");</span></span>
|
||||
<span id="L383"><span class="lineNum"> 383</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcAttributeHandler>("BA_DEF_");</span></span>
|
||||
<span id="L384"><span class="lineNum"> 384</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcAttributeHandler>("BA_DEF_DEF_");</span></span>
|
||||
<span id="L385"><span class="lineNum"> 385</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 949 : RegisterType<DbcAttributeHandler>("BA_");</span></span>
|
||||
<span id="L386"><span class="lineNum"> 386</span> :<span class="tlaGNC"> 949 : }</span></span>
|
||||
<span id="L387"><span class="lineNum"> 387</span> : : </span>
|
||||
<span id="L388"><span class="lineNum"> 388</span> :<span class="tlaGNC"> 62 : void DbcHeaderHandler::Handle(const std::string &, DbcParseContext &) const {}</span></span>
|
||||
<span id="L389"><span class="lineNum"> 389</span> : : </span>
|
||||
<span id="L390"><span class="lineNum"> 390</span> :<span class="tlaGNC"> 2132 : bool DbcStatementDispatcher::Dispatch(const std::string &line,</span></span>
|
||||
<span id="L391"><span class="lineNum"> 391</span> : : DbcParseContext &context) const {</span>
|
||||
<span id="L392"><span class="lineNum"> 392</span> [<span class="tlaGBC" title="Branch 0 was taken 2132 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2132 : std::istringstream stream(line);</span></span>
|
||||
<span id="L393"><span class="lineNum"> 393</span> :<span class="tlaGNC"> 2132 : std::string keyword;</span></span>
|
||||
<span id="L394"><span class="lineNum"> 394</span> [<span class="tlaGBC" title="Branch 0 was taken 2132 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2132 : stream >> keyword;</span></span>
|
||||
<span id="L395"><span class="lineNum"> 395</span> [<span class="tlaGBC" title="Branch 0 was taken 2132 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2132 : const HandlerMap::const_iterator handler = m_handlers.find(keyword);</span></span>
|
||||
<span id="L396"><span class="lineNum"> 396</span> [<span class="tlaGBC" title="Branch 0 was taken 40 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2092 times"> + </span>]:<span class="tlaGNC"> 2132 : if (handler == m_handlers.end())</span></span>
|
||||
<span id="L397"><span class="lineNum"> 397</span> :<span class="tlaGNC"> 40 : return false;</span></span>
|
||||
<span id="L398"><span class="lineNum"> 398</span> [<span class="tlaGBC" title="Branch 0 was taken 1743 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 349 times"> + </span>]:<span class="tlaGNC"> 2092 : handler->second->Handle(line, context);</span></span>
|
||||
<span id="L399"><span class="lineNum"> 399</span> :<span class="tlaGNC"> 1743 : return true;</span></span>
|
||||
<span id="L400"><span class="lineNum"> 400</span> :<span class="tlaGNC"> 2481 : }</span></span>
|
||||
<span id="L401"><span class="lineNum"> 401</span> : : </span>
|
||||
<span id="L402"><span class="lineNum"> 402</span> :<span class="tlaGNC"> 94 : void DbcValueDescriptionHandler::Handle(const std::string &line, DbcParseContext &context) const {</span></span>
|
||||
<span id="L403"><span class="lineNum"> 403</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 92 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 94 : static const std::regex header(R"(^VAL_[ \t]+([^ \t]+)[ \t]+([^ \t;]+)[ \t]+(.*)$)");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaUNC" title="Branch 6 was not taken"> - </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span>]
|
||||
<span id="L404"><span class="lineNum"> 404</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 92 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 94 : static const std::regex pair(R"dbc(^([^ \t]+)[ \t]+"((?:[^"\\]|\\["\\])*)")dbc");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaUNC" title="Branch 6 was not taken"> - </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span>]
|
||||
<span id="L405"><span class="lineNum"> 405</span> :<span class="tlaGNC"> 94 : std::smatch fields;</span></span>
|
||||
<span id="L406"><span class="lineNum"> 406</span> [<span class="tlaGBC" title="Branch 0 was taken 94 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 90 times"> + </span>]:<span class="tlaGNC"> 94 : if (!std::regex_match(line, fields, header))</span></span>
|
||||
<span id="L407"><span class="lineNum"> 407</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::runtime_error("Malformed or unsupported VAL_ statement.");</span></span>
|
||||
<span id="L408"><span class="lineNum"> 408</span> [<span class="tlaGBC" title="Branch 0 was taken 90 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 90 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 93 : const std::uint32_t rawId = ParseDecimal(fields[1].str(), std::numeric_limits<std::uint32_t>::max(), "VAL_ CAN ID");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 87 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 3 times"> + </span>]
|
||||
<span id="L409"><span class="lineNum"> 409</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 1 was taken 86 times"> + </span>]:<span class="tlaGNC"> 87 : if ((rawId & 0x60000000U) != 0U)</span></span>
|
||||
<span id="L410"><span class="lineNum"> 410</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1 : throw std::runtime_error("VAL_ CAN ID exceeds the 29-bit identifier range.");</span></span>
|
||||
<span id="L411"><span class="lineNum"> 411</span> :<span class="tlaGNC"> 86 : PendingValueDescriptions pending;</span></span>
|
||||
<span id="L412"><span class="lineNum"> 412</span> :<span class="tlaGNC"> 86 : NormalizeCanId(rawId, pending.canId, pending.isExtended);</span></span>
|
||||
<span id="L413"><span class="lineNum"> 413</span> [<span class="tlaGBC" title="Branch 0 was taken 86 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 86 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 86 : pending.signalName = fields[2].str();</span></span>
|
||||
<span id="L414"><span class="lineNum"> 414</span> :<span class="tlaGNC"> 86 : pending.lineNumber = context.lineNumber;</span></span>
|
||||
<span id="L415"><span class="lineNum"> 415</span> [<span class="tlaGBC" title="Branch 0 was taken 86 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 86 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 86 : std::string rest = fields[3].str();</span></span>
|
||||
<span id="L416"><span class="lineNum"> 416</span> [<span class="tlaGBC" title="Branch 0 was taken 179 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 109 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 70 times"> + </span>]:<span class="tlaGNC"> 179 : while (rest != ";") {</span></span>
|
||||
<span id="L417"><span class="lineNum"> 417</span> [<span class="tlaGBC" title="Branch 0 was taken 109 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 104 times"> + </span>]:<span class="tlaGNC"> 109 : if (!std::regex_search(rest, fields, pair))</span></span>
|
||||
<span id="L418"><span class="lineNum"> 418</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 5 : throw std::runtime_error("Malformed VAL_ value/description pair or missing semicolon.");</span></span>
|
||||
<span id="L419"><span class="lineNum"> 419</span> [<span class="tlaGBC" title="Branch 0 was taken 104 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 104 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 104 : const std::string number = fields[1].str();</span></span>
|
||||
<span id="L420"><span class="lineNum"> 420</span> [<span class="tlaGBC" title="Branch 0 was taken 96 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 8 times"> + </span>]:<span class="tlaGNC"> 104 : const RawSignalValue key = ParseValueKey(number);</span></span>
|
||||
<span id="L421"><span class="lineNum"> 421</span> [<span class="tlaGBC" title="Branch 0 was taken 96 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 96 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 96 : const std::string description = UnescapeDescription(fields[2].str());</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 96 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L422"><span class="lineNum"> 422</span> [<span class="tlaGBC" title="Branch 0 was taken 96 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 94 times"> + </span>]:<span class="tlaGNC"> 96 : if (!pending.descriptions.emplace(key, description).second)</span></span>
|
||||
<span id="L423"><span class="lineNum"> 423</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Duplicate VAL_ value key: " + number);</span></span>
|
||||
<span id="L424"><span class="lineNum"> 424</span> [<span class="tlaGBC" title="Branch 0 was taken 94 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 94 : const std::size_t consumed = static_cast<std::size_t>(fields.length());</span></span>
|
||||
<span id="L425"><span class="lineNum"> 425</span> [<span class="tlaGBC" title="Branch 0 was taken 94 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 94 : rest.erase(0, consumed);</span></span>
|
||||
<span id="L426"><span class="lineNum"> 426</span> [<span class="tlaGBC" title="Branch 0 was taken 93 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 2 was taken 93 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 94 : if (!rest.empty() && rest[0] != ';' && rest[0] != ' ' && rest[0] != '\t')</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 23 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 70 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 23 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 2 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 21 times"> + </span><span class="tlaGBC" title="Branch 10 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 11 was not taken"> - </span><span class="tlaGBC" title="Branch 12 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 13 was taken 1 time"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 14 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 15 was taken 93 times"> + </span>]
|
||||
<span id="L427"><span class="lineNum"> 427</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1 : throw std::runtime_error("Missing whitespace between VAL_ pairs.");</span></span>
|
||||
<span id="L428"><span class="lineNum"> 428</span> [<span class="tlaGBC" title="Branch 0 was taken 93 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 93 : rest = dbc_detail::TrimText(rest);</span></span>
|
||||
<span id="L429"><span class="lineNum"> 429</span> :<span class="tlaGNC"> 107 : }</span></span>
|
||||
<span id="L430"><span class="lineNum"> 430</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 1 was taken 69 times"> + </span>]:<span class="tlaGNC"> 70 : if (pending.descriptions.empty())</span></span>
|
||||
<span id="L431"><span class="lineNum"> 431</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1 : throw std::runtime_error("VAL_ requires at least one value/description pair.");</span></span>
|
||||
<span id="L432"><span class="lineNum"> 432</span> [<span class="tlaGBC" title="Branch 0 was taken 69 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 69 : context.pendingValues.push_back(std::move(pending));</span></span>
|
||||
<span id="L433"><span class="lineNum"> 433</span> :<span class="tlaGNC"> 128 : }</span></span>
|
||||
<span id="L434"><span class="lineNum"> 434</span> : : </span>
|
||||
<span id="L435"><span class="lineNum"> 435</span> :<span class="tlaGNC"> 592 : void DbcParseContext::ResolveValueDescriptions(const std::string &filePath) {</span></span>
|
||||
<span id="L436"><span class="lineNum"> 436</span> [<span class="tlaGBC" title="Branch 0 was taken 67 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 577 times"> + </span>]:<span class="tlaGNC"> 644 : for (const PendingValueDescriptions &pending: pendingValues) {</span></span>
|
||||
<span id="L437"><span class="lineNum"> 437</span> : : try {</span>
|
||||
<span id="L438"><span class="lineNum"> 438</span> [<span class="tlaGBC" title="Branch 0 was taken 62 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 5 times"> + </span>]:<span class="tlaGNC"> 67 : FrameInfo *frame = FindUniqueFrame(database, pending.canId, pending.isExtended);</span></span>
|
||||
<span id="L439"><span class="lineNum"> 439</span> [<span class="tlaGBC" title="Branch 0 was taken 55 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 7 times"> + </span>]:<span class="tlaGNC"> 62 : SignalInfo *signal = FindUniqueSignal(*frame, pending.signalName);</span></span>
|
||||
<span id="L440"><span class="lineNum"> 440</span> [<span class="tlaGBC" title="Branch 0 was taken 75 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 52 times"> + </span>]:<span class="tlaGNC"> 127 : for (const ValueDescriptions::value_type &entry: pending.descriptions) {</span></span>
|
||||
<span id="L441"><span class="lineNum"> 441</span> [<span class="tlaGBC" title="Branch 0 was taken 75 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 72 times"> + </span>]:<span class="tlaGNC"> 75 : if (!signal->valueDescriptions.insert(entry).second)</span></span>
|
||||
<span id="L442"><span class="lineNum"> 442</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 3 : throw std::runtime_error("Duplicate VAL_ value key for signal: " + pending.signalName);</span></span>
|
||||
<span id="L443"><span class="lineNum"> 443</span> : : }</span>
|
||||
<span id="L444"><span class="lineNum"> 444</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 15 times"> + </span>]:<span class="tlaGNC"> 15 : } catch (const std::exception &error) {</span></span>
|
||||
<span id="L445"><span class="lineNum"> 445</span> : : throw DbcDiagnosticError(DbcDiagnosticCode::InvalidValueDescription,</span>
|
||||
<span id="L446"><span class="lineNum"> 446</span> [<span class="tlaGBC" title="Branch 0 was taken 15 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 15 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 45 : filePath, pending.lineNumber, error.what());</span></span>
|
||||
<span id="L447"><span class="lineNum"> 447</span> :<span class="tlaGNC"> 15 : }</span></span>
|
||||
<span id="L448"><span class="lineNum"> 448</span> : : }</span>
|
||||
<span id="L449"><span class="lineNum"> 449</span> :<span class="tlaGNC"> 577 : }</span></span>
|
||||
<span id="L450"><span class="lineNum"> 450</span> : : </span>
|
||||
<span id="L451"><span class="lineNum"> 451</span> :<span class="tlaGNC"> 4 : void DbcUnsupportedMultiplexingHandler::Handle(const std::string &, DbcParseContext &) const {</span></span>
|
||||
<span id="L452"><span class="lineNum"> 452</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::runtime_error("Extended and nested multiplexing are unsupported.");</span></span>
|
||||
<span id="L453"><span class="lineNum"> 453</span> : : }</span>
|
||||
<span id="L454"><span class="lineNum"> 454</span> : : </span>
|
||||
<span id="L455"><span class="lineNum"> 455</span> : : namespace {</span>
|
||||
<span id="L456"><span class="lineNum"> 456</span> :<span class="tlaGNC"> 114 : std::vector<std::uint64_t> SignalBits(const SignalInfo &signal) {</span></span>
|
||||
<span id="L457"><span class="lineNum"> 457</span> :<span class="tlaGNC"> 114 : std::vector<std::uint64_t> bits;</span></span>
|
||||
<span id="L458"><span class="lineNum"> 458</span> :<span class="tlaGNC"> 114 : std::uint64_t bit = signal.startBit;</span></span>
|
||||
<span id="L459"><span class="lineNum"> 459</span> [<span class="tlaGBC" title="Branch 0 was taken 884 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 114 times"> + </span>]:<span class="tlaGNC"> 998 : for (std::uint32_t index = 0U; index < signal.length; ++index) {</span></span>
|
||||
<span id="L460"><span class="lineNum"> 460</span> [<span class="tlaGBC" title="Branch 0 was taken 884 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 884 : bits.push_back(bit);</span></span>
|
||||
<span id="L461"><span class="lineNum"> 461</span> :<span class="tlaGNC"> 884 : bit = NextSignalBit(bit, signal.isLittleEndian);</span></span>
|
||||
<span id="L462"><span class="lineNum"> 462</span> : : }</span>
|
||||
<span id="L463"><span class="lineNum"> 463</span> :<span class="tlaGNC"> 114 : return bits;</span></span>
|
||||
<span id="L464"><span class="lineNum"> 464</span> :<span class="tlaUNC"> 0 : }</span></span>
|
||||
<span id="L465"><span class="lineNum"> 465</span> : : </span>
|
||||
<span id="L466"><span class="lineNum"> 466</span> :<span class="tlaGNC"> 58 : bool AreMutuallyExclusive(const SignalInfo &first, const SignalInfo &second) {</span></span>
|
||||
<span id="L467"><span class="lineNum"> 467</span> :<span class="tlaGNC"> 79 : return first.multiplexing.role == MultiplexRole::Branch &&</span></span>
|
||||
<span id="L468"><span class="lineNum"> 468</span> [<span class="tlaGBC" title="Branch 0 was taken 21 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 37 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 17 times"> + </span>]:<span class="tlaGNC"> 62 : second.multiplexing.role == MultiplexRole::Branch &&</span></span>
|
||||
<span id="L469"><span class="lineNum"> 469</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 1 was taken 3 times"> + </span>]:<span class="tlaGNC"> 62 : first.multiplexing.value != second.multiplexing.value;</span></span>
|
||||
<span id="L470"><span class="lineNum"> 470</span> : : }</span>
|
||||
<span id="L471"><span class="lineNum"> 471</span> : : </span>
|
||||
<span id="L472"><span class="lineNum"> 472</span> :<span class="tlaGNC"> 193 : std::string ValidateBranch(const SignalInfo &signal, const SignalInfo *selector) {</span></span>
|
||||
<span id="L473"><span class="lineNum"> 473</span> [<span class="tlaGBC" title="Branch 0 was taken 164 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 29 times"> + </span>]:<span class="tlaGNC"> 193 : if (signal.multiplexing.role != MultiplexRole::Branch)</span></span>
|
||||
<span id="L474"><span class="lineNum"> 474</span> :<span class="tlaGNC"> 164 : return {};</span></span>
|
||||
<span id="L475"><span class="lineNum"> 475</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 25 times"> + </span>]:<span class="tlaGNC"> 29 : if (selector == nullptr)</span></span>
|
||||
<span id="L476"><span class="lineNum"> 476</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 8 : return "Multiplexed branch has no selector.";</span></span>
|
||||
<span id="L477"><span class="lineNum"> 477</span> [<span class="tlaGBC" title="Branch 0 was taken 24 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 2 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 19 times"> + </span>]:<span class="tlaGNC"> 25 : if (selector->length < 64U && signal.multiplexing.value >= (std::uint64_t(1U) << selector->length))</span></span>
|
||||
<span id="L478"><span class="lineNum"> 478</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 10 : return "Branch value exceeds selector raw range.";</span></span>
|
||||
<span id="L479"><span class="lineNum"> 479</span> :<span class="tlaGNC"> 20 : return {};</span></span>
|
||||
<span id="L480"><span class="lineNum"> 480</span> : : }</span>
|
||||
<span id="L481"><span class="lineNum"> 481</span> : : </span>
|
||||
<span id="L482"><span class="lineNum"> 482</span> :<span class="tlaGNC"> 280 : const SignalInfo *FindSelector(const FrameInfo &frame,</span></span>
|
||||
<span id="L483"><span class="lineNum"> 483</span> : : const std::vector<std::size_t> &lines,</span>
|
||||
<span id="L484"><span class="lineNum"> 484</span> : : const std::string &filePath) {</span>
|
||||
<span id="L485"><span class="lineNum"> 485</span> :<span class="tlaGNC"> 280 : const SignalInfo *selector = nullptr;</span></span>
|
||||
<span id="L486"><span class="lineNum"> 486</span> [<span class="tlaGBC" title="Branch 0 was taken 207 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 272 times"> + </span>]:<span class="tlaGNC"> 479 : for (std::size_t index = 0U; index < frame.signals.size(); ++index) {</span></span>
|
||||
<span id="L487"><span class="lineNum"> 487</span> :<span class="tlaGNC"> 207 : const SignalInfo &signal = frame.signals[index];</span></span>
|
||||
<span id="L488"><span class="lineNum"> 488</span> [<span class="tlaGBC" title="Branch 0 was taken 173 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 34 times"> + </span>]:<span class="tlaGNC"> 207 : if (signal.multiplexing.role != MultiplexRole::Selector)</span></span>
|
||||
<span id="L489"><span class="lineNum"> 489</span> :<span class="tlaGNC"> 173 : continue;</span></span>
|
||||
<span id="L490"><span class="lineNum"> 490</span> [<span class="tlaGBC" title="Branch 0 was taken 30 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 26 times"> + </span>]:<span class="tlaGNC"> 34 : if (selector != nullptr || signal.isSigned)</span></span>
|
||||
<span id="L491"><span class="lineNum"> 491</span> : : throw DbcDiagnosticError(DbcDiagnosticCode::InvalidMultiplexing,</span>
|
||||
<span id="L492"><span class="lineNum"> 492</span> :<span class="tlaGNC"> 8 : filePath, lines[index],</span></span>
|
||||
<span id="L493"><span class="lineNum"> 493</span> [<span class="tlaGBC" title="Branch 0 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 32 : "Multiplexing requires one unsigned selector per frame.");</span></span>
|
||||
<span id="L494"><span class="lineNum"> 494</span> :<span class="tlaGNC"> 26 : selector = &signal;</span></span>
|
||||
<span id="L495"><span class="lineNum"> 495</span> : : }</span>
|
||||
<span id="L496"><span class="lineNum"> 496</span> :<span class="tlaGNC"> 272 : return selector;</span></span>
|
||||
<span id="L497"><span class="lineNum"> 497</span> : : }</span>
|
||||
<span id="L498"><span class="lineNum"> 498</span> : : </span>
|
||||
<span id="L499"><span class="lineNum"> 499</span> :<span class="tlaGNC"> 57 : bool SignalsOverlap(const SignalInfo &first, const SignalInfo &second) {</span></span>
|
||||
<span id="L500"><span class="lineNum"> 500</span> [<span class="tlaGBC" title="Branch 0 was taken 57 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 57 : const std::vector<std::uint64_t> firstBits = SignalBits(first);</span></span>
|
||||
<span id="L501"><span class="lineNum"> 501</span> [<span class="tlaGBC" title="Branch 0 was taken 57 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 57 : const std::vector<std::uint64_t> secondBits = SignalBits(second);</span></span>
|
||||
<span id="L502"><span class="lineNum"> 502</span> [<span class="tlaGBC" title="Branch 0 was taken 442 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 47 times"> + </span>]:<span class="tlaGNC"> 489 : for (const std::uint64_t firstBit : firstBits) {</span></span>
|
||||
<span id="L503"><span class="lineNum"> 503</span> [<span class="tlaGBC" title="Branch 0 was taken 2948 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 432 times"> + </span>]:<span class="tlaGNC"> 3380 : for (const std::uint64_t secondBit : secondBits) {</span></span>
|
||||
<span id="L504"><span class="lineNum"> 504</span> [<span class="tlaGBC" title="Branch 0 was taken 10 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2938 times"> + </span>]:<span class="tlaGNC"> 2948 : if (firstBit == secondBit)</span></span>
|
||||
<span id="L505"><span class="lineNum"> 505</span> :<span class="tlaGNC"> 10 : return true;</span></span>
|
||||
<span id="L506"><span class="lineNum"> 506</span> : : }</span>
|
||||
<span id="L507"><span class="lineNum"> 507</span> : : }</span>
|
||||
<span id="L508"><span class="lineNum"> 508</span> :<span class="tlaGNC"> 47 : return false;</span></span>
|
||||
<span id="L509"><span class="lineNum"> 509</span> :<span class="tlaGNC"> 57 : }</span></span>
|
||||
<span id="L510"><span class="lineNum"> 510</span> : : }</span>
|
||||
<span id="L511"><span class="lineNum"> 511</span> : : </span>
|
||||
<span id="L512"><span class="lineNum"> 512</span> :<span class="tlaGNC"> 576 : void DbcParseContext::ValidateMultiplexing(const std::string &filePath) const {</span></span>
|
||||
<span id="L513"><span class="lineNum"> 513</span> [<span class="tlaGBC" title="Branch 0 was taken 280 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 549 times"> + </span>]:<span class="tlaGNC"> 829 : for (std::size_t frameIndex = 0U; frameIndex < database.frames.size(); ++frameIndex) {</span></span>
|
||||
<span id="L514"><span class="lineNum"> 514</span> :<span class="tlaGNC"> 280 : const FrameInfo &frame = database.frames[frameIndex];</span></span>
|
||||
<span id="L515"><span class="lineNum"> 515</span> :<span class="tlaGNC"> 280 : const SignalInfo *selector = FindSelector(frame, signalLines[frameIndex], filePath);</span></span>
|
||||
<span id="L516"><span class="lineNum"> 516</span> [<span class="tlaGBC" title="Branch 0 was taken 193 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 253 times"> + </span>]:<span class="tlaGNC"> 446 : for (std::size_t index = 0U; index < frame.signals.size(); ++index) {</span></span>
|
||||
<span id="L517"><span class="lineNum"> 517</span> :<span class="tlaGNC"> 193 : const SignalInfo &signal = frame.signals[index];</span></span>
|
||||
<span id="L518"><span class="lineNum"> 518</span> [<span class="tlaGBC" title="Branch 0 was taken 193 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 193 : std::string error = ValidateBranch(signal, selector);</span></span>
|
||||
<span id="L519"><span class="lineNum"> 519</span> [<span class="tlaGBC" title="Branch 0 was taken 61 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 190 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 58 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 3 times"> + </span> :<span class="tlaGNC"> 251 : for (std::size_t previous = 0U; previous < index && error.empty(); ++previous) {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 58 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 193 times"> + </span>]
|
||||
<span id="L520"><span class="lineNum"> 520</span> :<span class="tlaGNC"> 58 : const SignalInfo &other = frame.signals[previous];</span></span>
|
||||
<span id="L521"><span class="lineNum"> 521</span> [<span class="tlaGBC" title="Branch 0 was taken 57 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 2 was taken 57 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 58 : if (!AreMutuallyExclusive(signal, other) && SignalsOverlap(signal, other))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 10 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 47 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 10 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 48 times"> + </span>]
|
||||
<span id="L522"><span class="lineNum"> 522</span> [<span class="tlaGBC" title="Branch 0 was taken 10 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 10 : error = "Signals overlap without mutually exclusive multiplexing conditions.";</span></span>
|
||||
<span id="L523"><span class="lineNum"> 523</span> : : }</span>
|
||||
<span id="L524"><span class="lineNum"> 524</span> [<span class="tlaGBC" title="Branch 0 was taken 19 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 174 times"> + </span>]:<span class="tlaGNC"> 193 : if (!error.empty())</span></span>
|
||||
<span id="L525"><span class="lineNum"> 525</span> : : throw DbcDiagnosticError(DbcDiagnosticCode::InvalidMultiplexing,</span>
|
||||
<span id="L526"><span class="lineNum"> 526</span> [<span class="tlaGBC" title="Branch 0 was taken 19 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 19 : filePath, signalLines[frameIndex][index], error);</span></span>
|
||||
<span id="L527"><span class="lineNum"> 527</span> :<span class="tlaGNC"> 193 : }</span></span>
|
||||
<span id="L528"><span class="lineNum"> 528</span> : : }</span>
|
||||
<span id="L529"><span class="lineNum"> 529</span> :<span class="tlaGNC"> 549 : }</span></span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,173 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_statement_handler.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_statement_handler.h<span style="font-size: 80%;"> (<a href="dbc_statement_handler.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">45.5 %</td>
|
||||
<td class="headerCovTableEntry">22</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="dbc_statement_handler.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.h.gcov.html#L33">DbcDiagnosticError::DbcDiagnosticError(DbcDiagnosticCode, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">438</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<CountingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">14236</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<CountingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcCommentHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcFrameHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcSignalHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcUnsupportedMultiplexingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcValueDescriptionHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcAttributeHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">2847</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcHeaderHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">6643</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.h.gcov.html#L74">DbcStatementHandler::~DbcStatementHandler()</a></td>
|
||||
|
||||
<td class="coverFnHi">14250</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,173 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_statement_handler.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_statement_handler.h<span style="font-size: 80%;"> (<a href="dbc_statement_handler.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">45.5 %</td>
|
||||
<td class="headerCovTableEntry">22</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="dbc_statement_handler.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.h.gcov.html#L33">DbcDiagnosticError::DbcDiagnosticError(DbcDiagnosticCode, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">438</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.h.gcov.html#L74">DbcStatementHandler::~DbcStatementHandler()</a></td>
|
||||
|
||||
<td class="coverFnHi">14250</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<CountingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">14236</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<CountingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcAttributeHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">2847</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcCommentHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcFrameHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcHeaderHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">6643</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcSignalHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcUnsupportedMultiplexingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcValueDescriptionHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,239 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_statement_handler.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_statement_handler.h<span style="font-size: 80%;"> (source / <a href="dbc_statement_handler.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">45.5 %</td>
|
||||
<td class="headerCovTableEntry">22</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : // SPDX-License-Identifier: MIT</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : #ifndef DBC_STATEMENT_HANDLER_H</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : #define DBC_STATEMENT_HANDLER_H</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : </span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : #include "dbc_database.h"</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : #include "dbc_diagnostic.h"</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : #include "typefactory.h"</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : #include <stdexcept></span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : #include <string></span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : #include <unordered_map></span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : /** @brief Deferred raw value descriptions and their target. */</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : struct PendingValueDescriptions {</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : std::uint32_t canId; /**< Normalized target frame identifier. */</span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : : bool isExtended; /**< Target frame type. */</span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : std::string signalName; /**< Target signal name. */</span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : : ValueDescriptions descriptions; /**< Raw integer descriptions to merge. */</span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : std::size_t lineNumber; /**< One-based physical statement line. */</span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : : };</span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : : </span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : : /** @brief Deferred frame or signal comment and its source location. */</span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : : struct PendingComment {</span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : : std::uint32_t canId; /**< Normalized target frame identifier. */</span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : : bool isExtended; /**< Target frame type. */</span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : : bool isSignal; /**< Whether the target is a signal rather than a frame. */</span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : : std::string signalName; /**< Target signal name. */</span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : : std::string comment; /**< Unescaped comment text. */</span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : : std::size_t lineNumber; /**< One-based physical statement line. */</span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> : : };</span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : : </span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> : : /** Carries deferred validation locations without parsing exception text. */</span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : : class DbcDiagnosticError : public std::runtime_error {</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : : public:</span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : : /** @brief Create an exception with a structured source diagnostic. */</span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> :<span class="tlaGNC"> 438 : DbcDiagnosticError(DbcDiagnosticCode code, const std::string &filePath,</span></span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> : : std::size_t lineNumber, const std::string &message)</span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> [<span class="tlaGBC" title="Branch 0 was taken 438 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 438 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 876 : : std::runtime_error(filePath + ":" + std::to_string(lineNumber) + ": " + message),</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 438 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 438 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span>]
|
||||
<span id="L38"><span class="lineNum"> 38</span> [<span class="tlaGBC" title="Branch 0 was taken 438 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 438 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 1314 : diagnostic{DbcDiagnosticSeverity::Error, code, filePath, lineNumber, message} {}</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 438 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 438 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaUNC" title="Branch 8 was not taken"> - </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span>]
|
||||
<span id="L39"><span class="lineNum"> 39</span> : : </span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : : DbcDiagnostic diagnostic; /**< Structured error accompanying the exception message. */</span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> : : };</span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : : </span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> : : /** @brief Attribute statement retained for ordered resolution. */</span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> : : struct PendingAttribute {</span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> : : std::string statement; /**< Complete attribute statement. */</span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : : std::size_t lineNumber; /**< One-based physical statement line. */</span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : : };</span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> : : </span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> : : /** Mutable state belonging to one file parse. Handlers do not retain it. */</span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> : : struct DbcParseContext {</span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> : : DbcDatabase &database; /**< Parsed metadata under construction. */</span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> : : FrameInfo *currentFrame = nullptr; /**< Current frame for following signal definitions. */</span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> : : bool enableJ1939 = false; /**< Explicit interpretation option for extended frames. */</span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> : : std::size_t lineNumber = 0U; /**< Physical line of the current statement. */</span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> : : std::vector<PendingValueDescriptions> pendingValues = {}; /**< Unresolved raw value descriptions. */</span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> : : </span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> : : std::vector<std::vector<std::size_t>> signalLines = {}; /**< Signal definition lines grouped by frame. */</span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> : : /** @brief Validate selectors, branch ranges, and signal overlap. */</span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> : : void ValidateMultiplexing(const std::string &filePath) const;</span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> : : </span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> : : std::vector<PendingComment> pendingComments = {}; /**< Unresolved comments in source order. */</span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> : : /** @brief Resolve deferred comments after all definitions are known. */</span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> : : void ResolveComments(const std::string &filePath);</span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> : : </span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> : : std::vector<PendingAttribute> pendingAttributes = {}; /**< Unresolved attributes in source order. */</span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> : : /** @brief Resolve definitions, defaults, then assignments; append format warnings. */</span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> : : void ResolveAttributes(const std::string &filePath, std::vector<DbcDiagnostic> &diagnostics);</span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> : : </span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> : : /** @brief Resolve deferred raw descriptions against unique targets. */</span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> : : void ResolveValueDescriptions(const std::string &filePath);</span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> : : };</span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> : : </span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> : : /** @brief Interface for processing a registered DBC statement. */</span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> : : class DbcStatementHandler {</span>
|
||||
<span id="L75"><span class="lineNum"> 75</span> : : public:</span>
|
||||
<span id="L76"><span class="lineNum"> 76</span> :<span class="tlaGNC"> 14250 : virtual ~DbcStatementHandler() = default;</span></span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> : : /** @brief Process a trimmed statement using state belonging to this parse. */</span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> : : virtual void Handle(const std::string &line, DbcParseContext &context) const = 0;</span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> : : };</span>
|
||||
<span id="L80"><span class="lineNum"> 80</span> : : </span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> : : /** @brief Parse and append frame definitions. */</span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> : : class DbcFrameHandler : public DbcStatementHandler {</span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> : : public:</span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> : : void Handle(const std::string &line, DbcParseContext &context) const override;</span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> : : </span>
|
||||
<span id="L86"><span class="lineNum"> 86</span> : : private:</span>
|
||||
<span id="L87"><span class="lineNum"> 87</span> : : static FrameInfo ParseFrameLine(const std::string &line);</span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> : : };</span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> : : </span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> : : /** @brief Parse and append signals to the current frame. */</span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> : : class DbcSignalHandler : public DbcStatementHandler {</span>
|
||||
<span id="L92"><span class="lineNum"> 92</span> : : public:</span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> : : void Handle(const std::string &line, DbcParseContext &context) const override;</span>
|
||||
<span id="L94"><span class="lineNum"> 94</span> : : </span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> : : private:</span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> : : static SignalInfo ParseSignalLine(const std::string &line);</span>
|
||||
<span id="L97"><span class="lineNum"> 97</span> : : };</span>
|
||||
<span id="L98"><span class="lineNum"> 98</span> : : </span>
|
||||
<span id="L99"><span class="lineNum"> 99</span> : : /** @brief Defer frame and signal comments for target resolution. */</span>
|
||||
<span id="L100"><span class="lineNum"> 100</span> : : class DbcCommentHandler : public DbcStatementHandler {</span>
|
||||
<span id="L101"><span class="lineNum"> 101</span> : : public:</span>
|
||||
<span id="L102"><span class="lineNum"> 102</span> : : void Handle(const std::string &line, DbcParseContext &context) const override;</span>
|
||||
<span id="L103"><span class="lineNum"> 103</span> : : };</span>
|
||||
<span id="L104"><span class="lineNum"> 104</span> : : </span>
|
||||
<span id="L105"><span class="lineNum"> 105</span> : : /** @brief Defer typed attribute statements for resolution. */</span>
|
||||
<span id="L106"><span class="lineNum"> 106</span> : : class DbcAttributeHandler : public DbcStatementHandler {</span>
|
||||
<span id="L107"><span class="lineNum"> 107</span> : : public:</span>
|
||||
<span id="L108"><span class="lineNum"> 108</span> : : void Handle(const std::string &line, DbcParseContext &context) const override;</span>
|
||||
<span id="L109"><span class="lineNum"> 109</span> : : };</span>
|
||||
<span id="L110"><span class="lineNum"> 110</span> : : </span>
|
||||
<span id="L111"><span class="lineNum"> 111</span> : : /** @brief Defer raw value descriptions for target resolution. */</span>
|
||||
<span id="L112"><span class="lineNum"> 112</span> : : class DbcValueDescriptionHandler : public DbcStatementHandler {</span>
|
||||
<span id="L113"><span class="lineNum"> 113</span> : : public:</span>
|
||||
<span id="L114"><span class="lineNum"> 114</span> : : void Handle(const std::string &line, DbcParseContext &context) const override;</span>
|
||||
<span id="L115"><span class="lineNum"> 115</span> : : };</span>
|
||||
<span id="L116"><span class="lineNum"> 116</span> : : </span>
|
||||
<span id="L117"><span class="lineNum"> 117</span> : : /** @brief Reject unsupported extended multiplexing statements. */</span>
|
||||
<span id="L118"><span class="lineNum"> 118</span> : : class DbcUnsupportedMultiplexingHandler : public DbcStatementHandler {</span>
|
||||
<span id="L119"><span class="lineNum"> 119</span> : : public:</span>
|
||||
<span id="L120"><span class="lineNum"> 120</span> : : void Handle(const std::string &line, DbcParseContext &context) const override;</span>
|
||||
<span id="L121"><span class="lineNum"> 121</span> : : };</span>
|
||||
<span id="L122"><span class="lineNum"> 122</span> : : </span>
|
||||
<span id="L123"><span class="lineNum"> 123</span> : : /** Common header metadata does not change the supported decode definitions. */</span>
|
||||
<span id="L124"><span class="lineNum"> 124</span> : : class DbcHeaderHandler : public DbcStatementHandler {</span>
|
||||
<span id="L125"><span class="lineNum"> 125</span> : : public:</span>
|
||||
<span id="L126"><span class="lineNum"> 126</span> : : void Handle(const std::string &line, DbcParseContext &context) const override;</span>
|
||||
<span id="L127"><span class="lineNum"> 127</span> : : };</span>
|
||||
<span id="L128"><span class="lineNum"> 128</span> : : </span>
|
||||
<span id="L129"><span class="lineNum"> 129</span> : : /** Exact-key dispatch to handlers created once per registration via TypeFactory. */</span>
|
||||
<span id="L130"><span class="lineNum"> 130</span> : : class DbcStatementDispatcher {</span>
|
||||
<span id="L131"><span class="lineNum"> 131</span> : : public:</span>
|
||||
<span id="L132"><span class="lineNum"> 132</span> : : /** @brief Register supported statement handlers through TypeFactory. */</span>
|
||||
<span id="L133"><span class="lineNum"> 133</span> : : DbcStatementDispatcher();</span>
|
||||
<span id="L134"><span class="lineNum"> 134</span> : : </span>
|
||||
<span id="L135"><span class="lineNum"> 135</span> : : /** @brief Register or replace a handler and create its reusable instance. */</span>
|
||||
<span id="L136"><span class="lineNum"> 136</span> : : template<class Handler></span>
|
||||
<span id="L137"><span class="lineNum"> 137</span> :<span class="tlaGNC"> 14236 : void RegisterType(const std::string &keyword) {</span></span>
|
||||
<span id="L138"><span class="lineNum"> 138</span> :<span class="tlaGNC"> 14236 : m_factory.registerType<Handler>(keyword);</span></span>
|
||||
<span id="L139"><span class="lineNum"> 139</span> [<span class="tlaGBC" title="Branch 0 was taken 14236 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 14236 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 14236 : m_handlers.insert_or_assign(keyword, m_factory.create(keyword));</span></span>
|
||||
<span id="L140"><span class="lineNum"> 140</span> :<span class="tlaGNC"> 14236 : }</span></span>
|
||||
<span id="L141"><span class="lineNum"> 141</span> : : </span>
|
||||
<span id="L142"><span class="lineNum"> 142</span> : : /** Returns false for an unregistered keyword; input must be trimmed. */</span>
|
||||
<span id="L143"><span class="lineNum"> 143</span> : : bool Dispatch(const std::string &line, DbcParseContext &context) const;</span>
|
||||
<span id="L144"><span class="lineNum"> 144</span> : : </span>
|
||||
<span id="L145"><span class="lineNum"> 145</span> : : private:</span>
|
||||
<span id="L146"><span class="lineNum"> 146</span> : : using HandlerMap = std::unordered_map<std::string, std::shared_ptr<DbcStatementHandler>>;</span>
|
||||
<span id="L147"><span class="lineNum"> 147</span> : : TypeFactory<std::string, DbcStatementHandler> m_factory;</span>
|
||||
<span id="L148"><span class="lineNum"> 148</span> : : HandlerMap m_handlers;</span>
|
||||
<span id="L149"><span class="lineNum"> 149</span> : : };</span>
|
||||
<span id="L150"><span class="lineNum"> 150</span> : : </span>
|
||||
<span id="L151"><span class="lineNum"> 151</span> : : #endif /* DBC_STATEMENT_HANDLER_H */</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_tree_builder.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_tree_builder.cpp<span style="font-size: 80%;"> (<a href="dbc_tree_builder.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">91.7 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">11</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">66.7 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="dbc_tree_builder.cpp.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_tree_builder.cpp.gcov.html#L12">DbcTreeBuilder::Build(DbcDatabase const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">22</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_tree_builder.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_tree_builder.cpp<span style="font-size: 80%;"> (<a href="dbc_tree_builder.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">91.7 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">11</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">66.7 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="dbc_tree_builder.cpp.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_tree_builder.cpp.gcov.html#L12">DbcTreeBuilder::Build(DbcDatabase const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">22</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,114 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_tree_builder.cpp</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_tree_builder.cpp<span style="font-size: 80%;"> (source / <a href="dbc_tree_builder.cpp.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">91.7 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">11</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">66.7 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : * @file dbc_tree_builder.cpp</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : * @brief Construction of frame and signal metadata trees.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : #include "dbc_tree_builder.h"</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : </span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> :<span class="tlaGNC"> 22 : std::unique_ptr<TreeNode> DbcTreeBuilder::Build(const DbcDatabase &database) const {</span></span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> :<span class="tlaGNC"> 22 : std::unique_ptr<TreeNode> root = std::make_unique<TreeNode>();</span></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : </span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> [<span class="tlaGBC" title="Branch 0 was taken 31 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 22 times"> + </span>]:<span class="tlaGNC"> 53 : for (const FrameInfo &frame : database.frames) {</span></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> [<span class="tlaGBC" title="Branch 0 was taken 31 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 31 : std::unique_ptr<TreeNode> frameNode = std::make_unique<TreeNode>(frame);</span></span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : : </span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> [<span class="tlaGBC" title="Branch 0 was taken 44 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 31 times"> + </span>]:<span class="tlaGNC"> 75 : for (const SignalInfo &signal : frame.signals) {</span></span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> [<span class="tlaGBC" title="Branch 0 was taken 44 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 44 : std::unique_ptr<TreeNode> signalNode = std::make_unique<TreeNode>(signal);</span></span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> [<span class="tlaGBC" title="Branch 0 was taken 44 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 44 : frameNode->AddChild(std::move(signalNode));</span></span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> :<span class="tlaGNC"> 44 : }</span></span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : : </span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> [<span class="tlaGBC" title="Branch 0 was taken 31 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 31 : root->AddChild(std::move(frameNode));</span></span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> :<span class="tlaGNC"> 31 : }</span></span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : : </span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> :<span class="tlaGNC"> 22 : return root;</span></span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> :<span class="tlaUNC"> 0 : }</span></span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,165 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/decode_database.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - decode_database.cpp<span style="font-size: 80%;"> (<a href="decode_database.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">99.1 %</td>
|
||||
<td class="headerCovTableEntry">110</td>
|
||||
<td class="headerCovTableEntry">109</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">80.2 %</td>
|
||||
<td class="headerCovTableEntry">182</td>
|
||||
<td class="headerCovTableEntry">146</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="decode_database.cpp.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L144">DecodeDatabase::FindSignal(SignalKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">53</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L46">(anonymous namespace)::AreMutuallyExclusive(DecodeSignal const&, DecodeSignal const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">71</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L113">DecodeDatabase::GetFrames() const</a></td>
|
||||
|
||||
<td class="coverFnHi">76</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L128">DecodeDatabase::FindFrameByPgn(unsigned int) const</a></td>
|
||||
|
||||
<td class="coverFnHi">116</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L33">(anonymous namespace)::GetSignalBits(DecodeSignal const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">2364</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L109">DecodeDatabase::DecodeDatabase(std::vector<DecodeFrame, std::allocator<DecodeFrame> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">2394</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L91">DecodeDatabase::Storage::Storage(std::vector<DecodeFrame, std::allocator<DecodeFrame> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">2394</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L52">(anonymous namespace)::ValidateFrame(DecodeFrame const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">2447</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L15">(anonymous namespace)::ValidateSignal(DecodeSignal const&, unsigned char)</a></td>
|
||||
|
||||
<td class="coverFnHi">2476</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L118">DecodeDatabase::FindFrame(FrameKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">6555</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,165 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/decode_database.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - decode_database.cpp<span style="font-size: 80%;"> (<a href="decode_database.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">99.1 %</td>
|
||||
<td class="headerCovTableEntry">110</td>
|
||||
<td class="headerCovTableEntry">109</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">80.2 %</td>
|
||||
<td class="headerCovTableEntry">182</td>
|
||||
<td class="headerCovTableEntry">146</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="decode_database.cpp.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L46">(anonymous namespace)::AreMutuallyExclusive(DecodeSignal const&, DecodeSignal const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">71</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L33">(anonymous namespace)::GetSignalBits(DecodeSignal const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">2364</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L52">(anonymous namespace)::ValidateFrame(DecodeFrame const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">2447</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L15">(anonymous namespace)::ValidateSignal(DecodeSignal const&, unsigned char)</a></td>
|
||||
|
||||
<td class="coverFnHi">2476</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L109">DecodeDatabase::DecodeDatabase(std::vector<DecodeFrame, std::allocator<DecodeFrame> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">2394</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L118">DecodeDatabase::FindFrame(FrameKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">6555</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L128">DecodeDatabase::FindFrameByPgn(unsigned int) const</a></td>
|
||||
|
||||
<td class="coverFnHi">116</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L144">DecodeDatabase::FindSignal(SignalKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">53</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L113">DecodeDatabase::GetFrames() const</a></td>
|
||||
|
||||
<td class="coverFnHi">76</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L91">DecodeDatabase::Storage::Storage(std::vector<DecodeFrame, std::allocator<DecodeFrame> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">2394</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,243 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/decode_database.cpp</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - decode_database.cpp<span style="font-size: 80%;"> (source / <a href="decode_database.cpp.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">99.1 %</td>
|
||||
<td class="headerCovTableEntry">110</td>
|
||||
<td class="headerCovTableEntry">109</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">80.2 %</td>
|
||||
<td class="headerCovTableEntry">182</td>
|
||||
<td class="headerCovTableEntry">146</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : // SPDX-License-Identifier: MIT</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : // Copyright (c) 2026 Dim Himro</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : </span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : #include "decode_database.h"</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : #include "j1939.h"</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : #include "signal_layout.h"</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : #include <bitset></span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : #include <cmath></span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : #include <limits></span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : #include <stdexcept></span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : #include <unordered_set></span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : </span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : namespace {</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : constexpr std::size_t MaximumPayloadBits = std::numeric_limits<std::uint8_t>::max() * 8U;</span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : : using SignalBits = std::bitset<MaximumPayloadBits>;</span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : </span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> :<span class="tlaGNC"> 2476 : void ValidateSignal(const DecodeSignal &signal, std::uint8_t dlc) {</span></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> [<span class="tlaGBC" title="Branch 0 was taken 1133 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1343 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1130 times"> + </span>]:<span class="tlaGNC"> 2476 : if (signal.byteOrder != ByteOrder::Intel && signal.byteOrder != ByteOrder::Motorola)</span></span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 3 : throw std::invalid_argument("Invalid signal byte order: " + signal.name);</span></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> [<span class="tlaGBC" title="Branch 0 was taken 93 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2380 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 90 times"> + </span>]:<span class="tlaGNC"> 2473 : if (signal.valueType != ValueType::Unsigned && signal.valueType != ValueType::Signed)</span></span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 3 : throw std::invalid_argument("Invalid signal value type: " + signal.name);</span></span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> [<span class="tlaGBC" title="Branch 0 was taken 75 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2395 times"> + </span>]:<span class="tlaGNC"> 2470 : if (signal.multiplexing.role != MultiplexRole::Unconditional &&</span></span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> [<span class="tlaGBC" title="Branch 0 was taken 38 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 37 times"> + </span>]:<span class="tlaGNC"> 75 : signal.multiplexing.role != MultiplexRole::Selector &&</span></span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 34 times"> + </span>]:<span class="tlaGNC"> 38 : signal.multiplexing.role != MultiplexRole::Branch)</span></span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::invalid_argument("Invalid multiplexing role: " + signal.name);</span></span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> [<span class="tlaGBC" title="Branch 0 was taken 36 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2430 times"> + </span>]:<span class="tlaGNC"> 2466 : if (!IsValidSignalLayout(signal.startBit, signal.length,</span></span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> :<span class="tlaGNC"> 2466 : signal.byteOrder == ByteOrder::Intel, dlc))</span></span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> [<span class="tlaGBC" title="Branch 0 was taken 36 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 36 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 36 : throw std::invalid_argument("Invalid signal length or payload position: " + signal.name);</span></span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> [<span class="tlaGBC" title="Branch 0 was taken 2405 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 12 times"> + </span>]:<span class="tlaGNC"> 4847 : if (!std::isfinite(signal.factor) || !std::isfinite(signal.offset) ||</span></span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> [<span class="tlaGBC" title="Branch 0 was taken 2417 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 13 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2399 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 6 times"> + </span> :<span class="tlaGNC"> 7240 : !std::isfinite(signal.minimum) || !std::isfinite(signal.maximum) ||</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2393 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 39 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 2391 times"> + </span>]
|
||||
<span id="L31"><span class="lineNum"> 31</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2391 times"> + </span>]:<span class="tlaGNC"> 2393 : signal.minimum > signal.maximum)</span></span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> [<span class="tlaGBC" title="Branch 0 was taken 39 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 39 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 39 : throw std::invalid_argument("Invalid signal numeric parameters: " + signal.name);</span></span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> :<span class="tlaGNC"> 2391 : }</span></span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : : </span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> :<span class="tlaGNC"> 2364 : SignalBits GetSignalBits(const DecodeSignal &signal) {</span></span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> :<span class="tlaGNC"> 2364 : SignalBits bits;</span></span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> :<span class="tlaGNC"> 2364 : const bool littleEndian = signal.byteOrder == ByteOrder::Intel;</span></span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> :<span class="tlaGNC"> 2364 : const std::uint64_t start = SignalStartCoordinate(signal.startBit, littleEndian);</span></span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> [<span class="tlaGBC" title="Branch 0 was taken 73229 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2364 times"> + </span>]:<span class="tlaGNC"> 75593 : for (std::uint32_t index = 0U; index < signal.length; ++index) {</span></span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> :<span class="tlaGNC"> 73229 : const std::uint64_t coordinate = start + index;</span></span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> [<span class="tlaGBC" title="Branch 0 was taken 37131 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 36098 times"> + </span>]:<span class="tlaGNC"> 73229 : const std::uint64_t bit = littleEndian ? coordinate</span></span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> :<span class="tlaGNC"> 36098 : : coordinate / 8U * 8U + 7U - coordinate % 8U;</span></span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> :<span class="tlaGNC"> 73229 : bits.set(static_cast<std::size_t>(bit));</span></span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> : : }</span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> :<span class="tlaGNC"> 2364 : return bits;</span></span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : : }</span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : : </span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> :<span class="tlaGNC"> 71 : bool AreMutuallyExclusive(const DecodeSignal &first, const DecodeSignal &second) {</span></span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> :<span class="tlaGNC"> 96 : return first.multiplexing.role == MultiplexRole::Branch &&</span></span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> [<span class="tlaGBC" title="Branch 0 was taken 25 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 46 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 19 times"> + </span>]:<span class="tlaGNC"> 77 : second.multiplexing.role == MultiplexRole::Branch &&</span></span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3 times"> + </span>]:<span class="tlaGNC"> 77 : first.multiplexing.value != second.multiplexing.value;</span></span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> : : }</span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> : : </span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> :<span class="tlaGNC"> 2447 : void ValidateFrame(const DecodeFrame &frame) {</span></span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> [<span class="tlaGBC" title="Branch 0 was taken 72 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2375 times"> + </span>]:<span class="tlaGNC"> 2447 : const std::uint32_t maximumId = frame.isExtended ? 0x1FFFFFFFU : 0x7FFU;</span></span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> [<span class="tlaGBC" title="Branch 0 was taken 9 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2438 times"> + </span>]:<span class="tlaGNC"> 2447 : if (frame.canId > maximumId)</span></span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> [<span class="tlaGBC" title="Branch 0 was taken 9 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 9 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 9 : throw std::invalid_argument("Invalid normalized CAN ID: " + std::to_string(frame.canId));</span></span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> : : </span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> [<span class="tlaGBC" title="Branch 0 was taken 24 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2414 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 23 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1 time"> + </span> :<span class="tlaGNC"> 2438 : if (frame.hasPgn && (!frame.isExtended || frame.pgn != ExtractJ1939Pgn(frame.canId)))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 21 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 2435 times"> + </span>]
|
||||
<span id="L60"><span class="lineNum"> 60</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 3 : throw std::invalid_argument("Invalid J1939 PGN metadata: " + frame.name);</span></span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> : : </span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> :<span class="tlaGNC"> 2435 : std::unordered_set<std::string> names;</span></span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> :<span class="tlaGNC"> 2435 : const DecodeSignal *selector = nullptr;</span></span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> [<span class="tlaGBC" title="Branch 0 was taken 2480 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2340 times"> + </span>]:<span class="tlaGNC"> 4820 : for (const DecodeSignal &signal: frame.signals) {</span></span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> [<span class="tlaGBC" title="Branch 0 was taken 2480 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2476 times"> + </span>]:<span class="tlaGNC"> 2480 : if (!names.insert(signal.name).second)</span></span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::invalid_argument("Duplicate runtime signal key: " + signal.name);</span></span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> [<span class="tlaGBC" title="Branch 0 was taken 2391 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 85 times"> + </span>]:<span class="tlaGNC"> 2476 : ValidateSignal(signal, frame.dlc);</span></span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> [<span class="tlaGBC" title="Branch 0 was taken 35 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2356 times"> + </span>]:<span class="tlaGNC"> 2391 : if (signal.multiplexing.role == MultiplexRole::Selector) {</span></span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> [<span class="tlaGBC" title="Branch 0 was taken 32 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 29 times"> + </span>]:<span class="tlaGNC"> 35 : if (selector != nullptr || signal.valueType != ValueType::Unsigned)</span></span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6 : throw std::invalid_argument("Multiplexing requires one unsigned selector per frame");</span></span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> :<span class="tlaGNC"> 29 : selector = &signal;</span></span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> : : }</span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> : : }</span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> : : </span>
|
||||
<span id="L75"><span class="lineNum"> 75</span> :<span class="tlaGNC"> 2340 : std::vector<SignalBits> layouts;</span></span>
|
||||
<span id="L76"><span class="lineNum"> 76</span> [<span class="tlaGBC" title="Branch 0 was taken 2340 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2340 : layouts.reserve(frame.signals.size());</span></span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> [<span class="tlaGBC" title="Branch 0 was taken 2372 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2324 times"> + </span>]:<span class="tlaGNC"> 4696 : for (std::size_t index = 0U; index < frame.signals.size(); ++index) {</span></span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> :<span class="tlaGNC"> 2372 : const DecodeSignal &signal = frame.signals[index];</span></span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> [<span class="tlaGBC" title="Branch 0 was taken 32 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2340 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 27 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 5 times"> + </span>]:<span class="tlaGNC"> 2372 : if (signal.multiplexing.role == MultiplexRole::Branch &&</span></span>
|
||||
<span id="L80"><span class="lineNum"> 80</span> :<span class="tlaGNC"> 27 : (selector == nullptr ||</span></span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> [<span class="tlaGBC" title="Branch 0 was taken 22 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 19 times"> + </span>]:<span class="tlaGNC"> 27 : (selector->length < 64U && signal.multiplexing.value >= (std::uint64_t(1U) << selector->length))))</span></span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> [<span class="tlaGBC" title="Branch 0 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 8 : throw std::invalid_argument("Missing selector or branch value outside selector range: " + signal.name);</span></span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> [<span class="tlaGBC" title="Branch 0 was taken 2364 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2364 : const SignalBits bits = GetSignalBits(signal);</span></span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> [<span class="tlaGBC" title="Branch 0 was taken 71 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2356 times"> + </span>]:<span class="tlaGNC"> 2427 : for (std::size_t previous = 0U; previous < index; ++previous) {</span></span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> [<span class="tlaGBC" title="Branch 0 was taken 68 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 8 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 60 times"> + </span> :<span class="tlaGNC"> 71 : if (!AreMutuallyExclusive(signal, frame.signals[previous]) && (bits & layouts[previous]).any())</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 8 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 63 times"> + </span>]
|
||||
<span id="L86"><span class="lineNum"> 86</span> [<span class="tlaGBC" title="Branch 0 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 8 : throw std::invalid_argument("Overlapping signals: " + signal.name);</span></span>
|
||||
<span id="L87"><span class="lineNum"> 87</span> : : }</span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> [<span class="tlaGBC" title="Branch 0 was taken 2356 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2356 : layouts.push_back(bits);</span></span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> : : }</span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> :<span class="tlaGNC"> 2451 : }</span></span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> : : }// namespace</span>
|
||||
<span id="L92"><span class="lineNum"> 92</span> : : </span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> :<span class="tlaGNC"> 2394 : DecodeDatabase::Storage::Storage(const std::vector<DecodeFrame> &definitions)</span></span>
|
||||
<span id="L94"><span class="lineNum"> 94</span> :<span class="tlaGNC"> 2394 : : frames(definitions) {</span></span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> : : // Validate the complete snapshot before creating its lookup index.</span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> :<span class="tlaGNC"> 2394 : std::unordered_set<FrameKey, FrameKeyHasher> keys;</span></span>
|
||||
<span id="L97"><span class="lineNum"> 97</span> [<span class="tlaGBC" title="Branch 0 was taken 2394 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2394 : keys.reserve(frames.size());</span></span>
|
||||
<span id="L98"><span class="lineNum"> 98</span> [<span class="tlaGBC" title="Branch 0 was taken 2447 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2266 times"> + </span>]:<span class="tlaGNC"> 4713 : for (const DecodeFrame &frame: frames) {</span></span>
|
||||
<span id="L99"><span class="lineNum"> 99</span> [<span class="tlaGBC" title="Branch 0 was taken 2324 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 123 times"> + </span>]:<span class="tlaGNC"> 2447 : ValidateFrame(frame);</span></span>
|
||||
<span id="L100"><span class="lineNum"> 100</span> [<span class="tlaGBC" title="Branch 0 was taken 2324 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2319 times"> + </span>]:<span class="tlaGNC"> 2324 : if (!keys.insert(frame.GetKey()).second)</span></span>
|
||||
<span id="L101"><span class="lineNum"> 101</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 5 : throw std::invalid_argument("Duplicate runtime frame key");</span></span>
|
||||
<span id="L102"><span class="lineNum"> 102</span> : : }</span>
|
||||
<span id="L103"><span class="lineNum"> 103</span> [<span class="tlaGBC" title="Branch 0 was taken 2266 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2266 : frameIndexByKey.reserve(frames.size());</span></span>
|
||||
<span id="L104"><span class="lineNum"> 104</span> [<span class="tlaGBC" title="Branch 0 was taken 2314 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2266 times"> + </span>]:<span class="tlaGNC"> 4580 : for (std::size_t index = 0U; index < frames.size(); ++index) {</span></span>
|
||||
<span id="L105"><span class="lineNum"> 105</span> [<span class="tlaGBC" title="Branch 0 was taken 2314 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2314 : frameIndexByKey.emplace(frames[index].GetKey(), index);</span></span>
|
||||
<span id="L106"><span class="lineNum"> 106</span> [<span class="tlaGBC" title="Branch 0 was taken 21 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2293 times"> + </span>]:<span class="tlaGNC"> 2314 : if (frames[index].hasPgn)</span></span>
|
||||
<span id="L107"><span class="lineNum"> 107</span> [<span class="tlaGBC" title="Branch 0 was taken 21 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 21 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 21 : frameIndicesByPgn[frames[index].pgn].push_back(index);</span></span>
|
||||
<span id="L108"><span class="lineNum"> 108</span> : : }</span>
|
||||
<span id="L109"><span class="lineNum"> 109</span> :<span class="tlaGNC"> 2778 : }</span></span>
|
||||
<span id="L110"><span class="lineNum"> 110</span> : : </span>
|
||||
<span id="L111"><span class="lineNum"> 111</span> :<span class="tlaGNC"> 2394 : DecodeDatabase::DecodeDatabase(const std::vector<DecodeFrame> &frames)</span></span>
|
||||
<span id="L112"><span class="lineNum"> 112</span> :<span class="tlaGNC"> 2394 : : storage(std::make_shared<const Storage>(frames)) {</span></span>
|
||||
<span id="L113"><span class="lineNum"> 113</span> :<span class="tlaGNC"> 2266 : }</span></span>
|
||||
<span id="L114"><span class="lineNum"> 114</span> : : </span>
|
||||
<span id="L115"><span class="lineNum"> 115</span> :<span class="tlaGNC"> 76 : const std::vector<DecodeFrame> &DecodeDatabase::GetFrames() const {</span></span>
|
||||
<span id="L116"><span class="lineNum"> 116</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 1 was taken 75 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 76 : static const std::vector<DecodeFrame> empty;</span></span>
|
||||
<span id="L117"><span class="lineNum"> 117</span> [<span class="tlaGBC" title="Branch 0 was taken 74 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 76 : return storage ? storage->frames : empty;</span></span>
|
||||
<span id="L118"><span class="lineNum"> 118</span> : : }</span>
|
||||
<span id="L119"><span class="lineNum"> 119</span> : : </span>
|
||||
<span id="L120"><span class="lineNum"> 120</span> :<span class="tlaGNC"> 6555 : std::shared_ptr<const DecodeFrame> DecodeDatabase::FindFrame(const FrameKey &key) const {</span></span>
|
||||
<span id="L121"><span class="lineNum"> 121</span> [<span class="tlaGBC" title="Branch 0 was taken 16 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6539 times"> + </span>]:<span class="tlaGNC"> 6555 : if (!storage)</span></span>
|
||||
<span id="L122"><span class="lineNum"> 122</span> :<span class="tlaGNC"> 16 : return nullptr;</span></span>
|
||||
<span id="L123"><span class="lineNum"> 123</span> : : const std::unordered_map<FrameKey, std::size_t, FrameKeyHasher>::const_iterator it =</span>
|
||||
<span id="L124"><span class="lineNum"> 124</span> [<span class="tlaGBC" title="Branch 0 was taken 6539 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6539 : storage->frameIndexByKey.find(key);</span></span>
|
||||
<span id="L125"><span class="lineNum"> 125</span> [<span class="tlaGBC" title="Branch 0 was taken 115 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6424 times"> + </span>]:<span class="tlaGNC"> 6539 : if (it == storage->frameIndexByKey.end())</span></span>
|
||||
<span id="L126"><span class="lineNum"> 126</span> :<span class="tlaGNC"> 115 : return nullptr;</span></span>
|
||||
<span id="L127"><span class="lineNum"> 127</span> :<span class="tlaGNC"> 6424 : return std::shared_ptr<const DecodeFrame>(storage, &storage->frames[it->second]);</span></span>
|
||||
<span id="L128"><span class="lineNum"> 128</span> : : }</span>
|
||||
<span id="L129"><span class="lineNum"> 129</span> : : </span>
|
||||
<span id="L130"><span class="lineNum"> 130</span> :<span class="tlaGNC"> 116 : PgnLookupResult DecodeDatabase::FindFrameByPgn(std::uint32_t pgn) const {</span></span>
|
||||
<span id="L131"><span class="lineNum"> 131</span> :<span class="tlaGNC"> 116 : PgnLookupResult result;</span></span>
|
||||
<span id="L132"><span class="lineNum"> 132</span> [<span class="tlaGBC" title="Branch 0 was taken 24 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 92 times"> + </span>]:<span class="tlaGNC"> 116 : if (!storage)</span></span>
|
||||
<span id="L133"><span class="lineNum"> 133</span> :<span class="tlaGNC"> 24 : return result;</span></span>
|
||||
<span id="L134"><span class="lineNum"> 134</span> : : const std::unordered_map<std::uint32_t, std::vector<std::size_t>>::const_iterator it =</span>
|
||||
<span id="L135"><span class="lineNum"> 135</span> [<span class="tlaGBC" title="Branch 0 was taken 92 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 92 : storage->frameIndicesByPgn.find(pgn);</span></span>
|
||||
<span id="L136"><span class="lineNum"> 136</span> [<span class="tlaGBC" title="Branch 0 was taken 47 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 45 times"> + </span>]:<span class="tlaGNC"> 92 : if (it == storage->frameIndicesByPgn.end())</span></span>
|
||||
<span id="L137"><span class="lineNum"> 137</span> :<span class="tlaGNC"> 47 : return result;</span></span>
|
||||
<span id="L138"><span class="lineNum"> 138</span> [<span class="tlaGBC" title="Branch 0 was taken 16 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 29 times"> + </span>]:<span class="tlaGNC"> 45 : if (it->second.size() != 1U) {</span></span>
|
||||
<span id="L139"><span class="lineNum"> 139</span> :<span class="tlaGNC"> 16 : result.ambiguous = true;</span></span>
|
||||
<span id="L140"><span class="lineNum"> 140</span> :<span class="tlaGNC"> 16 : return result;</span></span>
|
||||
<span id="L141"><span class="lineNum"> 141</span> : : }</span>
|
||||
<span id="L142"><span class="lineNum"> 142</span> :<span class="tlaGNC"> 29 : result.definition = std::shared_ptr<const DecodeFrame>(storage, &storage->frames[it->second[0]]);</span></span>
|
||||
<span id="L143"><span class="lineNum"> 143</span> :<span class="tlaGNC"> 29 : return result;</span></span>
|
||||
<span id="L144"><span class="lineNum"> 144</span> :<span class="tlaUNC"> 0 : }</span></span>
|
||||
<span id="L145"><span class="lineNum"> 145</span> : : </span>
|
||||
<span id="L146"><span class="lineNum"> 146</span> :<span class="tlaGNC"> 53 : std::shared_ptr<const DecodeSignal> DecodeDatabase::FindSignal(const SignalKey &key) const {</span></span>
|
||||
<span id="L147"><span class="lineNum"> 147</span> [<span class="tlaGBC" title="Branch 0 was taken 53 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 53 : const std::shared_ptr<const DecodeFrame> frame = FindFrame(key.frame);</span></span>
|
||||
<span id="L148"><span class="lineNum"> 148</span> [<span class="tlaGBC" title="Branch 0 was taken 10 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 43 times"> + </span>]:<span class="tlaGNC"> 53 : if (!frame)</span></span>
|
||||
<span id="L149"><span class="lineNum"> 149</span> :<span class="tlaGNC"> 10 : return nullptr;</span></span>
|
||||
<span id="L150"><span class="lineNum"> 150</span> [<span class="tlaGBC" title="Branch 0 was taken 48 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 5 times"> + </span>]:<span class="tlaGNC"> 53 : for (const DecodeSignal &signal: frame->signals) {</span></span>
|
||||
<span id="L151"><span class="lineNum"> 151</span> [<span class="tlaGBC" title="Branch 0 was taken 38 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 10 times"> + </span>]:<span class="tlaGNC"> 48 : if (signal.name == key.name)</span></span>
|
||||
<span id="L152"><span class="lineNum"> 152</span> :<span class="tlaGNC"> 38 : return std::shared_ptr<const DecodeSignal>(frame, &signal);</span></span>
|
||||
<span id="L153"><span class="lineNum"> 153</span> : : }</span>
|
||||
<span id="L154"><span class="lineNum"> 154</span> :<span class="tlaGNC"> 5 : return nullptr;</span></span>
|
||||
<span id="L155"><span class="lineNum"> 155</span> :<span class="tlaGNC"> 53 : }</span></span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,108 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/decode_database.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - decode_database.h<span style="font-size: 80%;"> (<a href="decode_database.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="decode_database.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.h.gcov.html#L101">DecodeDatabase::DecodeDatabase()</a></td>
|
||||
|
||||
<td class="coverFnHi">21</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.h.gcov.html#L81">DecodeFrame::DecodeFrame()</a></td>
|
||||
|
||||
<td class="coverFnHi">2400</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.h.gcov.html#L60">DecodeSignal::DecodeSignal()</a></td>
|
||||
|
||||
<td class="coverFnHi">2438</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.h.gcov.html#L84">DecodeFrame::GetKey() const</a></td>
|
||||
|
||||
<td class="coverFnHi">11038</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,108 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/decode_database.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - decode_database.h<span style="font-size: 80%;"> (<a href="decode_database.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="decode_database.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.h.gcov.html#L101">DecodeDatabase::DecodeDatabase()</a></td>
|
||||
|
||||
<td class="coverFnHi">21</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.h.gcov.html#L81">DecodeFrame::DecodeFrame()</a></td>
|
||||
|
||||
<td class="coverFnHi">2400</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.h.gcov.html#L84">DecodeFrame::GetKey() const</a></td>
|
||||
|
||||
<td class="coverFnHi">11038</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.h.gcov.html#L60">DecodeSignal::DecodeSignal()</a></td>
|
||||
|
||||
<td class="coverFnHi">2438</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,209 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/decode_database.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - decode_database.h<span style="font-size: 80%;"> (source / <a href="decode_database.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : * @file decode_database.h</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : * @brief Runtime definitions and immutable indexed database.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : #ifndef DECODE_DATABASE_H</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : #define DECODE_DATABASE_H</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : </span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : #include "attributes.h"</span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : #include "definition_key.h"</span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : #include "multiplexing.h"</span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : #include "value_descriptions.h"</span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : #include <cstdint></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : #include <memory></span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : #include <string></span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : #include <unordered_map></span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : #include <vector></span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : </span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : /**</span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : * @brief Signal byte order used for runtime decoding.</span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : */</span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : enum class ByteOrder {</span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> : Intel,</span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : Motorola</span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> : };</span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : </span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : /**</span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : * @brief Signal numeric type.</span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : */</span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> : enum class ValueType {</span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : Unsigned,</span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> : Signed</span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : };</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : </span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> : /**</span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : * @brief Runtime-ready signal definition.</span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> : */</span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> : struct DecodeSignal {</span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> : Multiplexing multiplexing; /**< Selector role and branch value. */</span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : std::string name; /**< Signal name. */</span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : std::uint32_t startBit = 0U; /**< DBC start bit. */</span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> : std::uint32_t length = 0U; /**< Signal length in bits. */</span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> : ByteOrder byteOrder = ByteOrder::Intel; /**< Intel or Motorola. */</span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> : ValueType valueType = ValueType::Unsigned; /**< Signed or unsigned. */</span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> : double factor = 1.0; /**< Scaling factor. */</span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> : double offset = 0.0; /**< Physical offset. */</span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> : double minimum = 0.0; /**< Minimum physical value. */</span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> : double maximum = 0.0; /**< Maximum physical value. */</span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> : std::string unit; /**< Physical unit. */</span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> : std::vector<std::string> receivers; /**< Receivers. */</span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> : ValueDescriptions valueDescriptions; /**< Raw integer state descriptions. */</span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> : std::string comment; /**< Comment. */</span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> : </span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> : AttributeMap attributes; /**< Effective attributes after defaults and overrides. */</span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> : </span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> <span class="tlaGNC"> 2438 : DecodeSignal() = default;</span></span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> : };</span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> : </span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> : /**</span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> : * @brief Runtime-ready frame definition.</span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> : */</span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> : struct DecodeFrame {</span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> : std::string name; /**< Frame name. */</span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> : std::uint32_t canId = 0U; /**< Normalized CAN ID. */</span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> : bool isExtended = false; /**< true for extended frame. */</span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> : std::uint8_t dlc = 0U; /**< Payload length. */</span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> : std::uint32_t pgn = 0U; /**< PGN if available. */</span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> : bool hasPgn = false; /**< Explicit J1939 opt-in; pgn must match canId. */</span>
|
||||
<span id="L75"><span class="lineNum"> 75</span> : std::string transmitter; /**< Transmitter ECU. */</span>
|
||||
<span id="L76"><span class="lineNum"> 76</span> : std::string comment; /**< Frame comment. */</span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> : std::vector<DecodeSignal> signals; /**< Signal definitions. */</span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> : </span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> : AttributeMap attributes; /**< Effective attributes after defaults and overrides. */</span>
|
||||
<span id="L80"><span class="lineNum"> 80</span> : std::optional<std::string> frameFormat; /**< VFrameFormat label, when declared. */</span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> : std::optional<std::uint32_t> cycleTimeMs; /**< GenMsgCycleTime in milliseconds, when declared. */</span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> : </span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> <span class="tlaGNC"> 2400 : DecodeFrame() = default;</span></span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> : </span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> : /** @brief Return the stable normalized frame identifier. */</span>
|
||||
<span id="L86"><span class="lineNum"> 86</span> <span class="tlaGNC"> 11038 : FrameKey GetKey() const {</span></span>
|
||||
<span id="L87"><span class="lineNum"> 87</span> <span class="tlaGNC"> 11038 : return FrameKey(canId, isExtended);</span></span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> : }</span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> : };</span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> : </span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> : /** A PGN lookup rejects multiple definitions rather than choosing by order. */</span>
|
||||
<span id="L92"><span class="lineNum"> 92</span> : struct PgnLookupResult {</span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> : std::shared_ptr<const DecodeFrame> definition; /**< Owning matched definition; empty if missing or ambiguous. */</span>
|
||||
<span id="L94"><span class="lineNum"> 94</span> : bool ambiguous = false; /**< True when multiple definitions share the requested PGN. */</span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> : };</span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> : </span>
|
||||
<span id="L97"><span class="lineNum"> 97</span> : /**</span>
|
||||
<span id="L98"><span class="lineNum"> 98</span> : * @brief Immutable runtime snapshot. Copies share storage; reload replaces a snapshot.</span>
|
||||
<span id="L99"><span class="lineNum"> 99</span> : * Owning lookup handles and decoded results keep old definitions alive.</span>
|
||||
<span id="L100"><span class="lineNum"> 100</span> : */</span>
|
||||
<span id="L101"><span class="lineNum"> 101</span> : class DecodeDatabase {</span>
|
||||
<span id="L102"><span class="lineNum"> 102</span> : public:</span>
|
||||
<span id="L103"><span class="lineNum"> 103</span> <span class="tlaGNC"> 21 : DecodeDatabase() = default;</span></span>
|
||||
<span id="L104"><span class="lineNum"> 104</span> : /**</span>
|
||||
<span id="L105"><span class="lineNum"> 105</span> : * Copy and validate definitions before building the frame index.</span>
|
||||
<span id="L106"><span class="lineNum"> 106</span> : * Input aliases cannot modify the snapshot, even for rvalue input.</span>
|
||||
<span id="L107"><span class="lineNum"> 107</span> : * @throws std::invalid_argument for invalid metadata or duplicate keys.</span>
|
||||
<span id="L108"><span class="lineNum"> 108</span> : */</span>
|
||||
<span id="L109"><span class="lineNum"> 109</span> : explicit DecodeDatabase(const std::vector<DecodeFrame> &frames);</span>
|
||||
<span id="L110"><span class="lineNum"> 110</span> : </span>
|
||||
<span id="L111"><span class="lineNum"> 111</span> : /** Borrowed view, valid while this snapshot remains alive and unchanged. */</span>
|
||||
<span id="L112"><span class="lineNum"> 112</span> : const std::vector<DecodeFrame> &GetFrames() const;</span>
|
||||
<span id="L113"><span class="lineNum"> 113</span> : /** Owning handles retain the entire snapshot across reload or destruction. */</span>
|
||||
<span id="L114"><span class="lineNum"> 114</span> : std::shared_ptr<const DecodeFrame> FindFrame(const FrameKey &key) const;</span>
|
||||
<span id="L115"><span class="lineNum"> 115</span> : /** Only explicitly marked hasPgn frames participate; ambiguous results have no definition. */</span>
|
||||
<span id="L116"><span class="lineNum"> 116</span> : PgnLookupResult FindFrameByPgn(std::uint32_t pgn) const;</span>
|
||||
<span id="L117"><span class="lineNum"> 117</span> : /** @brief Return an owning signal handle, or an empty handle for a missing key. */</span>
|
||||
<span id="L118"><span class="lineNum"> 118</span> : std::shared_ptr<const DecodeSignal> FindSignal(const SignalKey &key) const;</span>
|
||||
<span id="L119"><span class="lineNum"> 119</span> : </span>
|
||||
<span id="L120"><span class="lineNum"> 120</span> : private:</span>
|
||||
<span id="L121"><span class="lineNum"> 121</span> : struct Storage {</span>
|
||||
<span id="L122"><span class="lineNum"> 122</span> : std::vector<DecodeFrame> frames;</span>
|
||||
<span id="L123"><span class="lineNum"> 123</span> : std::unordered_map<FrameKey, std::size_t, FrameKeyHasher> frameIndexByKey;</span>
|
||||
<span id="L124"><span class="lineNum"> 124</span> : </span>
|
||||
<span id="L125"><span class="lineNum"> 125</span> : std::unordered_map<std::uint32_t, std::vector<std::size_t>> frameIndicesByPgn;</span>
|
||||
<span id="L126"><span class="lineNum"> 126</span> : </span>
|
||||
<span id="L127"><span class="lineNum"> 127</span> : explicit Storage(const std::vector<DecodeFrame> &definitions);</span>
|
||||
<span id="L128"><span class="lineNum"> 128</span> : };</span>
|
||||
<span id="L129"><span class="lineNum"> 129</span> : </span>
|
||||
<span id="L130"><span class="lineNum"> 130</span> : std::shared_ptr<const Storage> storage;</span>
|
||||
<span id="L131"><span class="lineNum"> 131</span> : };</span>
|
||||
<span id="L132"><span class="lineNum"> 132</span> : </span>
|
||||
<span id="L133"><span class="lineNum"> 133</span> : #endif /* DECODE_DATABASE_H */</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,149 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/definition_key.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - definition_key.h<span style="font-size: 80%;"> (<a href="definition_key.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">18</td>
|
||||
<td class="headerCovTableEntry">18</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">70.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">7</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="definition_key.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L62">SignalKeyHasher::operator()(SignalKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">9</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L54">SignalKey::operator==(SignalKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">22</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L47">SignalKey::SignalKey()</a></td>
|
||||
|
||||
<td class="coverFnHi">6380</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L49">SignalKey::SignalKey(FrameKey, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)</a></td>
|
||||
|
||||
<td class="coverFnHi">6454</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L25">FrameKey::operator==(FrameKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">6502</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L35">FrameKeyHasher::operator()(FrameKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">11161</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L17">FrameKey::FrameKey()</a></td>
|
||||
|
||||
<td class="coverFnHi">12789</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L20">FrameKey::FrameKey(unsigned int, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">23974</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,149 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/definition_key.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - definition_key.h<span style="font-size: 80%;"> (<a href="definition_key.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">18</td>
|
||||
<td class="headerCovTableEntry">18</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">70.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">7</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="definition_key.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L17">FrameKey::FrameKey()</a></td>
|
||||
|
||||
<td class="coverFnHi">12789</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L20">FrameKey::FrameKey(unsigned int, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">23974</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L25">FrameKey::operator==(FrameKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">6502</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L35">FrameKeyHasher::operator()(FrameKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">11161</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L47">SignalKey::SignalKey()</a></td>
|
||||
|
||||
<td class="coverFnHi">6380</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L49">SignalKey::SignalKey(FrameKey, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)</a></td>
|
||||
|
||||
<td class="coverFnHi">6454</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L54">SignalKey::operator==(SignalKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">22</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L62">SignalKeyHasher::operator()(SignalKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">9</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,154 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/definition_key.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - definition_key.h<span style="font-size: 80%;"> (source / <a href="definition_key.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">18</td>
|
||||
<td class="headerCovTableEntry">18</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">70.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">7</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : // SPDX-License-Identifier: MIT</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : // Copyright (c) 2026 Dim Himro</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : </span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : #ifndef DEFINITION_KEY_H</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : #define DEFINITION_KEY_H</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : </span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : #include <cstdint></span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : #include <functional></span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : #include <string></span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : #include <utility></span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : /**</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : * @brief Stable frame identifier: normalized CAN ID and frame type.</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : */</span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : : struct FrameKey {</span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : std::uint32_t canId = 0U; /**< Normalized CAN identifier. */</span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : : bool isExtended = false; /**< True for extended CAN frames. */</span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : </span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> :<span class="tlaGNC"> 12789 : FrameKey() = default;</span></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : : </span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : : /** @brief Create a key from a normalized identifier and frame type. */</span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> :<span class="tlaGNC"> 23974 : FrameKey(std::uint32_t id, bool extended)</span></span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> :<span class="tlaGNC"> 23974 : : canId(id), isExtended(extended) {</span></span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> :<span class="tlaGNC"> 23974 : }</span></span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : : </span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : : /** @brief Compare all logical identity fields. */</span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> :<span class="tlaGNC"> 6502 : bool operator==(const FrameKey &other) const {</span></span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> [<span class="tlaGBC" title="Branch 0 was taken 6498 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 6498 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 6502 : return (canId == other.canId) && (isExtended == other.isExtended);</span></span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> : : }</span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : : };</span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> : : </span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : : /**</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : : * @brief Hasher for frame key.</span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : : */</span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : : struct FrameKeyHasher {</span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> : : /** @brief Hash the logical identity fields. */</span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> :<span class="tlaGNC"> 11161 : std::size_t operator()(const FrameKey &key) const {</span></span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> :<span class="tlaGNC"> 11161 : const std::size_t a = static_cast<std::size_t>(key.canId);</span></span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> [<span class="tlaGBC" title="Branch 0 was taken 273 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 10888 times"> + </span>]:<span class="tlaGNC"> 11161 : const std::size_t b = key.isExtended ? 1U : 0U;</span></span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> :<span class="tlaGNC"> 11161 : return (a * 1315423911U) ^ b;</span></span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> : : }</span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : : };</span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> : : </span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> : : /** Stable signal identifier within one logical DBC database. */</span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> : : struct SignalKey {</span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : : FrameKey frame; /**< Owning frame identity. */</span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : : std::string name; /**< Signal name within the frame. */</span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> : : </span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> :<span class="tlaGNC"> 6380 : SignalKey() = default;</span></span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> : : /** @brief Create a signal key from its frame identity and name. */</span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> :<span class="tlaGNC"> 6454 : SignalKey(FrameKey frameKey, std::string signalName)</span></span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> :<span class="tlaGNC"> 6454 : : frame(frameKey), name(std::move(signalName)) {</span></span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> :<span class="tlaGNC"> 6454 : }</span></span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> : : </span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> : : /** @brief Compare all logical identity fields. */</span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> :<span class="tlaGNC"> 22 : bool operator==(const SignalKey &other) const {</span></span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> [<span class="tlaGBC" title="Branch 0 was taken 22 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 22 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 22 : return frame == other.frame && name == other.name;</span></span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> : : }</span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> : : };</span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> : : </span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> : : /** @brief Hasher for stable signal keys. */</span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> : : struct SignalKeyHasher {</span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> : : /** @brief Hash the logical identity fields. */</span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> :<span class="tlaGNC"> 9 : std::size_t operator()(const SignalKey &key) const {</span></span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> :<span class="tlaGNC"> 9 : return FrameKeyHasher()(key.frame) ^ (std::hash<std::string>()(key.name) << 1U);</span></span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> : : }</span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> : : };</span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> : : </span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> : : #endif /* DEFINITION_KEY_H */</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,84 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/frame_info.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - frame_info.h<span style="font-size: 80%;"> (<a href="frame_info.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="frame_info.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="frame_info.h.gcov.html#L39">FrameInfo::FrameInfo()</a></td>
|
||||
|
||||
<td class="coverFnHi">716</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,84 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/frame_info.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - frame_info.h<span style="font-size: 80%;"> (<a href="frame_info.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="frame_info.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="frame_info.h.gcov.html#L39">FrameInfo::FrameInfo()</a></td>
|
||||
|
||||
<td class="coverFnHi">716</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,120 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/frame_info.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - frame_info.h<span style="font-size: 80%;"> (source / <a href="frame_info.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : * @file frame_info.h</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : * @brief Parsed CAN frame metadata.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : #ifndef FRAME_INFO_H</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : #define FRAME_INFO_H</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : </span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : #include "attributes.h"</span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : #include <cstdint></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : #include <string></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : #include <vector></span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : </span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : #include "signal_info.h"</span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : </span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : /**</span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : * @brief Describes one CAN frame from a DBC file.</span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : */</span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : struct FrameInfo {</span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : std::string name; /**< Frame name. */</span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : std::uint32_t canId = 0U; /**< Normalized CAN identifier. */</span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : bool isExtended = false; /**< true for extended frame. */</span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> : std::uint32_t pgn = 0U; /**< J1939 PGN if applicable. */</span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : bool hasPgn = false; /**< Explicit J1939 opt-in; pgn is derived from canId. */</span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> : std::uint8_t dlc = 0U; /**< Frame payload length. */</span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : std::string transmitter; /**< Transmitter ECU name. */</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : std::string comment; /**< Optional frame comment. */</span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : std::vector<SignalInfo> signals; /**< Signals contained in the frame. */</span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : </span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> : std::optional<std::string> frameFormat; /**< VFrameFormat label, when declared. */ /**< VFrameFormat enum label. */</span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : std::optional<std::uint32_t> cycleTimeMs; /**< GenMsgCycleTime in milliseconds, when declared. */ /**< GenMsgCycleTime; zero means unspecified. */</span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> : </span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : AttributeMap attributes; /**< Effective attributes after defaults and overrides. */ /**< Effective values, including defaults. */</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : </span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> <span class="tlaGNC"> 716 : FrameInfo() = default;</span></span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : };</span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> : </span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> : #endif /* FRAME_INFO_H */</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,439 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - core</td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">98.6 %</td>
|
||||
<td class="headerCovTableEntry">1185</td>
|
||||
<td class="headerCovTableEntry">1168</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">71.6 %</td>
|
||||
<td class="headerCovTableEntry">2152</td>
|
||||
<td class="headerCovTableEntry">1540</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table width="80%" cellpadding=1 cellspacing=1 border=0>
|
||||
|
||||
<tr>
|
||||
<td width="40%"><br></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="tableHead" rowspan=2>File <span title="Click to sort table by file name" class="tableHeadSort"><a href="index.html"><img src="../updown.png" width=10 height=14 alt="Sort by file name" title="Click to sort table by file name" border=0></a></span></td>
|
||||
<td class="tableHead" colspan=4>Line Coverage <span title="Click to sort table by line coverage" class="tableHeadSort"><a href="index-sort-l.html"><img src="../updown.png" width=10 height=14 alt="Sort by line coverage" title="Click to sort table by line coverage" border=0></a></span></td>
|
||||
<td class="tableHead" colspan=3>Branch Coverage <span title="Click to sort table by branch coverage" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by branch coverage" title="Click to sort table by branch coverage" border=0></span></td>
|
||||
<td class="tableHead" colspan=3>Function Coverage <span title="Click to sort table by function coverage" class="tableHeadSort"><a href="index-sort-f.html"><img src="../updown.png" width=10 height=14 alt="Sort by function coverage" title="Click to sort table by function coverage" border=0></a></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableHead" colspan=2> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
<td class="tableHead"> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
<td class="tableHead"> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_parser.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_parser.h">dbc_parser.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="decode_database.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/decode_database.h">decode_database.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="frame_info.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/frame_info.h">frame_info.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="signal_info.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/signal_info.h">signal_info.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="tree_node.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/tree_node.h">tree_node.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_statement_handler.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h">dbc_statement_handler.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerLo">45.5 %</td>
|
||||
<td class="coverNumDflt">22</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="typefactory.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/typefactory.h">typefactory.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverPerLo">50.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">27</td>
|
||||
<td class="coverNumDflt">27</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decode_builder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decode_builder.cpp">dbc_decode_builder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverPerLo">62.5 %</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverNumDflt">25</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_tree_builder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_tree_builder.cpp">dbc_tree_builder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=92 height=10 alt="91.7%"><img src="../snow.png" width=8 height=10 alt="91.7%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">91.7 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">11</td>
|
||||
<td class="coverPerLo">66.7 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_statement_handler.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.cpp">dbc_statement_handler.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.5%"><img src="../snow.png" width=1 height=10 alt="99.5%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.5 %</td>
|
||||
<td class="coverNumDflt">370</td>
|
||||
<td class="coverNumDflt">368</td>
|
||||
<td class="coverPerLo">68.4 %</td>
|
||||
<td class="coverNumDflt">820</td>
|
||||
<td class="coverNumDflt">561</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">31</td>
|
||||
<td class="coverNumDflt">31</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="definition_key.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/definition_key.h">definition_key.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">18</td>
|
||||
<td class="coverNumDflt">18</td>
|
||||
<td class="coverPerLo">70.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">7</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_parser.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_parser.cpp">dbc_parser.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.0%"><img src="../snow.png" width=1 height=10 alt="99.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.0 %</td>
|
||||
<td class="coverNumDflt">99</td>
|
||||
<td class="coverNumDflt">98</td>
|
||||
<td class="coverPerLo">70.4 %</td>
|
||||
<td class="coverNumDflt">216</td>
|
||||
<td class="coverNumDflt">152</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decoder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decoder.cpp">dbc_decoder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=95 height=10 alt="94.9%"><img src="../snow.png" width=5 height=10 alt="94.9%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">94.9 %</td>
|
||||
<td class="coverNumDflt">156</td>
|
||||
<td class="coverNumDflt">148</td>
|
||||
<td class="coverPerLo">72.8 %</td>
|
||||
<td class="coverNumDflt">158</td>
|
||||
<td class="coverNumDflt">115</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_attributes.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_attributes.cpp">dbc_attributes.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="98.8%"><img src="../snow.png" width=1 height=10 alt="98.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">98.8 %</td>
|
||||
<td class="coverNumDflt">260</td>
|
||||
<td class="coverNumDflt">257</td>
|
||||
<td class="coverPerLo">73.5 %</td>
|
||||
<td class="coverNumDflt">604</td>
|
||||
<td class="coverNumDflt">444</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">20</td>
|
||||
<td class="coverNumDflt">20</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decoder.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decoder.h">dbc_decoder.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerMed">75.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">3</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="tree_node.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/tree_node.cpp">tree_node.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=98 height=10 alt="98.1%"><img src="../snow.png" width=2 height=10 alt="98.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">98.1 %</td>
|
||||
<td class="coverNumDflt">53</td>
|
||||
<td class="coverNumDflt">52</td>
|
||||
<td class="coverPerMed">76.2 %</td>
|
||||
<td class="coverNumDflt">42</td>
|
||||
<td class="coverNumDflt">32</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">15</td>
|
||||
<td class="coverNumDflt">15</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="decode_database.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/decode_database.cpp">decode_database.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.1%"><img src="../snow.png" width=1 height=10 alt="99.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.1 %</td>
|
||||
<td class="coverNumDflt">110</td>
|
||||
<td class="coverNumDflt">109</td>
|
||||
<td class="coverPerMed">80.2 %</td>
|
||||
<td class="coverNumDflt">182</td>
|
||||
<td class="coverNumDflt">146</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="value_descriptions.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/value_descriptions.h">value_descriptions.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerMed">87.5 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">7</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="j1939.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/j1939.h">j1939.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_diagnostic.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_diagnostic.h">dbc_diagnostic.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="signal_layout.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/signal_layout.h">signal_layout.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">6</td>
|
||||
<td class="coverNumDflt">6</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="text_utils.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/text_utils.h">text_utils.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,439 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - core</td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">98.6 %</td>
|
||||
<td class="headerCovTableEntry">1185</td>
|
||||
<td class="headerCovTableEntry">1168</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">71.6 %</td>
|
||||
<td class="headerCovTableEntry">2152</td>
|
||||
<td class="headerCovTableEntry">1540</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table width="80%" cellpadding=1 cellspacing=1 border=0>
|
||||
|
||||
<tr>
|
||||
<td width="40%"><br></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="tableHead" rowspan=2>File <span title="Click to sort table by file name" class="tableHeadSort"><a href="index.html"><img src="../updown.png" width=10 height=14 alt="Sort by file name" title="Click to sort table by file name" border=0></a></span></td>
|
||||
<td class="tableHead" colspan=4>Line Coverage <span title="Click to sort table by line coverage" class="tableHeadSort"><a href="index-sort-l.html"><img src="../updown.png" width=10 height=14 alt="Sort by line coverage" title="Click to sort table by line coverage" border=0></a></span></td>
|
||||
<td class="tableHead" colspan=3>Branch Coverage <span title="Click to sort table by branch coverage" class="tableHeadSort"><a href="index-sort-b.html"><img src="../updown.png" width=10 height=14 alt="Sort by branch coverage" title="Click to sort table by branch coverage" border=0></a></span></td>
|
||||
<td class="tableHead" colspan=3>Function Coverage <span title="Click to sort table by function coverage" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function coverage" title="Click to sort table by function coverage" border=0></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableHead" colspan=2> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
<td class="tableHead"> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
<td class="tableHead"> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decode_builder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decode_builder.cpp">dbc_decode_builder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverPerLo">62.5 %</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverNumDflt">25</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_diagnostic.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_diagnostic.h">dbc_diagnostic.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_parser.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_parser.h">dbc_parser.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_tree_builder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_tree_builder.cpp">dbc_tree_builder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=92 height=10 alt="91.7%"><img src="../snow.png" width=8 height=10 alt="91.7%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">91.7 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">11</td>
|
||||
<td class="coverPerLo">66.7 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="frame_info.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/frame_info.h">frame_info.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="j1939.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/j1939.h">j1939.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="signal_info.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/signal_info.h">signal_info.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="text_utils.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/text_utils.h">text_utils.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="tree_node.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/tree_node.h">tree_node.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="signal_layout.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/signal_layout.h">signal_layout.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">6</td>
|
||||
<td class="coverNumDflt">6</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="value_descriptions.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/value_descriptions.h">value_descriptions.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerMed">87.5 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">7</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decoder.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decoder.h">dbc_decoder.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerMed">75.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">3</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_parser.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_parser.cpp">dbc_parser.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.0%"><img src="../snow.png" width=1 height=10 alt="99.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.0 %</td>
|
||||
<td class="coverNumDflt">99</td>
|
||||
<td class="coverNumDflt">98</td>
|
||||
<td class="coverPerLo">70.4 %</td>
|
||||
<td class="coverNumDflt">216</td>
|
||||
<td class="coverNumDflt">152</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="decode_database.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/decode_database.h">decode_database.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="definition_key.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/definition_key.h">definition_key.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">18</td>
|
||||
<td class="coverNumDflt">18</td>
|
||||
<td class="coverPerLo">70.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">7</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_statement_handler.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h">dbc_statement_handler.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerLo">45.5 %</td>
|
||||
<td class="coverNumDflt">22</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="decode_database.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/decode_database.cpp">decode_database.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.1%"><img src="../snow.png" width=1 height=10 alt="99.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.1 %</td>
|
||||
<td class="coverNumDflt">110</td>
|
||||
<td class="coverNumDflt">109</td>
|
||||
<td class="coverPerMed">80.2 %</td>
|
||||
<td class="coverNumDflt">182</td>
|
||||
<td class="coverNumDflt">146</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decoder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decoder.cpp">dbc_decoder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=95 height=10 alt="94.9%"><img src="../snow.png" width=5 height=10 alt="94.9%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">94.9 %</td>
|
||||
<td class="coverNumDflt">156</td>
|
||||
<td class="coverNumDflt">148</td>
|
||||
<td class="coverPerLo">72.8 %</td>
|
||||
<td class="coverNumDflt">158</td>
|
||||
<td class="coverNumDflt">115</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="tree_node.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/tree_node.cpp">tree_node.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=98 height=10 alt="98.1%"><img src="../snow.png" width=2 height=10 alt="98.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">98.1 %</td>
|
||||
<td class="coverNumDflt">53</td>
|
||||
<td class="coverNumDflt">52</td>
|
||||
<td class="coverPerMed">76.2 %</td>
|
||||
<td class="coverNumDflt">42</td>
|
||||
<td class="coverNumDflt">32</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">15</td>
|
||||
<td class="coverNumDflt">15</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_attributes.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_attributes.cpp">dbc_attributes.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="98.8%"><img src="../snow.png" width=1 height=10 alt="98.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">98.8 %</td>
|
||||
<td class="coverNumDflt">260</td>
|
||||
<td class="coverNumDflt">257</td>
|
||||
<td class="coverPerLo">73.5 %</td>
|
||||
<td class="coverNumDflt">604</td>
|
||||
<td class="coverNumDflt">444</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">20</td>
|
||||
<td class="coverNumDflt">20</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="typefactory.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/typefactory.h">typefactory.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverPerLo">50.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">27</td>
|
||||
<td class="coverNumDflt">27</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_statement_handler.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.cpp">dbc_statement_handler.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.5%"><img src="../snow.png" width=1 height=10 alt="99.5%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.5 %</td>
|
||||
<td class="coverNumDflt">370</td>
|
||||
<td class="coverNumDflt">368</td>
|
||||
<td class="coverPerLo">68.4 %</td>
|
||||
<td class="coverNumDflt">820</td>
|
||||
<td class="coverNumDflt">561</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">31</td>
|
||||
<td class="coverNumDflt">31</td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,439 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - core</td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">98.6 %</td>
|
||||
<td class="headerCovTableEntry">1185</td>
|
||||
<td class="headerCovTableEntry">1168</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">71.6 %</td>
|
||||
<td class="headerCovTableEntry">2152</td>
|
||||
<td class="headerCovTableEntry">1540</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table width="80%" cellpadding=1 cellspacing=1 border=0>
|
||||
|
||||
<tr>
|
||||
<td width="40%"><br></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="tableHead" rowspan=2>File <span title="Click to sort table by file name" class="tableHeadSort"><a href="index.html"><img src="../updown.png" width=10 height=14 alt="Sort by file name" title="Click to sort table by file name" border=0></a></span></td>
|
||||
<td class="tableHead" colspan=4>Line Coverage <span title="Click to sort table by line coverage" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by line coverage" title="Click to sort table by line coverage" border=0></span></td>
|
||||
<td class="tableHead" colspan=3>Branch Coverage <span title="Click to sort table by branch coverage" class="tableHeadSort"><a href="index-sort-b.html"><img src="../updown.png" width=10 height=14 alt="Sort by branch coverage" title="Click to sort table by branch coverage" border=0></a></span></td>
|
||||
<td class="tableHead" colspan=3>Function Coverage <span title="Click to sort table by function coverage" class="tableHeadSort"><a href="index-sort-f.html"><img src="../updown.png" width=10 height=14 alt="Sort by function coverage" title="Click to sort table by function coverage" border=0></a></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableHead" colspan=2> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
<td class="tableHead"> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
<td class="tableHead"> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_tree_builder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_tree_builder.cpp">dbc_tree_builder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=92 height=10 alt="91.7%"><img src="../snow.png" width=8 height=10 alt="91.7%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">91.7 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">11</td>
|
||||
<td class="coverPerLo">66.7 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decoder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decoder.cpp">dbc_decoder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=95 height=10 alt="94.9%"><img src="../snow.png" width=5 height=10 alt="94.9%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">94.9 %</td>
|
||||
<td class="coverNumDflt">156</td>
|
||||
<td class="coverNumDflt">148</td>
|
||||
<td class="coverPerLo">72.8 %</td>
|
||||
<td class="coverNumDflt">158</td>
|
||||
<td class="coverNumDflt">115</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="tree_node.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/tree_node.cpp">tree_node.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=98 height=10 alt="98.1%"><img src="../snow.png" width=2 height=10 alt="98.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">98.1 %</td>
|
||||
<td class="coverNumDflt">53</td>
|
||||
<td class="coverNumDflt">52</td>
|
||||
<td class="coverPerMed">76.2 %</td>
|
||||
<td class="coverNumDflt">42</td>
|
||||
<td class="coverNumDflt">32</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">15</td>
|
||||
<td class="coverNumDflt">15</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_attributes.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_attributes.cpp">dbc_attributes.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="98.8%"><img src="../snow.png" width=1 height=10 alt="98.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">98.8 %</td>
|
||||
<td class="coverNumDflt">260</td>
|
||||
<td class="coverNumDflt">257</td>
|
||||
<td class="coverPerLo">73.5 %</td>
|
||||
<td class="coverNumDflt">604</td>
|
||||
<td class="coverNumDflt">444</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">20</td>
|
||||
<td class="coverNumDflt">20</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_parser.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_parser.cpp">dbc_parser.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.0%"><img src="../snow.png" width=1 height=10 alt="99.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.0 %</td>
|
||||
<td class="coverNumDflt">99</td>
|
||||
<td class="coverNumDflt">98</td>
|
||||
<td class="coverPerLo">70.4 %</td>
|
||||
<td class="coverNumDflt">216</td>
|
||||
<td class="coverNumDflt">152</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="decode_database.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/decode_database.cpp">decode_database.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.1%"><img src="../snow.png" width=1 height=10 alt="99.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.1 %</td>
|
||||
<td class="coverNumDflt">110</td>
|
||||
<td class="coverNumDflt">109</td>
|
||||
<td class="coverPerMed">80.2 %</td>
|
||||
<td class="coverNumDflt">182</td>
|
||||
<td class="coverNumDflt">146</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_statement_handler.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.cpp">dbc_statement_handler.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.5%"><img src="../snow.png" width=1 height=10 alt="99.5%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.5 %</td>
|
||||
<td class="coverNumDflt">370</td>
|
||||
<td class="coverNumDflt">368</td>
|
||||
<td class="coverPerLo">68.4 %</td>
|
||||
<td class="coverNumDflt">820</td>
|
||||
<td class="coverNumDflt">561</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">31</td>
|
||||
<td class="coverNumDflt">31</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_parser.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_parser.h">dbc_parser.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="frame_info.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/frame_info.h">frame_info.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="signal_info.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/signal_info.h">signal_info.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="tree_node.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/tree_node.h">tree_node.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="j1939.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/j1939.h">j1939.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decoder.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decoder.h">dbc_decoder.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerMed">75.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">3</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_diagnostic.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_diagnostic.h">dbc_diagnostic.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="decode_database.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/decode_database.h">decode_database.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="signal_layout.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/signal_layout.h">signal_layout.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">6</td>
|
||||
<td class="coverNumDflt">6</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_statement_handler.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h">dbc_statement_handler.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerLo">45.5 %</td>
|
||||
<td class="coverNumDflt">22</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="value_descriptions.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/value_descriptions.h">value_descriptions.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerMed">87.5 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">7</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="text_utils.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/text_utils.h">text_utils.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="typefactory.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/typefactory.h">typefactory.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverPerLo">50.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">27</td>
|
||||
<td class="coverNumDflt">27</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="definition_key.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/definition_key.h">definition_key.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">18</td>
|
||||
<td class="coverNumDflt">18</td>
|
||||
<td class="coverPerLo">70.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">7</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decode_builder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decode_builder.cpp">dbc_decode_builder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverPerLo">62.5 %</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverNumDflt">25</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,439 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - core</td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">98.6 %</td>
|
||||
<td class="headerCovTableEntry">1185</td>
|
||||
<td class="headerCovTableEntry">1168</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">71.6 %</td>
|
||||
<td class="headerCovTableEntry">2152</td>
|
||||
<td class="headerCovTableEntry">1540</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table width="80%" cellpadding=1 cellspacing=1 border=0>
|
||||
|
||||
<tr>
|
||||
<td width="40%"><br></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="tableHead" rowspan=2>File <span title="Click to sort table by file name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by file name" title="Click to sort table by file name" border=0></span></td>
|
||||
<td class="tableHead" colspan=4>Line Coverage <span title="Click to sort table by line coverage" class="tableHeadSort"><a href="index-sort-l.html"><img src="../updown.png" width=10 height=14 alt="Sort by line coverage" title="Click to sort table by line coverage" border=0></a></span></td>
|
||||
<td class="tableHead" colspan=3>Branch Coverage <span title="Click to sort table by branch coverage" class="tableHeadSort"><a href="index-sort-b.html"><img src="../updown.png" width=10 height=14 alt="Sort by branch coverage" title="Click to sort table by branch coverage" border=0></a></span></td>
|
||||
<td class="tableHead" colspan=3>Function Coverage <span title="Click to sort table by function coverage" class="tableHeadSort"><a href="index-sort-f.html"><img src="../updown.png" width=10 height=14 alt="Sort by function coverage" title="Click to sort table by function coverage" border=0></a></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableHead" colspan=2> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
<td class="tableHead"> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
<td class="tableHead"> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_attributes.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_attributes.cpp">dbc_attributes.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="98.8%"><img src="../snow.png" width=1 height=10 alt="98.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">98.8 %</td>
|
||||
<td class="coverNumDflt">260</td>
|
||||
<td class="coverNumDflt">257</td>
|
||||
<td class="coverPerLo">73.5 %</td>
|
||||
<td class="coverNumDflt">604</td>
|
||||
<td class="coverNumDflt">444</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">20</td>
|
||||
<td class="coverNumDflt">20</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decode_builder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decode_builder.cpp">dbc_decode_builder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverPerLo">62.5 %</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverNumDflt">25</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decoder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decoder.cpp">dbc_decoder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=95 height=10 alt="94.9%"><img src="../snow.png" width=5 height=10 alt="94.9%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">94.9 %</td>
|
||||
<td class="coverNumDflt">156</td>
|
||||
<td class="coverNumDflt">148</td>
|
||||
<td class="coverPerLo">72.8 %</td>
|
||||
<td class="coverNumDflt">158</td>
|
||||
<td class="coverNumDflt">115</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decoder.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decoder.h">dbc_decoder.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerMed">75.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">3</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_diagnostic.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_diagnostic.h">dbc_diagnostic.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_parser.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_parser.cpp">dbc_parser.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.0%"><img src="../snow.png" width=1 height=10 alt="99.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.0 %</td>
|
||||
<td class="coverNumDflt">99</td>
|
||||
<td class="coverNumDflt">98</td>
|
||||
<td class="coverPerLo">70.4 %</td>
|
||||
<td class="coverNumDflt">216</td>
|
||||
<td class="coverNumDflt">152</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_parser.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_parser.h">dbc_parser.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_statement_handler.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.cpp">dbc_statement_handler.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.5%"><img src="../snow.png" width=1 height=10 alt="99.5%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.5 %</td>
|
||||
<td class="coverNumDflt">370</td>
|
||||
<td class="coverNumDflt">368</td>
|
||||
<td class="coverPerLo">68.4 %</td>
|
||||
<td class="coverNumDflt">820</td>
|
||||
<td class="coverNumDflt">561</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">31</td>
|
||||
<td class="coverNumDflt">31</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_statement_handler.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h">dbc_statement_handler.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerLo">45.5 %</td>
|
||||
<td class="coverNumDflt">22</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_tree_builder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_tree_builder.cpp">dbc_tree_builder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=92 height=10 alt="91.7%"><img src="../snow.png" width=8 height=10 alt="91.7%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">91.7 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">11</td>
|
||||
<td class="coverPerLo">66.7 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="decode_database.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/decode_database.cpp">decode_database.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.1%"><img src="../snow.png" width=1 height=10 alt="99.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.1 %</td>
|
||||
<td class="coverNumDflt">110</td>
|
||||
<td class="coverNumDflt">109</td>
|
||||
<td class="coverPerMed">80.2 %</td>
|
||||
<td class="coverNumDflt">182</td>
|
||||
<td class="coverNumDflt">146</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="decode_database.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/decode_database.h">decode_database.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="definition_key.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/definition_key.h">definition_key.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">18</td>
|
||||
<td class="coverNumDflt">18</td>
|
||||
<td class="coverPerLo">70.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">7</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="frame_info.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/frame_info.h">frame_info.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="j1939.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/j1939.h">j1939.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="signal_info.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/signal_info.h">signal_info.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="signal_layout.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/signal_layout.h">signal_layout.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">6</td>
|
||||
<td class="coverNumDflt">6</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="text_utils.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/text_utils.h">text_utils.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="tree_node.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/tree_node.cpp">tree_node.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=98 height=10 alt="98.1%"><img src="../snow.png" width=2 height=10 alt="98.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">98.1 %</td>
|
||||
<td class="coverNumDflt">53</td>
|
||||
<td class="coverNumDflt">52</td>
|
||||
<td class="coverPerMed">76.2 %</td>
|
||||
<td class="coverNumDflt">42</td>
|
||||
<td class="coverNumDflt">32</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">15</td>
|
||||
<td class="coverNumDflt">15</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="tree_node.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/tree_node.h">tree_node.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="typefactory.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/typefactory.h">typefactory.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverPerLo">50.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">27</td>
|
||||
<td class="coverNumDflt">27</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="value_descriptions.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/value_descriptions.h">value_descriptions.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerMed">87.5 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">7</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/j1939.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - j1939.h<span style="font-size: 80%;"> (<a href="j1939.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="j1939.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="j1939.h.gcov.html#L9">ExtractJ1939Pgn(unsigned int)</a></td>
|
||||
|
||||
<td class="coverFnHi">130</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/j1939.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - j1939.h<span style="font-size: 80%;"> (<a href="j1939.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="j1939.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="j1939.h.gcov.html#L9">ExtractJ1939Pgn(unsigned int)</a></td>
|
||||
|
||||
<td class="coverFnHi">130</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,102 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/j1939.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - j1939.h<span style="font-size: 80%;"> (source / <a href="j1939.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : // SPDX-License-Identifier: MIT</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : #ifndef J1939_H</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : #define J1939_H</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : </span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : #include <cstdint></span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : </span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : /** Extract an 18-bit PGN from a normalized 29-bit ID explicitly interpreted as J1939.</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : * Priority and source address are excluded. PDU1 also excludes destination address.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : * Both data-page bits are retained; this does not validate the J1939 protocol.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> :<span class="tlaGNC"> 130 : inline std::uint32_t ExtractJ1939Pgn(std::uint32_t canId) {</span></span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> :<span class="tlaGNC"> 130 : const std::uint32_t pf = (canId >> 16U) & 0xFFU;</span></span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> :<span class="tlaGNC"> 130 : const std::uint32_t pgn = (canId >> 8U) & 0x3FFFFU;</span></span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> [<span class="tlaGBC" title="Branch 0 was taken 78 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 52 times"> + </span>]:<span class="tlaGNC"> 130 : return pf < 240U ? pgn & 0x3FF00U : pgn;</span></span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : : }</span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : </span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : : #endif /* J1939_H */</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,84 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/signal_info.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - signal_info.h<span style="font-size: 80%;"> (<a href="signal_info.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="signal_info.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="signal_info.h.gcov.html#L41">SignalInfo::SignalInfo()</a></td>
|
||||
|
||||
<td class="coverFnHi">592</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,84 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/signal_info.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - signal_info.h<span style="font-size: 80%;"> (<a href="signal_info.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="signal_info.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="signal_info.h.gcov.html#L41">SignalInfo::SignalInfo()</a></td>
|
||||
|
||||
<td class="coverFnHi">592</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,122 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/signal_info.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - signal_info.h<span style="font-size: 80%;"> (source / <a href="signal_info.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : * @file signal_info.h</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : * @brief Parsed CAN signal metadata.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : #ifndef SIGNAL_INFO_H</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : #define SIGNAL_INFO_H</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : </span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : #include "attributes.h"</span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : #include "multiplexing.h"</span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : #include "value_descriptions.h"</span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : #include <cstdint></span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : #include <string></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : #include <vector></span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : </span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : /**</span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : * @brief Describes one signal inside a DBC frame.</span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : */</span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : struct SignalInfo {</span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : Multiplexing multiplexing; /**< Selector role and branch value. */</span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : std::string name; /**< Signal name. */</span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : std::uint32_t startBit = 0U; /**< Start bit in DBC notation. */</span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> : std::uint32_t length = 0U; /**< Signal length in bits. */</span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : bool isLittleEndian = true; /**< true for Intel, false for Motorola. */</span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> : bool isSigned = false; /**< true if signal is signed. */</span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : double factor = 1.0; /**< Scaling factor. */</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : double offset = 0.0; /**< Physical offset. */</span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : double minimum = 0.0; /**< Minimum physical value. */</span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : double maximum = 0.0; /**< Maximum physical value. */</span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> : std::string unit; /**< Physical unit. */</span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : std::vector<std::string> receivers; /**< Signal receivers. */</span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> : ValueDescriptions valueDescriptions; /**< Raw integer state descriptions. */</span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : std::string comment; /**< Optional signal comment. */</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : </span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> : AttributeMap attributes; /**< Effective attributes after defaults and overrides. */ /**< Effective values, including defaults. */</span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : </span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> <span class="tlaGNC"> 592 : SignalInfo() = default;</span></span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> : };</span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> : </span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : #endif /* SIGNAL_INFO_H */</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,101 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/signal_layout.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - signal_layout.h<span style="font-size: 80%;"> (<a href="signal_layout.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">6</td>
|
||||
<td class="headerCovTableEntry">6</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="signal_layout.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="signal_layout.h.gcov.html#L6">SignalStartCoordinate(unsigned int, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">352521</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="signal_layout.h.gcov.html#L11">IsValidSignalLayout(unsigned int, unsigned int, bool, unsigned char)</a></td>
|
||||
|
||||
<td class="coverFnHi">360851</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,101 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/signal_layout.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - signal_layout.h<span style="font-size: 80%;"> (<a href="signal_layout.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">6</td>
|
||||
<td class="headerCovTableEntry">6</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="signal_layout.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="signal_layout.h.gcov.html#L11">IsValidSignalLayout(unsigned int, unsigned int, bool, unsigned char)</a></td>
|
||||
|
||||
<td class="coverFnHi">360851</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="signal_layout.h.gcov.html#L6">SignalStartCoordinate(unsigned int, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">352521</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,104 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/signal_layout.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - signal_layout.h<span style="font-size: 80%;"> (source / <a href="signal_layout.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">6</td>
|
||||
<td class="headerCovTableEntry">6</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : // SPDX-License-Identifier: MIT</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : #ifndef SIGNAL_LAYOUT_H</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : #define SIGNAL_LAYOUT_H</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : </span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : #include <cstdint></span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : </span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : /** Linear coordinate in the signal's bit order, widened before arithmetic. */</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> :<span class="tlaGNC"> 352521 : inline std::uint64_t SignalStartCoordinate(std::uint32_t startBit, bool littleEndian) {</span></span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> [<span class="tlaGBC" title="Branch 0 was taken 176628 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 175893 times"> + </span>]:<span class="tlaGNC"> 352521 : return littleEndian ? std::uint64_t(startBit)</span></span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> :<span class="tlaGNC"> 352521 : : std::uint64_t(startBit / 8U) * 8U + 7U - startBit % 8U;</span></span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : }</span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : </span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> :<span class="tlaGNC"> 360851 : inline bool IsValidSignalLayout(std::uint32_t startBit, std::uint32_t length,</span></span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : bool littleEndian, std::uint8_t dlc) {</span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> [<span class="tlaGBC" title="Branch 0 was taken 355515 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 5336 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 350157 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 5358 times"> + </span>]:<span class="tlaGNC"> 711008 : return length >= 1U && length <= 64U &&</span></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> [<span class="tlaGBC" title="Branch 0 was taken 331954 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 18203 times"> + </span>]:<span class="tlaGNC"> 711008 : SignalStartCoordinate(startBit, littleEndian) + length <= std::uint64_t(dlc) * 8U;</span></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : : }</span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : </span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : : #endif</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/text_utils.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - text_utils.h<span style="font-size: 80%;"> (<a href="text_utils.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="text_utils.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="text_utils.h.gcov.html#L6">dbc_detail::TrimText(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">2913</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/text_utils.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - text_utils.h<span style="font-size: 80%;"> (<a href="text_utils.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="text_utils.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="text_utils.h.gcov.html#L6">dbc_detail::TrimText(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">2913</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,108 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/text_utils.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - text_utils.h<span style="font-size: 80%;"> (source / <a href="text_utils.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : #ifndef DBC_TEXT_UTILS_H</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : #define DBC_TEXT_UTILS_H</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : </span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : #include <cctype></span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : #include <string></span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : </span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : namespace dbc_detail {</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> :<span class="tlaGNC"> 2913 : inline std::string TrimText(const std::string &text) {</span></span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> :<span class="tlaGNC"> 2913 : std::string::size_type begin = 0U;</span></span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> [<span class="tlaGBC" title="Branch 0 was taken 2692 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 343 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 122 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2913 times"> + </span>]:<span class="tlaGNC"> 5727 : while ((begin < text.size()) &&</span></span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> [<span class="tlaGBC" title="Branch 0 was taken 122 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2570 times"> + </span>]:<span class="tlaGNC"> 2692 : std::isspace(static_cast<unsigned char>(text[begin])))</span></span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> :<span class="tlaGNC"> 122 : ++begin;</span></span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : </span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> :<span class="tlaGNC"> 2913 : std::string::size_type end = text.size();</span></span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> [<span class="tlaGBC" title="Branch 0 was taken 2574 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 343 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2913 times"> + </span>]:<span class="tlaGNC"> 5491 : while ((end > begin) &&</span></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2570 times"> + </span>]:<span class="tlaGNC"> 2574 : std::isspace(static_cast<unsigned char>(text[end - 1U])))</span></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> :<span class="tlaGNC"> 4 : --end;</span></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : </span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> :<span class="tlaGNC"> 2913 : return text.substr(begin, end - begin);</span></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : : }</span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : : }</span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : : </span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : : #endif</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,205 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/tree_node.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - tree_node.cpp<span style="font-size: 80%;"> (<a href="tree_node.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">98.1 %</td>
|
||||
<td class="headerCovTableEntry">53</td>
|
||||
<td class="headerCovTableEntry">52</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">15</td>
|
||||
<td class="headerCovTableEntry">15</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">76.2 %</td>
|
||||
<td class="headerCovTableEntry">42</td>
|
||||
<td class="headerCovTableEntry">32</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="tree_node.cpp.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L89">TreeNode::GetSignalKey() const</a></td>
|
||||
|
||||
<td class="coverFnHi">9</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L13">TreeNode::TreeNode()</a></td>
|
||||
|
||||
<td class="coverFnHi">22</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L81">TreeNode::GetFrameKey() const</a></td>
|
||||
|
||||
<td class="coverFnHi">23</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L61">TreeNode::GetName[abi:cxx11]() const</a></td>
|
||||
|
||||
<td class="coverFnHi">29</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L57">TreeNode::GetType() const</a></td>
|
||||
|
||||
<td class="coverFnHi">44</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L50">TreeNode::GetChild(unsigned long)</a></td>
|
||||
|
||||
<td class="coverFnHi">91</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L17">TreeNode::TreeNode(FrameInfo const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">97</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L21">TreeNode::TreeNode(SignalInfo const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">110</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L25">TreeNode::AddChild(std::unique_ptr<TreeNode, std::default_delete<TreeNode> >&&)</a></td>
|
||||
|
||||
<td class="coverFnHi">206</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L65">TreeNode::GetFrame() const</a></td>
|
||||
|
||||
<td class="coverFnHi">274</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L69">TreeNode::GetSignal() const</a></td>
|
||||
|
||||
<td class="coverFnHi">281</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L77">TreeNode::GetRow() const</a></td>
|
||||
|
||||
<td class="coverFnHi">1547</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L73">TreeNode::GetParent() const</a></td>
|
||||
|
||||
<td class="coverFnHi">1875</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L39">TreeNode::GetChildCount() const</a></td>
|
||||
|
||||
<td class="coverFnHi">2120</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L43">TreeNode::GetChild(unsigned long) const</a></td>
|
||||
|
||||
<td class="coverFnHi">3430</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,205 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/tree_node.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - tree_node.cpp<span style="font-size: 80%;"> (<a href="tree_node.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">98.1 %</td>
|
||||
<td class="headerCovTableEntry">53</td>
|
||||
<td class="headerCovTableEntry">52</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">15</td>
|
||||
<td class="headerCovTableEntry">15</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">76.2 %</td>
|
||||
<td class="headerCovTableEntry">42</td>
|
||||
<td class="headerCovTableEntry">32</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="tree_node.cpp.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L25">TreeNode::AddChild(std::unique_ptr<TreeNode, std::default_delete<TreeNode> >&&)</a></td>
|
||||
|
||||
<td class="coverFnHi">206</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L50">TreeNode::GetChild(unsigned long)</a></td>
|
||||
|
||||
<td class="coverFnHi">91</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L43">TreeNode::GetChild(unsigned long) const</a></td>
|
||||
|
||||
<td class="coverFnHi">3430</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L39">TreeNode::GetChildCount() const</a></td>
|
||||
|
||||
<td class="coverFnHi">2120</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L65">TreeNode::GetFrame() const</a></td>
|
||||
|
||||
<td class="coverFnHi">274</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L81">TreeNode::GetFrameKey() const</a></td>
|
||||
|
||||
<td class="coverFnHi">23</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L61">TreeNode::GetName[abi:cxx11]() const</a></td>
|
||||
|
||||
<td class="coverFnHi">29</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L73">TreeNode::GetParent() const</a></td>
|
||||
|
||||
<td class="coverFnHi">1875</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L77">TreeNode::GetRow() const</a></td>
|
||||
|
||||
<td class="coverFnHi">1547</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L69">TreeNode::GetSignal() const</a></td>
|
||||
|
||||
<td class="coverFnHi">281</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L89">TreeNode::GetSignalKey() const</a></td>
|
||||
|
||||
<td class="coverFnHi">9</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L57">TreeNode::GetType() const</a></td>
|
||||
|
||||
<td class="coverFnHi">44</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L13">TreeNode::TreeNode()</a></td>
|
||||
|
||||
<td class="coverFnHi">22</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L17">TreeNode::TreeNode(FrameInfo const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">97</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L21">TreeNode::TreeNode(SignalInfo const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">110</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,183 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/tree_node.cpp</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - tree_node.cpp<span style="font-size: 80%;"> (source / <a href="tree_node.cpp.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">98.1 %</td>
|
||||
<td class="headerCovTableEntry">53</td>
|
||||
<td class="headerCovTableEntry">52</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">15</td>
|
||||
<td class="headerCovTableEntry">15</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">76.2 %</td>
|
||||
<td class="headerCovTableEntry">42</td>
|
||||
<td class="headerCovTableEntry">32</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : * @file tree_node.cpp</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : * @brief Tree node ownership and navigation.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : #include "tree_node.h"</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : #include <stdexcept></span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : </span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> :<span class="tlaGNC"> 22 : TreeNode::TreeNode()</span></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> [<span class="tlaGBC" title="Branch 0 was taken 22 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 66 : : m_type(NodeType::Root), m_name("dbc") {</span></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> :<span class="tlaGNC"> 22 : }</span></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : </span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> :<span class="tlaGNC"> 97 : TreeNode::TreeNode(const FrameInfo &frame)</span></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> [<span class="tlaGBC" title="Branch 0 was taken 97 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 97 : : m_type(NodeType::Frame), m_name(frame.name), m_frame(std::make_unique<FrameInfo>(frame)) {</span></span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> :<span class="tlaGNC"> 97 : }</span></span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : : </span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> :<span class="tlaGNC"> 110 : TreeNode::TreeNode(const SignalInfo &signal)</span></span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> [<span class="tlaGBC" title="Branch 0 was taken 110 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 110 : : m_type(NodeType::Signal), m_name(signal.name), m_signal(std::make_unique<SignalInfo>(signal)) {</span></span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> :<span class="tlaGNC"> 110 : }</span></span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : : </span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> :<span class="tlaGNC"> 206 : void TreeNode::AddChild(std::unique_ptr<TreeNode> &&child) {</span></span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> [<span class="tlaGBC" title="Branch 0 was taken 205 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1 time"> + </span>]:<span class="tlaGNC"> 206 : if (child) {</span></span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> [<span class="tlaGBC" title="Branch 0 was taken 271 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 203 times"> + </span>]:<span class="tlaGNC"> 474 : for (const TreeNode *ancestor = this; ancestor; ancestor = ancestor->m_parent) {</span></span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 269 times"> + </span>]:<span class="tlaGNC"> 271 : if (ancestor == child.get())</span></span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::invalid_argument("Cannot insert a node into its own subtree");</span></span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : : }</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 203 times"> + </span>]:<span class="tlaGNC"> 203 : if (child->m_parent)</span></span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> [<span class="tlaUNC" title="Branch 0 was not executed"> # </span><span class="tlaUNC" title="Branch 1 was not executed"> # </span>]:<span class="tlaUNC"> 0 : throw std::invalid_argument("Child is already attached");</span></span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> :<span class="tlaGNC"> 203 : m_children.push_back(std::move(child));</span></span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> :<span class="tlaGNC"> 203 : m_children.back()->m_parent = this;</span></span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> :<span class="tlaGNC"> 203 : m_children.back()->m_row = m_children.size() - 1U;</span></span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> : : }</span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> :<span class="tlaGNC"> 204 : }</span></span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : : </span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> :<span class="tlaGNC"> 2120 : std::size_t TreeNode::GetChildCount() const {</span></span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> :<span class="tlaGNC"> 2120 : return m_children.size();</span></span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> : : }</span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> : : </span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> :<span class="tlaGNC"> 3430 : const TreeNode *TreeNode::GetChild(std::size_t index) const {</span></span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> [<span class="tlaGBC" title="Branch 0 was taken 1107 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2323 times"> + </span>]:<span class="tlaGNC"> 3430 : if (index >= m_children.size())</span></span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> :<span class="tlaGNC"> 1107 : return nullptr;</span></span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> : : </span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> :<span class="tlaGNC"> 2323 : return m_children[index].get();</span></span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> : : }</span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> : : </span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> :<span class="tlaGNC"> 91 : TreeNode *TreeNode::GetChild(std::size_t index) {</span></span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 89 times"> + </span>]:<span class="tlaGNC"> 91 : if (index >= m_children.size())</span></span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> :<span class="tlaGNC"> 2 : return nullptr;</span></span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> : : </span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> :<span class="tlaGNC"> 89 : return m_children[index].get();</span></span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> : : }</span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> : : </span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> :<span class="tlaGNC"> 44 : NodeType TreeNode::GetType() const {</span></span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> :<span class="tlaGNC"> 44 : return m_type;</span></span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> : : }</span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> : : </span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> :<span class="tlaGNC"> 29 : const std::string &TreeNode::GetName() const {</span></span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> :<span class="tlaGNC"> 29 : return m_name;</span></span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> : : }</span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> : : </span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> :<span class="tlaGNC"> 274 : const FrameInfo *TreeNode::GetFrame() const {</span></span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> :<span class="tlaGNC"> 274 : return m_frame.get();</span></span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> : : }</span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> : : </span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> :<span class="tlaGNC"> 281 : const SignalInfo *TreeNode::GetSignal() const {</span></span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> :<span class="tlaGNC"> 281 : return m_signal.get();</span></span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> : : }</span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> : : </span>
|
||||
<span id="L75"><span class="lineNum"> 75</span> :<span class="tlaGNC"> 1875 : const TreeNode *TreeNode::GetParent() const {</span></span>
|
||||
<span id="L76"><span class="lineNum"> 76</span> :<span class="tlaGNC"> 1875 : return m_parent;</span></span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> : : }</span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> : : </span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> :<span class="tlaGNC"> 1547 : std::size_t TreeNode::GetRow() const {</span></span>
|
||||
<span id="L80"><span class="lineNum"> 80</span> :<span class="tlaGNC"> 1547 : return m_row;</span></span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> : : }</span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> : : </span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> :<span class="tlaGNC"> 23 : std::optional<FrameKey> TreeNode::GetFrameKey() const {</span></span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> [<span class="tlaGBC" title="Branch 0 was taken 13 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 10 times"> + </span>]:<span class="tlaGNC"> 23 : if (m_frame)</span></span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> :<span class="tlaGNC"> 13 : return FrameKey(m_frame->canId, m_frame->isExtended);</span></span>
|
||||
<span id="L86"><span class="lineNum"> 86</span> [<span class="tlaGBC" title="Branch 0 was taken 8 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2 times"> + </span> :<span class="tlaGNC"> 10 : if (m_signal && m_parent && m_parent->GetType() == NodeType::Frame)</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 4 times"> + </span>]
|
||||
<span id="L87"><span class="lineNum"> 87</span> :<span class="tlaGNC"> 6 : return m_parent->GetFrameKey();</span></span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> :<span class="tlaGNC"> 4 : return std::nullopt;</span></span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> : : }</span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> : : </span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> :<span class="tlaGNC"> 9 : std::optional<SignalKey> TreeNode::GetSignalKey() const {</span></span>
|
||||
<span id="L92"><span class="lineNum"> 92</span> [<span class="tlaGBC" title="Branch 0 was taken 9 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 9 : const std::optional<FrameKey> frame = GetFrameKey();</span></span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1 time"> + </span> :<span class="tlaGNC"> 9 : if (m_signal && frame)</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 4 times"> + </span>]
|
||||
<span id="L94"><span class="lineNum"> 94</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 5 : return SignalKey(*frame, m_signal->name);</span></span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> :<span class="tlaGNC"> 4 : return std::nullopt;</span></span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> : : }</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,84 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/tree_node.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - tree_node.h<span style="font-size: 80%;"> (<a href="tree_node.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="tree_node.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.h.gcov.html#L54">TreeNode::~TreeNode()</a></td>
|
||||
|
||||
<td class="coverFnHi">229</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,84 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/tree_node.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - tree_node.h<span style="font-size: 80%;"> (<a href="tree_node.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="tree_node.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.h.gcov.html#L54">TreeNode::~TreeNode()</a></td>
|
||||
|
||||
<td class="coverFnHi">229</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,217 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/tree_node.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - tree_node.h<span style="font-size: 80%;"> (source / <a href="tree_node.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : * @file tree_node.h</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : * @brief Qt-independent metadata tree nodes.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : #ifndef TREE_NODE_H</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : #define TREE_NODE_H</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : </span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : #include <cstddef></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : #include <memory></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : #include <optional></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : #include <string></span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : #include <vector></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : </span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : #include "definition_key.h"</span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : #include "frame_info.h"</span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : #include "signal_info.h"</span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : </span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : /**</span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : * @brief Type of a tree node.</span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : */</span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : enum class NodeType {</span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> : Root,</span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : Frame,</span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> : Signal</span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : };</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : </span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : /**</span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : * @brief Tree node for later use in model/view or other hierarchy consumers.</span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> : */</span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : class TreeNode {</span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> : public:</span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : /**</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : * @brief Create root node.</span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> : */</span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : TreeNode();</span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> : </span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> : /**</span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> : * @brief Create frame node.</span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : * @param frame Frame payload.</span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : */</span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> : explicit TreeNode(const FrameInfo &frame);</span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> : </span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> : /**</span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> : * @brief Create signal node.</span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> : * @param signal Signal payload.</span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> : */</span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> : explicit TreeNode(const SignalInfo &signal);</span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> : </span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> <span class="tlaGNC"> 229 : ~TreeNode() = default;</span></span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> : </span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> : TreeNode(const TreeNode &) = delete;</span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> : TreeNode &operator=(const TreeNode &) = delete;</span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> : </span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> : // Node addresses are stable. Transfer unique_ptr ownership instead of nodes.</span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> : TreeNode(TreeNode &&) = delete;</span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> : TreeNode &operator=(TreeNode &&) = delete;</span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> : </span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> : /**</span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> : * @brief Add child node.</span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> : * @param child Child node to add.</span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> : * A null child is ignored. Existing children keep their addresses and rows.</span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> : * Ownership must be exclusive; attached nodes cannot be reparented.</span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> : * @throws std::invalid_argument for self/ancestor insertion or an attached child.</span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> : * Rejected ownership remains with the caller.</span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> : */</span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> : void AddChild(std::unique_ptr<TreeNode> &&child);</span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> : </span>
|
||||
<span id="L75"><span class="lineNum"> 75</span> : /** Non-owning parent; nullptr for a detached node or the root. */</span>
|
||||
<span id="L76"><span class="lineNum"> 76</span> : const TreeNode *GetParent() const;</span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> : </span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> : /** Zero-based sibling position; zero for a detached node or the root. */</span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> : std::size_t GetRow() const;</span>
|
||||
<span id="L80"><span class="lineNum"> 80</span> : </span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> : /** Frame identity for frame nodes and signals attached to a frame; otherwise empty. */</span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> : std::optional<FrameKey> GetFrameKey() const;</span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> : </span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> : /** Signal identity (owning frame key and name); empty for other/detached nodes. */</span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> : std::optional<SignalKey> GetSignalKey() const;</span>
|
||||
<span id="L86"><span class="lineNum"> 86</span> : </span>
|
||||
<span id="L87"><span class="lineNum"> 87</span> : /**</span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> : * @brief Get child count.</span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> : * @return Number of children.</span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> : */</span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> : std::size_t GetChildCount() const;</span>
|
||||
<span id="L92"><span class="lineNum"> 92</span> : </span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> : /**</span>
|
||||
<span id="L94"><span class="lineNum"> 94</span> : * @brief Get child by index.</span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> : * @param index Child index.</span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> : * @return Child pointer or nullptr if index is invalid.</span>
|
||||
<span id="L97"><span class="lineNum"> 97</span> : */</span>
|
||||
<span id="L98"><span class="lineNum"> 98</span> : const TreeNode *GetChild(std::size_t index) const;</span>
|
||||
<span id="L99"><span class="lineNum"> 99</span> : </span>
|
||||
<span id="L100"><span class="lineNum"> 100</span> : /**</span>
|
||||
<span id="L101"><span class="lineNum"> 101</span> : * @brief Get mutable child by index.</span>
|
||||
<span id="L102"><span class="lineNum"> 102</span> : * @param index Child index.</span>
|
||||
<span id="L103"><span class="lineNum"> 103</span> : * @return Child pointer or nullptr if index is invalid.</span>
|
||||
<span id="L104"><span class="lineNum"> 104</span> : */</span>
|
||||
<span id="L105"><span class="lineNum"> 105</span> : TreeNode *GetChild(std::size_t index);</span>
|
||||
<span id="L106"><span class="lineNum"> 106</span> : </span>
|
||||
<span id="L107"><span class="lineNum"> 107</span> : /**</span>
|
||||
<span id="L108"><span class="lineNum"> 108</span> : * @brief Get node type.</span>
|
||||
<span id="L109"><span class="lineNum"> 109</span> : * @return Node type.</span>
|
||||
<span id="L110"><span class="lineNum"> 110</span> : */</span>
|
||||
<span id="L111"><span class="lineNum"> 111</span> : NodeType GetType() const;</span>
|
||||
<span id="L112"><span class="lineNum"> 112</span> : </span>
|
||||
<span id="L113"><span class="lineNum"> 113</span> : /**</span>
|
||||
<span id="L114"><span class="lineNum"> 114</span> : * @brief Get display name.</span>
|
||||
<span id="L115"><span class="lineNum"> 115</span> : * @return Node name.</span>
|
||||
<span id="L116"><span class="lineNum"> 116</span> : */</span>
|
||||
<span id="L117"><span class="lineNum"> 117</span> : const std::string &GetName() const;</span>
|
||||
<span id="L118"><span class="lineNum"> 118</span> : </span>
|
||||
<span id="L119"><span class="lineNum"> 119</span> : /**</span>
|
||||
<span id="L120"><span class="lineNum"> 120</span> : * @brief Get frame payload if node is frame.</span>
|
||||
<span id="L121"><span class="lineNum"> 121</span> : * @return Pointer to frame info or nullptr.</span>
|
||||
<span id="L122"><span class="lineNum"> 122</span> : */</span>
|
||||
<span id="L123"><span class="lineNum"> 123</span> : const FrameInfo *GetFrame() const;</span>
|
||||
<span id="L124"><span class="lineNum"> 124</span> : </span>
|
||||
<span id="L125"><span class="lineNum"> 125</span> : /**</span>
|
||||
<span id="L126"><span class="lineNum"> 126</span> : * @brief Get signal payload if node is signal.</span>
|
||||
<span id="L127"><span class="lineNum"> 127</span> : * @return Pointer to signal info or nullptr.</span>
|
||||
<span id="L128"><span class="lineNum"> 128</span> : */</span>
|
||||
<span id="L129"><span class="lineNum"> 129</span> : const SignalInfo *GetSignal() const;</span>
|
||||
<span id="L130"><span class="lineNum"> 130</span> : </span>
|
||||
<span id="L131"><span class="lineNum"> 131</span> : private:</span>
|
||||
<span id="L132"><span class="lineNum"> 132</span> : TreeNode *m_parent = nullptr;</span>
|
||||
<span id="L133"><span class="lineNum"> 133</span> : std::size_t m_row = 0U;</span>
|
||||
<span id="L134"><span class="lineNum"> 134</span> : NodeType m_type;</span>
|
||||
<span id="L135"><span class="lineNum"> 135</span> : std::string m_name;</span>
|
||||
<span id="L136"><span class="lineNum"> 136</span> : std::vector<std::unique_ptr<TreeNode>> m_children;</span>
|
||||
<span id="L137"><span class="lineNum"> 137</span> : std::unique_ptr<FrameInfo> m_frame;</span>
|
||||
<span id="L138"><span class="lineNum"> 138</span> : std::unique_ptr<SignalInfo> m_signal;</span>
|
||||
<span id="L139"><span class="lineNum"> 139</span> : };</span>
|
||||
<span id="L140"><span class="lineNum"> 140</span> : </span>
|
||||
<span id="L141"><span class="lineNum"> 141</span> : #endif /* TREE_NODE_H */</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,341 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/typefactory.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - typefactory.h<span style="font-size: 80%;"> (<a href="typefactory.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">27</td>
|
||||
<td class="headerCovTableEntry">27</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">50.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="typefactory.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="typefactory.h.gcov.html#L104">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::contains(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">2</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="typefactory.h.gcov.html#L64">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::TypeFactory()</a></td>
|
||||
|
||||
<td class="coverFnHi">950</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L64">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::TypeFactory()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L64">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::TypeFactory()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<CountingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">14238</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::registerType<(anonymous namespace)::FactoryFirst>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::registerType<(anonymous namespace)::FactorySecond>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<CountingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcCommentHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcFrameHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcSignalHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcUnsupportedMultiplexingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcValueDescriptionHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcAttributeHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">2847</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcHeaderHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">6643</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="typefactory.h.gcov.html#L97">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::create(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">14239</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L97">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::create(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<int, std::default_delete<int> >) const</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">3</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L97">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::create(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">14236</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<CountingHandler>()</a></td>
|
||||
|
||||
<td class="coverFnHi">14240</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<(anonymous namespace)::FactoryBase> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::instantiate<(anonymous namespace)::FactorySecond>(std::unique_ptr<int, std::default_delete<int> >)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<CountingHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<(anonymous namespace)::FactoryBase> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::instantiate<(anonymous namespace)::FactoryFirst>(std::unique_ptr<int, std::default_delete<int> >)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">3</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcCommentHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcFrameHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcSignalHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcUnsupportedMultiplexingHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcValueDescriptionHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcAttributeHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">2847</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcHeaderHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">6643</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="typefactory.h.gcov.html#L89">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::creator(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">14241</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L89">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::creator(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">5</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L89">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::creator(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">14236</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,341 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/typefactory.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - typefactory.h<span style="font-size: 80%;"> (<a href="typefactory.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">27</td>
|
||||
<td class="headerCovTableEntry">27</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">50.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="typefactory.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="typefactory.h.gcov.html#L104">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::contains(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">2</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="typefactory.h.gcov.html#L64">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::TypeFactory()</a></td>
|
||||
|
||||
<td class="coverFnHi">950</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L64">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::TypeFactory()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L64">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::TypeFactory()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="typefactory.h.gcov.html#L97">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::create(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">14239</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L97">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::create(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<int, std::default_delete<int> >) const</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">3</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L97">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::create(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">14236</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="typefactory.h.gcov.html#L89">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::creator(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">14241</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L89">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::creator(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">5</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L89">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::creator(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">14236</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<CountingHandler>()</a></td>
|
||||
|
||||
<td class="coverFnHi">14240</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<(anonymous namespace)::FactoryBase> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::instantiate<(anonymous namespace)::FactoryFirst>(std::unique_ptr<int, std::default_delete<int> >)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">3</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<(anonymous namespace)::FactoryBase> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::instantiate<(anonymous namespace)::FactorySecond>(std::unique_ptr<int, std::default_delete<int> >)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<CountingHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcAttributeHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">2847</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcCommentHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcFrameHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcHeaderHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">6643</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcSignalHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcUnsupportedMultiplexingHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcValueDescriptionHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<CountingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">14238</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::registerType<(anonymous namespace)::FactoryFirst>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::registerType<(anonymous namespace)::FactorySecond>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<CountingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcAttributeHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">2847</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcCommentHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcFrameHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcHeaderHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">6643</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcSignalHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcUnsupportedMultiplexingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcValueDescriptionHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,205 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/typefactory.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - typefactory.h<span style="font-size: 80%;"> (source / <a href="typefactory.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">27</td>
|
||||
<td class="headerCovTableEntry">27</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">50.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : // SPDX-License-Identifier: MIT</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : // Copyright (c) 2026 Dim Himro</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : </span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : #ifndef TYPEFACTORY_H</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : #define TYPEFACTORY_H</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : </span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : #include <memory></span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : #include <type_traits></span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : #include <unordered_map></span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : #include <utility>// std::move</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : /**</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : * @brief Registry-based factory for creating objects by runtime identifier.</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : *</span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : : * Allows registering derived types and instantiating them using a ClassId key.</span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : *</span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : : * Notes:</span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : * - Not thread-safe. Register types during initialization phase only.</span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : : * - Re-registering the same id overwrites the previous entry ("last wins").</span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : : * - ClassId must be hashable (std::hash<ClassId> specialization must exist).</span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : : *</span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : : * @tparam ClassId Unique class identifier type (e.g. std::string, int, enum).</span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : : * @tparam BaseClass Base type for all created objects.</span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : : * @tparam Args Constructor arguments forwarded to registered derived types (by value).</span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : : *</span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : : * Usage example:</span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : : * @code</span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : : * #include <string></span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> : : *</span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : : * struct Base {</span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> : : * virtual ~Base() = default;</span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : : * virtual int get() = 0;</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : : * };</span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : : *</span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : : * struct Derived1 : Base {</span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> : : * explicit Derived1(int start) : m_start(start) {}</span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : : * int get() override { return m_start + 1; }</span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> : : * int m_start = 0;</span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : : * };</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : : *</span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> : : * struct Derived2 : Base {</span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : : * explicit Derived2(int start) : m_start(start) {}</span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> : : * int get() override { return m_start + 2; }</span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> : : * int m_start = 0;</span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> : : * };</span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : : *</span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : : * TypeFactory<std::string, Base, int> factory;</span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> : : * factory.registerType<Derived1>("one");</span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> : : * factory.registerType<Derived2>("two");</span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> : : *</span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> : : * std::shared_ptr<Base> a = factory.create("one", 10);</span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> : : * std::shared_ptr<Base> b = factory.creator("two")(10); // advanced API: get creator function</span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> : : *</span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> : : * (void)a->get();</span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> : : * (void)b->get();</span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> : : * @endcode</span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> : : */</span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> : : template<class ClassId, class BaseClass, class... Args></span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> : : class TypeFactory {</span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> : : public:</span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> : : /** @brief Shared ownership handle returned for created instances. */</span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> : : using BasePtr = std::shared_ptr<BaseClass>;</span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> : : /** @brief Registered creator function signature. */</span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> : : using CreatorFn = BasePtr (*)(Args...);</span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> : : </span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> :<span class="tlaGNC"> 950 : TypeFactory() = default;</span></span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> : : </span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> : : /**</span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> : : * @brief Registers a Derived type under the given id.</span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> : : *</span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> : : * Requirements (checked at compile-time):</span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> : : * - Derived must inherit from BaseClass</span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> : : * - Derived must be constructible from Args...</span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> : : *</span>
|
||||
<span id="L75"><span class="lineNum"> 75</span> : : * Re-registering the same id overwrites the previous entry ("last wins").</span>
|
||||
<span id="L76"><span class="lineNum"> 76</span> : : */</span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> : : template<class Derived></span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> :<span class="tlaGNC"> 14238 : void registerType(const ClassId &id) {</span></span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> : : static_assert(std::is_base_of_v<BaseClass, Derived>,</span>
|
||||
<span id="L80"><span class="lineNum"> 80</span> : : "Derived must inherit from BaseClass");</span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> : : static_assert(std::is_constructible_v<Derived, Args...>,</span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> : : "Derived must be constructible from Args...");</span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> : : </span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> [<span class="tlaGBC" title="Branch 0 was taken 14238 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 14238 : classes.insert_or_assign(id, &instantiate<Derived>);</span></span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> :<span class="tlaGNC"> 14238 : }</span></span>
|
||||
<span id="L86"><span class="lineNum"> 86</span> : : </span>
|
||||
<span id="L87"><span class="lineNum"> 87</span> : : /**</span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> : : * @brief Returns creator function for the given id.</span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> : : * @throws std::out_of_range when id is not registered.</span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> : : */</span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> :<span class="tlaGNC"> 14241 : [[nodiscard]] CreatorFn creator(const ClassId &id) const {</span></span>
|
||||
<span id="L92"><span class="lineNum"> 92</span> :<span class="tlaGNC"> 14241 : return classes.at(id);</span></span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> : : }</span>
|
||||
<span id="L94"><span class="lineNum"> 94</span> : : </span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> : : /**</span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> : : * @brief Creates an instance for the given id using provided arguments.</span>
|
||||
<span id="L97"><span class="lineNum"> 97</span> : : * @throws std::out_of_range when id is not registered.</span>
|
||||
<span id="L98"><span class="lineNum"> 98</span> : : */</span>
|
||||
<span id="L99"><span class="lineNum"> 99</span> :<span class="tlaGNC"> 14239 : [[nodiscard]] BasePtr create(const ClassId &id, Args... args) const {</span></span>
|
||||
<span id="L100"><span class="lineNum"> 100</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 14239 : return creator(id)(std::move(args)...);</span></span>
|
||||
<span id="L101"><span class="lineNum"> 101</span> : : }</span>
|
||||
<span id="L102"><span class="lineNum"> 102</span> : : </span>
|
||||
<span id="L103"><span class="lineNum"> 103</span> : : /**</span>
|
||||
<span id="L104"><span class="lineNum"> 104</span> : : * @brief Checks whether an id is registered.</span>
|
||||
<span id="L105"><span class="lineNum"> 105</span> : : */</span>
|
||||
<span id="L106"><span class="lineNum"> 106</span> :<span class="tlaGNC"> 2 : [[nodiscard]] bool contains(const ClassId &id) const {</span></span>
|
||||
<span id="L107"><span class="lineNum"> 107</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : return classes.find(id) != classes.end();</span></span>
|
||||
<span id="L108"><span class="lineNum"> 108</span> : : }</span>
|
||||
<span id="L109"><span class="lineNum"> 109</span> : : </span>
|
||||
<span id="L110"><span class="lineNum"> 110</span> : : protected:</span>
|
||||
<span id="L111"><span class="lineNum"> 111</span> : : /** @brief Registered creators; accessible to derived factories. */</span>
|
||||
<span id="L112"><span class="lineNum"> 112</span> : : std::unordered_map<ClassId, CreatorFn> classes;</span>
|
||||
<span id="L113"><span class="lineNum"> 113</span> : : </span>
|
||||
<span id="L114"><span class="lineNum"> 114</span> : : private:</span>
|
||||
<span id="L115"><span class="lineNum"> 115</span> : : template<class Derived></span>
|
||||
<span id="L116"><span class="lineNum"> 116</span> :<span class="tlaGNC"> 14240 : static BasePtr instantiate(Args... args) {</span></span>
|
||||
<span id="L117"><span class="lineNum"> 117</span> [<span class="tlaGBC" title="Branch 0 was taken 14240 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 14240 : return std::make_shared<Derived>(std::move(args)...);</span></span>
|
||||
<span id="L118"><span class="lineNum"> 118</span> : : }</span>
|
||||
<span id="L119"><span class="lineNum"> 119</span> : : };</span>
|
||||
<span id="L120"><span class="lineNum"> 120</span> : : #endif// TYPEFACTORY_H</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,101 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/value_descriptions.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - value_descriptions.h<span style="font-size: 80%;"> (<a href="value_descriptions.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">87.5 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">7</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="value_descriptions.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="value_descriptions.h.gcov.html#L22">FindValueDescription(std::map<std::variant<long, unsigned long>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::variant<long, unsigned long> >, std::allocator<std::pair<std::variant<long, unsigned long> const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::variant<long, unsigned long> const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">71</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="value_descriptions.h.gcov.html#L11">NormalizeValueKey(std::variant<long, unsigned long> const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">87</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,101 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/value_descriptions.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - value_descriptions.h<span style="font-size: 80%;"> (<a href="value_descriptions.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">87.5 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">7</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="value_descriptions.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="value_descriptions.h.gcov.html#L22">FindValueDescription(std::map<std::variant<long, unsigned long>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::variant<long, unsigned long> >, std::allocator<std::pair<std::variant<long, unsigned long> const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::variant<long, unsigned long> const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">71</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="value_descriptions.h.gcov.html#L11">NormalizeValueKey(std::variant<long, unsigned long> const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">87</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,115 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/value_descriptions.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - value_descriptions.h<span style="font-size: 80%;"> (source / <a href="value_descriptions.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">87.5 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">7</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : // SPDX-License-Identifier: MIT</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : #ifndef VALUE_DESCRIPTIONS_H</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : #define VALUE_DESCRIPTIONS_H</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : </span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : #include <cstdint></span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : #include <map></span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : #include <string></span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : #include <variant></span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : </span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : using RawSignalValue = std::variant<std::int64_t, std::uint64_t>;</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : /** Canonical keys: negative int64_t, nonnegative uint64_t. */</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> :<span class="tlaGNC"> 87 : inline RawSignalValue NormalizeValueKey(const RawSignalValue &value) {</span></span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> [<span class="tlaGBC" title="Branch 0 was taken 31 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 56 times"> + </span>]:<span class="tlaGNC"> 87 : if (const std::int64_t *number = std::get_if<std::int64_t>(&value)) {</span></span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> [<span class="tlaGBC" title="Branch 0 was taken 11 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 20 times"> + </span>]:<span class="tlaGNC"> 31 : if (*number >= 0)</span></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> :<span class="tlaGNC"> 11 : return static_cast<std::uint64_t>(*number);</span></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : : }</span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> :<span class="tlaGNC"> 76 : return value;</span></span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : : }</span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : : </span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : : using ValueDescriptions = std::map<RawSignalValue, std::string>;</span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : : </span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : : /** Returns a borrowed string, or nullptr; never converts integers to double. */</span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> :<span class="tlaGNC"> 71 : inline const std::string *FindValueDescription(const ValueDescriptions &descriptions,</span></span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : : const RawSignalValue &rawValue) {</span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> [<span class="tlaGBC" title="Branch 0 was taken 71 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 71 : const ValueDescriptions::const_iterator found = descriptions.find(NormalizeValueKey(rawValue));</span></span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 1 was taken 70 times"> + </span>]:<span class="tlaGNC"> 71 : return found == descriptions.end() ? nullptr : &found->second;</span></span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : : }</span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> : : </span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : : #endif</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user