Fixed SIGSEGV
This commit is contained in:
1 parent
f03882d3f4
commit
5b0019d50d
50 files changed
+1560
-816
No files matched your search
@@ -868,6 +868,9 @@ parent selector; conflicting parent references are rejected. Multiple independen
|
|||||||
root selectors are supported. Statements and selectors may precede or follow
|
root selectors are supported. Statements and selectors may precede or follow
|
||||||
their targets. Decimal values retain the full `uint64_t` range and must fit the
|
their targets. Decimal values retain the full `uint64_t` range and must fit the
|
||||||
parent's bit width. Ranges are stored without expanding individual values.
|
parent's bit width. Ranges are stored without expanding individual values.
|
||||||
|
`SG_MUL_VAL_` headers, decimal bounds, and range lists are scanned iteratively,
|
||||||
|
without regular expressions or a new statement-length limit. Long valid lists
|
||||||
|
are preserved; malformed ranges and trailing text produce source-located errors.
|
||||||
Malformed ranges, unresolved references, signed selectors, ambiguous implicit
|
Malformed ranges, unresolved references, signed selectors, ambiguous implicit
|
||||||
selectors, and dependency cycles produce `InvalidMultiplexing` diagnostics.
|
selectors, and dependency cycles produce `InvalidMultiplexing` diagnostics.
|
||||||
Statement errors retain the `SG_MUL_VAL_` source line; graph and overlap errors
|
Statement errors retain the `SG_MUL_VAL_` source line; graph and overlap errors
|
||||||
@@ -1239,7 +1242,10 @@ Each statement must occupy one physical line, contain at least one integer/text
|
|||||||
pair, and end with a semicolon. Spaces and tabs are accepted between fields;
|
pair, and end with a semicolon. Spaces and tabs are accepted between fields;
|
||||||
descriptions may contain whitespace, semicolons, and empty text. Inside quoted
|
descriptions may contain whitespace, semicolons, and empty text. Inside quoted
|
||||||
text, escape a quote or a backslash with a preceding backslash; other escapes
|
text, escape a quote or a backslash with a preceding backslash; other escapes
|
||||||
are rejected.
|
are rejected. Headers, quoted descriptions, and pairs are scanned iteratively,
|
||||||
|
without regular expressions or repeatedly removing the parsed prefix. Long
|
||||||
|
valid descriptions and lists are preserved without a new length limit; malformed
|
||||||
|
input returns the same source-located diagnostics as short statements.
|
||||||
Keys are decimal integers in `INT64_MIN..UINT64_MAX`, with an optional minus
|
Keys are decimal integers in `INT64_MIN..UINT64_MAX`, with an optional minus
|
||||||
sign; plus signs, fractions, hexadecimal numbers, exponents, and overflow are
|
sign; plus signs, fractions, hexadecimal numbers, exponents, and overflow are
|
||||||
rejected. Keys never pass through `double`.
|
rejected. Keys never pass through `double`.
|
||||||
@@ -1397,8 +1403,8 @@ When building a consumer separately, pass
|
|||||||
### Local core regression checks
|
### Local core regression checks
|
||||||
|
|
||||||
Run `bash tests/run_core_ci.sh release` or `bash tests/run_core_ci.sh sanitize`
|
Run `bash tests/run_core_ci.sh release` or `bash tests/run_core_ci.sh sanitize`
|
||||||
to build the core archive with Qt 6.8.2, run all six core QtTest suites (parser,
|
to build the core archive with Qt 6.8.2, run all seven core QtTest suites (parser,
|
||||||
decoder, coverage, lifetime, validation, and pipeline/builder integration), and
|
statement robustness, decoder, coverage, lifetime, validation, and pipeline/builder integration), and
|
||||||
run both the qmake and standalone Qt-free tree tests. The sanitizer mode uses
|
run both the qmake and standalone Qt-free tree tests. The sanitizer mode uses
|
||||||
AddressSanitizer and UndefinedBehaviorSanitizer, with leak detection enabled by
|
AddressSanitizer and UndefinedBehaviorSanitizer, with leak detection enabled by
|
||||||
default and fatal sanitizer errors.
|
default and fatal sanitizer errors.
|
||||||
@@ -1572,7 +1578,8 @@ floating-point values. Default application skips unrelated scopes, CAN ID
|
|||||||
normalization uses the validated identifier mask, and signal layout validation
|
normalization uses the validated identifier mask, and signal layout validation
|
||||||
owns the length checks. Statement handlers continue to use `TypeFactory`.
|
owns the length checks. Statement handlers continue to use `TypeFactory`.
|
||||||
Core, adapter, example, and test C++ sources use explicit return types and contain
|
Core, adapter, example, and test C++ sources use explicit return types and contain
|
||||||
no lambdas. Public metadata and parser-state comments use Doxygen descriptions.
|
no lambdas. DBC statement parsing uses iterative scanners rather than regular
|
||||||
|
expressions. Public metadata and parser-state comments use Doxygen descriptions.
|
||||||
|
|
||||||
See [tests/README.md](tests/README.md#extended-validation) for attribute boundary
|
See [tests/README.md](tests/README.md#extended-validation) for attribute boundary
|
||||||
regressions, sanitizer commands, and the latest validation results.
|
regressions, sanitizer commands, and the latest validation results.
|
||||||
|
|||||||
@@ -34,6 +34,18 @@ existing Git tag; subsequent changes are listed as unreleased.
|
|||||||
|
|
||||||
#### Fixed
|
#### Fixed
|
||||||
|
|
||||||
|
- Replace the remaining `VAL_` and `SG_MUL_VAL_` regular expressions with a
|
||||||
|
shared forward-only statement reader. Long descriptions and range lists no
|
||||||
|
longer exhaust the stack. Preserve quoted escapes, exact integer values,
|
||||||
|
deferred references, duplicate checks, and source-located diagnostics without
|
||||||
|
imposing a new statement-length limit. Avoid repeatedly erasing `VAL_` prefixes.
|
||||||
|
- Add and register a dedicated statement robustness suite for 50,000-character
|
||||||
|
fields, 10,000 value pairs/ranges, malformed long inputs, both parser APIs,
|
||||||
|
metadata preservation, value lookup, and active/inactive branch decoding.
|
||||||
|
Release and ASan/UBSan builds with the optional Qt adapter each pass 2,449
|
||||||
|
core checks, seven model checks, and the qmake tree test. One locale case
|
||||||
|
skips; leak checking remains disabled due to ptrace.
|
||||||
|
|
||||||
- Reject all `SIG_VALTYPE_` declarations with a source-located
|
- Reject all `SIG_VALTYPE_` declarations with a source-located
|
||||||
`UnsupportedSignalType` error instead of silently decoding their payload as
|
`UnsupportedSignalType` error instead of silently decoding their payload as
|
||||||
integers. Both parser APIs reject the unsupported operator, including type 0;
|
integers. Both parser APIs reject the unsupported operator, including type 0;
|
||||||
|
|||||||
+119
-47
@@ -7,7 +7,6 @@
|
|||||||
#include <charconv>
|
#include <charconv>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
#include <regex>
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|
||||||
@@ -143,15 +142,99 @@ namespace {
|
|||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string UnescapeDescription(const std::string "ed) {
|
// VAL_ and SG_MUL_VAL_ share a small, forward-only statement reader.
|
||||||
|
class StatementTokens {
|
||||||
|
public:
|
||||||
|
StatementTokens(const std::string &text, const std::string &keyword)
|
||||||
|
: text(text), keyword(keyword) {
|
||||||
|
if (Word() != keyword)
|
||||||
|
Fail();
|
||||||
|
RequireSpace();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SkipSpaces() {
|
||||||
|
const std::size_t begin = position;
|
||||||
|
while (position < text.size() && (text[position] == ' ' || text[position] == '\t'))
|
||||||
|
++position;
|
||||||
|
return position != begin;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RequireSpace() {
|
||||||
|
if (!SkipSpaces())
|
||||||
|
Fail();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Consume(char character) {
|
||||||
|
if (position == text.size() || text[position] != character)
|
||||||
|
return false;
|
||||||
|
++position;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Expect(char character) {
|
||||||
|
SkipSpaces();
|
||||||
|
if (!Consume(character))
|
||||||
|
Fail();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string Word() {
|
||||||
|
const std::size_t begin = position;
|
||||||
|
while (position < text.size() && text[position] != ' ' && text[position] != '\t' &&
|
||||||
|
text[position] != ';' && text[position] != '"')
|
||||||
|
++position;
|
||||||
|
if (position == begin)
|
||||||
|
Fail();
|
||||||
|
return text.substr(begin, position - begin);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::uint64_t Unsigned() {
|
||||||
|
SkipSpaces();
|
||||||
|
const std::size_t begin = position;
|
||||||
|
while (position < text.size() && text[position] >= '0' && text[position] <= '9')
|
||||||
|
++position;
|
||||||
|
std::uint64_t value = 0U;
|
||||||
|
const std::from_chars_result parsed =
|
||||||
|
std::from_chars(text.data() + begin, text.data() + position, value);
|
||||||
|
if (position == begin || parsed.ec != std::errc() || parsed.ptr != text.data() + position)
|
||||||
|
Fail();
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string Description() {
|
||||||
|
if (!Consume('"'))
|
||||||
|
Fail();
|
||||||
std::string description;
|
std::string description;
|
||||||
for (std::size_t i = 0; i < quoted.size(); ++i) {
|
while (position < text.size()) {
|
||||||
if (quoted[i] == '\\')
|
char character = text[position++];
|
||||||
++i;
|
if (character == '"')
|
||||||
description += quoted[i];
|
|
||||||
}
|
|
||||||
return description;
|
return description;
|
||||||
|
if (character == '\\') {
|
||||||
|
if (position == text.size())
|
||||||
|
Fail();
|
||||||
|
character = text[position++];
|
||||||
|
if (character != '"' && character != '\\')
|
||||||
|
Fail();
|
||||||
}
|
}
|
||||||
|
description += character;
|
||||||
|
}
|
||||||
|
Fail();
|
||||||
|
}
|
||||||
|
|
||||||
|
void End() {
|
||||||
|
SkipSpaces();
|
||||||
|
if (position != text.size())
|
||||||
|
Fail();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
[[noreturn]] void Fail() const {
|
||||||
|
throw std::runtime_error("Malformed " + keyword + " statement.");
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::string &text;
|
||||||
|
const std::string keyword;
|
||||||
|
std::size_t position = 0U;
|
||||||
|
};
|
||||||
|
|
||||||
FrameInfo *FindUniqueFrame(DbcDatabase &database, std::uint32_t canId, bool isExtended, const std::string &statement = "VAL_") {
|
FrameInfo *FindUniqueFrame(DbcDatabase &database, std::uint32_t canId, bool isExtended, const std::string &statement = "VAL_") {
|
||||||
FrameInfo *frame = nullptr;
|
FrameInfo *frame = nullptr;
|
||||||
@@ -438,33 +521,28 @@ bool DbcStatementDispatcher::Dispatch(const std::string &line,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DbcValueDescriptionHandler::Handle(const std::string &line, DbcParseContext &context) const {
|
void DbcValueDescriptionHandler::Handle(const std::string &line, DbcParseContext &context) const {
|
||||||
static const std::regex header(R"(^VAL_[ \t]+([^ \t]+)[ \t]+([^ \t;]+)[ \t]+(.*)$)");
|
StatementTokens tokens(line, "VAL_");
|
||||||
static const std::regex pair(R"dbc(^([^ \t]+)[ \t]+"((?:[^"\\]|\\["\\])*)")dbc");
|
const std::uint32_t rawId = ParseCanId(tokens.Word());
|
||||||
std::smatch fields;
|
tokens.RequireSpace();
|
||||||
if (!std::regex_match(line, fields, header))
|
|
||||||
throw std::runtime_error("Malformed or unsupported VAL_ statement.");
|
|
||||||
const std::uint32_t rawId = ParseDecimal(fields[1].str(), std::numeric_limits<std::uint32_t>::max(), "VAL_ CAN ID");
|
|
||||||
if ((rawId & 0x60000000U) != 0U)
|
|
||||||
throw std::runtime_error("VAL_ CAN ID exceeds the 29-bit identifier range.");
|
|
||||||
PendingValueDescriptions pending;
|
PendingValueDescriptions pending;
|
||||||
NormalizeCanId(rawId, pending.canId, pending.isExtended);
|
NormalizeCanId(rawId, pending.canId, pending.isExtended);
|
||||||
pending.signalName = fields[2].str();
|
pending.signalName = tokens.Word();
|
||||||
|
tokens.RequireSpace();
|
||||||
pending.lineNumber = context.lineNumber;
|
pending.lineNumber = context.lineNumber;
|
||||||
std::string rest = fields[3].str();
|
while (!tokens.Consume(';')) {
|
||||||
while (rest != ";") {
|
const std::string number = tokens.Word();
|
||||||
if (!std::regex_search(rest, fields, pair))
|
|
||||||
throw std::runtime_error("Malformed VAL_ value/description pair or missing semicolon.");
|
|
||||||
const std::string number = fields[1].str();
|
|
||||||
const RawSignalValue key = ParseValueKey(number);
|
const RawSignalValue key = ParseValueKey(number);
|
||||||
const std::string description = UnescapeDescription(fields[2].str());
|
tokens.RequireSpace();
|
||||||
|
const std::string description = tokens.Description();
|
||||||
if (!pending.descriptions.emplace(key, description).second)
|
if (!pending.descriptions.emplace(key, description).second)
|
||||||
throw std::runtime_error("Duplicate VAL_ value key: " + number);
|
throw std::runtime_error("Duplicate VAL_ value key: " + number);
|
||||||
const std::size_t consumed = static_cast<std::size_t>(fields.length());
|
const bool separated = tokens.SkipSpaces();
|
||||||
rest.erase(0, consumed);
|
if (tokens.Consume(';'))
|
||||||
if (!rest.empty() && rest[0] != ';' && rest[0] != ' ' && rest[0] != '\t')
|
break;
|
||||||
|
if (!separated)
|
||||||
throw std::runtime_error("Missing whitespace between VAL_ pairs.");
|
throw std::runtime_error("Missing whitespace between VAL_ pairs.");
|
||||||
rest = dbc_detail::TrimText(rest);
|
|
||||||
}
|
}
|
||||||
|
tokens.End();
|
||||||
if (pending.descriptions.empty())
|
if (pending.descriptions.empty())
|
||||||
throw std::runtime_error("VAL_ requires at least one value/description pair.");
|
throw std::runtime_error("VAL_ requires at least one value/description pair.");
|
||||||
context.pendingValues.push_back(std::move(pending));
|
context.pendingValues.push_back(std::move(pending));
|
||||||
@@ -487,35 +565,29 @@ void DbcParseContext::ResolveValueDescriptions(const std::string &filePath) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DbcMultiplexingHandler::Handle(const std::string &line, DbcParseContext &context) const {
|
void DbcMultiplexingHandler::Handle(const std::string &line, DbcParseContext &context) const {
|
||||||
static const std::regex syntax(R"(^SG_MUL_VAL_[ \t]+([0-9]+)[ \t]+([^ \t;]+)[ \t]+([^ \t;]+)[ \t]+(.+);[ \t]*$)");
|
StatementTokens tokens(line, "SG_MUL_VAL_");
|
||||||
static const std::regex rangeSyntax(R"(^[ \t]*([0-9]+)[ \t]*-[ \t]*([0-9]+)[ \t]*$)");
|
|
||||||
std::smatch fields;
|
|
||||||
if (!std::regex_match(line, fields, syntax))
|
|
||||||
throw std::runtime_error("Malformed SG_MUL_VAL_ statement.");
|
|
||||||
PendingMultiplexing pending;
|
PendingMultiplexing pending;
|
||||||
NormalizeCanId(ParseCanId(fields[1].str()), pending.canId, pending.isExtended);
|
NormalizeCanId(ParseCanId(tokens.Word()), pending.canId, pending.isExtended);
|
||||||
pending.signalName = fields[2].str();
|
tokens.RequireSpace();
|
||||||
pending.selectorName = fields[3].str();
|
pending.signalName = tokens.Word();
|
||||||
|
tokens.RequireSpace();
|
||||||
|
pending.selectorName = tokens.Word();
|
||||||
|
tokens.RequireSpace();
|
||||||
pending.lineNumber = context.lineNumber;
|
pending.lineNumber = context.lineNumber;
|
||||||
const std::string list = fields[4].str();
|
|
||||||
std::size_t begin = 0U;
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
const std::size_t comma = list.find(',', begin);
|
|
||||||
const std::string item = list.substr(begin, comma == std::string::npos ? comma : comma - begin);
|
|
||||||
if (!std::regex_match(item, fields, rangeSyntax))
|
|
||||||
throw std::runtime_error("Malformed multiplex range.");
|
|
||||||
MultiplexRange range;
|
MultiplexRange range;
|
||||||
const std::string lower = fields[1].str();
|
range.minimum = tokens.Unsigned();
|
||||||
const std::string upper = fields[2].str();
|
tokens.Expect('-');
|
||||||
const std::from_chars_result low = std::from_chars(lower.data(), lower.data() + lower.size(), range.minimum);
|
range.maximum = tokens.Unsigned();
|
||||||
const std::from_chars_result high = std::from_chars(upper.data(), upper.data() + upper.size(), range.maximum);
|
if (range.minimum > range.maximum)
|
||||||
if (low.ec != std::errc() || high.ec != std::errc() || range.minimum > range.maximum)
|
|
||||||
throw std::runtime_error("Invalid multiplex range.");
|
throw std::runtime_error("Invalid multiplex range.");
|
||||||
pending.ranges.push_back(range);
|
pending.ranges.push_back(range);
|
||||||
if (comma == std::string::npos)
|
tokens.SkipSpaces();
|
||||||
|
if (tokens.Consume(';'))
|
||||||
break;
|
break;
|
||||||
begin = comma + 1U;
|
tokens.Expect(',');
|
||||||
}
|
}
|
||||||
|
tokens.End();
|
||||||
context.pendingMultiplexing.push_back(std::move(pending));
|
context.pendingMultiplexing.push_back(std::move(pending));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ Public Member Functions</h2></td></tr>
|
|||||||
|
|
||||||
<p>Implements <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>.</p>
|
<p>Implements <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>.</p>
|
||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00339">339</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00422">422</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
||||||
|
|
||||||
<p class="reference">References <a class="el" href="dbc__statement__handler_8h_source.html#l00023">PendingComment::canId</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00027">PendingComment::comment</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00024">PendingComment::isExtended</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00025">PendingComment::isSignal</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00028">PendingComment::lineNumber</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00064">DbcParseContext::lineNumber</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00074">DbcParseContext::pendingComments</a>, and <a class="el" href="dbc__statement__handler_8h_source.html#l00026">PendingComment::signalName</a>.</p>
|
<p class="reference">References <a class="el" href="dbc__statement__handler_8h_source.html#l00023">PendingComment::canId</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00027">PendingComment::comment</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00024">PendingComment::isExtended</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00025">PendingComment::isSignal</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00028">PendingComment::lineNumber</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00064">DbcParseContext::lineNumber</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00074">DbcParseContext::pendingComments</a>, and <a class="el" href="dbc__statement__handler_8h_source.html#l00026">PendingComment::signalName</a>.</p>
|
||||||
|
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ Public Member Functions</h2></td></tr>
|
|||||||
|
|
||||||
<p>Implements <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>.</p>
|
<p>Implements <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>.</p>
|
||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00311">311</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00394">394</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
||||||
|
|
||||||
<p class="reference">References <a class="el" href="frame__info_8h_source.html#l00027">FrameInfo::canId</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00062">DbcParseContext::currentFrame</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00061">DbcParseContext::database</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00063">DbcParseContext::enableJ1939</a>, <a class="el" href="dbc__database_8h_source.html#l00023">DbcDatabase::frames</a>, <a class="el" href="frame__info_8h_source.html#l00030">FrameInfo::hasPgn</a>, <a class="el" href="frame__info_8h_source.html#l00028">FrameInfo::isExtended</a>, <a class="el" href="frame__info_8h_source.html#l00029">FrameInfo::pgn</a>, and <a class="el" href="dbc__statement__handler_8h_source.html#l00070">DbcParseContext::signalLines</a>.</p>
|
<p class="reference">References <a class="el" href="frame__info_8h_source.html#l00027">FrameInfo::canId</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00062">DbcParseContext::currentFrame</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00061">DbcParseContext::database</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00063">DbcParseContext::enableJ1939</a>, <a class="el" href="dbc__database_8h_source.html#l00023">DbcDatabase::frames</a>, <a class="el" href="frame__info_8h_source.html#l00030">FrameInfo::hasPgn</a>, <a class="el" href="frame__info_8h_source.html#l00028">FrameInfo::isExtended</a>, <a class="el" href="frame__info_8h_source.html#l00029">FrameInfo::pgn</a>, and <a class="el" href="dbc__statement__handler_8h_source.html#l00070">DbcParseContext::signalLines</a>.</p>
|
||||||
|
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ Public Member Functions</h2></td></tr>
|
|||||||
|
|
||||||
<p>Implements <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>.</p>
|
<p>Implements <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>.</p>
|
||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00426">426</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00509">509</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ Public Member Functions</h2></td></tr>
|
|||||||
|
|
||||||
<p>Implements <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>.</p>
|
<p>Implements <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>.</p>
|
||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00489">489</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00567">567</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
||||||
|
|
||||||
<p class="reference">References <a class="el" href="dbc__statement__handler_8h_source.html#l00064">DbcParseContext::lineNumber</a>.</p>
|
<p class="reference">References <a class="el" href="dbc__statement__handler_8h_source.html#l00064">DbcParseContext::lineNumber</a>.</p>
|
||||||
|
|
||||||
|
|||||||
@@ -219,7 +219,7 @@ Public Member Functions</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__parser_8cpp_source.html#l00105">105</a> of file <a class="el" href="dbc__parser_8cpp_source.html">dbc_parser.cpp</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__parser_8cpp_source.html#l00105">105</a> of file <a class="el" href="dbc__parser_8cpp_source.html">dbc_parser.cpp</a>.</p>
|
||||||
|
|
||||||
<p class="reference">References <a class="el" href="dbc__diagnostic_8h_source.html#l00040">DbcParseResult::database</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00040">DbcDiagnosticError::diagnostic</a>, <a class="el" href="dbc__diagnostic_8h_source.html#l00041">DbcParseResult::diagnostics</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00428">DbcStatementDispatcher::Dispatch()</a>, and <a class="el" href="dbc__parser_8h_source.html#l00021">DbcParserOptions::enableJ1939</a>.</p>
|
<p class="reference">References <a class="el" href="dbc__diagnostic_8h_source.html#l00040">DbcParseResult::database</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00040">DbcDiagnosticError::diagnostic</a>, <a class="el" href="dbc__diagnostic_8h_source.html#l00041">DbcParseResult::diagnostics</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00511">DbcStatementDispatcher::Dispatch()</a>, and <a class="el" href="dbc__parser_8h_source.html#l00021">DbcParserOptions::enableJ1939</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="examples_2main_8cpp_source.html#l00101">main()</a>, and <a class="el" href="dbc__parser_8cpp_source.html#l00092">ParseFile()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="examples_2main_8cpp_source.html#l00101">main()</a>, and <a class="el" href="dbc__parser_8cpp_source.html#l00092">ParseFile()</a>.</p>
|
||||||
|
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ Public Member Functions</h2></td></tr>
|
|||||||
|
|
||||||
<p>Implements <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>.</p>
|
<p>Implements <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>.</p>
|
||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00325">325</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00408">408</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
||||||
|
|
||||||
<p class="reference">References <a class="el" href="dbc__statement__handler_8h_source.html#l00062">DbcParseContext::currentFrame</a>, <a class="el" href="frame__info_8h_source.html#l00031">FrameInfo::dlc</a>, <a class="el" href="signal__info_8h_source.html#l00030">SignalInfo::isLittleEndian</a>, <a class="el" href="signal__info_8h_source.html#l00029">SignalInfo::length</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00064">DbcParseContext::lineNumber</a>, <a class="el" href="frame__info_8h_source.html#l00026">FrameInfo::name</a>, <a class="el" href="signal__info_8h_source.html#l00027">SignalInfo::name</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00070">DbcParseContext::signalLines</a>, and <a class="el" href="signal__info_8h_source.html#l00028">SignalInfo::startBit</a>.</p>
|
<p class="reference">References <a class="el" href="dbc__statement__handler_8h_source.html#l00062">DbcParseContext::currentFrame</a>, <a class="el" href="frame__info_8h_source.html#l00031">FrameInfo::dlc</a>, <a class="el" href="signal__info_8h_source.html#l00030">SignalInfo::isLittleEndian</a>, <a class="el" href="signal__info_8h_source.html#l00029">SignalInfo::length</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00064">DbcParseContext::lineNumber</a>, <a class="el" href="frame__info_8h_source.html#l00026">FrameInfo::name</a>, <a class="el" href="signal__info_8h_source.html#l00027">SignalInfo::name</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00070">DbcParseContext::signalLines</a>, and <a class="el" href="signal__info_8h_source.html#l00028">SignalInfo::startBit</a>.</p>
|
||||||
|
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ Public Member Functions</h2></td></tr>
|
|||||||
|
|
||||||
<p>Register supported statement handlers through <a class="el" href="classTypeFactory.html" title="Registry-based factory for creating objects by runtime identifier.">TypeFactory</a>. </p>
|
<p>Register supported statement handlers through <a class="el" href="classTypeFactory.html" title="Registry-based factory for creating objects by runtime identifier.">TypeFactory</a>. </p>
|
||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00403">403</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00486">486</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -199,7 +199,7 @@ template<class Handler > </div>
|
|||||||
</div><div class="memdoc">
|
</div><div class="memdoc">
|
||||||
<p>Returns false for an unregistered keyword; input must be trimmed. </p>
|
<p>Returns false for an unregistered keyword; input must be trimmed. </p>
|
||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00428">428</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00511">511</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__parser_8cpp_source.html#l00105">DbcParser::ParseFileWithDiagnostics()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__parser_8cpp_source.html#l00105">DbcParser::ParseFileWithDiagnostics()</a>.</p>
|
||||||
|
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ Public Member Functions</h2></td></tr>
|
|||||||
|
|
||||||
<p>Implements <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>.</p>
|
<p>Implements <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>.</p>
|
||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00422">422</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00505">505</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ Public Member Functions</h2></td></tr>
|
|||||||
|
|
||||||
<p>Implements <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>.</p>
|
<p>Implements <a class="el" href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler</a>.</p>
|
||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00440">440</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00523">523</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
||||||
|
|
||||||
<p class="reference">References <a class="el" href="dbc__statement__handler_8h_source.html#l00014">PendingValueDescriptions::canId</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00017">PendingValueDescriptions::descriptions</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00015">PendingValueDescriptions::isExtended</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00018">PendingValueDescriptions::lineNumber</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00064">DbcParseContext::lineNumber</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00065">DbcParseContext::pendingValues</a>, and <a class="el" href="dbc__statement__handler_8h_source.html#l00016">PendingValueDescriptions::signalName</a>.</p>
|
<p class="reference">References <a class="el" href="dbc__statement__handler_8h_source.html#l00014">PendingValueDescriptions::canId</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00017">PendingValueDescriptions::descriptions</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00015">PendingValueDescriptions::isExtended</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00018">PendingValueDescriptions::lineNumber</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00064">DbcParseContext::lineNumber</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00065">DbcParseContext::pendingValues</a>, and <a class="el" href="dbc__statement__handler_8h_source.html#l00016">PendingValueDescriptions::signalName</a>.</p>
|
||||||
|
|
||||||
|
|||||||
@@ -993,7 +993,7 @@ $(document).ready(function(){initNavTree('dbc__coverage__test_8cpp_source.html',
|
|||||||
<div class="line"><a id="l00893" name="l00893"></a><span class="lineno"> 893</span>}</div>
|
<div class="line"><a id="l00893" name="l00893"></a><span class="lineno"> 893</span>}</div>
|
||||||
<div class="line"><a id="l00894" name="l00894"></a><span class="lineno"> 894</span><span class="preprocessor">#include "dbc_coverage_test.moc"</span></div>
|
<div class="line"><a id="l00894" name="l00894"></a><span class="lineno"> 894</span><span class="preprocessor">#include "dbc_coverage_test.moc"</span></div>
|
||||||
<div class="ttc" id="aclassDbcCommentHandler_html"><div class="ttname"><a href="classDbcCommentHandler.html">DbcCommentHandler</a></div><div class="ttdoc">Defer frame and signal comments for target resolution.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00113">dbc_statement_handler.h:113</a></div></div>
|
<div class="ttc" id="aclassDbcCommentHandler_html"><div class="ttname"><a href="classDbcCommentHandler.html">DbcCommentHandler</a></div><div class="ttdoc">Defer frame and signal comments for target resolution.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00113">dbc_statement_handler.h:113</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcCommentHandler_html_aa4fce77b585a441d251d8535ef7a51a6"><div class="ttname"><a href="classDbcCommentHandler.html#aa4fce77b585a441d251d8535ef7a51a6">DbcCommentHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &line, DbcParseContext &context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00339">dbc_statement_handler.cpp:339</a></div></div>
|
<div class="ttc" id="aclassDbcCommentHandler_html_aa4fce77b585a441d251d8535ef7a51a6"><div class="ttname"><a href="classDbcCommentHandler.html#aa4fce77b585a441d251d8535ef7a51a6">DbcCommentHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &line, DbcParseContext &context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00422">dbc_statement_handler.cpp:422</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcDecodeBuilder_html"><div class="ttname"><a href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a></div><div class="ttdoc">Converts parsed DBC data into runtime decode database.</div><div class="ttdef"><b>Definition</b> <a href="dbc__decode__builder_8h_source.html#l00021">dbc_decode_builder.h:21</a></div></div>
|
<div class="ttc" id="aclassDbcDecodeBuilder_html"><div class="ttname"><a href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a></div><div class="ttdoc">Converts parsed DBC data into runtime decode database.</div><div class="ttdef"><b>Definition</b> <a href="dbc__decode__builder_8h_source.html#l00021">dbc_decode_builder.h:21</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcDecodeBuilder_html_a2bc6386dfb5e58976c42e22c19ec471b"><div class="ttname"><a href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">DbcDecodeBuilder::Build</a></div><div class="ttdeci">DecodeDatabase Build(const DbcDatabase &source) const</div><div class="ttdoc">Build runtime decode database.</div><div class="ttdef"><b>Definition</b> <a href="dbc__decode__builder_8cpp_source.html#l00015">dbc_decode_builder.cpp:15</a></div></div>
|
<div class="ttc" id="aclassDbcDecodeBuilder_html_a2bc6386dfb5e58976c42e22c19ec471b"><div class="ttname"><a href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">DbcDecodeBuilder::Build</a></div><div class="ttdeci">DecodeDatabase Build(const DbcDatabase &source) const</div><div class="ttdoc">Build runtime decode database.</div><div class="ttdef"><b>Definition</b> <a href="dbc__decode__builder_8cpp_source.html#l00015">dbc_decode_builder.cpp:15</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcDecoder_html"><div class="ttname"><a href="classDbcDecoder.html">DbcDecoder</a></div><div class="ttdoc">Runtime CAN decoder using prebuilt decode database.</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8h_source.html#l00087">dbc_decoder.h:87</a></div></div>
|
<div class="ttc" id="aclassDbcDecoder_html"><div class="ttname"><a href="classDbcDecoder.html">DbcDecoder</a></div><div class="ttdoc">Runtime CAN decoder using prebuilt decode database.</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8h_source.html#l00087">dbc_decoder.h:87</a></div></div>
|
||||||
@@ -1004,7 +1004,7 @@ $(document).ready(function(){initNavTree('dbc__coverage__test_8cpp_source.html',
|
|||||||
<div class="ttc" id="aclassDbcTreeBuilder_html"><div class="ttname"><a href="classDbcTreeBuilder.html">DbcTreeBuilder</a></div><div class="ttdoc">Builds a simple tree from parsed DBC database.</div><div class="ttdef"><b>Definition</b> <a href="dbc__tree__builder_8h_source.html#l00023">dbc_tree_builder.h:23</a></div></div>
|
<div class="ttc" id="aclassDbcTreeBuilder_html"><div class="ttname"><a href="classDbcTreeBuilder.html">DbcTreeBuilder</a></div><div class="ttdoc">Builds a simple tree from parsed DBC database.</div><div class="ttdef"><b>Definition</b> <a href="dbc__tree__builder_8h_source.html#l00023">dbc_tree_builder.h:23</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcTreeBuilder_html_a7e57d067d831b14b383947fd125edd4b"><div class="ttname"><a href="classDbcTreeBuilder.html#a7e57d067d831b14b383947fd125edd4b">DbcTreeBuilder::Build</a></div><div class="ttdeci">std::unique_ptr< TreeNode > Build(const DbcDatabase &database) const</div><div class="ttdoc">Build tree representation of parsed DBC data.</div><div class="ttdef"><b>Definition</b> <a href="dbc__tree__builder_8cpp_source.html#l00014">dbc_tree_builder.cpp:14</a></div></div>
|
<div class="ttc" id="aclassDbcTreeBuilder_html_a7e57d067d831b14b383947fd125edd4b"><div class="ttname"><a href="classDbcTreeBuilder.html#a7e57d067d831b14b383947fd125edd4b">DbcTreeBuilder::Build</a></div><div class="ttdeci">std::unique_ptr< TreeNode > Build(const DbcDatabase &database) const</div><div class="ttdoc">Build tree representation of parsed DBC data.</div><div class="ttdef"><b>Definition</b> <a href="dbc__tree__builder_8cpp_source.html#l00014">dbc_tree_builder.cpp:14</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcValueDescriptionHandler_html"><div class="ttname"><a href="classDbcValueDescriptionHandler.html">DbcValueDescriptionHandler</a></div><div class="ttdoc">Defer raw value descriptions for target resolution.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00125">dbc_statement_handler.h:125</a></div></div>
|
<div class="ttc" id="aclassDbcValueDescriptionHandler_html"><div class="ttname"><a href="classDbcValueDescriptionHandler.html">DbcValueDescriptionHandler</a></div><div class="ttdoc">Defer raw value descriptions for target resolution.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00125">dbc_statement_handler.h:125</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcValueDescriptionHandler_html_a653e13364f396b54244edc2c0fdd831a"><div class="ttname"><a href="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a">DbcValueDescriptionHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &line, DbcParseContext &context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00440">dbc_statement_handler.cpp:440</a></div></div>
|
<div class="ttc" id="aclassDbcValueDescriptionHandler_html_a653e13364f396b54244edc2c0fdd831a"><div class="ttname"><a href="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a">DbcValueDescriptionHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &line, DbcParseContext &context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00523">dbc_statement_handler.cpp:523</a></div></div>
|
||||||
<div class="ttc" id="aclassDecodeDatabase_html"><div class="ttname"><a href="classDecodeDatabase.html">DecodeDatabase</a></div><div class="ttdoc">Immutable runtime snapshot. Copies share storage; reload replaces a snapshot. Owning lookup handles a...</div><div class="ttdef"><b>Definition</b> <a href="decode__database_8h_source.html#l00102">decode_database.h:102</a></div></div>
|
<div class="ttc" id="aclassDecodeDatabase_html"><div class="ttname"><a href="classDecodeDatabase.html">DecodeDatabase</a></div><div class="ttdoc">Immutable runtime snapshot. Copies share storage; reload replaces a snapshot. Owning lookup handles a...</div><div class="ttdef"><b>Definition</b> <a href="decode__database_8h_source.html#l00102">decode_database.h:102</a></div></div>
|
||||||
<div class="ttc" id="aclassDecodeDatabase_html_a780d6e747a48b10a5eb0ab85448d2970"><div class="ttname"><a href="classDecodeDatabase.html#a780d6e747a48b10a5eb0ab85448d2970">DecodeDatabase::FindFrame</a></div><div class="ttdeci">std::shared_ptr< const DecodeFrame > FindFrame(const FrameKey &key) const</div><div class="ttdef"><b>Definition</b> <a href="decode__database_8cpp_source.html#l00112">decode_database.cpp:112</a></div></div>
|
<div class="ttc" id="aclassDecodeDatabase_html_a780d6e747a48b10a5eb0ab85448d2970"><div class="ttname"><a href="classDecodeDatabase.html#a780d6e747a48b10a5eb0ab85448d2970">DecodeDatabase::FindFrame</a></div><div class="ttdeci">std::shared_ptr< const DecodeFrame > FindFrame(const FrameKey &key) const</div><div class="ttdef"><b>Definition</b> <a href="decode__database_8cpp_source.html#l00112">decode_database.cpp:112</a></div></div>
|
||||||
<div class="ttc" id="aclassDecodeDatabase_html_aa034c1510984a85f60ad6c0bd744d6e8"><div class="ttname"><a href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">DecodeDatabase::GetFrames</a></div><div class="ttdeci">const std::vector< DecodeFrame > & GetFrames() const</div><div class="ttdef"><b>Definition</b> <a href="decode__database_8cpp_source.html#l00107">decode_database.cpp:107</a></div></div>
|
<div class="ttc" id="aclassDecodeDatabase_html_aa034c1510984a85f60ad6c0bd744d6e8"><div class="ttname"><a href="classDecodeDatabase.html#aa034c1510984a85f60ad6c0bd744d6e8">DecodeDatabase::GetFrames</a></div><div class="ttdeci">const std::vector< DecodeFrame > & GetFrames() const</div><div class="ttdef"><b>Definition</b> <a href="decode__database_8cpp_source.html#l00107">decode_database.cpp:107</a></div></div>
|
||||||
|
|||||||
@@ -284,7 +284,7 @@ $(document).ready(function(){initNavTree('dbc__parser_8cpp_source.html',''); ini
|
|||||||
<div class="ttc" id="aclassDbcParser_html_a0e915ce79c2e3d4c95a5aaf2bf0409bc"><div class="ttname"><a href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">DbcParser::ParseFileWithDiagnostics</a></div><div class="ttdeci">DbcParseResult ParseFileWithDiagnostics(const std::string &filePath) const</div><div class="ttdoc">Parse with warnings and a structured first error instead of throwing.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00105">dbc_parser.cpp:105</a></div></div>
|
<div class="ttc" id="aclassDbcParser_html_a0e915ce79c2e3d4c95a5aaf2bf0409bc"><div class="ttname"><a href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">DbcParser::ParseFileWithDiagnostics</a></div><div class="ttdeci">DbcParseResult ParseFileWithDiagnostics(const std::string &filePath) const</div><div class="ttdoc">Parse with warnings and a structured first error instead of throwing.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00105">dbc_parser.cpp:105</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcParser_html_aef72826942c9095d653fafa435855e56"><div class="ttname"><a href="classDbcParser.html#aef72826942c9095d653fafa435855e56">DbcParser::ParseFile</a></div><div class="ttdeci">DbcDatabase ParseFile(const std::string &filePath) const</div><div class="ttdoc">Parse DBC file.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00092">dbc_parser.cpp:92</a></div></div>
|
<div class="ttc" id="aclassDbcParser_html_aef72826942c9095d653fafa435855e56"><div class="ttname"><a href="classDbcParser.html#aef72826942c9095d653fafa435855e56">DbcParser::ParseFile</a></div><div class="ttdeci">DbcDatabase ParseFile(const std::string &filePath) const</div><div class="ttdoc">Parse DBC file.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00092">dbc_parser.cpp:92</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcStatementDispatcher_html"><div class="ttname"><a href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00149">dbc_statement_handler.h:149</a></div></div>
|
<div class="ttc" id="aclassDbcStatementDispatcher_html"><div class="ttname"><a href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00149">dbc_statement_handler.h:149</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcStatementDispatcher_html_a495c2d5c7ebb8103b1987cdd87c142ed"><div class="ttname"><a href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed">DbcStatementDispatcher::Dispatch</a></div><div class="ttdeci">bool Dispatch(const std::string &line, DbcParseContext &context) const</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00428">dbc_statement_handler.cpp:428</a></div></div>
|
<div class="ttc" id="aclassDbcStatementDispatcher_html_a495c2d5c7ebb8103b1987cdd87c142ed"><div class="ttname"><a href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed">DbcStatementDispatcher::Dispatch</a></div><div class="ttdeci">bool Dispatch(const std::string &line, DbcParseContext &context) const</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00511">dbc_statement_handler.cpp:511</a></div></div>
|
||||||
<div class="ttc" id="adbc__parser_8h_html"><div class="ttname"><a href="dbc__parser_8h.html">dbc_parser.h</a></div><div class="ttdoc">DBC file parser and interpretation options.</div></div>
|
<div class="ttc" id="adbc__parser_8h_html"><div class="ttname"><a href="dbc__parser_8h.html">dbc_parser.h</a></div><div class="ttdoc">DBC file parser and interpretation options.</div></div>
|
||||||
<div class="ttc" id="astructDbcDatabase_html"><div class="ttname"><a href="structDbcDatabase.html">DbcDatabase</a></div><div class="ttdoc">Parsed DBC content stored in a simple internal form.</div><div class="ttdef"><b>Definition</b> <a href="dbc__database_8h_source.html#l00022">dbc_database.h:22</a></div></div>
|
<div class="ttc" id="astructDbcDatabase_html"><div class="ttname"><a href="structDbcDatabase.html">DbcDatabase</a></div><div class="ttdoc">Parsed DBC content stored in a simple internal form.</div><div class="ttdef"><b>Definition</b> <a href="dbc__database_8h_source.html#l00022">dbc_database.h:22</a></div></div>
|
||||||
<div class="ttc" id="astructDbcDiagnostic_html"><div class="ttname"><a href="structDbcDiagnostic.html">DbcDiagnostic</a></div><div class="ttdoc">Diagnostic message and physical source location.</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00030">dbc_diagnostic.h:30</a></div></div>
|
<div class="ttc" id="astructDbcDiagnostic_html"><div class="ttname"><a href="structDbcDiagnostic.html">DbcDiagnostic</a></div><div class="ttdoc">Diagnostic message and physical source location.</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00030">dbc_diagnostic.h:30</a></div></div>
|
||||||
|
|||||||
@@ -1780,7 +1780,7 @@ $(document).ready(function(){initNavTree('dbc__parser__test_8cpp_source.html',''
|
|||||||
<div class="ttc" id="aclassDbcParser_html_aef72826942c9095d653fafa435855e56"><div class="ttname"><a href="classDbcParser.html#aef72826942c9095d653fafa435855e56">DbcParser::ParseFile</a></div><div class="ttdeci">DbcDatabase ParseFile(const std::string &filePath) const</div><div class="ttdoc">Parse DBC file.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00092">dbc_parser.cpp:92</a></div></div>
|
<div class="ttc" id="aclassDbcParser_html_aef72826942c9095d653fafa435855e56"><div class="ttname"><a href="classDbcParser.html#aef72826942c9095d653fafa435855e56">DbcParser::ParseFile</a></div><div class="ttdeci">DbcDatabase ParseFile(const std::string &filePath) const</div><div class="ttdoc">Parse DBC file.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00092">dbc_parser.cpp:92</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcStatementDispatcher_html"><div class="ttname"><a href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00149">dbc_statement_handler.h:149</a></div></div>
|
<div class="ttc" id="aclassDbcStatementDispatcher_html"><div class="ttname"><a href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00149">dbc_statement_handler.h:149</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcStatementDispatcher_html_a2c6e9a614ed747275d43bcccc50d0b2d"><div class="ttname"><a href="classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d">DbcStatementDispatcher::RegisterType</a></div><div class="ttdeci">void RegisterType(const std::string &keyword)</div><div class="ttdoc">Register or replace a handler and create its reusable instance.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00156">dbc_statement_handler.h:156</a></div></div>
|
<div class="ttc" id="aclassDbcStatementDispatcher_html_a2c6e9a614ed747275d43bcccc50d0b2d"><div class="ttname"><a href="classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d">DbcStatementDispatcher::RegisterType</a></div><div class="ttdeci">void RegisterType(const std::string &keyword)</div><div class="ttdoc">Register or replace a handler and create its reusable instance.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00156">dbc_statement_handler.h:156</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcStatementDispatcher_html_a495c2d5c7ebb8103b1987cdd87c142ed"><div class="ttname"><a href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed">DbcStatementDispatcher::Dispatch</a></div><div class="ttdeci">bool Dispatch(const std::string &line, DbcParseContext &context) const</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00428">dbc_statement_handler.cpp:428</a></div></div>
|
<div class="ttc" id="aclassDbcStatementDispatcher_html_a495c2d5c7ebb8103b1987cdd87c142ed"><div class="ttname"><a href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed">DbcStatementDispatcher::Dispatch</a></div><div class="ttdeci">bool Dispatch(const std::string &line, DbcParseContext &context) const</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00511">dbc_statement_handler.cpp:511</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcStatementHandler_html"><div class="ttname"><a href="classDbcStatementHandler.html">DbcStatementHandler</a></div><div class="ttdoc">Interface for processing a registered DBC statement.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00087">dbc_statement_handler.h:87</a></div></div>
|
<div class="ttc" id="aclassDbcStatementHandler_html"><div class="ttname"><a href="classDbcStatementHandler.html">DbcStatementHandler</a></div><div class="ttdoc">Interface for processing a registered DBC statement.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00087">dbc_statement_handler.h:87</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcStatementHandler_html_a3de86e1e27e9bcb0fe6f1460a8ba5739"><div class="ttname"><a href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler::Handle</a></div><div class="ttdeci">virtual void Handle(const std::string &line, DbcParseContext &context) const =0</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div></div>
|
<div class="ttc" id="aclassDbcStatementHandler_html_a3de86e1e27e9bcb0fe6f1460a8ba5739"><div class="ttname"><a href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler::Handle</a></div><div class="ttdeci">virtual void Handle(const std::string &line, DbcParseContext &context) const =0</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div></div>
|
||||||
<div class="ttc" id="aclassDbcTreeBuilder_html"><div class="ttname"><a href="classDbcTreeBuilder.html">DbcTreeBuilder</a></div><div class="ttdoc">Builds a simple tree from parsed DBC database.</div><div class="ttdef"><b>Definition</b> <a href="dbc__tree__builder_8h_source.html#l00023">dbc_tree_builder.h:23</a></div></div>
|
<div class="ttc" id="aclassDbcTreeBuilder_html"><div class="ttname"><a href="classDbcTreeBuilder.html">DbcTreeBuilder</a></div><div class="ttdoc">Builds a simple tree from parsed DBC database.</div><div class="ttdef"><b>Definition</b> <a href="dbc__tree__builder_8h_source.html#l00023">dbc_tree_builder.h:23</a></div></div>
|
||||||
|
|||||||
File diff suppressed because it is too large.
Load diff
@@ -281,28 +281,28 @@ $(document).ready(function(){initNavTree('dbc__statement__handler_8h_source.html
|
|||||||
<div class="ttc" id="aclassDbcAttributeHandler_html"><div class="ttname"><a href="classDbcAttributeHandler.html">DbcAttributeHandler</a></div><div class="ttdoc">Defer typed attribute statements for resolution.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00119">dbc_statement_handler.h:119</a></div></div>
|
<div class="ttc" id="aclassDbcAttributeHandler_html"><div class="ttname"><a href="classDbcAttributeHandler.html">DbcAttributeHandler</a></div><div class="ttdoc">Defer typed attribute statements for resolution.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00119">dbc_statement_handler.h:119</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcAttributeHandler_html_a397f23259b7ff79abb4b5141489caa83"><div class="ttname"><a href="classDbcAttributeHandler.html#a397f23259b7ff79abb4b5141489caa83">DbcAttributeHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &line, DbcParseContext &context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__attributes_8cpp_source.html#l00255">dbc_attributes.cpp:255</a></div></div>
|
<div class="ttc" id="aclassDbcAttributeHandler_html_a397f23259b7ff79abb4b5141489caa83"><div class="ttname"><a href="classDbcAttributeHandler.html#a397f23259b7ff79abb4b5141489caa83">DbcAttributeHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &line, DbcParseContext &context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__attributes_8cpp_source.html#l00255">dbc_attributes.cpp:255</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcCommentHandler_html"><div class="ttname"><a href="classDbcCommentHandler.html">DbcCommentHandler</a></div><div class="ttdoc">Defer frame and signal comments for target resolution.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00113">dbc_statement_handler.h:113</a></div></div>
|
<div class="ttc" id="aclassDbcCommentHandler_html"><div class="ttname"><a href="classDbcCommentHandler.html">DbcCommentHandler</a></div><div class="ttdoc">Defer frame and signal comments for target resolution.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00113">dbc_statement_handler.h:113</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcCommentHandler_html_aa4fce77b585a441d251d8535ef7a51a6"><div class="ttname"><a href="classDbcCommentHandler.html#aa4fce77b585a441d251d8535ef7a51a6">DbcCommentHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &line, DbcParseContext &context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00339">dbc_statement_handler.cpp:339</a></div></div>
|
<div class="ttc" id="aclassDbcCommentHandler_html_aa4fce77b585a441d251d8535ef7a51a6"><div class="ttname"><a href="classDbcCommentHandler.html#aa4fce77b585a441d251d8535ef7a51a6">DbcCommentHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &line, DbcParseContext &context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00422">dbc_statement_handler.cpp:422</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcDiagnosticError_html"><div class="ttname"><a href="classDbcDiagnosticError.html">DbcDiagnosticError</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00032">dbc_statement_handler.h:32</a></div></div>
|
<div class="ttc" id="aclassDbcDiagnosticError_html"><div class="ttname"><a href="classDbcDiagnosticError.html">DbcDiagnosticError</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00032">dbc_statement_handler.h:32</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcDiagnosticError_html_aa9997368f79a9a0723481aaeffc44618"><div class="ttname"><a href="classDbcDiagnosticError.html#aa9997368f79a9a0723481aaeffc44618">DbcDiagnosticError::DbcDiagnosticError</a></div><div class="ttdeci">DbcDiagnosticError(DbcDiagnosticCode code, const std::string &filePath, std::size_t lineNumber, const std::string &message)</div><div class="ttdoc">Create an exception with a structured source diagnostic.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00035">dbc_statement_handler.h:35</a></div></div>
|
<div class="ttc" id="aclassDbcDiagnosticError_html_aa9997368f79a9a0723481aaeffc44618"><div class="ttname"><a href="classDbcDiagnosticError.html#aa9997368f79a9a0723481aaeffc44618">DbcDiagnosticError::DbcDiagnosticError</a></div><div class="ttdeci">DbcDiagnosticError(DbcDiagnosticCode code, const std::string &filePath, std::size_t lineNumber, const std::string &message)</div><div class="ttdoc">Create an exception with a structured source diagnostic.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00035">dbc_statement_handler.h:35</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcDiagnosticError_html_ab3965082f01d66b6d5c20525af44235d"><div class="ttname"><a href="classDbcDiagnosticError.html#ab3965082f01d66b6d5c20525af44235d">DbcDiagnosticError::diagnostic</a></div><div class="ttdeci">DbcDiagnostic diagnostic</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00040">dbc_statement_handler.h:40</a></div></div>
|
<div class="ttc" id="aclassDbcDiagnosticError_html_ab3965082f01d66b6d5c20525af44235d"><div class="ttname"><a href="classDbcDiagnosticError.html#ab3965082f01d66b6d5c20525af44235d">DbcDiagnosticError::diagnostic</a></div><div class="ttdeci">DbcDiagnostic diagnostic</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00040">dbc_statement_handler.h:40</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcFrameHandler_html"><div class="ttname"><a href="classDbcFrameHandler.html">DbcFrameHandler</a></div><div class="ttdoc">Parse and append frame definitions.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00095">dbc_statement_handler.h:95</a></div></div>
|
<div class="ttc" id="aclassDbcFrameHandler_html"><div class="ttname"><a href="classDbcFrameHandler.html">DbcFrameHandler</a></div><div class="ttdoc">Parse and append frame definitions.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00095">dbc_statement_handler.h:95</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcFrameHandler_html_a0d3f43bbcc5e191460bc31827e74ce89"><div class="ttname"><a href="classDbcFrameHandler.html#a0d3f43bbcc5e191460bc31827e74ce89">DbcFrameHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &line, DbcParseContext &context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00311">dbc_statement_handler.cpp:311</a></div></div>
|
<div class="ttc" id="aclassDbcFrameHandler_html_a0d3f43bbcc5e191460bc31827e74ce89"><div class="ttname"><a href="classDbcFrameHandler.html#a0d3f43bbcc5e191460bc31827e74ce89">DbcFrameHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &line, DbcParseContext &context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00394">dbc_statement_handler.cpp:394</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcHeaderHandler_html"><div class="ttname"><a href="classDbcHeaderHandler.html">DbcHeaderHandler</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00143">dbc_statement_handler.h:143</a></div></div>
|
<div class="ttc" id="aclassDbcHeaderHandler_html"><div class="ttname"><a href="classDbcHeaderHandler.html">DbcHeaderHandler</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00143">dbc_statement_handler.h:143</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcHeaderHandler_html_a1e43a9dcf157f4d4418032d9e9711693"><div class="ttname"><a href="classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693">DbcHeaderHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &line, DbcParseContext &context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00426">dbc_statement_handler.cpp:426</a></div></div>
|
<div class="ttc" id="aclassDbcHeaderHandler_html_a1e43a9dcf157f4d4418032d9e9711693"><div class="ttname"><a href="classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693">DbcHeaderHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &line, DbcParseContext &context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00509">dbc_statement_handler.cpp:509</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcMultiplexingHandler_html"><div class="ttname"><a href="classDbcMultiplexingHandler.html">DbcMultiplexingHandler</a></div><div class="ttdoc">Parse extended multiplexing conditions for deferred resolution.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00131">dbc_statement_handler.h:131</a></div></div>
|
<div class="ttc" id="aclassDbcMultiplexingHandler_html"><div class="ttname"><a href="classDbcMultiplexingHandler.html">DbcMultiplexingHandler</a></div><div class="ttdoc">Parse extended multiplexing conditions for deferred resolution.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00131">dbc_statement_handler.h:131</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcMultiplexingHandler_html_a16f9e9f898640200477d2dcc8bab442e"><div class="ttname"><a href="classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e">DbcMultiplexingHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &line, DbcParseContext &context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00489">dbc_statement_handler.cpp:489</a></div></div>
|
<div class="ttc" id="aclassDbcMultiplexingHandler_html_a16f9e9f898640200477d2dcc8bab442e"><div class="ttname"><a href="classDbcMultiplexingHandler.html#a16f9e9f898640200477d2dcc8bab442e">DbcMultiplexingHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &line, DbcParseContext &context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00567">dbc_statement_handler.cpp:567</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcSignalHandler_html"><div class="ttname"><a href="classDbcSignalHandler.html">DbcSignalHandler</a></div><div class="ttdoc">Parse and append signals to the current frame.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00104">dbc_statement_handler.h:104</a></div></div>
|
<div class="ttc" id="aclassDbcSignalHandler_html"><div class="ttname"><a href="classDbcSignalHandler.html">DbcSignalHandler</a></div><div class="ttdoc">Parse and append signals to the current frame.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00104">dbc_statement_handler.h:104</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcSignalHandler_html_ad7d891ec1414fb645f85ccd410f2737b"><div class="ttname"><a href="classDbcSignalHandler.html#ad7d891ec1414fb645f85ccd410f2737b">DbcSignalHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &line, DbcParseContext &context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00325">dbc_statement_handler.cpp:325</a></div></div>
|
<div class="ttc" id="aclassDbcSignalHandler_html_ad7d891ec1414fb645f85ccd410f2737b"><div class="ttname"><a href="classDbcSignalHandler.html#ad7d891ec1414fb645f85ccd410f2737b">DbcSignalHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &line, DbcParseContext &context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00408">dbc_statement_handler.cpp:408</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcStatementDispatcher_html"><div class="ttname"><a href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00149">dbc_statement_handler.h:149</a></div></div>
|
<div class="ttc" id="aclassDbcStatementDispatcher_html"><div class="ttname"><a href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00149">dbc_statement_handler.h:149</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcStatementDispatcher_html_a2c6e9a614ed747275d43bcccc50d0b2d"><div class="ttname"><a href="classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d">DbcStatementDispatcher::RegisterType</a></div><div class="ttdeci">void RegisterType(const std::string &keyword)</div><div class="ttdoc">Register or replace a handler and create its reusable instance.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00156">dbc_statement_handler.h:156</a></div></div>
|
<div class="ttc" id="aclassDbcStatementDispatcher_html_a2c6e9a614ed747275d43bcccc50d0b2d"><div class="ttname"><a href="classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d">DbcStatementDispatcher::RegisterType</a></div><div class="ttdeci">void RegisterType(const std::string &keyword)</div><div class="ttdoc">Register or replace a handler and create its reusable instance.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00156">dbc_statement_handler.h:156</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcStatementDispatcher_html_a2f064359b59d8644b8a8196653d47482"><div class="ttname"><a href="classDbcStatementDispatcher.html#a2f064359b59d8644b8a8196653d47482">DbcStatementDispatcher::DbcStatementDispatcher</a></div><div class="ttdeci">DbcStatementDispatcher()</div><div class="ttdoc">Register supported statement handlers through TypeFactory.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00403">dbc_statement_handler.cpp:403</a></div></div>
|
<div class="ttc" id="aclassDbcStatementDispatcher_html_a2f064359b59d8644b8a8196653d47482"><div class="ttname"><a href="classDbcStatementDispatcher.html#a2f064359b59d8644b8a8196653d47482">DbcStatementDispatcher::DbcStatementDispatcher</a></div><div class="ttdeci">DbcStatementDispatcher()</div><div class="ttdoc">Register supported statement handlers through TypeFactory.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00486">dbc_statement_handler.cpp:486</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcStatementDispatcher_html_a495c2d5c7ebb8103b1987cdd87c142ed"><div class="ttname"><a href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed">DbcStatementDispatcher::Dispatch</a></div><div class="ttdeci">bool Dispatch(const std::string &line, DbcParseContext &context) const</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00428">dbc_statement_handler.cpp:428</a></div></div>
|
<div class="ttc" id="aclassDbcStatementDispatcher_html_a495c2d5c7ebb8103b1987cdd87c142ed"><div class="ttname"><a href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed">DbcStatementDispatcher::Dispatch</a></div><div class="ttdeci">bool Dispatch(const std::string &line, DbcParseContext &context) const</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00511">dbc_statement_handler.cpp:511</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcStatementHandler_html"><div class="ttname"><a href="classDbcStatementHandler.html">DbcStatementHandler</a></div><div class="ttdoc">Interface for processing a registered DBC statement.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00087">dbc_statement_handler.h:87</a></div></div>
|
<div class="ttc" id="aclassDbcStatementHandler_html"><div class="ttname"><a href="classDbcStatementHandler.html">DbcStatementHandler</a></div><div class="ttdoc">Interface for processing a registered DBC statement.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00087">dbc_statement_handler.h:87</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcStatementHandler_html_a3de86e1e27e9bcb0fe6f1460a8ba5739"><div class="ttname"><a href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler::Handle</a></div><div class="ttdeci">virtual void Handle(const std::string &line, DbcParseContext &context) const =0</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div></div>
|
<div class="ttc" id="aclassDbcStatementHandler_html_a3de86e1e27e9bcb0fe6f1460a8ba5739"><div class="ttname"><a href="classDbcStatementHandler.html#a3de86e1e27e9bcb0fe6f1460a8ba5739">DbcStatementHandler::Handle</a></div><div class="ttdeci">virtual void Handle(const std::string &line, DbcParseContext &context) const =0</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div></div>
|
||||||
<div class="ttc" id="aclassDbcUnsupportedSignalTypeHandler_html"><div class="ttname"><a href="classDbcUnsupportedSignalTypeHandler.html">DbcUnsupportedSignalTypeHandler</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00137">dbc_statement_handler.h:137</a></div></div>
|
<div class="ttc" id="aclassDbcUnsupportedSignalTypeHandler_html"><div class="ttname"><a href="classDbcUnsupportedSignalTypeHandler.html">DbcUnsupportedSignalTypeHandler</a></div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00137">dbc_statement_handler.h:137</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcUnsupportedSignalTypeHandler_html_ae4132fcdbb134d51143133c1fb83a9df"><div class="ttname"><a href="classDbcUnsupportedSignalTypeHandler.html#ae4132fcdbb134d51143133c1fb83a9df">DbcUnsupportedSignalTypeHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &line, DbcParseContext &context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00422">dbc_statement_handler.cpp:422</a></div></div>
|
<div class="ttc" id="aclassDbcUnsupportedSignalTypeHandler_html_ae4132fcdbb134d51143133c1fb83a9df"><div class="ttname"><a href="classDbcUnsupportedSignalTypeHandler.html#ae4132fcdbb134d51143133c1fb83a9df">DbcUnsupportedSignalTypeHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &line, DbcParseContext &context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00505">dbc_statement_handler.cpp:505</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcValueDescriptionHandler_html"><div class="ttname"><a href="classDbcValueDescriptionHandler.html">DbcValueDescriptionHandler</a></div><div class="ttdoc">Defer raw value descriptions for target resolution.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00125">dbc_statement_handler.h:125</a></div></div>
|
<div class="ttc" id="aclassDbcValueDescriptionHandler_html"><div class="ttname"><a href="classDbcValueDescriptionHandler.html">DbcValueDescriptionHandler</a></div><div class="ttdoc">Defer raw value descriptions for target resolution.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00125">dbc_statement_handler.h:125</a></div></div>
|
||||||
<div class="ttc" id="aclassDbcValueDescriptionHandler_html_a653e13364f396b54244edc2c0fdd831a"><div class="ttname"><a href="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a">DbcValueDescriptionHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &line, DbcParseContext &context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00440">dbc_statement_handler.cpp:440</a></div></div>
|
<div class="ttc" id="aclassDbcValueDescriptionHandler_html_a653e13364f396b54244edc2c0fdd831a"><div class="ttname"><a href="classDbcValueDescriptionHandler.html#a653e13364f396b54244edc2c0fdd831a">DbcValueDescriptionHandler::Handle</a></div><div class="ttdeci">void Handle(const std::string &line, DbcParseContext &context) const override</div><div class="ttdoc">Process a trimmed statement using state belonging to this parse.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00523">dbc_statement_handler.cpp:523</a></div></div>
|
||||||
<div class="ttc" id="aclassTypeFactory_html"><div class="ttname"><a href="classTypeFactory.html">TypeFactory</a></div><div class="ttdoc">Registry-based factory for creating objects by runtime identifier.</div><div class="ttdef"><b>Definition</b> <a href="typefactory_8h_source.html#l00059">typefactory.h:59</a></div></div>
|
<div class="ttc" id="aclassTypeFactory_html"><div class="ttname"><a href="classTypeFactory.html">TypeFactory</a></div><div class="ttdoc">Registry-based factory for creating objects by runtime identifier.</div><div class="ttdef"><b>Definition</b> <a href="typefactory_8h_source.html#l00059">typefactory.h:59</a></div></div>
|
||||||
<div class="ttc" id="aclassTypeFactory_html_a3f43b03d6e3a0fd503fdec01ecf62e9f"><div class="ttname"><a href="classTypeFactory.html#a3f43b03d6e3a0fd503fdec01ecf62e9f">TypeFactory::create</a></div><div class="ttdeci">BasePtr create(const ClassId &id, Args... args) const</div><div class="ttdoc">Creates an instance for the given id using provided arguments.</div><div class="ttdef"><b>Definition</b> <a href="typefactory_8h_source.html#l00099">typefactory.h:99</a></div></div>
|
<div class="ttc" id="aclassTypeFactory_html_a3f43b03d6e3a0fd503fdec01ecf62e9f"><div class="ttname"><a href="classTypeFactory.html#a3f43b03d6e3a0fd503fdec01ecf62e9f">TypeFactory::create</a></div><div class="ttdeci">BasePtr create(const ClassId &id, Args... args) const</div><div class="ttdoc">Creates an instance for the given id using provided arguments.</div><div class="ttdef"><b>Definition</b> <a href="typefactory_8h_source.html#l00099">typefactory.h:99</a></div></div>
|
||||||
<div class="ttc" id="aclassTypeFactory_html_ad6d85795285ee21193ac03e1b24762d3"><div class="ttname"><a href="classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3">TypeFactory::registerType</a></div><div class="ttdeci">void registerType(const ClassId &id)</div><div class="ttdoc">Registers a Derived type under the given id.</div><div class="ttdef"><b>Definition</b> <a href="typefactory_8h_source.html#l00078">typefactory.h:78</a></div></div>
|
<div class="ttc" id="aclassTypeFactory_html_ad6d85795285ee21193ac03e1b24762d3"><div class="ttname"><a href="classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3">TypeFactory::registerType</a></div><div class="ttdeci">void registerType(const ClassId &id)</div><div class="ttdoc">Registers a Derived type under the given id.</div><div class="ttdef"><b>Definition</b> <a href="typefactory_8h_source.html#l00078">typefactory.h:78</a></div></div>
|
||||||
@@ -314,11 +314,11 @@ $(document).ready(function(){initNavTree('dbc__statement__handler_8h_source.html
|
|||||||
<div class="ttc" id="astructDbcParseContext_html_a57f5a7f613ecd0dadbafa7af736b7e54"><div class="ttname"><a href="structDbcParseContext.html#a57f5a7f613ecd0dadbafa7af736b7e54">DbcParseContext::lineNumber</a></div><div class="ttdeci">std::size_t lineNumber</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00064">dbc_statement_handler.h:64</a></div></div>
|
<div class="ttc" id="astructDbcParseContext_html_a57f5a7f613ecd0dadbafa7af736b7e54"><div class="ttname"><a href="structDbcParseContext.html#a57f5a7f613ecd0dadbafa7af736b7e54">DbcParseContext::lineNumber</a></div><div class="ttdeci">std::size_t lineNumber</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00064">dbc_statement_handler.h:64</a></div></div>
|
||||||
<div class="ttc" id="astructDbcParseContext_html_a79bad0b8302e2156670461bab529259c"><div class="ttname"><a href="structDbcParseContext.html#a79bad0b8302e2156670461bab529259c">DbcParseContext::database</a></div><div class="ttdeci">DbcDatabase & database</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00061">dbc_statement_handler.h:61</a></div></div>
|
<div class="ttc" id="astructDbcParseContext_html_a79bad0b8302e2156670461bab529259c"><div class="ttname"><a href="structDbcParseContext.html#a79bad0b8302e2156670461bab529259c">DbcParseContext::database</a></div><div class="ttdeci">DbcDatabase & database</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00061">dbc_statement_handler.h:61</a></div></div>
|
||||||
<div class="ttc" id="astructDbcParseContext_html_a854abba7bbf4adfc948554c254156e60"><div class="ttname"><a href="structDbcParseContext.html#a854abba7bbf4adfc948554c254156e60">DbcParseContext::pendingComments</a></div><div class="ttdeci">std::vector< PendingComment > pendingComments</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00074">dbc_statement_handler.h:74</a></div></div>
|
<div class="ttc" id="astructDbcParseContext_html_a854abba7bbf4adfc948554c254156e60"><div class="ttname"><a href="structDbcParseContext.html#a854abba7bbf4adfc948554c254156e60">DbcParseContext::pendingComments</a></div><div class="ttdeci">std::vector< PendingComment > pendingComments</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00074">dbc_statement_handler.h:74</a></div></div>
|
||||||
<div class="ttc" id="astructDbcParseContext_html_a908056de0a97316a4ebecb3f99cc400b"><div class="ttname"><a href="structDbcParseContext.html#a908056de0a97316a4ebecb3f99cc400b">DbcParseContext::ValidateMultiplexing</a></div><div class="ttdeci">void ValidateMultiplexing(const std::string &filePath) const</div><div class="ttdoc">Validate selectors, branch ranges, and signal overlap.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00572">dbc_statement_handler.cpp:572</a></div></div>
|
<div class="ttc" id="astructDbcParseContext_html_a908056de0a97316a4ebecb3f99cc400b"><div class="ttname"><a href="structDbcParseContext.html#a908056de0a97316a4ebecb3f99cc400b">DbcParseContext::ValidateMultiplexing</a></div><div class="ttdeci">void ValidateMultiplexing(const std::string &filePath) const</div><div class="ttdoc">Validate selectors, branch ranges, and signal overlap.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00644">dbc_statement_handler.cpp:644</a></div></div>
|
||||||
<div class="ttc" id="astructDbcParseContext_html_a93f8ece0f3d16bd79f631ae07afa7b54"><div class="ttname"><a href="structDbcParseContext.html#a93f8ece0f3d16bd79f631ae07afa7b54">DbcParseContext::enableJ1939</a></div><div class="ttdeci">bool enableJ1939</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00063">dbc_statement_handler.h:63</a></div></div>
|
<div class="ttc" id="astructDbcParseContext_html_a93f8ece0f3d16bd79f631ae07afa7b54"><div class="ttname"><a href="structDbcParseContext.html#a93f8ece0f3d16bd79f631ae07afa7b54">DbcParseContext::enableJ1939</a></div><div class="ttdeci">bool enableJ1939</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00063">dbc_statement_handler.h:63</a></div></div>
|
||||||
<div class="ttc" id="astructDbcParseContext_html_ab5552dad944fde7fa6add6464ddb5369"><div class="ttname"><a href="structDbcParseContext.html#ab5552dad944fde7fa6add6464ddb5369">DbcParseContext::ResolveValueDescriptions</a></div><div class="ttdeci">void ResolveValueDescriptions(const std::string &filePath)</div><div class="ttdoc">Resolve deferred raw descriptions against unique targets.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00473">dbc_statement_handler.cpp:473</a></div></div>
|
<div class="ttc" id="astructDbcParseContext_html_ab5552dad944fde7fa6add6464ddb5369"><div class="ttname"><a href="structDbcParseContext.html#ab5552dad944fde7fa6add6464ddb5369">DbcParseContext::ResolveValueDescriptions</a></div><div class="ttdeci">void ResolveValueDescriptions(const std::string &filePath)</div><div class="ttdoc">Resolve deferred raw descriptions against unique targets.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00551">dbc_statement_handler.cpp:551</a></div></div>
|
||||||
<div class="ttc" id="astructDbcParseContext_html_ac22cba614ada3a28c7dcc1ea338b0e01"><div class="ttname"><a href="structDbcParseContext.html#ac22cba614ada3a28c7dcc1ea338b0e01">DbcParseContext::pendingValues</a></div><div class="ttdeci">std::vector< PendingValueDescriptions > pendingValues</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00065">dbc_statement_handler.h:65</a></div></div>
|
<div class="ttc" id="astructDbcParseContext_html_ac22cba614ada3a28c7dcc1ea338b0e01"><div class="ttname"><a href="structDbcParseContext.html#ac22cba614ada3a28c7dcc1ea338b0e01">DbcParseContext::pendingValues</a></div><div class="ttdeci">std::vector< PendingValueDescriptions > pendingValues</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00065">dbc_statement_handler.h:65</a></div></div>
|
||||||
<div class="ttc" id="astructDbcParseContext_html_aeae343c57a244634489a0e0b960155d7"><div class="ttname"><a href="structDbcParseContext.html#aeae343c57a244634489a0e0b960155d7">DbcParseContext::ResolveComments</a></div><div class="ttdeci">void ResolveComments(const std::string &filePath)</div><div class="ttdoc">Resolve deferred comments after all definitions are known.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00385">dbc_statement_handler.cpp:385</a></div></div>
|
<div class="ttc" id="astructDbcParseContext_html_aeae343c57a244634489a0e0b960155d7"><div class="ttname"><a href="structDbcParseContext.html#aeae343c57a244634489a0e0b960155d7">DbcParseContext::ResolveComments</a></div><div class="ttdeci">void ResolveComments(const std::string &filePath)</div><div class="ttdoc">Resolve deferred comments after all definitions are known.</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8cpp_source.html#l00468">dbc_statement_handler.cpp:468</a></div></div>
|
||||||
<div class="ttc" id="astructDbcParseContext_html_af31b56247edff7f025957ae023a56913"><div class="ttname"><a href="structDbcParseContext.html#af31b56247edff7f025957ae023a56913">DbcParseContext::currentFrame</a></div><div class="ttdeci">FrameInfo * currentFrame</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00062">dbc_statement_handler.h:62</a></div></div>
|
<div class="ttc" id="astructDbcParseContext_html_af31b56247edff7f025957ae023a56913"><div class="ttname"><a href="structDbcParseContext.html#af31b56247edff7f025957ae023a56913">DbcParseContext::currentFrame</a></div><div class="ttdeci">FrameInfo * currentFrame</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00062">dbc_statement_handler.h:62</a></div></div>
|
||||||
<div class="ttc" id="astructDbcParseContext_html_af8b411c938a2ea9100c4aaae452e6546"><div class="ttname"><a href="structDbcParseContext.html#af8b411c938a2ea9100c4aaae452e6546">DbcParseContext::signalLines</a></div><div class="ttdeci">std::vector< std::vector< std::size_t > > signalLines</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00070">dbc_statement_handler.h:70</a></div></div>
|
<div class="ttc" id="astructDbcParseContext_html_af8b411c938a2ea9100c4aaae452e6546"><div class="ttname"><a href="structDbcParseContext.html#af8b411c938a2ea9100c4aaae452e6546">DbcParseContext::signalLines</a></div><div class="ttdeci">std::vector< std::vector< std::size_t > > signalLines</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00070">dbc_statement_handler.h:70</a></div></div>
|
||||||
<div class="ttc" id="astructDbcParseContext_html_afbfa4b26a58b41ada3dabc619066035c"><div class="ttname"><a href="structDbcParseContext.html#afbfa4b26a58b41ada3dabc619066035c">DbcParseContext::pendingAttributes</a></div><div class="ttdeci">std::vector< PendingAttribute > pendingAttributes</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00078">dbc_statement_handler.h:78</a></div></div>
|
<div class="ttc" id="astructDbcParseContext_html_afbfa4b26a58b41ada3dabc619066035c"><div class="ttname"><a href="structDbcParseContext.html#afbfa4b26a58b41ada3dabc619066035c">DbcParseContext::pendingAttributes</a></div><div class="ttdeci">std::vector< PendingAttribute > pendingAttributes</div><div class="ttdef"><b>Definition</b> <a href="dbc__statement__handler_8h_source.html#l00078">dbc_statement_handler.h:78</a></div></div>
|
||||||
|
|||||||
@@ -0,0 +1,338 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||||
|
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||||
|
<title>DBC Framework: dbc_statement_test.cpp Source File</title>
|
||||||
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||||
|
<script type="text/javascript" src="jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="dynsections.js"></script>
|
||||||
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||||
|
<script type="text/javascript" src="resize.js"></script>
|
||||||
|
<script type="text/javascript" src="navtreedata.js"></script>
|
||||||
|
<script type="text/javascript" src="navtree.js"></script>
|
||||||
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||||
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||||
|
<script type="text/javascript" src="search/search.js"></script>
|
||||||
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||||
|
<div id="titlearea">
|
||||||
|
<table cellspacing="0" cellpadding="0">
|
||||||
|
<tbody>
|
||||||
|
<tr id="projectrow">
|
||||||
|
<td id="projectalign">
|
||||||
|
<div id="projectname">DBC Framework
|
||||||
|
</div>
|
||||||
|
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<!-- end header part -->
|
||||||
|
<!-- Generated by Doxygen 1.9.8 -->
|
||||||
|
<script type="text/javascript">
|
||||||
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||||
|
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||||
|
/* @license-end */
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" src="menudata.js"></script>
|
||||||
|
<script type="text/javascript" src="menu.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||||
|
$(function() {
|
||||||
|
initMenu('',true,false,'search.php','Search');
|
||||||
|
$(document).ready(function() { init_search(); });
|
||||||
|
});
|
||||||
|
/* @license-end */
|
||||||
|
</script>
|
||||||
|
<div id="main-nav"></div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||||
|
$(document).ready(function() { init_codefold(0); });
|
||||||
|
/* @license-end */
|
||||||
|
</script>
|
||||||
|
</div><!-- top -->
|
||||||
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||||
|
<div id="nav-tree">
|
||||||
|
<div id="nav-tree-contents">
|
||||||
|
<div id="nav-sync" class="sync"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="splitbar" style="-moz-user-select:none;"
|
||||||
|
class="ui-resizable-handle">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||||
|
$(document).ready(function(){initNavTree('dbc__statement__test_8cpp_source.html',''); initResizable(); });
|
||||||
|
/* @license-end */
|
||||||
|
</script>
|
||||||
|
<div id="doc-content">
|
||||||
|
<!-- window showing the filter options -->
|
||||||
|
<div id="MSearchSelectWindow"
|
||||||
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||||
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||||
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- iframe showing the search results (closed by default) -->
|
||||||
|
<div id="MSearchResultsWindow">
|
||||||
|
<div id="MSearchResults">
|
||||||
|
<div class="SRPage">
|
||||||
|
<div id="SRIndex">
|
||||||
|
<div id="SRResults"></div>
|
||||||
|
<div class="SRStatus" id="Loading">Loading...</div>
|
||||||
|
<div class="SRStatus" id="Searching">Searching...</div>
|
||||||
|
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="header">
|
||||||
|
<div class="headertitle"><div class="title">dbc_statement_test.cpp</div></div>
|
||||||
|
</div><!--header-->
|
||||||
|
<div class="contents">
|
||||||
|
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#include "<a class="code" href="dbc__decode__builder_8h.html">dbc_decode_builder.h</a>"</span></div>
|
||||||
|
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#include "<a class="code" href="dbc__decoder_8h.html">dbc_decoder.h</a>"</span></div>
|
||||||
|
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="preprocessor">#include "<a class="code" href="dbc__parser_8h.html">dbc_parser.h</a>"</span></div>
|
||||||
|
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="preprocessor">#include <QTemporaryFile></span></div>
|
||||||
|
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#include <QtTest></span></div>
|
||||||
|
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#include <iomanip></span></div>
|
||||||
|
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#include <sstream></span></div>
|
||||||
|
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#include <stdexcept></span></div>
|
||||||
|
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span> </div>
|
||||||
|
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="keyword">namespace </span>{</div>
|
||||||
|
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> std::string WriteFixture(QTemporaryFile &file, <span class="keyword">const</span> std::string &text) {</div>
|
||||||
|
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> <span class="keywordflow">if</span> (!file.open() || file.write(text.data(), <span class="keyword">static_cast<</span>qint64<span class="keyword">></span>(text.size())) != <span class="keyword">static_cast<</span>qint64<span class="keyword">></span>(text.size()) || !file.flush())</div>
|
||||||
|
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">"Cannot write statement fixture"</span>);</div>
|
||||||
|
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> <span class="keywordflow">return</span> file.fileName().toStdString();</div>
|
||||||
|
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> }</div>
|
||||||
|
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div>
|
||||||
|
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> std::string Quote(<span class="keyword">const</span> std::string &text) {</div>
|
||||||
|
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> std::ostringstream stream;</div>
|
||||||
|
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> stream << std::quoted(text);</div>
|
||||||
|
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> <span class="keywordflow">return</span> stream.str();</div>
|
||||||
|
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> }</div>
|
||||||
|
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
|
||||||
|
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> std::string RepeatedRanges() {</div>
|
||||||
|
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> std::string ranges = <span class="stringliteral">"1-1"</span>;</div>
|
||||||
|
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> index = 1U; index < 10000U; ++index)</div>
|
||||||
|
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> ranges += <span class="stringliteral">",1-1"</span>;</div>
|
||||||
|
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="keywordflow">return</span> ranges;</div>
|
||||||
|
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> }</div>
|
||||||
|
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
|
||||||
|
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">const</span> std::string definitions =</div>
|
||||||
|
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <span class="stringliteral">"BO_ 1 Frame: 2 ECU\n"</span></div>
|
||||||
|
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="stringliteral">"SG_ Mode M : 0|8@1+ (1,0) [0|255] \"\" ECU\n"</span></div>
|
||||||
|
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="stringliteral">"SG_ Value m1 : 8|8@1+ (1,0) [0|255] \"\" ECU\n"</span>;</div>
|
||||||
|
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span>}<span class="comment">// namespace</span></div>
|
||||||
|
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> </div>
|
||||||
|
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="keyword">class </span>StatementParserTest : <span class="keyword">public</span> QObject {</div>
|
||||||
|
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> Q_OBJECT</div>
|
||||||
|
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="keyword">private</span> Q_SLOTS:</div>
|
||||||
|
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordtype">void</span> longValueDescriptions_data();</div>
|
||||||
|
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keywordtype">void</span> longValueDescriptions();</div>
|
||||||
|
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keywordtype">void</span> longMultiplexRanges_data();</div>
|
||||||
|
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keywordtype">void</span> longMultiplexRanges();</div>
|
||||||
|
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keywordtype">void</span> invalidLongStatements_data();</div>
|
||||||
|
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordtype">void</span> invalidLongStatements();</div>
|
||||||
|
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span>};</div>
|
||||||
|
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
|
||||||
|
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="keywordtype">void</span> StatementParserTest::longValueDescriptions_data() {</div>
|
||||||
|
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> QTest::addColumn<std::string>(<span class="stringliteral">"description"</span>);</div>
|
||||||
|
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> QTest::addColumn<unsigned>(<span class="stringliteral">"count"</span>);</div>
|
||||||
|
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> QTest::addColumn<bool>(<span class="stringliteral">"beforeDefinitions"</span>);</div>
|
||||||
|
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> QTest::newRow(<span class="stringliteral">"50000-character-description"</span>) << std::string(50000U, <span class="charliteral">'x'</span>) << 1U << <span class="keyword">false</span>;</div>
|
||||||
|
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> std::string escaped;</div>
|
||||||
|
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> index = 0U; index < 12500U; ++index)</div>
|
||||||
|
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> escaped += <span class="stringliteral">"\"\\; "</span>;</div>
|
||||||
|
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> QTest::newRow(<span class="stringliteral">"50000-escaped-characters"</span>) << escaped << 1U << <span class="keyword">true</span>;</div>
|
||||||
|
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> QTest::newRow(<span class="stringliteral">"10000-pairs"</span>) << std::string(<span class="stringliteral">"Description"</span>) << 10000U << <span class="keyword">true</span>;</div>
|
||||||
|
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> QTest::newRow(<span class="stringliteral">"50000-spaces"</span>) << std::string(50000U, <span class="charliteral">' '</span>) << 1U << <span class="keyword">false</span>;</div>
|
||||||
|
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span>}</div>
|
||||||
|
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
|
||||||
|
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="keywordtype">void</span> StatementParserTest::longValueDescriptions() {</div>
|
||||||
|
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> QFETCH(std::string, description);</div>
|
||||||
|
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> QFETCH(<span class="keywordtype">unsigned</span>, count);</div>
|
||||||
|
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> QFETCH(<span class="keywordtype">bool</span>, beforeDefinitions);</div>
|
||||||
|
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> std::string statement = <span class="stringliteral">"VAL_ 1 Value"</span>;</div>
|
||||||
|
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> index = 0U; index < count; ++index)</div>
|
||||||
|
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> statement += <span class="stringliteral">" "</span> + std::to_string(index) + <span class="stringliteral">" "</span> + Quote(description);</div>
|
||||||
|
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> statement += <span class="stringliteral">";\n"</span>;</div>
|
||||||
|
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keyword">const</span> std::string frame = <span class="stringliteral">"BO_ 1 Frame: 4 ECU\nSG_ Value : 0|32@1+ (1,0) [0|1e10] \"\" ECU\n"</span>;</div>
|
||||||
|
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> QTemporaryFile file;</div>
|
||||||
|
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="keyword">const</span> std::string path = WriteFixture(file, beforeDefinitions ? statement + frame : frame + statement);</div>
|
||||||
|
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keyword">const</span> <a class="code hl_class" href="classDbcParser.html">DbcParser</a> parser;</div>
|
||||||
|
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> result = parser.<a class="code hl_function" href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">ParseFileWithDiagnostics</a>(path);</div>
|
||||||
|
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> QVERIFY(!result.<a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>());</div>
|
||||||
|
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> QVERIFY(result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.empty());</div>
|
||||||
|
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">const</span> std::vector<DbcDatabase> databases = {result.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>, parser.<a class="code hl_function" href="classDbcParser.html#aef72826942c9095d653fafa435855e56">ParseFile</a>(path)};</div>
|
||||||
|
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a> &database: databases) {</div>
|
||||||
|
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keyword">const</span> ValueDescriptions &values = database.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>.at(0).signals.at(0).valueDescriptions;</div>
|
||||||
|
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> QCOMPARE(values.size(), <span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(count));</div>
|
||||||
|
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> index = 0U; index < count; ++index)</div>
|
||||||
|
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> QCOMPARE(values.at(std::uint64_t(index)), description);</div>
|
||||||
|
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="keyword">const</span> <a class="code hl_class" href="classDecodeDatabase.html">DecodeDatabase</a> runtime = <a class="code hl_class" href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a>().<a class="code hl_function" href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">Build</a>(database);</div>
|
||||||
|
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <a class="code hl_struct" href="structRawCanFrame.html">RawCanFrame</a> raw;</div>
|
||||||
|
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a2d0e7fa0e3d5c20bbed55ed8f7888ff4">canId</a> = 1U;</div>
|
||||||
|
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> last = count - 1U;</div>
|
||||||
|
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">data</a> = {<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(last), <span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(last >> 8U), 0U, 0U};</div>
|
||||||
|
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedFrameValue.html">DecodedFrameValue</a> decoded = <a class="code hl_class" href="classDbcDecoder.html">DbcDecoder</a>().<a class="code hl_function" href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">Decode</a>(runtime, raw);</div>
|
||||||
|
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> QCOMPARE(decoded.<a class="code hl_variable" href="structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9">status</a>, FrameDecodeStatus::Valid);</div>
|
||||||
|
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keyword">const</span> std::string *label = decoded.signals.at(0).GetValueDescription();</div>
|
||||||
|
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> QVERIFY(label);</div>
|
||||||
|
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> QCOMPARE(*label, description);</div>
|
||||||
|
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> }</div>
|
||||||
|
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span>}</div>
|
||||||
|
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> </div>
|
||||||
|
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="keywordtype">void</span> StatementParserTest::longMultiplexRanges_data() {</div>
|
||||||
|
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> QTest::addColumn<std::string>(<span class="stringliteral">"ranges"</span>);</div>
|
||||||
|
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> QTest::addColumn<unsigned>(<span class="stringliteral">"count"</span>);</div>
|
||||||
|
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> QTest::addColumn<bool>(<span class="stringliteral">"beforeDefinitions"</span>);</div>
|
||||||
|
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> QTest::newRow(<span class="stringliteral">"10000-ranges"</span>) << RepeatedRanges() << 10000U << <span class="keyword">false</span>;</div>
|
||||||
|
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keyword">const</span> std::string paddedOne = std::string(50000U, <span class="charliteral">'0'</span>) + <span class="stringliteral">"1"</span>;</div>
|
||||||
|
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> QTest::newRow(<span class="stringliteral">"long-bounds"</span>) << paddedOne + <span class="stringliteral">"-"</span> + paddedOne << 1U << <span class="keyword">true</span>;</div>
|
||||||
|
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> QTest::newRow(<span class="stringliteral">"long-whitespace"</span>) << std::string(50000U, <span class="charliteral">' '</span>) + <span class="stringliteral">"1\t-\t1"</span> + std::string(50000U, <span class="charliteral">' '</span>) << 1U << <span class="keyword">false</span>;</div>
|
||||||
|
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span>}</div>
|
||||||
|
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> </div>
|
||||||
|
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="keywordtype">void</span> StatementParserTest::longMultiplexRanges() {</div>
|
||||||
|
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> QFETCH(std::string, ranges);</div>
|
||||||
|
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> QFETCH(<span class="keywordtype">unsigned</span>, count);</div>
|
||||||
|
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> QFETCH(<span class="keywordtype">bool</span>, beforeDefinitions);</div>
|
||||||
|
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keyword">const</span> std::string statement = <span class="stringliteral">"SG_MUL_VAL_ 1 Value Mode "</span> + ranges + <span class="stringliteral">";\n"</span>;</div>
|
||||||
|
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> QTemporaryFile file;</div>
|
||||||
|
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keyword">const</span> std::string path = WriteFixture(file, beforeDefinitions ? statement + definitions : definitions + statement);</div>
|
||||||
|
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keyword">const</span> <a class="code hl_class" href="classDbcParser.html">DbcParser</a> parser;</div>
|
||||||
|
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> result = parser.<a class="code hl_function" href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">ParseFileWithDiagnostics</a>(path);</div>
|
||||||
|
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> QVERIFY(!result.<a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>());</div>
|
||||||
|
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> QVERIFY(result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.empty());</div>
|
||||||
|
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keyword">const</span> std::vector<DbcDatabase> databases = {result.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>, parser.<a class="code hl_function" href="classDbcParser.html#aef72826942c9095d653fafa435855e56">ParseFile</a>(path)};</div>
|
||||||
|
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code hl_struct" href="structDbcDatabase.html">DbcDatabase</a> &database: databases) {</div>
|
||||||
|
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keyword">const</span> <a class="code hl_struct" href="structMultiplexing.html">Multiplexing</a> &mux = database.frames.at(0).signals.at(1).multiplexing;</div>
|
||||||
|
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> QCOMPARE(mux.<a class="code hl_variable" href="structMultiplexing.html#aa91e54403c78a663686b2fd22282afaf">selector</a>, std::string(<span class="stringliteral">"Mode"</span>));</div>
|
||||||
|
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> QCOMPARE(mux.<a class="code hl_variable" href="structMultiplexing.html#aa174ac4a3af9b361d2de7517dfd4b69e">ranges</a>.size(), <span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(count));</div>
|
||||||
|
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code hl_struct" href="structMultiplexRange.html">MultiplexRange</a> &range: mux.ranges) {</div>
|
||||||
|
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> QCOMPARE(range.minimum, std::uint64_t(1));</div>
|
||||||
|
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> QCOMPARE(range.maximum, std::uint64_t(1));</div>
|
||||||
|
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> }</div>
|
||||||
|
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keyword">const</span> <a class="code hl_class" href="classDecodeDatabase.html">DecodeDatabase</a> runtime = <a class="code hl_class" href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a>().<a class="code hl_function" href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">Build</a>(database);</div>
|
||||||
|
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <a class="code hl_struct" href="structRawCanFrame.html">RawCanFrame</a> raw;</div>
|
||||||
|
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a2d0e7fa0e3d5c20bbed55ed8f7888ff4">canId</a> = 1U;</div>
|
||||||
|
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">data</a> = {1U, 42U};</div>
|
||||||
|
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedFrameValue.html">DecodedFrameValue</a> active = <a class="code hl_class" href="classDbcDecoder.html">DbcDecoder</a>().<a class="code hl_function" href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">Decode</a>(runtime, raw);</div>
|
||||||
|
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> QCOMPARE(active.<a class="code hl_variable" href="structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9">status</a>, FrameDecodeStatus::Valid);</div>
|
||||||
|
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> QVERIFY(active.signals.at(1).<a class="code hl_variable" href="structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0">valid</a>);</div>
|
||||||
|
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> QCOMPARE(std::get<std::uint64_t>(active.signals[1].rawValue), std::uint64_t(42));</div>
|
||||||
|
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> raw.<a class="code hl_variable" href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">data</a>[0] = 2U;</div>
|
||||||
|
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDecodedFrameValue.html">DecodedFrameValue</a> inactive = <a class="code hl_class" href="classDbcDecoder.html">DbcDecoder</a>().<a class="code hl_function" href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">Decode</a>(runtime, raw);</div>
|
||||||
|
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> QCOMPARE(inactive.signals.at(1).<a class="code hl_variable" href="structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9">status</a>, SignalDecodeStatus::Inactive);</div>
|
||||||
|
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> }</div>
|
||||||
|
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span>}</div>
|
||||||
|
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> </div>
|
||||||
|
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span><span class="keywordtype">void</span> StatementParserTest::invalidLongStatements_data() {</div>
|
||||||
|
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> QTest::addColumn<std::string>(<span class="stringliteral">"statement"</span>);</div>
|
||||||
|
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> QTest::addColumn<DbcDiagnosticCode>(<span class="stringliteral">"code"</span>);</div>
|
||||||
|
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="keyword">const</span> std::string text(50000U, <span class="charliteral">'x'</span>);</div>
|
||||||
|
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="keyword">const</span> std::string value = <span class="stringliteral">"VAL_ 1 Value 0 \""</span> + text;</div>
|
||||||
|
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> QTest::newRow(<span class="stringliteral">"val-missing-quote"</span>) << value + <span class="stringliteral">";"</span> << DbcDiagnosticCode::InvalidValueDescription;</div>
|
||||||
|
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> QTest::newRow(<span class="stringliteral">"val-dangling-escape"</span>) << value + <span class="stringliteral">"\\"</span> << DbcDiagnosticCode::InvalidValueDescription;</div>
|
||||||
|
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> QTest::newRow(<span class="stringliteral">"val-invalid-escape"</span>) << value + <span class="stringliteral">"\\q\";"</span> << DbcDiagnosticCode::InvalidValueDescription;</div>
|
||||||
|
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> QTest::newRow(<span class="stringliteral">"val-missing-semicolon"</span>) << value + <span class="stringliteral">"\""</span> << DbcDiagnosticCode::InvalidValueDescription;</div>
|
||||||
|
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> QTest::newRow(<span class="stringliteral">"val-trailing-text"</span>) << value + <span class="stringliteral">"\"; junk"</span> << DbcDiagnosticCode::InvalidValueDescription;</div>
|
||||||
|
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> QTest::newRow(<span class="stringliteral">"val-missing-pair-separator"</span>) << value + <span class="stringliteral">"\"1 \"On\";"</span> << DbcDiagnosticCode::InvalidValueDescription;</div>
|
||||||
|
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> QTest::newRow(<span class="stringliteral">"val-missing-number-separator"</span>) << <span class="stringliteral">"VAL_ 1 Value 0\""</span> + text + <span class="stringliteral">"\";"</span> << DbcDiagnosticCode::InvalidValueDescription;</div>
|
||||||
|
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> QTest::newRow(<span class="stringliteral">"val-duplicate"</span>) << value + <span class="stringliteral">"\" 00 \"Duplicate\";"</span> << DbcDiagnosticCode::InvalidValueDescription;</div>
|
||||||
|
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> QTest::newRow(<span class="stringliteral">"val-overflow"</span>) << <span class="stringliteral">"VAL_ 1 Value "</span> + std::string(50000U, <span class="charliteral">'9'</span>) + <span class="stringliteral">" \"Bad\";"</span> << DbcDiagnosticCode::InvalidValueDescription;</div>
|
||||||
|
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> QTest::newRow(<span class="stringliteral">"val-long-missing-reference"</span>) << <span class="stringliteral">"VAL_ 1 "</span> + text + <span class="stringliteral">" 0 \"Bad\";"</span> << DbcDiagnosticCode::InvalidValueDescription;</div>
|
||||||
|
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <span class="keyword">const</span> std::string mux = <span class="stringliteral">"SG_MUL_VAL_ 1 Value Mode "</span> + RepeatedRanges();</div>
|
||||||
|
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> QTest::newRow(<span class="stringliteral">"mux-missing-semicolon"</span>) << mux << DbcDiagnosticCode::InvalidMultiplexing;</div>
|
||||||
|
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> QTest::newRow(<span class="stringliteral">"mux-trailing-comma"</span>) << mux + <span class="stringliteral">",;"</span> << DbcDiagnosticCode::InvalidMultiplexing;</div>
|
||||||
|
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> QTest::newRow(<span class="stringliteral">"mux-empty-range"</span>) << mux + <span class="stringliteral">",,1-1;"</span> << DbcDiagnosticCode::InvalidMultiplexing;</div>
|
||||||
|
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> QTest::newRow(<span class="stringliteral">"mux-reversed-range"</span>) << mux + <span class="stringliteral">",2-1;"</span> << DbcDiagnosticCode::InvalidMultiplexing;</div>
|
||||||
|
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> QTest::newRow(<span class="stringliteral">"mux-signed-bound"</span>) << mux + <span class="stringliteral">",+1-1;"</span> << DbcDiagnosticCode::InvalidMultiplexing;</div>
|
||||||
|
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> QTest::newRow(<span class="stringliteral">"mux-suffix"</span>) << mux + <span class="stringliteral">"x;"</span> << DbcDiagnosticCode::InvalidMultiplexing;</div>
|
||||||
|
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> QTest::newRow(<span class="stringliteral">"mux-overflow"</span>) << mux + <span class="stringliteral">",0-18446744073709551616;"</span> << DbcDiagnosticCode::InvalidMultiplexing;</div>
|
||||||
|
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> QTest::newRow(<span class="stringliteral">"mux-long-overflow"</span>) << <span class="stringliteral">"SG_MUL_VAL_ 1 Value Mode 0-"</span> + std::string(50000U, <span class="charliteral">'9'</span>) + <span class="stringliteral">";"</span> << DbcDiagnosticCode::InvalidMultiplexing;</div>
|
||||||
|
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> QTest::newRow(<span class="stringliteral">"mux-trailing-text"</span>) << mux + <span class="stringliteral">"; junk"</span> << DbcDiagnosticCode::InvalidMultiplexing;</div>
|
||||||
|
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> QTest::newRow(<span class="stringliteral">"mux-long-missing-reference"</span>) << <span class="stringliteral">"SG_MUL_VAL_ 1 "</span> + text + <span class="stringliteral">" Mode 1-1;"</span> << DbcDiagnosticCode::InvalidMultiplexing;</div>
|
||||||
|
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span>}</div>
|
||||||
|
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> </div>
|
||||||
|
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span><span class="keywordtype">void</span> StatementParserTest::invalidLongStatements() {</div>
|
||||||
|
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> QFETCH(std::string, statement);</div>
|
||||||
|
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> QFETCH(DbcDiagnosticCode, code);</div>
|
||||||
|
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> QTemporaryFile file;</div>
|
||||||
|
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <span class="keyword">const</span> std::string path = WriteFixture(file, <span class="stringliteral">"\n"</span> + statement + <span class="stringliteral">"\n"</span> + definitions);</div>
|
||||||
|
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <span class="keyword">const</span> <a class="code hl_class" href="classDbcParser.html">DbcParser</a> parser;</div>
|
||||||
|
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDbcParseResult.html">DbcParseResult</a> result = parser.<a class="code hl_function" href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">ParseFileWithDiagnostics</a>(path);</div>
|
||||||
|
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> QVERIFY(result.<a class="code hl_function" href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">HasErrors</a>());</div>
|
||||||
|
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> QVERIFY(result.<a class="code hl_variable" href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">database</a>.<a class="code hl_variable" href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">frames</a>.empty());</div>
|
||||||
|
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> QCOMPARE(result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>.size(), std::size_t(1));</div>
|
||||||
|
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="keyword">const</span> <a class="code hl_struct" href="structDbcDiagnostic.html">DbcDiagnostic</a> &error = result.<a class="code hl_variable" href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">diagnostics</a>[0];</div>
|
||||||
|
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> QCOMPARE(error.<a class="code hl_variable" href="structDbcDiagnostic.html#a75040a94f0313a606478020b0491f81d">severity</a>, DbcDiagnosticSeverity::Error);</div>
|
||||||
|
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> QCOMPARE(error.<a class="code hl_variable" href="structDbcDiagnostic.html#aa315a4a40b15f2e8cb34264d94a0f914">code</a>, code);</div>
|
||||||
|
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> QCOMPARE(error.<a class="code hl_variable" href="structDbcDiagnostic.html#ac9f02705ed6a633cbb9526d0e392fb95">filePath</a>, path);</div>
|
||||||
|
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> QCOMPARE(error.<a class="code hl_variable" href="structDbcDiagnostic.html#adb201de8d32b768d5f559bed21e8f819">lineNumber</a>, std::size_t(2));</div>
|
||||||
|
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="keywordflow">try</span> {</div>
|
||||||
|
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> parser.<a class="code hl_function" href="classDbcParser.html#aef72826942c9095d653fafa435855e56">ParseFile</a>(path);</div>
|
||||||
|
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> QFAIL(<span class="stringliteral">"Malformed statements must throw through ParseFile"</span>);</div>
|
||||||
|
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::runtime_error &exception) {</div>
|
||||||
|
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> QCOMPARE(std::string(exception.what()), path + <span class="stringliteral">":2: "</span> + error.<a class="code hl_variable" href="structDbcDiagnostic.html#a124bae82eebeaef46426bd124685ef1b">message</a>);</div>
|
||||||
|
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> }</div>
|
||||||
|
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span>}</div>
|
||||||
|
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> </div>
|
||||||
|
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span><span class="keywordtype">int</span> RunStatementParserTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv) {</div>
|
||||||
|
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> StatementParserTest tests;</div>
|
||||||
|
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> <span class="keywordflow">return</span> QTest::qExec(&tests, argc, argv);</div>
|
||||||
|
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span>}</div>
|
||||||
|
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> </div>
|
||||||
|
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span><span class="preprocessor">#include "dbc_statement_test.moc"</span></div>
|
||||||
|
<div class="ttc" id="aclassDbcDecodeBuilder_html"><div class="ttname"><a href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a></div><div class="ttdoc">Converts parsed DBC data into runtime decode database.</div><div class="ttdef"><b>Definition</b> <a href="dbc__decode__builder_8h_source.html#l00021">dbc_decode_builder.h:21</a></div></div>
|
||||||
|
<div class="ttc" id="aclassDbcDecodeBuilder_html_a2bc6386dfb5e58976c42e22c19ec471b"><div class="ttname"><a href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">DbcDecodeBuilder::Build</a></div><div class="ttdeci">DecodeDatabase Build(const DbcDatabase &source) const</div><div class="ttdoc">Build runtime decode database.</div><div class="ttdef"><b>Definition</b> <a href="dbc__decode__builder_8cpp_source.html#l00015">dbc_decode_builder.cpp:15</a></div></div>
|
||||||
|
<div class="ttc" id="aclassDbcDecoder_html"><div class="ttname"><a href="classDbcDecoder.html">DbcDecoder</a></div><div class="ttdoc">Runtime CAN decoder using prebuilt decode database.</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8h_source.html#l00087">dbc_decoder.h:87</a></div></div>
|
||||||
|
<div class="ttc" id="aclassDbcDecoder_html_a345951ffe5d943a70d3a1ea1f39e74f7"><div class="ttname"><a href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">DbcDecoder::Decode</a></div><div class="ttdeci">DecodedFrameValue Decode(const DecodeDatabase &database, const RawCanFrame &frame) const</div><div class="ttdoc">Decode one raw CAN frame.</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8cpp_source.html#l00036">dbc_decoder.cpp:36</a></div></div>
|
||||||
|
<div class="ttc" id="aclassDbcParser_html"><div class="ttname"><a href="classDbcParser.html">DbcParser</a></div><div class="ttdoc">Minimal DBC parser.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8h_source.html#l00045">dbc_parser.h:45</a></div></div>
|
||||||
|
<div class="ttc" id="aclassDbcParser_html_a0e915ce79c2e3d4c95a5aaf2bf0409bc"><div class="ttname"><a href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">DbcParser::ParseFileWithDiagnostics</a></div><div class="ttdeci">DbcParseResult ParseFileWithDiagnostics(const std::string &filePath) const</div><div class="ttdoc">Parse with warnings and a structured first error instead of throwing.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00105">dbc_parser.cpp:105</a></div></div>
|
||||||
|
<div class="ttc" id="aclassDbcParser_html_aef72826942c9095d653fafa435855e56"><div class="ttname"><a href="classDbcParser.html#aef72826942c9095d653fafa435855e56">DbcParser::ParseFile</a></div><div class="ttdeci">DbcDatabase ParseFile(const std::string &filePath) const</div><div class="ttdoc">Parse DBC file.</div><div class="ttdef"><b>Definition</b> <a href="dbc__parser_8cpp_source.html#l00092">dbc_parser.cpp:92</a></div></div>
|
||||||
|
<div class="ttc" id="aclassDecodeDatabase_html"><div class="ttname"><a href="classDecodeDatabase.html">DecodeDatabase</a></div><div class="ttdoc">Immutable runtime snapshot. Copies share storage; reload replaces a snapshot. Owning lookup handles a...</div><div class="ttdef"><b>Definition</b> <a href="decode__database_8h_source.html#l00102">decode_database.h:102</a></div></div>
|
||||||
|
<div class="ttc" id="adbc__decode__builder_8h_html"><div class="ttname"><a href="dbc__decode__builder_8h.html">dbc_decode_builder.h</a></div><div class="ttdoc">Runtime decode database builder.</div></div>
|
||||||
|
<div class="ttc" id="adbc__decoder_8h_html"><div class="ttname"><a href="dbc__decoder_8h.html">dbc_decoder.h</a></div><div class="ttdoc">CAN frame decoding API and result types.</div></div>
|
||||||
|
<div class="ttc" id="adbc__parser_8h_html"><div class="ttname"><a href="dbc__parser_8h.html">dbc_parser.h</a></div><div class="ttdoc">DBC file parser and interpretation options.</div></div>
|
||||||
|
<div class="ttc" id="astructDbcDatabase_html"><div class="ttname"><a href="structDbcDatabase.html">DbcDatabase</a></div><div class="ttdoc">Parsed DBC content stored in a simple internal form.</div><div class="ttdef"><b>Definition</b> <a href="dbc__database_8h_source.html#l00022">dbc_database.h:22</a></div></div>
|
||||||
|
<div class="ttc" id="astructDbcDatabase_html_a2cade5d0234ee816132127542f8c612b"><div class="ttname"><a href="structDbcDatabase.html#a2cade5d0234ee816132127542f8c612b">DbcDatabase::frames</a></div><div class="ttdeci">std::vector< FrameInfo > frames</div><div class="ttdef"><b>Definition</b> <a href="dbc__database_8h_source.html#l00023">dbc_database.h:23</a></div></div>
|
||||||
|
<div class="ttc" id="astructDbcDiagnostic_html"><div class="ttname"><a href="structDbcDiagnostic.html">DbcDiagnostic</a></div><div class="ttdoc">Diagnostic message and physical source location.</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00030">dbc_diagnostic.h:30</a></div></div>
|
||||||
|
<div class="ttc" id="astructDbcDiagnostic_html_a124bae82eebeaef46426bd124685ef1b"><div class="ttname"><a href="structDbcDiagnostic.html#a124bae82eebeaef46426bd124685ef1b">DbcDiagnostic::message</a></div><div class="ttdeci">std::string message</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00035">dbc_diagnostic.h:35</a></div></div>
|
||||||
|
<div class="ttc" id="astructDbcDiagnostic_html_a75040a94f0313a606478020b0491f81d"><div class="ttname"><a href="structDbcDiagnostic.html#a75040a94f0313a606478020b0491f81d">DbcDiagnostic::severity</a></div><div class="ttdeci">DbcDiagnosticSeverity severity</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00031">dbc_diagnostic.h:31</a></div></div>
|
||||||
|
<div class="ttc" id="astructDbcDiagnostic_html_aa315a4a40b15f2e8cb34264d94a0f914"><div class="ttname"><a href="structDbcDiagnostic.html#aa315a4a40b15f2e8cb34264d94a0f914">DbcDiagnostic::code</a></div><div class="ttdeci">DbcDiagnosticCode code</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00032">dbc_diagnostic.h:32</a></div></div>
|
||||||
|
<div class="ttc" id="astructDbcDiagnostic_html_ac9f02705ed6a633cbb9526d0e392fb95"><div class="ttname"><a href="structDbcDiagnostic.html#ac9f02705ed6a633cbb9526d0e392fb95">DbcDiagnostic::filePath</a></div><div class="ttdeci">std::string filePath</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00033">dbc_diagnostic.h:33</a></div></div>
|
||||||
|
<div class="ttc" id="astructDbcDiagnostic_html_adb201de8d32b768d5f559bed21e8f819"><div class="ttname"><a href="structDbcDiagnostic.html#adb201de8d32b768d5f559bed21e8f819">DbcDiagnostic::lineNumber</a></div><div class="ttdeci">std::size_t lineNumber</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00034">dbc_diagnostic.h:34</a></div></div>
|
||||||
|
<div class="ttc" id="astructDbcParseResult_html"><div class="ttname"><a href="structDbcParseResult.html">DbcParseResult</a></div><div class="ttdoc">Parsed database and diagnostics; the database is empty on error.</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00039">dbc_diagnostic.h:39</a></div></div>
|
||||||
|
<div class="ttc" id="astructDbcParseResult_html_a3a1987b4381bb1e0a34dc09e31483679"><div class="ttname"><a href="structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679">DbcParseResult::diagnostics</a></div><div class="ttdeci">std::vector< DbcDiagnostic > diagnostics</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00041">dbc_diagnostic.h:41</a></div></div>
|
||||||
|
<div class="ttc" id="astructDbcParseResult_html_a4da8641de3f6b55c7447c4421e05d20d"><div class="ttname"><a href="structDbcParseResult.html#a4da8641de3f6b55c7447c4421e05d20d">DbcParseResult::HasErrors</a></div><div class="ttdeci">bool HasErrors() const</div><div class="ttdoc">Return whether any diagnostic has error severity.</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00044">dbc_diagnostic.h:44</a></div></div>
|
||||||
|
<div class="ttc" id="astructDbcParseResult_html_abfa765d29a4397e8ddaf771bae21993e"><div class="ttname"><a href="structDbcParseResult.html#abfa765d29a4397e8ddaf771bae21993e">DbcParseResult::database</a></div><div class="ttdeci">DbcDatabase database</div><div class="ttdef"><b>Definition</b> <a href="dbc__diagnostic_8h_source.html#l00040">dbc_diagnostic.h:40</a></div></div>
|
||||||
|
<div class="ttc" id="astructDecodedFrameValue_html"><div class="ttname"><a href="structDecodedFrameValue.html">DecodedFrameValue</a></div><div class="ttdoc">Fully decoded frame.</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8h_source.html#l00074">dbc_decoder.h:74</a></div></div>
|
||||||
|
<div class="ttc" id="astructDecodedFrameValue_html_a4f51c31110dba1f73a763c596372beb0"><div class="ttname"><a href="structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0">DecodedFrameValue::valid</a></div><div class="ttdeci">bool valid</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8h_source.html#l00078">dbc_decoder.h:78</a></div></div>
|
||||||
|
<div class="ttc" id="astructDecodedFrameValue_html_a645f433798d48a2787e7f00dfbb7dff9"><div class="ttname"><a href="structDecodedFrameValue.html#a645f433798d48a2787e7f00dfbb7dff9">DecodedFrameValue::status</a></div><div class="ttdeci">FrameDecodeStatus status</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8h_source.html#l00079">dbc_decoder.h:79</a></div></div>
|
||||||
|
<div class="ttc" id="astructMultiplexRange_html"><div class="ttname"><a href="structMultiplexRange.html">MultiplexRange</a></div><div class="ttdoc">Inclusive raw selector range, without expanding individual values.</div><div class="ttdef"><b>Definition</b> <a href="multiplexing_8h_source.html#l00018">multiplexing.h:18</a></div></div>
|
||||||
|
<div class="ttc" id="astructMultiplexing_html"><div class="ttname"><a href="structMultiplexing.html">Multiplexing</a></div><div class="ttdoc">Basic markers and optional explicit extended multiplexing condition.</div><div class="ttdef"><b>Definition</b> <a href="multiplexing_8h_source.html#l00024">multiplexing.h:24</a></div></div>
|
||||||
|
<div class="ttc" id="astructMultiplexing_html_aa174ac4a3af9b361d2de7517dfd4b69e"><div class="ttname"><a href="structMultiplexing.html#aa174ac4a3af9b361d2de7517dfd4b69e">Multiplexing::ranges</a></div><div class="ttdeci">std::vector< MultiplexRange > ranges</div><div class="ttdef"><b>Definition</b> <a href="multiplexing_8h_source.html#l00028">multiplexing.h:28</a></div></div>
|
||||||
|
<div class="ttc" id="astructMultiplexing_html_aa91e54403c78a663686b2fd22282afaf"><div class="ttname"><a href="structMultiplexing.html#aa91e54403c78a663686b2fd22282afaf">Multiplexing::selector</a></div><div class="ttdeci">std::string selector</div><div class="ttdef"><b>Definition</b> <a href="multiplexing_8h_source.html#l00027">multiplexing.h:27</a></div></div>
|
||||||
|
<div class="ttc" id="astructRawCanFrame_html"><div class="ttname"><a href="structRawCanFrame.html">RawCanFrame</a></div><div class="ttdoc">Raw CAN frame used for runtime or trace decoding.</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8h_source.html#l00025">dbc_decoder.h:25</a></div></div>
|
||||||
|
<div class="ttc" id="astructRawCanFrame_html_a0acb487612104c99c9907344c035df83"><div class="ttname"><a href="structRawCanFrame.html#a0acb487612104c99c9907344c035df83">RawCanFrame::data</a></div><div class="ttdeci">std::vector< std::uint8_t > data</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8h_source.html#l00028">dbc_decoder.h:28</a></div></div>
|
||||||
|
<div class="ttc" id="astructRawCanFrame_html_a2d0e7fa0e3d5c20bbed55ed8f7888ff4"><div class="ttname"><a href="structRawCanFrame.html#a2d0e7fa0e3d5c20bbed55ed8f7888ff4">RawCanFrame::canId</a></div><div class="ttdeci">std::uint32_t canId</div><div class="ttdef"><b>Definition</b> <a href="dbc__decoder_8h_source.html#l00026">dbc_decoder.h:26</a></div></div>
|
||||||
|
</div><!-- fragment --></div><!-- contents -->
|
||||||
|
</div><!-- doc-content -->
|
||||||
|
<!-- start footer part -->
|
||||||
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||||
|
<ul>
|
||||||
|
<li class="navelem"><a class="el" href="dir_59425e443f801f1f2fd8bbe4959a3ccf.html">tests</a></li><li class="navelem"><b>dbc_statement_test.cpp</b></li>
|
||||||
|
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -106,6 +106,8 @@ Files</h2></td></tr>
|
|||||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="dbc__pipeline__test_8cpp_source.html"><span class="icondoc"></span></a> </td><td class="memItemRight" valign="bottom"><b>dbc_pipeline_test.cpp</b></td></tr>
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="dbc__pipeline__test_8cpp_source.html"><span class="icondoc"></span></a> </td><td class="memItemRight" valign="bottom"><b>dbc_pipeline_test.cpp</b></td></tr>
|
||||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||||
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="dbc__statement__test_8cpp_source.html"><span class="icondoc"></span></a> </td><td class="memItemRight" valign="bottom"><b>dbc_statement_test.cpp</b></td></tr>
|
||||||
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="dbc__tree__model__test_8cpp_source.html"><span class="icondoc"></span></a> </td><td class="memItemRight" valign="bottom"><b>dbc_tree_model_test.cpp</b></td></tr>
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="dbc__tree__model__test_8cpp_source.html"><span class="icondoc"></span></a> </td><td class="memItemRight" valign="bottom"><b>dbc_tree_model_test.cpp</b></td></tr>
|
||||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="dbc__validation__test_8cpp_source.html"><span class="icondoc"></span></a> </td><td class="memItemRight" valign="bottom"><b>dbc_validation_test.cpp</b></td></tr>
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="dbc__validation__test_8cpp_source.html"><span class="icondoc"></span></a> </td><td class="memItemRight" valign="bottom"><b>dbc_validation_test.cpp</b></td></tr>
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ var dir_59425e443f801f1f2fd8bbe4959a3ccf =
|
|||||||
[ "dbc_lifetime_test.cpp", "dbc__lifetime__test_8cpp_source.html", null ],
|
[ "dbc_lifetime_test.cpp", "dbc__lifetime__test_8cpp_source.html", null ],
|
||||||
[ "dbc_parser_test.cpp", "dbc__parser__test_8cpp_source.html", null ],
|
[ "dbc_parser_test.cpp", "dbc__parser__test_8cpp_source.html", null ],
|
||||||
[ "dbc_pipeline_test.cpp", "dbc__pipeline__test_8cpp_source.html", null ],
|
[ "dbc_pipeline_test.cpp", "dbc__pipeline__test_8cpp_source.html", null ],
|
||||||
|
[ "dbc_statement_test.cpp", "dbc__statement__test_8cpp_source.html", null ],
|
||||||
[ "dbc_tree_model_test.cpp", "dbc__tree__model__test_8cpp_source.html", null ],
|
[ "dbc_tree_model_test.cpp", "dbc__tree__model__test_8cpp_source.html", null ],
|
||||||
[ "dbc_validation_test.cpp", "dbc__validation__test_8cpp_source.html", null ],
|
[ "dbc_validation_test.cpp", "dbc__validation__test_8cpp_source.html", null ],
|
||||||
[ "tests/main.cpp", "tests_2main_8cpp_source.html", null ],
|
[ "tests/main.cpp", "tests_2main_8cpp_source.html", null ],
|
||||||
|
|||||||
@@ -135,10 +135,11 @@ $(document).ready(function(){initNavTree('files.html',''); initResizable(); });
|
|||||||
<tr id="row_3_2_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="dbc__lifetime__test_8cpp_source.html"><span class="icondoc"></span></a><b>dbc_lifetime_test.cpp</b></td><td class="desc"></td></tr>
|
<tr id="row_3_2_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="dbc__lifetime__test_8cpp_source.html"><span class="icondoc"></span></a><b>dbc_lifetime_test.cpp</b></td><td class="desc"></td></tr>
|
||||||
<tr id="row_3_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="dbc__parser__test_8cpp_source.html"><span class="icondoc"></span></a><b>dbc_parser_test.cpp</b></td><td class="desc"></td></tr>
|
<tr id="row_3_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="dbc__parser__test_8cpp_source.html"><span class="icondoc"></span></a><b>dbc_parser_test.cpp</b></td><td class="desc"></td></tr>
|
||||||
<tr id="row_3_4_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="dbc__pipeline__test_8cpp_source.html"><span class="icondoc"></span></a><b>dbc_pipeline_test.cpp</b></td><td class="desc"></td></tr>
|
<tr id="row_3_4_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="dbc__pipeline__test_8cpp_source.html"><span class="icondoc"></span></a><b>dbc_pipeline_test.cpp</b></td><td class="desc"></td></tr>
|
||||||
<tr id="row_3_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="dbc__tree__model__test_8cpp_source.html"><span class="icondoc"></span></a><b>dbc_tree_model_test.cpp</b></td><td class="desc"></td></tr>
|
<tr id="row_3_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="dbc__statement__test_8cpp_source.html"><span class="icondoc"></span></a><b>dbc_statement_test.cpp</b></td><td class="desc"></td></tr>
|
||||||
<tr id="row_3_6_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="dbc__validation__test_8cpp_source.html"><span class="icondoc"></span></a><b>dbc_validation_test.cpp</b></td><td class="desc"></td></tr>
|
<tr id="row_3_6_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="dbc__tree__model__test_8cpp_source.html"><span class="icondoc"></span></a><b>dbc_tree_model_test.cpp</b></td><td class="desc"></td></tr>
|
||||||
<tr id="row_3_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="tests_2main_8cpp_source.html"><span class="icondoc"></span></a><b>main.cpp</b></td><td class="desc"></td></tr>
|
<tr id="row_3_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="dbc__validation__test_8cpp_source.html"><span class="icondoc"></span></a><b>dbc_validation_test.cpp</b></td><td class="desc"></td></tr>
|
||||||
<tr id="row_3_8_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="tree__node__test_8cpp_source.html"><span class="icondoc"></span></a><b>tree_node_test.cpp</b></td><td class="desc"></td></tr>
|
<tr id="row_3_8_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="tests_2main_8cpp_source.html"><span class="icondoc"></span></a><b>main.cpp</b></td><td class="desc"></td></tr>
|
||||||
|
<tr id="row_3_9_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="tree__node__test_8cpp_source.html"><span class="icondoc"></span></a><b>tree_node_test.cpp</b></td><td class="desc"></td></tr>
|
||||||
</table>
|
</table>
|
||||||
</div><!-- directory -->
|
</div><!-- directory -->
|
||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
|
|||||||
+7
-4
@@ -168,9 +168,10 @@
|
|||||||
<section title="Database validation coverage" ref="md_tests_2README.html#autotoc_md167"/>
|
<section title="Database validation coverage" ref="md_tests_2README.html#autotoc_md167"/>
|
||||||
<section title="End-to-end pipeline coverage" ref="md_tests_2README.html#autotoc_md168"/>
|
<section title="End-to-end pipeline coverage" ref="md_tests_2README.html#autotoc_md168"/>
|
||||||
<section title="Attribute coverage" ref="md_tests_2README.html#autotoc_md169"/>
|
<section title="Attribute coverage" ref="md_tests_2README.html#autotoc_md169"/>
|
||||||
<section title="Unsupported signal value types" ref="md_tests_2README.html#autotoc_md170"/>
|
<section title="Long value descriptions and multiplex ranges" ref="md_tests_2README.html#autotoc_md170"/>
|
||||||
<section title="Long signal definitions" ref="md_tests_2README.html#autotoc_md171"/>
|
<section title="Unsupported signal value types" ref="md_tests_2README.html#autotoc_md171"/>
|
||||||
<section title="Extended validation" ref="md_tests_2README.html#autotoc_md172"/>
|
<section title="Long signal definitions" ref="md_tests_2README.html#autotoc_md172"/>
|
||||||
|
<section title="Extended validation" ref="md_tests_2README.html#autotoc_md173"/>
|
||||||
</section>
|
</section>
|
||||||
<section title="Classes" ref="annotated.html">
|
<section title="Classes" ref="annotated.html">
|
||||||
<section title="Class List" ref="annotated.html">
|
<section title="Class List" ref="annotated.html">
|
||||||
@@ -779,6 +780,7 @@
|
|||||||
<section title="dbc_lifetime_test.cpp" ref="dbc__lifetime__test_8cpp_source.html"/>
|
<section title="dbc_lifetime_test.cpp" ref="dbc__lifetime__test_8cpp_source.html"/>
|
||||||
<section title="dbc_parser_test.cpp" ref="dbc__parser__test_8cpp_source.html"/>
|
<section title="dbc_parser_test.cpp" ref="dbc__parser__test_8cpp_source.html"/>
|
||||||
<section title="dbc_pipeline_test.cpp" ref="dbc__pipeline__test_8cpp_source.html"/>
|
<section title="dbc_pipeline_test.cpp" ref="dbc__pipeline__test_8cpp_source.html"/>
|
||||||
|
<section title="dbc_statement_test.cpp" ref="dbc__statement__test_8cpp_source.html"/>
|
||||||
<section title="dbc_tree_model_test.cpp" ref="dbc__tree__model__test_8cpp_source.html"/>
|
<section title="dbc_tree_model_test.cpp" ref="dbc__tree__model__test_8cpp_source.html"/>
|
||||||
<section title="dbc_validation_test.cpp" ref="dbc__validation__test_8cpp_source.html"/>
|
<section title="dbc_validation_test.cpp" ref="dbc__validation__test_8cpp_source.html"/>
|
||||||
<section title="tests/main.cpp" ref="tests_2main_8cpp_source.html"/>
|
<section title="tests/main.cpp" ref="tests_2main_8cpp_source.html"/>
|
||||||
@@ -1020,9 +1022,9 @@
|
|||||||
<keyword name="rawValue" id="DecodedSignalValue::rawValue_a503c90b4b1a610b8252c45e466367c28" ref="structDecodedSignalValue.html#a503c90b4b1a610b8252c45e466367c28"/>
|
<keyword name="rawValue" id="DecodedSignalValue::rawValue_a503c90b4b1a610b8252c45e466367c28" ref="structDecodedSignalValue.html#a503c90b4b1a610b8252c45e466367c28"/>
|
||||||
<keyword name="receivers" id="DecodeSignal::receivers_abdbae62a64d2df716bf60c6b67b30eaa" ref="structDecodeSignal.html#abdbae62a64d2df716bf60c6b67b30eaa"/>
|
<keyword name="receivers" id="DecodeSignal::receivers_abdbae62a64d2df716bf60c6b67b30eaa" ref="structDecodeSignal.html#abdbae62a64d2df716bf60c6b67b30eaa"/>
|
||||||
<keyword name="receivers" id="SignalInfo::receivers_a2c95562fd0b29327a7fd7b1e6feee7f3" ref="structSignalInfo.html#a2c95562fd0b29327a7fd7b1e6feee7f3"/>
|
<keyword name="receivers" id="SignalInfo::receivers_a2c95562fd0b29327a7fd7b1e6feee7f3" ref="structSignalInfo.html#a2c95562fd0b29327a7fd7b1e6feee7f3"/>
|
||||||
|
<keyword name="RegisterType(const std::string &keyword)" id="DbcStatementDispatcher::RegisterType_a2c6e9a614ed747275d43bcccc50d0b2d" ref="classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d"/>
|
||||||
<keyword name="registerType(const ClassId &id)" id="TypeFactory::registerType_ad6d85795285ee21193ac03e1b24762d3" ref="classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3"/>
|
<keyword name="registerType(const ClassId &id)" id="TypeFactory::registerType_ad6d85795285ee21193ac03e1b24762d3" ref="classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3"/>
|
||||||
<keyword name="registerType(const std::string &id)" id="TypeFactory< std::string, DbcStatementHandler >::registerType_ad6d85795285ee21193ac03e1b24762d3" ref="classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3"/>
|
<keyword name="registerType(const std::string &id)" id="TypeFactory< std::string, DbcStatementHandler >::registerType_ad6d85795285ee21193ac03e1b24762d3" ref="classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3"/>
|
||||||
<keyword name="RegisterType(const std::string &keyword)" id="DbcStatementDispatcher::RegisterType_a2c6e9a614ed747275d43bcccc50d0b2d" ref="classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d"/>
|
|
||||||
<keyword name="ResolveAttributes(const std::string &filePath, std::vector< DbcDiagnostic > &diagnostics)" id="DbcParseContext::ResolveAttributes_a1ac7f4a54550aaddef08749806f87001" ref="structDbcParseContext.html#a1ac7f4a54550aaddef08749806f87001"/>
|
<keyword name="ResolveAttributes(const std::string &filePath, std::vector< DbcDiagnostic > &diagnostics)" id="DbcParseContext::ResolveAttributes_a1ac7f4a54550aaddef08749806f87001" ref="structDbcParseContext.html#a1ac7f4a54550aaddef08749806f87001"/>
|
||||||
<keyword name="ResolveComments(const std::string &filePath)" id="DbcParseContext::ResolveComments_aeae343c57a244634489a0e0b960155d7" ref="structDbcParseContext.html#aeae343c57a244634489a0e0b960155d7"/>
|
<keyword name="ResolveComments(const std::string &filePath)" id="DbcParseContext::ResolveComments_aeae343c57a244634489a0e0b960155d7" ref="structDbcParseContext.html#aeae343c57a244634489a0e0b960155d7"/>
|
||||||
<keyword name="ResolveValueDescriptions(const std::string &filePath)" id="DbcParseContext::ResolveValueDescriptions_ab5552dad944fde7fa6add6464ddb5369" ref="structDbcParseContext.html#ab5552dad944fde7fa6add6464ddb5369"/>
|
<keyword name="ResolveValueDescriptions(const std::string &filePath)" id="DbcParseContext::ResolveValueDescriptions_ab5552dad944fde7fa6add6464ddb5369" ref="structDbcParseContext.html#ab5552dad944fde7fa6add6464ddb5369"/>
|
||||||
@@ -1180,6 +1182,7 @@
|
|||||||
<file>dbc__pipeline__test_8cpp_source.html</file>
|
<file>dbc__pipeline__test_8cpp_source.html</file>
|
||||||
<file>dbc__statement__handler_8cpp_source.html</file>
|
<file>dbc__statement__handler_8cpp_source.html</file>
|
||||||
<file>dbc__statement__handler_8h_source.html</file>
|
<file>dbc__statement__handler_8h_source.html</file>
|
||||||
|
<file>dbc__statement__test_8cpp_source.html</file>
|
||||||
<file>dbc__tree__builder_8cpp.html</file>
|
<file>dbc__tree__builder_8cpp.html</file>
|
||||||
<file>dbc__tree__builder_8cpp_source.html</file>
|
<file>dbc__tree__builder_8cpp_source.html</file>
|
||||||
<file>dbc__tree__builder_8h.html</file>
|
<file>dbc__tree__builder_8h.html</file>
|
||||||
|
|||||||
@@ -645,7 +645,7 @@ Multiplexing</h1>
|
|||||||
<div class="line"> SG_ Value m0 : 16|8@1+ (1,0) [0|255] "" ECU</div>
|
<div class="line"> SG_ Value m0 : 16|8@1+ (1,0) [0|255] "" ECU</div>
|
||||||
<div class="line">SG_MUL_VAL_ 1 Child Root 1-2, 4-4;</div>
|
<div class="line">SG_MUL_VAL_ 1 Child Root 1-2, 4-4;</div>
|
||||||
<div class="line">SG_MUL_VAL_ 1 Value Child 3-5;</div>
|
<div class="line">SG_MUL_VAL_ 1 Value Child 3-5;</div>
|
||||||
</div><!-- fragment --><p>Here <code>Value</code> is active when <code>Root</code> is 1, 2, or 4 <b>and</b> <code>Child</code> is 3 through 5. Explicit ranges override the marker value. Repeated statements for the same signal/selector merge their range alternatives. Each signal has at most one parent selector; conflicting parent references are rejected. Multiple independent root selectors are supported. Statements and selectors may precede or follow their targets. Decimal values retain the full <code>uint64_t</code> range and must fit the parent's bit width. Ranges are stored without expanding individual values. Malformed ranges, unresolved references, signed selectors, ambiguous implicit selectors, and dependency cycles produce <code>InvalidMultiplexing</code> diagnostics. Statement errors retain the <code>SG_MUL_VAL_</code> source line; graph and overlap errors identify the affected signal declaration.</p>
|
</div><!-- fragment --><p>Here <code>Value</code> is active when <code>Root</code> is 1, 2, or 4 <b>and</b> <code>Child</code> is 3 through 5. Explicit ranges override the marker value. Repeated statements for the same signal/selector merge their range alternatives. Each signal has at most one parent selector; conflicting parent references are rejected. Multiple independent root selectors are supported. Statements and selectors may precede or follow their targets. Decimal values retain the full <code>uint64_t</code> range and must fit the parent's bit width. Ranges are stored without expanding individual values. <code>SG_MUL_VAL_</code> headers, decimal bounds, and range lists are scanned iteratively, without regular expressions or a new statement-length limit. Long valid lists are preserved; malformed ranges and trailing text produce source-located errors. Malformed ranges, unresolved references, signed selectors, ambiguous implicit selectors, and dependency cycles produce <code>InvalidMultiplexing</code> diagnostics. Statement errors retain the <code>SG_MUL_VAL_</code> source line; graph and overlap errors identify the affected signal declaration.</p>
|
||||||
<p>Signal bits may overlap only when the complete ancestor conditions prove the signals mutually exclusive: at least one shared selector has disjoint ranges. This includes nested siblings using the same payload bits and independent selectors, whose branches may be active simultaneously. Validation uses Intel or Motorola bit traversal, including mixed byte orders. Metadata survives runtime and tree builders; the optional Qt adapter does not add multiplexing roles yet.</p>
|
<p>Signal bits may overlap only when the complete ancestor conditions prove the signals mutually exclusive: at least one shared selector has disjoint ranges. This includes nested siblings using the same payload bits and independent selectors, whose branches may be active simultaneously. Validation uses Intel or Motorola bit traversal, including mixed byte orders. Metadata survives runtime and tree builders; the optional Qt adapter does not add multiplexing roles yet.</p>
|
||||||
<p>The decoder checks ancestors from root to leaf using <b>raw unsigned values</b>. An inactive ancestor leaves descendants inactive even if their selector bytes are absent. Missing bytes on an otherwise active selector path produce <code>SelectorUnavailable</code>. Selective decoding reads required ancestors internally; result order remains selection or definition order. Factor, offset, and <code>VAL_</code> descriptions do not influence branch selection.</p>
|
<p>The decoder checks ancestors from root to leaf using <b>raw unsigned values</b>. An inactive ancestor leaves descendants inactive even if their selector bytes are absent. Missing bytes on an otherwise active selector path produce <code>SelectorUnavailable</code>. Selective decoding reads required ancestors internally; result order remains selection or definition order. Factor, offset, and <code>VAL_</code> descriptions do not influence branch selection.</p>
|
||||||
<p>Each result has <code>SignalDecodeStatus status</code>:</p>
|
<p>Each result has <code>SignalDecodeStatus status</code>:</p>
|
||||||
@@ -876,7 +876,7 @@ Signal value descriptions (<tt>VAL_</tt>)</h1>
|
|||||||
<div class="fragment"><div class="line">BO_ 256 Status: 8 ECU</div>
|
<div class="fragment"><div class="line">BO_ 256 Status: 8 ECU</div>
|
||||||
<div class="line"> SG_ State : 0|8@1+ (1,0) [0|255] "" ECU</div>
|
<div class="line"> SG_ State : 0|8@1+ (1,0) [0|255] "" ECU</div>
|
||||||
<div class="line">VAL_ 256 State 0 "Off" 1 "On" 2 "Error";</div>
|
<div class="line">VAL_ 256 State 0 "Off" 1 "On" 2 "Error";</div>
|
||||||
</div><!-- fragment --><p>Each statement must occupy one physical line, contain at least one integer/text pair, and end with a semicolon. Spaces and tabs are accepted between fields; descriptions may contain whitespace, semicolons, and empty text. Inside quoted text, escape a quote or a backslash with a preceding backslash; other escapes are rejected. Keys are decimal integers in <code>INT64_MIN..UINT64_MAX</code>, with an optional minus sign; plus signs, fractions, hexadecimal numbers, exponents, and overflow are rejected. Keys never pass through <code>double</code>.</p>
|
</div><!-- fragment --><p>Each statement must occupy one physical line, contain at least one integer/text pair, and end with a semicolon. Spaces and tabs are accepted between fields; descriptions may contain whitespace, semicolons, and empty text. Inside quoted text, escape a quote or a backslash with a preceding backslash; other escapes are rejected. Headers, quoted descriptions, and pairs are scanned iteratively, without regular expressions or repeatedly removing the parsed prefix. Long valid descriptions and lists are preserved without a new length limit; malformed input returns the same source-located diagnostics as short statements. Keys are decimal integers in <code>INT64_MIN..UINT64_MAX</code>, with an optional minus sign; plus signs, fractions, hexadecimal numbers, exponents, and overflow are rejected. Keys never pass through <code>double</code>.</p>
|
||||||
<p><code>VAL_</code> may appear before or after its frame and signal declarations. References are resolved after reading the file using the same CAN ID normalization as <code>BO_</code>, including bit 31 for extended identifiers. Standard and extended frames with the same normalized ID remain distinct. Missing or ambiguous references, malformed statements, and duplicate integer keys produce <code>path:line: description</code> errors at the originating <code>VAL_</code> line. Distinct keys from multiple statements are merged; <code>0</code>, <code>00</code>, and <code>-0</code> are the same key. Keys need not fit the referenced signal's bit width or signedness; unreachable keys simply cannot match a decode.</p>
|
<p><code>VAL_</code> may appear before or after its frame and signal declarations. References are resolved after reading the file using the same CAN ID normalization as <code>BO_</code>, including bit 31 for extended identifiers. Standard and extended frames with the same normalized ID remain distinct. Missing or ambiguous references, malformed statements, and duplicate integer keys produce <code>path:line: description</code> errors at the originating <code>VAL_</code> line. Distinct keys from multiple statements are merged; <code>0</code>, <code>00</code>, and <code>-0</code> are the same key. Keys need not fit the referenced signal's bit width or signedness; unreachable keys simply cannot match a decode.</p>
|
||||||
<p>Mappings are available as <code><a class="el" href="structSignalInfo.html#a43f47d0433d0cc39076bd7278b46af9c">SignalInfo::valueDescriptions</a></code> and <code><a class="el" href="structDecodeSignal.html#a822155d9bf4ed5f3300c9e9befe606ff">DecodeSignal::valueDescriptions</a></code>, and survive both database builders, including <code><a class="el" href="classTreeNode.html#a226518612d0d00b5988a2c44fc21d3f1" title="Get signal payload if node is signal.">TreeNode::GetSignal()</a></code>. Consumers can look up a decoded result directly:</p>
|
<p>Mappings are available as <code><a class="el" href="structSignalInfo.html#a43f47d0433d0cc39076bd7278b46af9c">SignalInfo::valueDescriptions</a></code> and <code><a class="el" href="structDecodeSignal.html#a822155d9bf4ed5f3300c9e9befe606ff">DecodeSignal::valueDescriptions</a></code>, and survive both database builders, including <code><a class="el" href="classTreeNode.html#a226518612d0d00b5988a2c44fc21d3f1" title="Get signal payload if node is signal.">TreeNode::GetSignal()</a></code>. Consumers can look up a decoded result directly:</p>
|
||||||
<div class="fragment"><div class="line"><span class="keyword">const</span> <a class="code hl_struct" href="structDecodedSignalValue.html">DecodedSignalValue</a> &value = decodedFrame.signals.at(0);</div>
|
<div class="fragment"><div class="line"><span class="keyword">const</span> <a class="code hl_struct" href="structDecodedSignalValue.html">DecodedSignalValue</a> &value = decodedFrame.signals.at(0);</div>
|
||||||
@@ -972,7 +972,7 @@ Build Integration</h1>
|
|||||||
</div><!-- fragment --><p><code>core/core_files.pri</code> lists the library sources and headers. Consumers include <code>core/core.pri</code> for include paths and library linkage; the test source lists live in <code>tests/parser_tests.pri</code> and <code>tests/decoder_tests.pri</code>. When building a consumer separately, pass <code>DBC_CORE_BUILD_DIR=/absolute/path/to/build/core</code> to qmake.</p>
|
</div><!-- fragment --><p><code>core/core_files.pri</code> lists the library sources and headers. Consumers include <code>core/core.pri</code> for include paths and library linkage; the test source lists live in <code>tests/parser_tests.pri</code> and <code>tests/decoder_tests.pri</code>. When building a consumer separately, pass <code>DBC_CORE_BUILD_DIR=/absolute/path/to/build/core</code> to qmake.</p>
|
||||||
<h2><a class="anchor" id="autotoc_md147"></a>
|
<h2><a class="anchor" id="autotoc_md147"></a>
|
||||||
Local core regression checks</h2>
|
Local core regression checks</h2>
|
||||||
<p>Run <code>bash tests/run_core_ci.sh release</code> or <code>bash tests/run_core_ci.sh sanitize</code> to build the core archive with Qt 6.8.2, run all six core QtTest suites (parser, decoder, coverage, lifetime, validation, and pipeline/builder integration), and run both the qmake and standalone Qt-free tree tests. The sanitizer mode uses AddressSanitizer and UndefinedBehaviorSanitizer, with leak detection enabled by default and fatal sanitizer errors.</p>
|
<p>Run <code>bash tests/run_core_ci.sh release</code> or <code>bash tests/run_core_ci.sh sanitize</code> to build the core archive with Qt 6.8.2, run all seven core QtTest suites (parser, statement robustness, decoder, coverage, lifetime, validation, and pipeline/builder integration), and run both the qmake and standalone Qt-free tree tests. The sanitizer mode uses AddressSanitizer and UndefinedBehaviorSanitizer, with leak detection enabled by default and fatal sanitizer errors.</p>
|
||||||
<p>See <a href="tests/README.md#local-regression-checks">Local regression checks</a> for prerequisites and environment overrides. No automatic CI workflow is configured.</p>
|
<p>See <a href="tests/README.md#local-regression-checks">Local regression checks</a> for prerequisites and environment overrides. No automatic CI workflow is configured.</p>
|
||||||
<h2><a class="anchor" id="autotoc_md148"></a>
|
<h2><a class="anchor" id="autotoc_md148"></a>
|
||||||
Build core without Qt libraries</h2>
|
Build core without Qt libraries</h2>
|
||||||
@@ -1080,7 +1080,7 @@ Regression tests</h1>
|
|||||||
<p>See <a class="el" href="md_tests_2README.html">tests/README.md</a> for QtTest build and execution commands. Tests cover frame validation and error locations, Intel and Motorola extraction, signal syntax and payload bounds, <code>VAL_</code> syntax and reference validation, raw description lookup and preservation through both builders, statement dispatch, signed and unsigned 64-bit boundaries, physical conversion, numeric output, and invalid signal payloads. <code><a class="el" href="dbc__pipeline__test_8cpp_source.html">dbc_pipeline_test.cpp</a></code> follows temporary DBC fixtures through parsed metadata, runtime frame/signal lookups, decoded raw/physical values and descriptions, and tree nodes. It verifies all supported metadata in both builders, standard and extended frames sharing a numeric ID, empty databases, comments, and replacement with another fixture or an empty database.</p>
|
<p>See <a class="el" href="md_tests_2README.html">tests/README.md</a> for QtTest build and execution commands. Tests cover frame validation and error locations, Intel and Motorola extraction, signal syntax and payload bounds, <code>VAL_</code> syntax and reference validation, raw description lookup and preservation through both builders, statement dispatch, signed and unsigned 64-bit boundaries, physical conversion, numeric output, and invalid signal payloads. <code><a class="el" href="dbc__pipeline__test_8cpp_source.html">dbc_pipeline_test.cpp</a></code> follows temporary DBC fixtures through parsed metadata, runtime frame/signal lookups, decoded raw/physical values and descriptions, and tree nodes. It verifies all supported metadata in both builders, standard and extended frames sharing a numeric ID, empty databases, comments, and replacement with another fixture or an empty database.</p>
|
||||||
<h1><a class="anchor" id="autotoc_md155"></a>
|
<h1><a class="anchor" id="autotoc_md155"></a>
|
||||||
Code review and additional checks</h1>
|
Code review and additional checks</h1>
|
||||||
<p>Attribute numeric parsing shares one locale-independent converter for integer and floating-point values. Default application skips unrelated scopes, CAN ID normalization uses the validated identifier mask, and signal layout validation owns the length checks. Statement handlers continue to use <code><a class="el" href="classTypeFactory.html" title="Registry-based factory for creating objects by runtime identifier.">TypeFactory</a></code>. Core, adapter, example, and test C++ sources use explicit return types and contain no lambdas. Public metadata and parser-state comments use Doxygen descriptions.</p>
|
<p>Attribute numeric parsing shares one locale-independent converter for integer and floating-point values. Default application skips unrelated scopes, CAN ID normalization uses the validated identifier mask, and signal layout validation owns the length checks. Statement handlers continue to use <code><a class="el" href="classTypeFactory.html" title="Registry-based factory for creating objects by runtime identifier.">TypeFactory</a></code>. Core, adapter, example, and test C++ sources use explicit return types and contain no lambdas. DBC statement parsing uses iterative scanners rather than regular expressions. Public metadata and parser-state comments use Doxygen descriptions.</p>
|
||||||
<p>See <a href="tests/README.md#extended-validation">tests/README.md</a> for attribute boundary regressions, sanitizer commands, and the latest validation results.</p>
|
<p>See <a href="tests/README.md#extended-validation">tests/README.md</a> for attribute boundary regressions, sanitizer commands, and the latest validation results.</p>
|
||||||
<h1><a class="anchor" id="autotoc_md156"></a>
|
<h1><a class="anchor" id="autotoc_md156"></a>
|
||||||
Measuring code coverage</h1>
|
Measuring code coverage</h1>
|
||||||
|
|||||||
@@ -115,6 +115,8 @@ Testing</h3>
|
|||||||
<h3><a class="anchor" id="autotoc_md11"></a>
|
<h3><a class="anchor" id="autotoc_md11"></a>
|
||||||
Fixed</h3>
|
Fixed</h3>
|
||||||
<ul>
|
<ul>
|
||||||
|
<li>Replace the remaining <code>VAL_</code> and <code>SG_MUL_VAL_</code> regular expressions with a shared forward-only statement reader. Long descriptions and range lists no longer exhaust the stack. Preserve quoted escapes, exact integer values, deferred references, duplicate checks, and source-located diagnostics without imposing a new statement-length limit. Avoid repeatedly erasing <code>VAL_</code> prefixes.</li>
|
||||||
|
<li>Add and register a dedicated statement robustness suite for 50,000-character fields, 10,000 value pairs/ranges, malformed long inputs, both parser APIs, metadata preservation, value lookup, and active/inactive branch decoding. Release and ASan/UBSan builds with the optional Qt adapter each pass 2,449 core checks, seven model checks, and the qmake tree test. One locale case skips; leak checking remains disabled due to ptrace.</li>
|
||||||
<li>Reject all <code>SIG_VALTYPE_</code> declarations with a source-located <code>UnsupportedSignalType</code> error instead of silently decoding their payload as integers. Both parser APIs reject the unsupported operator, including type 0; the diagnostic API publishes no partial database. Namespace symbol listings remain quiet. No permissive mode is introduced.</li>
|
<li>Reject all <code>SIG_VALTYPE_</code> declarations with a source-located <code>UnsupportedSignalType</code> error instead of silently decoding their payload as integers. Both parser APIs reject the unsupported operator, including type 0; the diagnostic API publishes no partial database. Namespace symbol listings remain quiet. No permissive mode is introduced.</li>
|
||||||
<li>Display parser warnings and errors in the demo, and stop before building or decoding when parsing fails. Add parser and pipeline regressions for float32, float64, source locations, declaration order, and unchanged integer decoding. Verify Release and ASan/UBSan builds with the optional Qt adapter: 2,420 core checks, seven model checks, and the qmake tree test pass in each build. One named-locale case skips; leak checking remains disabled due to ptrace. Build the demo and verify error exits, visible warnings, and integer input.</li>
|
<li>Display parser warnings and errors in the demo, and stop before building or decoding when parsing fails. Add parser and pipeline regressions for float32, float64, source locations, declaration order, and unchanged integer decoding. Verify Release and ASan/UBSan builds with the optional Qt adapter: 2,420 core checks, seven model checks, and the qmake tree test pass in each build. One named-locale case skips; leak checking remains disabled due to ptrace. Build the demo and verify error exits, visible warnings, and integer input.</li>
|
||||||
<li>Replace recursive regular-expression matching for <code>SG_</code> statements with an iterative field scanner. Long unit strings no longer overflow the stack.</li>
|
<li>Replace recursive regular-expression matching for <code>SG_</code> statements with an iterative field scanner. Long unit strings no longer overflow the stack.</li>
|
||||||
|
|||||||
@@ -109,10 +109,10 @@ $(document).ready(function(){initNavTree('md_tests_2README.html',''); initResiza
|
|||||||
<div class="line"> DBC_CORE_BUILD_DIR=/absolute/path/to/build/core</div>
|
<div class="line"> DBC_CORE_BUILD_DIR=/absolute/path/to/build/core</div>
|
||||||
<div class="line">make</div>
|
<div class="line">make</div>
|
||||||
<div class="line">make check</div>
|
<div class="line">make check</div>
|
||||||
</div><!-- fragment --><p><code>parser_tests.pri</code> and <code>decoder_tests.pri</code> include the original test sources; <code>tests.pro</code> also includes <code><a class="el" href="dbc__coverage__test_8cpp_source.html">dbc_coverage_test.cpp</a></code>, <code><a class="el" href="dbc__lifetime__test_8cpp_source.html">dbc_lifetime_test.cpp</a></code>, <code><a class="el" href="dbc__validation__test_8cpp_source.html">dbc_validation_test.cpp</a></code>, and <code><a class="el" href="dbc__pipeline__test_8cpp_source.html">dbc_pipeline_test.cpp</a></code>. <code>../core/core.pri</code> supplies the library include path and linkage.</p>
|
</div><!-- fragment --><p><code>parser_tests.pri</code> includes <code><a class="el" href="dbc__parser__test_8cpp_source.html">dbc_parser_test.cpp</a></code> and <code><a class="el" href="dbc__statement__test_8cpp_source.html">dbc_statement_test.cpp</a></code>; <code>decoder_tests.pri</code> includes the decoder test source; <code>tests.pro</code> also includes <code><a class="el" href="dbc__coverage__test_8cpp_source.html">dbc_coverage_test.cpp</a></code>, <code><a class="el" href="dbc__lifetime__test_8cpp_source.html">dbc_lifetime_test.cpp</a></code>, <code><a class="el" href="dbc__validation__test_8cpp_source.html">dbc_validation_test.cpp</a></code>, and <code><a class="el" href="dbc__pipeline__test_8cpp_source.html">dbc_pipeline_test.cpp</a></code>. <code>../core/core.pri</code> supplies the library include path and linkage.</p>
|
||||||
<h1><a class="anchor" id="autotoc_md161"></a>
|
<h1><a class="anchor" id="autotoc_md161"></a>
|
||||||
Local regression checks</h1>
|
Local regression checks</h1>
|
||||||
<p><code>run_core_ci.sh</code> builds the core archive, runs all six QtTest suites and the qmake tree target with <code>make check</code>, then compiles and runs the standalone C++17 tree/builder test without Qt. A failed command returns a nonzero status. The <code>sanitize</code> mode applies ASan/UBSan flags to core, tests, and the standalone executable, with leak detection enabled by default and sanitizer errors fatal. The optional adapter is not built. No automatic CI workflow is configured.</p>
|
<p><code>run_core_ci.sh</code> builds the core archive, runs all seven QtTest suites and the qmake tree target with <code>make check</code>, then compiles and runs the standalone C++17 tree/builder test without Qt. A failed command returns a nonzero status. The <code>sanitize</code> mode applies ASan/UBSan flags to core, tests, and the standalone executable, with leak detection enabled by default and sanitizer errors fatal. The optional adapter is not built. No automatic CI workflow is configured.</p>
|
||||||
<p>From the repository root, with Qt 6.8.2 available:</p>
|
<p>From the repository root, with Qt 6.8.2 available:</p>
|
||||||
<div class="fragment"><div class="line">bash tests/run_core_ci.sh release</div>
|
<div class="fragment"><div class="line">bash tests/run_core_ci.sh release</div>
|
||||||
<div class="line">bash tests/run_core_ci.sh sanitize</div>
|
<div class="line">bash tests/run_core_ci.sh sanitize</div>
|
||||||
@@ -160,15 +160,20 @@ Attribute coverage</h1>
|
|||||||
<p>Parser slots <code>attributes</code>, <code>invalidAttributes</code>, and <code>attributeWarnings</code> cover all five scopes and types, deferred definitions/defaults/targets, explicit values overriding defaults, repeated assignments, escaped strings, typed range/scope errors, duplicate definitions/defaults, unknown attributes and missing targets. They check source diagnostics and the throwing API, distinct standard/extended targets, frame cycle times and enum labels, unsupported formats and ID conflicts, unchanged J1939 opt-in, and runtime/tree propagation. Existing unsupported-statement checks now use relation forms, which remain unsupported, instead of supported attribute forms.</p>
|
<p>Parser slots <code>attributes</code>, <code>invalidAttributes</code>, and <code>attributeWarnings</code> cover all five scopes and types, deferred definitions/defaults/targets, explicit values overriding defaults, repeated assignments, escaped strings, typed range/scope errors, duplicate definitions/defaults, unknown attributes and missing targets. They check source diagnostics and the throwing API, distinct standard/extended targets, frame cycle times and enum labels, unsupported formats and ID conflicts, unchanged J1939 opt-in, and runtime/tree propagation. Existing unsupported-statement checks now use relation forms, which remain unsupported, instead of supported attribute forms.</p>
|
||||||
<p>Attribute changes were verified with <code>qmake6 ../dbc.pro</code>, <code>make -j4</code>, and <code>make check</code> in <code>build/</code>: all six QtTest suites and the qmake tree target passed. The standalone C++17 tree test also passed. The existing named comma-decimal C locale test skipped because the locale is not installed.</p>
|
<p>Attribute changes were verified with <code>qmake6 ../dbc.pro</code>, <code>make -j4</code>, and <code>make check</code> in <code>build/</code>: all six QtTest suites and the qmake tree target passed. The standalone C++17 tree test also passed. The existing named comma-decimal C locale test skipped because the locale is not installed.</p>
|
||||||
<h1><a class="anchor" id="autotoc_md170"></a>
|
<h1><a class="anchor" id="autotoc_md170"></a>
|
||||||
|
Long value descriptions and multiplex ranges</h1>
|
||||||
|
<p><code><a class="el" href="dbc__statement__test_8cpp_source.html">dbc_statement_test.cpp</a></code> adds a separate <code>StatementParserTest</code> suite to the existing parser qmake source list and the main test runner. Both parser APIs are checked with 50,000-character descriptions (including quotes, backslashes, semicolons, and spaces), 10,000 <code>VAL_</code> pairs, 10,000 multiplex ranges, and long numeric bounds and whitespace. Valid metadata must survive parsing without truncation, support value-description lookup after decoding, and activate or skip multiplex branches correctly. Statements may precede or follow definitions.</p>
|
||||||
|
<p>Malformed long statements cover incomplete quotes/escapes, invalid escapes, missing separators and semicolons, duplicate keys, numeric overflow, empty and reversed ranges, trailing text, and unresolved long names. The diagnostic API must return an empty database with the correct category, path, and source line; the throwing API must report that same location.</p>
|
||||||
|
<p>Verified with Qt 6.8.2 in separate Release and ASan/UBSan builds with <code>CONFIG+=dbc_qt</code>: each passed 2,449 core QtTest checks (including 29 checks in the new suite), seven model checks, and the qmake tree test. One named-locale case skipped because the locale is unavailable. Sanitizer errors were fatal; local leak checking used <code>detect_leaks=0</code> because of the documented ptrace restriction.</p>
|
||||||
|
<h1><a class="anchor" id="autotoc_md171"></a>
|
||||||
Unsupported signal value types</h1>
|
Unsupported signal value types</h1>
|
||||||
<p><code>unsupportedSignalValueTypes</code> verifies that both parser APIs reject <code>SIG_VALTYPE_</code> declarations with <code>UnsupportedSignalType</code>, the original file path and physical line, and an empty database. Cases include float32/float64, declarations before signal definitions, extended IDs, tabs/CRLF, no final newline, type 0, unknown types, and malformed declarations. Prior warnings are retained; <code>SIG_VALTYPE_</code> symbols inside <code>NS_</code> lists remain quiet.</p>
|
<p><code>unsupportedSignalValueTypes</code> verifies that both parser APIs reject <code>SIG_VALTYPE_</code> declarations with <code>UnsupportedSignalType</code>, the original file path and physical line, and an empty database. Cases include float32/float64, declarations before signal definitions, extended IDs, tabs/CRLF, no final newline, type 0, unknown types, and malformed declarations. Prior warnings are retained; <code>SIG_VALTYPE_</code> symbols inside <code>NS_</code> lists remain quiet.</p>
|
||||||
<p>The pipeline suite checks the IEEE 754 bytes for float32 and float64 <code>1.0</code>. Adding a type declaration must prevent publication of an integer definition, so building from the error result cannot produce a valid decoded signal. The same payloads still decode to exact integers when defined only by supported <code>SG_</code> statements. New cases are included in the existing qmake targets.</p>
|
<p>The pipeline suite checks the IEEE 754 bytes for float32 and float64 <code>1.0</code>. Adding a type declaration must prevent publication of an integer definition, so building from the error result cannot produce a valid decoded signal. The same payloads still decode to exact integers when defined only by supported <code>SG_</code> statements. New cases are included in the existing qmake targets.</p>
|
||||||
<p>Verified with Qt 6.8.2 in separate Release and ASan/UBSan builds with <code>CONFIG+=dbc_qt</code>: each passed 2,420 core QtTest checks, seven model checks, and the qmake tree test. One named-locale case skipped because its locale is unavailable. ASan/UBSan used fatal errors and <code>detect_leaks=0</code> because of the previously documented ptrace restriction. The separately built demo was checked with float32 and float64 declarations (exit 2, source-located error, no decode output), a supported integer definition (exit 0), and an unknown extension (exit 0 with a visible warning).</p>
|
<p>Verified with Qt 6.8.2 in separate Release and ASan/UBSan builds with <code>CONFIG+=dbc_qt</code>: each passed 2,420 core QtTest checks, seven model checks, and the qmake tree test. One named-locale case skipped because its locale is unavailable. ASan/UBSan used fatal errors and <code>detect_leaks=0</code> because of the previously documented ptrace restriction. The separately built demo was checked with float32 and float64 declarations (exit 2, source-located error, no decode output), a supported integer definition (exit 0), and an unknown extension (exit 0 with a visible warning).</p>
|
||||||
<h1><a class="anchor" id="autotoc_md171"></a>
|
<h1><a class="anchor" id="autotoc_md172"></a>
|
||||||
Long signal definitions</h1>
|
Long signal definitions</h1>
|
||||||
<p><code>longSignalDefinitions</code> reproduces the former stack overflow with a 50,000-character unit string. Both parser APIs are exercised with long units, signal names, receivers, decimal numbers, and a list of 10,001 receivers. Valid input must parse without truncating units; malformed input (including missing quotes, delimiters, receiver separators, numeric suffixes, overflow, and trailing receiver commas) must return an empty database and an <code>InvalidStatement</code> diagnostic at the signal's source line, or throw a source-located error through <code>ParseFile()</code>. These cases run as part of the existing parser target and sanitizer builds.</p>
|
<p><code>longSignalDefinitions</code> reproduces the former stack overflow with a 50,000-character unit string. Both parser APIs are exercised with long units, signal names, receivers, decimal numbers, and a list of 10,001 receivers. Valid input must parse without truncating units; malformed input (including missing quotes, delimiters, receiver separators, numeric suffixes, overflow, and trailing receiver commas) must return an empty database and an <code>InvalidStatement</code> diagnostic at the signal's source line, or throw a source-located error through <code>ParseFile()</code>. These cases run as part of the existing parser target and sanitizer builds.</p>
|
||||||
<p>Verified with Qt 6.8.2 in separate Release and ASan/UBSan builds, both with <code>CONFIG+=dbc_qt</code>: <code>make check</code> passed 2,409 core QtTest checks, seven model checks, and the qmake tree test in each build. The named comma-decimal C locale test skipped because the required locale is not installed. The sanitizer run used <code>ASAN_OPTIONS=detect_leaks=0:halt_on_error=1</code> and <code>UBSAN_OPTIONS=halt_on_error=1</code>; address and undefined-behavior checks passed, while leak checking was disabled because of the environment's previously documented ptrace restriction.</p>
|
<p>Verified with Qt 6.8.2 in separate Release and ASan/UBSan builds, both with <code>CONFIG+=dbc_qt</code>: <code>make check</code> passed 2,409 core QtTest checks, seven model checks, and the qmake tree test in each build. The named comma-decimal C locale test skipped because the required locale is not installed. The sanitizer run used <code>ASAN_OPTIONS=detect_leaks=0:halt_on_error=1</code> and <code>UBSAN_OPTIONS=halt_on_error=1</code>; address and undefined-behavior checks passed, while leak checking was disabled because of the environment's previously documented ptrace restriction.</p>
|
||||||
<h1><a class="anchor" id="autotoc_md172"></a>
|
<h1><a class="anchor" id="autotoc_md173"></a>
|
||||||
Extended validation</h1>
|
Extended validation</h1>
|
||||||
<p><code>attributeNumbers</code> checks signed 64-bit limits, leading plus signs, decimal HEX values, FLOAT fractions/exponents, and default overrides under a comma-decimal C++ locale. Node/environment defaults remain on definitions without becoming database attributes. <code>invalidAttributeNumbers</code> supplies 39 data rows, each checked in both definition bounds, a default, and an explicit assignment. The throwing and diagnostic APIs must reject malformed signs, trailing text, hexadecimal notation, non-finite values, overflow, and underflow with the correct error line. Additional malformed-attribute cases cover token separators, scope/type names, reversed FLOAT bounds, value types/ranges, and invalid CAN references.</p>
|
<p><code>attributeNumbers</code> checks signed 64-bit limits, leading plus signs, decimal HEX values, FLOAT fractions/exponents, and default overrides under a comma-decimal C++ locale. Node/environment defaults remain on definitions without becoming database attributes. <code>invalidAttributeNumbers</code> supplies 39 data rows, each checked in both definition bounds, a default, and an explicit assignment. The throwing and diagnostic APIs must reject malformed signs, trailing text, hexadecimal notation, non-finite values, overflow, and underflow with the correct error line. Additional malformed-attribute cases cover token separators, scope/type names, reversed FLOAT bounds, value types/ranges, and invalid CAN references.</p>
|
||||||
<p>Run AddressSanitizer and UndefinedBehaviorSanitizer in a separate directory:</p>
|
<p>Run AddressSanitizer and UndefinedBehaviorSanitizer in a separate directory:</p>
|
||||||
|
|||||||
@@ -181,9 +181,10 @@ var NAVTREE =
|
|||||||
[ "Database validation coverage", "md_tests_2README.html#autotoc_md167", null ],
|
[ "Database validation coverage", "md_tests_2README.html#autotoc_md167", null ],
|
||||||
[ "End-to-end pipeline coverage", "md_tests_2README.html#autotoc_md168", null ],
|
[ "End-to-end pipeline coverage", "md_tests_2README.html#autotoc_md168", null ],
|
||||||
[ "Attribute coverage", "md_tests_2README.html#autotoc_md169", null ],
|
[ "Attribute coverage", "md_tests_2README.html#autotoc_md169", null ],
|
||||||
[ "Unsupported signal value types", "md_tests_2README.html#autotoc_md170", null ],
|
[ "Long value descriptions and multiplex ranges", "md_tests_2README.html#autotoc_md170", null ],
|
||||||
[ "Long signal definitions", "md_tests_2README.html#autotoc_md171", null ],
|
[ "Unsupported signal value types", "md_tests_2README.html#autotoc_md171", null ],
|
||||||
[ "Extended validation", "md_tests_2README.html#autotoc_md172", null ]
|
[ "Long signal definitions", "md_tests_2README.html#autotoc_md172", null ],
|
||||||
|
[ "Extended validation", "md_tests_2README.html#autotoc_md173", null ]
|
||||||
] ],
|
] ],
|
||||||
[ "Classes", "annotated.html", [
|
[ "Classes", "annotated.html", [
|
||||||
[ "Class List", "annotated.html", "annotated_dup" ],
|
[ "Class List", "annotated.html", "annotated_dup" ],
|
||||||
@@ -211,7 +212,7 @@ var NAVTREE =
|
|||||||
var NAVTREEINDEX =
|
var NAVTREEINDEX =
|
||||||
[
|
[
|
||||||
"annotated.html",
|
"annotated.html",
|
||||||
"md_README.html#autotoc_md85"
|
"md_README.html#autotoc_md83"
|
||||||
];
|
];
|
||||||
|
|
||||||
var SYNCONMSG = 'click to disable panel synchronisation';
|
var SYNCONMSG = 'click to disable panel synchronisation';
|
||||||
|
|||||||
@@ -141,14 +141,15 @@ var NAVTREEINDEX0 =
|
|||||||
"dbc__pipeline__test_8cpp_source.html":[5,0,3,4],
|
"dbc__pipeline__test_8cpp_source.html":[5,0,3,4],
|
||||||
"dbc__statement__handler_8cpp_source.html":[5,0,0,10],
|
"dbc__statement__handler_8cpp_source.html":[5,0,0,10],
|
||||||
"dbc__statement__handler_8h_source.html":[5,0,0,11],
|
"dbc__statement__handler_8h_source.html":[5,0,0,11],
|
||||||
|
"dbc__statement__test_8cpp_source.html":[5,0,3,5],
|
||||||
"dbc__tree__builder_8cpp.html":[5,0,0,12],
|
"dbc__tree__builder_8cpp.html":[5,0,0,12],
|
||||||
"dbc__tree__builder_8cpp_source.html":[5,0,0,12],
|
"dbc__tree__builder_8cpp_source.html":[5,0,0,12],
|
||||||
"dbc__tree__builder_8h.html":[5,0,0,13],
|
"dbc__tree__builder_8h.html":[5,0,0,13],
|
||||||
"dbc__tree__builder_8h_source.html":[5,0,0,13],
|
"dbc__tree__builder_8h_source.html":[5,0,0,13],
|
||||||
"dbc__tree__model_8cpp_source.html":[5,0,2,0],
|
"dbc__tree__model_8cpp_source.html":[5,0,2,0],
|
||||||
"dbc__tree__model_8h_source.html":[5,0,2,1],
|
"dbc__tree__model_8h_source.html":[5,0,2,1],
|
||||||
"dbc__tree__model__test_8cpp_source.html":[5,0,3,5],
|
"dbc__tree__model__test_8cpp_source.html":[5,0,3,6],
|
||||||
"dbc__validation__test_8cpp_source.html":[5,0,3,6],
|
"dbc__validation__test_8cpp_source.html":[5,0,3,7],
|
||||||
"decode__database_8cpp_source.html":[5,0,0,14],
|
"decode__database_8cpp_source.html":[5,0,0,14],
|
||||||
"decode__database_8h.html":[5,0,0,15],
|
"decode__database_8h.html":[5,0,0,15],
|
||||||
"decode__database_8h.html#aaeb92d42f5a6e27b8ba19f18d69d142b":[5,0,0,15,4],
|
"decode__database_8h.html#aaeb92d42f5a6e27b8ba19f18d69d142b":[5,0,0,15,4],
|
||||||
@@ -248,6 +249,5 @@ var NAVTREEINDEX0 =
|
|||||||
"md_README.html#autotoc_md76":[2,15],
|
"md_README.html#autotoc_md76":[2,15],
|
||||||
"md_README.html#autotoc_md78":[2,16],
|
"md_README.html#autotoc_md78":[2,16],
|
||||||
"md_README.html#autotoc_md80":[2,17],
|
"md_README.html#autotoc_md80":[2,17],
|
||||||
"md_README.html#autotoc_md82":[2,18],
|
"md_README.html#autotoc_md82":[2,18]
|
||||||
"md_README.html#autotoc_md83":[2,19]
|
|
||||||
};
|
};
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
var NAVTREEINDEX1 =
|
var NAVTREEINDEX1 =
|
||||||
{
|
{
|
||||||
|
"md_README.html#autotoc_md83":[2,19],
|
||||||
"md_README.html#autotoc_md85":[2,20],
|
"md_README.html#autotoc_md85":[2,20],
|
||||||
"md_README.html#autotoc_md87":[2,20,0],
|
"md_README.html#autotoc_md87":[2,20,0],
|
||||||
"md_README.html#autotoc_md89":[2,21],
|
"md_README.html#autotoc_md89":[2,21],
|
||||||
@@ -63,6 +64,7 @@ var NAVTREEINDEX1 =
|
|||||||
"md_tests_2README.html#autotoc_md170":[3,9],
|
"md_tests_2README.html#autotoc_md170":[3,9],
|
||||||
"md_tests_2README.html#autotoc_md171":[3,10],
|
"md_tests_2README.html#autotoc_md171":[3,10],
|
||||||
"md_tests_2README.html#autotoc_md172":[3,11],
|
"md_tests_2README.html#autotoc_md172":[3,11],
|
||||||
|
"md_tests_2README.html#autotoc_md173":[3,12],
|
||||||
"multiplex__graph_8h_source.html":[5,0,0,19],
|
"multiplex__graph_8h_source.html":[5,0,0,19],
|
||||||
"multiplexing_8h_source.html":[5,0,0,20],
|
"multiplexing_8h_source.html":[5,0,0,20],
|
||||||
"pages.html":[],
|
"pages.html":[],
|
||||||
@@ -231,7 +233,7 @@ var NAVTREEINDEX1 =
|
|||||||
"structSignalKey.html#abab371cce740f05111fd3b4013ca6944":[4,0,41,3],
|
"structSignalKey.html#abab371cce740f05111fd3b4013ca6944":[4,0,41,3],
|
||||||
"structSignalKeyHasher.html":[4,0,42],
|
"structSignalKeyHasher.html":[4,0,42],
|
||||||
"structSignalKeyHasher.html#af8869bcb714857af7ad005fbd13bea80":[4,0,42,0],
|
"structSignalKeyHasher.html#af8869bcb714857af7ad005fbd13bea80":[4,0,42,0],
|
||||||
"tests_2main_8cpp_source.html":[5,0,3,7],
|
"tests_2main_8cpp_source.html":[5,0,3,8],
|
||||||
"text__utils_8h_source.html":[5,0,0,23],
|
"text__utils_8h_source.html":[5,0,0,23],
|
||||||
"tree__node_8cpp.html":[5,0,0,24],
|
"tree__node_8cpp.html":[5,0,0,24],
|
||||||
"tree__node_8cpp_source.html":[5,0,0,24],
|
"tree__node_8cpp_source.html":[5,0,0,24],
|
||||||
@@ -241,7 +243,7 @@ var NAVTREEINDEX1 =
|
|||||||
"tree__node_8h.html#acac9cbaeea226ed297804c012dc12b16a3bb3e8c8a24891ba0f7608bcc96f8b0a":[5,0,0,25,1,1],
|
"tree__node_8h.html#acac9cbaeea226ed297804c012dc12b16a3bb3e8c8a24891ba0f7608bcc96f8b0a":[5,0,0,25,1,1],
|
||||||
"tree__node_8h.html#acac9cbaeea226ed297804c012dc12b16afa03eb688ad8aa1db593d33dabd89bad":[5,0,0,25,1,0],
|
"tree__node_8h.html#acac9cbaeea226ed297804c012dc12b16afa03eb688ad8aa1db593d33dabd89bad":[5,0,0,25,1,0],
|
||||||
"tree__node_8h_source.html":[5,0,0,25],
|
"tree__node_8h_source.html":[5,0,0,25],
|
||||||
"tree__node__test_8cpp_source.html":[5,0,3,8],
|
"tree__node__test_8cpp_source.html":[5,0,3,9],
|
||||||
"typefactory_8h_source.html":[5,0,0,26],
|
"typefactory_8h_source.html":[5,0,0,26],
|
||||||
"value__descriptions_8h_source.html":[5,0,0,27]
|
"value__descriptions_8h_source.html":[5,0,0,27]
|
||||||
};
|
};
|
||||||
@@ -13,6 +13,7 @@ var searchData=
|
|||||||
['live_20path_10',['live path',['../md_README.html#autotoc_md127',1,'']]],
|
['live_20path_10',['live path',['../md_README.html#autotoc_md127',1,'']]],
|
||||||
['local_20core_20regression_20checks_11',['Local core regression checks',['../md_README.html#autotoc_md147',1,'']]],
|
['local_20core_20regression_20checks_11',['Local core regression checks',['../md_README.html#autotoc_md147',1,'']]],
|
||||||
['local_20regression_20checks_12',['Local regression checks',['../md_tests_2README.html#autotoc_md161',1,'']]],
|
['local_20regression_20checks_12',['Local regression checks',['../md_tests_2README.html#autotoc_md161',1,'']]],
|
||||||
['long_20signal_20definitions_13',['Long signal definitions',['../md_tests_2README.html#autotoc_md171',1,'']]],
|
['long_20signal_20definitions_13',['Long signal definitions',['../md_tests_2README.html#autotoc_md172',1,'']]],
|
||||||
['lookup_14',['J1939 Opt-in and PGN Lookup',['../md_README.html#autotoc_md114',1,'']]]
|
['long_20value_20descriptions_20and_20multiplex_20ranges_14',['Long value descriptions and multiplex ranges',['../md_tests_2README.html#autotoc_md170',1,'']]],
|
||||||
|
['lookup_15',['J1939 Opt-in and PGN Lookup',['../md_README.html#autotoc_md114',1,'']]]
|
||||||
];
|
];
|
||||||
@@ -6,14 +6,15 @@ var searchData=
|
|||||||
['measuring_20code_20coverage_3',['Measuring code coverage',['../md_README.html#autotoc_md156',1,'']]],
|
['measuring_20code_20coverage_3',['Measuring code coverage',['../md_README.html#autotoc_md156',1,'']]],
|
||||||
['message_4',['message',['../structDbcDiagnostic.html#a124bae82eebeaef46426bd124685ef1b',1,'DbcDiagnostic']]],
|
['message_4',['message',['../structDbcDiagnostic.html#a124bae82eebeaef46426bd124685ef1b',1,'DbcDiagnostic']]],
|
||||||
['metadata_5',['Attributes and frame metadata',['../md_README.html#autotoc_md97',1,'']]],
|
['metadata_5',['Attributes and frame metadata',['../md_README.html#autotoc_md97',1,'']]],
|
||||||
['minimum_6',['minimum',['../structSignalInfo.html#ada7bf94fbeaa26bd08c73982b5af255b',1,'SignalInfo::minimum'],['../structDecodeSignal.html#a0fb84e19a0ab3bd50b6f65c1075ebc25',1,'DecodeSignal::minimum'],['../structAttributeDefinition.html#a18245dba995929a61fd6de1fcdbc8a89',1,'AttributeDefinition::minimum']]],
|
['minimum_6',['minimum',['../structAttributeDefinition.html#a18245dba995929a61fd6de1fcdbc8a89',1,'AttributeDefinition::minimum'],['../structDecodeSignal.html#a0fb84e19a0ab3bd50b6f65c1075ebc25',1,'DecodeSignal::minimum'],['../structSignalInfo.html#ada7bf94fbeaa26bd08c73982b5af255b',1,'SignalInfo::minimum']]],
|
||||||
['model_20adapter_7',['Optional Qt model adapter',['../md_README.html#autotoc_md149',1,'']]],
|
['model_20adapter_7',['Optional Qt model adapter',['../md_README.html#autotoc_md149',1,'']]],
|
||||||
['model_20tests_8',['Tree and optional model tests',['../md_tests_2README.html#autotoc_md164',1,'']]],
|
['model_20tests_8',['Tree and optional model tests',['../md_tests_2README.html#autotoc_md164',1,'']]],
|
||||||
['module_20documentation_9',['DBC Parser and Runtime Decode Module Documentation',['../md_README.html',1,'']]],
|
['module_20documentation_9',['DBC Parser and Runtime Decode Module Documentation',['../md_README.html',1,'']]],
|
||||||
['module_20layout_10',['Module Layout',['../md_README.html#autotoc_md55',1,'']]],
|
['module_20layout_10',['Module Layout',['../md_README.html#autotoc_md55',1,'']]],
|
||||||
['motorola_20extraction_11',['Intel and Motorola Extraction',['../md_README.html#autotoc_md118',1,'']]],
|
['motorola_20extraction_11',['Intel and Motorola Extraction',['../md_README.html#autotoc_md118',1,'']]],
|
||||||
['multiplexerror_12',['MultiplexError',['../classdbc__detail_1_1MultiplexError.html',1,'dbc_detail']]],
|
['multiplex_20ranges_12',['Long value descriptions and multiplex ranges',['../md_tests_2README.html#autotoc_md170',1,'']]],
|
||||||
['multiplexgraph_13',['MultiplexGraph',['../classdbc__detail_1_1MultiplexGraph.html',1,'dbc_detail']]],
|
['multiplexerror_13',['MultiplexError',['../classdbc__detail_1_1MultiplexError.html',1,'dbc_detail']]],
|
||||||
['multiplexing_14',['multiplexing',['../md_README.html#autotoc_md108',1,'Multiplexing'],['../structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8',1,'SignalInfo::multiplexing'],['../structDecodeSignal.html#aea41c055cb255fe7bd178ed5727f28c9',1,'DecodeSignal::multiplexing'],['../structMultiplexing.html',1,'Multiplexing']]],
|
['multiplexgraph_14',['MultiplexGraph',['../classdbc__detail_1_1MultiplexGraph.html',1,'dbc_detail']]],
|
||||||
['multiplexrange_15',['MultiplexRange',['../structMultiplexRange.html',1,'']]]
|
['multiplexing_15',['multiplexing',['../structSignalInfo.html#a8a2e29f307c75926a1bd824266d23ca8',1,'SignalInfo::multiplexing'],['../md_README.html#autotoc_md108',1,'Multiplexing'],['../structDecodeSignal.html#aea41c055cb255fe7bd178ed5727f28c9',1,'DecodeSignal::multiplexing'],['../structMultiplexing.html',1,'Multiplexing']]],
|
||||||
|
['multiplexrange_16',['MultiplexRange',['../structMultiplexRange.html',1,'']]]
|
||||||
];
|
];
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
var searchData=
|
var searchData=
|
||||||
[
|
[
|
||||||
['ranges_0',['ranges',['../structMultiplexing.html#aa174ac4a3af9b361d2de7517dfd4b69e',1,'Multiplexing']]],
|
['ranges_0',['ranges',['../md_tests_2README.html#autotoc_md170',1,'Long value descriptions and multiplex ranges'],['../structMultiplexing.html#aa174ac4a3af9b361d2de7517dfd4b69e',1,'Multiplexing::ranges']]],
|
||||||
['raw_20frame_1',['Decode a raw frame',['../md_README.html#autotoc_md124',1,'']]],
|
['raw_20frame_1',['Decode a raw frame',['../md_README.html#autotoc_md124',1,'']]],
|
||||||
['raw_20value_20representation_20and_20precision_2',['Raw value representation and precision',['../md_README.html#autotoc_md87',1,'']]],
|
['raw_20value_20representation_20and_20precision_2',['Raw value representation and precision',['../md_README.html#autotoc_md87',1,'']]],
|
||||||
['rawcanframe_3',['RawCanFrame',['../structRawCanFrame.html',1,'']]],
|
['rawcanframe_3',['RawCanFrame',['../structRawCanFrame.html',1,'']]],
|
||||||
['rawcanframe_20tt_4',['<tt>RawCanFrame</tt>',['../md_README.html#autotoc_md83',1,'']]],
|
['rawcanframe_20tt_4',['<tt>RawCanFrame</tt>',['../md_README.html#autotoc_md83',1,'']]],
|
||||||
['rawvalue_5',['rawValue',['../structDecodedSignalValue.html#a503c90b4b1a610b8252c45e466367c28',1,'DecodedSignalValue']]],
|
['rawvalue_5',['rawValue',['../structDecodedSignalValue.html#a503c90b4b1a610b8252c45e466367c28',1,'DecodedSignalValue']]],
|
||||||
['receivers_6',['receivers',['../structSignalInfo.html#a2c95562fd0b29327a7fd7b1e6feee7f3',1,'SignalInfo::receivers'],['../structDecodeSignal.html#abdbae62a64d2df716bf60c6b67b30eaa',1,'DecodeSignal::receivers']]],
|
['receivers_6',['receivers',['../structDecodeSignal.html#abdbae62a64d2df716bf60c6b67b30eaa',1,'DecodeSignal::receivers'],['../structSignalInfo.html#a2c95562fd0b29327a7fd7b1e6feee7f3',1,'SignalInfo::receivers']]],
|
||||||
['recommended_20next_20steps_7',['Recommended Next Steps',['../md_README.html#autotoc_md140',1,'']]],
|
['recommended_20next_20steps_7',['Recommended Next Steps',['../md_README.html#autotoc_md140',1,'']]],
|
||||||
['registertype_8',['registertype',['../classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3',1,'TypeFactory::registerType()'],['../classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d',1,'DbcStatementDispatcher::RegisterType()']]],
|
['registertype_8',['registertype',['../classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d',1,'DbcStatementDispatcher::RegisterType()'],['../classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3',1,'TypeFactory::registerType()']]],
|
||||||
['regression_20checks_9',['regression checks',['../md_README.html#autotoc_md147',1,'Local core regression checks'],['../md_tests_2README.html#autotoc_md161',1,'Local regression checks']]],
|
['regression_20checks_9',['regression checks',['../md_README.html#autotoc_md147',1,'Local core regression checks'],['../md_tests_2README.html#autotoc_md161',1,'Local regression checks']]],
|
||||||
['regression_20coverage_10',['Additional regression coverage',['../md_tests_2README.html#autotoc_md165',1,'']]],
|
['regression_20coverage_10',['Additional regression coverage',['../md_tests_2README.html#autotoc_md165',1,'']]],
|
||||||
['regression_20tests_11',['regression tests',['../md_tests_2README.html',1,'QtTest regression tests'],['../md_README.html#autotoc_md154',1,'Regression tests']]],
|
['regression_20tests_11',['regression tests',['../md_tests_2README.html',1,'QtTest regression tests'],['../md_README.html#autotoc_md154',1,'Regression tests']]],
|
||||||
|
|||||||
@@ -5,11 +5,11 @@ var searchData=
|
|||||||
['settree_2',['SetTree',['../classDbcTreeModel.html#a8cb5a81d456cdead42b75fd3462ee00a',1,'DbcTreeModel']]],
|
['settree_2',['SetTree',['../classDbcTreeModel.html#a8cb5a81d456cdead42b75fd3462ee00a',1,'DbcTreeModel']]],
|
||||||
['severity_3',['severity',['../structDbcDiagnostic.html#a75040a94f0313a606478020b0491f81d',1,'DbcDiagnostic']]],
|
['severity_3',['severity',['../structDbcDiagnostic.html#a75040a94f0313a606478020b0491f81d',1,'DbcDiagnostic']]],
|
||||||
['signal_20definition_4',['Signal definition',['../md_README.html#autotoc_md104',1,'']]],
|
['signal_20definition_4',['Signal definition',['../md_README.html#autotoc_md104',1,'']]],
|
||||||
['signal_20definitions_5',['Long signal definitions',['../md_tests_2README.html#autotoc_md171',1,'']]],
|
['signal_20definitions_5',['Long signal definitions',['../md_tests_2README.html#autotoc_md172',1,'']]],
|
||||||
['signal_20identifiers_6',['Stable frame and signal identifiers',['../md_README.html#autotoc_md91',1,'']]],
|
['signal_20identifiers_6',['Stable frame and signal identifiers',['../md_README.html#autotoc_md91',1,'']]],
|
||||||
['signal_20validation_20and_20parse_20errors_7',['Signal validation and parse errors',['../md_README.html#autotoc_md106',1,'']]],
|
['signal_20validation_20and_20parse_20errors_7',['Signal validation and parse errors',['../md_README.html#autotoc_md106',1,'']]],
|
||||||
['signal_20value_20descriptions_20tt_20val_5f_20tt_8',['Signal value descriptions (<tt>VAL_</tt>)',['../md_README.html#autotoc_md136',1,'']]],
|
['signal_20value_20descriptions_20tt_20val_5f_20tt_8',['Signal value descriptions (<tt>VAL_</tt>)',['../md_README.html#autotoc_md136',1,'']]],
|
||||||
['signal_20value_20types_9',['Unsupported signal value types',['../md_tests_2README.html#autotoc_md170',1,'']]],
|
['signal_20value_20types_9',['Unsupported signal value types',['../md_tests_2README.html#autotoc_md171',1,'']]],
|
||||||
['signal_5finfo_2eh_10',['signal_info.h',['../signal__info_8h.html',1,'']]],
|
['signal_5finfo_2eh_10',['signal_info.h',['../signal__info_8h.html',1,'']]],
|
||||||
['signaldecodestatus_11',['SignalDecodeStatus',['../dbc__decoder_8h.html#a5f4a41ee2810487020135b45e8d7559a',1,'dbc_decoder.h']]],
|
['signaldecodestatus_11',['SignalDecodeStatus',['../dbc__decoder_8h.html#a5f4a41ee2810487020135b45e8d7559a',1,'dbc_decoder.h']]],
|
||||||
['signalinfo_12',['SignalInfo',['../structSignalInfo.html',1,'']]],
|
['signalinfo_12',['SignalInfo',['../structSignalInfo.html',1,'']]],
|
||||||
|
|||||||
@@ -38,5 +38,5 @@ var searchData=
|
|||||||
['type_35',['type',['../structAttributeDefinition.html#a5de5484174a8c5f6b309041089d20afc',1,'AttributeDefinition']]],
|
['type_35',['type',['../structAttributeDefinition.html#a5de5484174a8c5f6b309041089d20afc',1,'AttributeDefinition']]],
|
||||||
['typefactory_36',['TypeFactory',['../classTypeFactory.html',1,'']]],
|
['typefactory_36',['TypeFactory',['../classTypeFactory.html',1,'']]],
|
||||||
['typefactory_3c_20std_3a_3astring_2c_20dbcstatementhandler_20_3e_37',['TypeFactory< std::string, DbcStatementHandler >',['../classTypeFactory.html',1,'']]],
|
['typefactory_3c_20std_3a_3astring_2c_20dbcstatementhandler_20_3e_37',['TypeFactory< std::string, DbcStatementHandler >',['../classTypeFactory.html',1,'']]],
|
||||||
['types_38',['Unsupported signal value types',['../md_tests_2README.html#autotoc_md170',1,'']]]
|
['types_38',['Unsupported signal value types',['../md_tests_2README.html#autotoc_md171',1,'']]]
|
||||||
];
|
];
|
||||||
@@ -7,7 +7,7 @@ var searchData=
|
|||||||
['unified_20decode_20strategy_4',['Unified Decode Strategy',['../md_README.html#autotoc_md126',1,'']]],
|
['unified_20decode_20strategy_4',['Unified Decode Strategy',['../md_README.html#autotoc_md126',1,'']]],
|
||||||
['unit_5',['unit',['../structDecodeSignal.html#a38eed9ca7581423fd8bfbedcffc12092',1,'DecodeSignal::unit'],['../structSignalInfo.html#a1f214f03e94ef5794de2d3367bfcbd01',1,'SignalInfo::unit']]],
|
['unit_5',['unit',['../structDecodeSignal.html#a38eed9ca7581423fd8bfbedcffc12092',1,'DecodeSignal::unit'],['../structSignalInfo.html#a1f214f03e94ef5794de2d3367bfcbd01',1,'SignalInfo::unit']]],
|
||||||
['unreleased_6',['Unreleased',['../md_changelog.html#autotoc_md7',1,'']]],
|
['unreleased_6',['Unreleased',['../md_changelog.html#autotoc_md7',1,'']]],
|
||||||
['unsupported_20signal_20value_20types_7',['Unsupported signal value types',['../md_tests_2README.html#autotoc_md170',1,'']]],
|
['unsupported_20signal_20value_20types_7',['Unsupported signal value types',['../md_tests_2README.html#autotoc_md171',1,'']]],
|
||||||
['usage_8',['Example Usage',['../md_README.html#autotoc_md120',1,'']]],
|
['usage_8',['Example Usage',['../md_README.html#autotoc_md120',1,'']]],
|
||||||
['use_20in_20frametap_9',['Intended Use in FrameTap',['../md_README.html#autotoc_md130',1,'']]]
|
['use_20in_20frametap_9',['Intended Use in FrameTap',['../md_README.html#autotoc_md130',1,'']]]
|
||||||
];
|
];
|
||||||
@@ -4,15 +4,16 @@ var searchData=
|
|||||||
['val_5f_20tt_1',['Signal value descriptions (<tt>VAL_</tt>)',['../md_README.html#autotoc_md136',1,'']]],
|
['val_5f_20tt_1',['Signal value descriptions (<tt>VAL_</tt>)',['../md_README.html#autotoc_md136',1,'']]],
|
||||||
['valid_2',['valid',['../structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0',1,'DecodedFrameValue::valid'],['../structDecodedSignalValue.html#aac0ed361af545cde48d0e6f41a859686',1,'DecodedSignalValue::valid']]],
|
['valid_2',['valid',['../structDecodedFrameValue.html#a4f51c31110dba1f73a763c596372beb0',1,'DecodedFrameValue::valid'],['../structDecodedSignalValue.html#aac0ed361af545cde48d0e6f41a859686',1,'DecodedSignalValue::valid']]],
|
||||||
['validatemultiplexing_3',['ValidateMultiplexing',['../structDbcParseContext.html#a908056de0a97316a4ebecb3f99cc400b',1,'DbcParseContext']]],
|
['validatemultiplexing_3',['ValidateMultiplexing',['../structDbcParseContext.html#a908056de0a97316a4ebecb3f99cc400b',1,'DbcParseContext']]],
|
||||||
['validation_4',['Extended validation',['../md_tests_2README.html#autotoc_md172',1,'']]],
|
['validation_4',['Extended validation',['../md_tests_2README.html#autotoc_md173',1,'']]],
|
||||||
['validation_20and_20parse_20errors_5',['validation and parse errors',['../md_README.html#autotoc_md102',1,'Frame validation and parse errors'],['../md_README.html#autotoc_md106',1,'Signal validation and parse errors']]],
|
['validation_20and_20parse_20errors_5',['validation and parse errors',['../md_README.html#autotoc_md102',1,'Frame validation and parse errors'],['../md_README.html#autotoc_md106',1,'Signal validation and parse errors']]],
|
||||||
['validation_20coverage_6',['Database validation coverage',['../md_tests_2README.html#autotoc_md167',1,'']]],
|
['validation_20coverage_6',['Database validation coverage',['../md_tests_2README.html#autotoc_md167',1,'']]],
|
||||||
['value_7',['value',['../structMultiplexing.html#a79158d4fdbfd68a3d51a8ce79d34fd67',1,'Multiplexing::value'],['../structAttributeAssignment.html#a93de8c51c5154219bf18beadcec5708f',1,'AttributeAssignment::value']]],
|
['value_7',['value',['../structMultiplexing.html#a79158d4fdbfd68a3d51a8ce79d34fd67',1,'Multiplexing::value'],['../structAttributeAssignment.html#a93de8c51c5154219bf18beadcec5708f',1,'AttributeAssignment::value']]],
|
||||||
['value_20descriptions_20tt_20val_5f_20tt_8',['Signal value descriptions (<tt>VAL_</tt>)',['../md_README.html#autotoc_md136',1,'']]],
|
['value_20descriptions_20and_20multiplex_20ranges_8',['Long value descriptions and multiplex ranges',['../md_tests_2README.html#autotoc_md170',1,'']]],
|
||||||
['value_20representation_20and_20precision_9',['Raw value representation and precision',['../md_README.html#autotoc_md87',1,'']]],
|
['value_20descriptions_20tt_20val_5f_20tt_9',['Signal value descriptions (<tt>VAL_</tt>)',['../md_README.html#autotoc_md136',1,'']]],
|
||||||
['value_20types_10',['Unsupported signal value types',['../md_tests_2README.html#autotoc_md170',1,'']]],
|
['value_20representation_20and_20precision_10',['Raw value representation and precision',['../md_README.html#autotoc_md87',1,'']]],
|
||||||
['valuedescriptions_11',['valuedescriptions',['../structSignalInfo.html#a43f47d0433d0cc39076bd7278b46af9c',1,'SignalInfo::valueDescriptions'],['../structDecodeSignal.html#a822155d9bf4ed5f3300c9e9befe606ff',1,'DecodeSignal::valueDescriptions']]],
|
['value_20types_11',['Unsupported signal value types',['../md_tests_2README.html#autotoc_md171',1,'']]],
|
||||||
['valuetype_12',['valuetype',['../structDecodeSignal.html#a9d37638129263b8902ba5be59baf39a8',1,'DecodeSignal::valueType'],['../decode__database_8h.html#ad9971b6ef33e02ba2c75d19c1d2518a1',1,'ValueType: decode_database.h']]],
|
['valuedescriptions_12',['valuedescriptions',['../structSignalInfo.html#a43f47d0433d0cc39076bd7278b46af9c',1,'SignalInfo::valueDescriptions'],['../structDecodeSignal.html#a822155d9bf4ed5f3300c9e9befe606ff',1,'DecodeSignal::valueDescriptions']]],
|
||||||
['valuetype_20tt_13',['<tt>ValueType</tt>',['../md_README.html#autotoc_md72',1,'']]],
|
['valuetype_13',['valuetype',['../structDecodeSignal.html#a9d37638129263b8902ba5be59baf39a8',1,'DecodeSignal::valueType'],['../decode__database_8h.html#ad9971b6ef33e02ba2c75d19c1d2518a1',1,'ValueType: decode_database.h']]],
|
||||||
['variants_20in_20qt_20creator_14',['Configure all build variants in Qt Creator',['../md_README.html#autotoc_md159',1,'']]]
|
['valuetype_20tt_14',['<tt>ValueType</tt>',['../md_README.html#autotoc_md72',1,'']]],
|
||||||
|
['variants_20in_20qt_20creator_15',['Configure all build variants in Qt Creator',['../md_README.html#autotoc_md159',1,'']]]
|
||||||
];
|
];
|
||||||
+21
-20
@@ -3,7 +3,7 @@ var searchData=
|
|||||||
['a_20raw_20frame_0',['Decode a raw frame',['../md_README.html#autotoc_md124',1,'']]],
|
['a_20raw_20frame_0',['Decode a raw frame',['../md_README.html#autotoc_md124',1,'']]],
|
||||||
['adapter_1',['Optional Qt model adapter',['../md_README.html#autotoc_md149',1,'']]],
|
['adapter_1',['Optional Qt model adapter',['../md_README.html#autotoc_md149',1,'']]],
|
||||||
['addchild_2',['AddChild',['../classTreeNode.html#af87331684d4b40240aec75e3286921d3',1,'TreeNode']]],
|
['addchild_2',['AddChild',['../classTreeNode.html#af87331684d4b40240aec75e3286921d3',1,'TreeNode']]],
|
||||||
['added_3',['added',['../md_changelog.html#autotoc_md29',1,'Added'],['../md_changelog.html#autotoc_md44',1,'Added'],['../md_changelog.html#autotoc_md33',1,'Added'],['../md_changelog.html#autotoc_md26',1,'Added'],['../md_changelog.html#autotoc_md23',1,'Added'],['../md_changelog.html#autotoc_md21',1,'Added'],['../md_changelog.html#autotoc_md16',1,'Added'],['../md_changelog.html#autotoc_md14',1,'Added'],['../md_changelog.html#autotoc_md9',1,'Added']]],
|
['added_3',['added',['../md_changelog.html#autotoc_md26',1,'Added'],['../md_changelog.html#autotoc_md44',1,'Added'],['../md_changelog.html#autotoc_md33',1,'Added'],['../md_changelog.html#autotoc_md29',1,'Added'],['../md_changelog.html#autotoc_md23',1,'Added'],['../md_changelog.html#autotoc_md21',1,'Added'],['../md_changelog.html#autotoc_md16',1,'Added'],['../md_changelog.html#autotoc_md14',1,'Added'],['../md_changelog.html#autotoc_md9',1,'Added']]],
|
||||||
['additional_20checks_4',['Code review and additional checks',['../md_README.html#autotoc_md155',1,'']]],
|
['additional_20checks_4',['Code review and additional checks',['../md_README.html#autotoc_md155',1,'']]],
|
||||||
['additional_20regression_20coverage_5',['Additional regression coverage',['../md_tests_2README.html#autotoc_md165',1,'']]],
|
['additional_20regression_20coverage_5',['Additional regression coverage',['../md_tests_2README.html#autotoc_md165',1,'']]],
|
||||||
['all_20build_20variants_20in_20qt_20creator_6',['Configure all build variants in Qt Creator',['../md_README.html#autotoc_md159',1,'']]],
|
['all_20build_20variants_20in_20qt_20creator_6',['Configure all build variants in Qt Creator',['../md_README.html#autotoc_md159',1,'']]],
|
||||||
@@ -14,23 +14,24 @@ var searchData=
|
|||||||
['and_20lcov_20on_20debian_20ubuntu_11',['GCC, gcov, and LCOV on Debian/Ubuntu',['../md_README.html#autotoc_md157',1,'']]],
|
['and_20lcov_20on_20debian_20ubuntu_11',['GCC, gcov, and LCOV on Debian/Ubuntu',['../md_README.html#autotoc_md157',1,'']]],
|
||||||
['and_20maintenance_12',['and maintenance',['../md_changelog.html#autotoc_md37',1,'Documentation and maintenance'],['../md_changelog.html#autotoc_md45',1,'Documentation and maintenance']]],
|
['and_20maintenance_12',['and maintenance',['../md_changelog.html#autotoc_md37',1,'Documentation and maintenance'],['../md_changelog.html#autotoc_md45',1,'Documentation and maintenance']]],
|
||||||
['and_20motorola_20extraction_13',['Intel and Motorola Extraction',['../md_README.html#autotoc_md118',1,'']]],
|
['and_20motorola_20extraction_13',['Intel and Motorola Extraction',['../md_README.html#autotoc_md118',1,'']]],
|
||||||
['and_20optional_20model_20tests_14',['Tree and optional model tests',['../md_tests_2README.html#autotoc_md164',1,'']]],
|
['and_20multiplex_20ranges_14',['Long value descriptions and multiplex ranges',['../md_tests_2README.html#autotoc_md170',1,'']]],
|
||||||
['and_20parse_20errors_15',['and parse errors',['../md_README.html#autotoc_md102',1,'Frame validation and parse errors'],['../md_README.html#autotoc_md106',1,'Signal validation and parse errors']]],
|
['and_20optional_20model_20tests_15',['Tree and optional model tests',['../md_tests_2README.html#autotoc_md164',1,'']]],
|
||||||
['and_20pgn_20lookup_16',['J1939 Opt-in and PGN Lookup',['../md_README.html#autotoc_md114',1,'']]],
|
['and_20parse_20errors_16',['and parse errors',['../md_README.html#autotoc_md102',1,'Frame validation and parse errors'],['../md_README.html#autotoc_md106',1,'Signal validation and parse errors']]],
|
||||||
['and_20precision_17',['Raw value representation and precision',['../md_README.html#autotoc_md87',1,'']]],
|
['and_20pgn_20lookup_17',['J1939 Opt-in and PGN Lookup',['../md_README.html#autotoc_md114',1,'']]],
|
||||||
['and_20reload_18',['Definition ownership and reload',['../md_README.html#autotoc_md90',1,'']]],
|
['and_20precision_18',['Raw value representation and precision',['../md_README.html#autotoc_md87',1,'']]],
|
||||||
['and_20reload_20coverage_19',['Definition lifetime and reload coverage',['../md_tests_2README.html#autotoc_md166',1,'']]],
|
['and_20reload_19',['Definition ownership and reload',['../md_README.html#autotoc_md90',1,'']]],
|
||||||
['and_20run_20the_20demo_20',['Build and run the demo',['../md_README.html#autotoc_md151',1,'']]],
|
['and_20reload_20coverage_20',['Definition lifetime and reload coverage',['../md_tests_2README.html#autotoc_md166',1,'']]],
|
||||||
['and_20runtime_20decode_20module_20documentation_21',['DBC Parser and Runtime Decode Module Documentation',['../md_README.html',1,'']]],
|
['and_20run_20the_20demo_21',['Build and run the demo',['../md_README.html#autotoc_md151',1,'']]],
|
||||||
['and_20signal_20identifiers_22',['Stable frame and signal identifiers',['../md_README.html#autotoc_md91',1,'']]],
|
['and_20runtime_20decode_20module_20documentation_22',['DBC Parser and Runtime Decode Module Documentation',['../md_README.html',1,'']]],
|
||||||
['and_20ui_20path_23',['1. Parse and UI path',['../md_README.html#autotoc_md50',1,'']]],
|
['and_20signal_20identifiers_23',['Stable frame and signal identifiers',['../md_README.html#autotoc_md91',1,'']]],
|
||||||
['api_20documentation_24',['Generate API documentation',['../md_README.html#autotoc_md152',1,'']]],
|
['and_20ui_20path_24',['1. Parse and UI path',['../md_README.html#autotoc_md50',1,'']]],
|
||||||
['architecture_25',['High-Level Architecture',['../md_README.html#autotoc_md49',1,'']]],
|
['api_20documentation_25',['Generate API documentation',['../md_README.html#autotoc_md152',1,'']]],
|
||||||
['attribute_20coverage_26',['Attribute coverage',['../md_tests_2README.html#autotoc_md169',1,'']]],
|
['architecture_26',['High-Level Architecture',['../md_README.html#autotoc_md49',1,'']]],
|
||||||
['attributeassignment_27',['AttributeAssignment',['../structAttributeAssignment.html',1,'']]],
|
['attribute_20coverage_27',['Attribute coverage',['../md_tests_2README.html#autotoc_md169',1,'']]],
|
||||||
['attributeassignments_28',['attributeAssignments',['../structDbcDatabase.html#aa7bdf56eb8b7ab5b873e1c096b46d8b6',1,'DbcDatabase']]],
|
['attributeassignment_28',['AttributeAssignment',['../structAttributeAssignment.html',1,'']]],
|
||||||
['attributedefinition_29',['AttributeDefinition',['../structAttributeDefinition.html',1,'']]],
|
['attributeassignments_29',['attributeAssignments',['../structDbcDatabase.html#aa7bdf56eb8b7ab5b873e1c096b46d8b6',1,'DbcDatabase']]],
|
||||||
['attributedefinitions_30',['attributeDefinitions',['../structDbcDatabase.html#a14862245081989f2abf126b5ea6dfdfa',1,'DbcDatabase']]],
|
['attributedefinition_30',['AttributeDefinition',['../structAttributeDefinition.html',1,'']]],
|
||||||
['attributes_31',['attributes',['../structSignalInfo.html#a781766eddbf6641071623c8e5b9acb4a',1,'SignalInfo::attributes'],['../structFrameInfo.html#a9ef2736053b593cf34ba2608cf8275c0',1,'FrameInfo::attributes'],['../structDecodeFrame.html#ad506b03108a40df7e8005638c9c59653',1,'DecodeFrame::attributes'],['../structDecodeSignal.html#a204f65c7ea45a2c148f19c12d922f99b',1,'DecodeSignal::attributes'],['../structDbcDatabase.html#a321839ad81af176444358eb23114eaee',1,'DbcDatabase::attributes']]],
|
['attributedefinitions_31',['attributeDefinitions',['../structDbcDatabase.html#a14862245081989f2abf126b5ea6dfdfa',1,'DbcDatabase']]],
|
||||||
['attributes_20and_20frame_20metadata_32',['Attributes and frame metadata',['../md_README.html#autotoc_md97',1,'']]]
|
['attributes_32',['attributes',['../structSignalInfo.html#a781766eddbf6641071623c8e5b9acb4a',1,'SignalInfo::attributes'],['../structFrameInfo.html#a9ef2736053b593cf34ba2608cf8275c0',1,'FrameInfo::attributes'],['../structDecodeFrame.html#ad506b03108a40df7e8005638c9c59653',1,'DecodeFrame::attributes'],['../structDecodeSignal.html#a204f65c7ea45a2c148f19c12d922f99b',1,'DecodeSignal::attributes'],['../structDbcDatabase.html#a321839ad81af176444358eb23114eaee',1,'DbcDatabase::attributes']]],
|
||||||
|
['attributes_20and_20frame_20metadata_33',['Attributes and frame metadata',['../md_README.html#autotoc_md97',1,'']]]
|
||||||
];
|
];
|
||||||
@@ -66,14 +66,15 @@ var searchData=
|
|||||||
['definition_63',['definition',['../structDecodedSignalValue.html#a828b5ef7faefc14fbf5dbd46249bcad2',1,'DecodedSignalValue::definition'],['../structDecodedFrameValue.html#a33e971ba10030506007aa201c89f351d',1,'DecodedFrameValue::definition'],['../structPgnLookupResult.html#aa5b79b61d2aef48fd6ae070cf5f901c1',1,'PgnLookupResult::definition'],['../md_README.html#autotoc_md100',1,'Frame definition'],['../md_README.html#autotoc_md104',1,'Signal definition']]],
|
['definition_63',['definition',['../structDecodedSignalValue.html#a828b5ef7faefc14fbf5dbd46249bcad2',1,'DecodedSignalValue::definition'],['../structDecodedFrameValue.html#a33e971ba10030506007aa201c89f351d',1,'DecodedFrameValue::definition'],['../structPgnLookupResult.html#aa5b79b61d2aef48fd6ae070cf5f901c1',1,'PgnLookupResult::definition'],['../md_README.html#autotoc_md100',1,'Frame definition'],['../md_README.html#autotoc_md104',1,'Signal definition']]],
|
||||||
['definition_20lifetime_20and_20reload_20coverage_64',['Definition lifetime and reload coverage',['../md_tests_2README.html#autotoc_md166',1,'']]],
|
['definition_20lifetime_20and_20reload_20coverage_64',['Definition lifetime and reload coverage',['../md_tests_2README.html#autotoc_md166',1,'']]],
|
||||||
['definition_20ownership_20and_20reload_65',['Definition ownership and reload',['../md_README.html#autotoc_md90',1,'']]],
|
['definition_20ownership_20and_20reload_65',['Definition ownership and reload',['../md_README.html#autotoc_md90',1,'']]],
|
||||||
['definitions_66',['Long signal definitions',['../md_tests_2README.html#autotoc_md171',1,'']]],
|
['definitions_66',['Long signal definitions',['../md_tests_2README.html#autotoc_md172',1,'']]],
|
||||||
['demo_67',['Build and run the demo',['../md_README.html#autotoc_md151',1,'']]],
|
['demo_67',['Build and run the demo',['../md_README.html#autotoc_md151',1,'']]],
|
||||||
['descriptions_68',['descriptions',['../structPendingValueDescriptions.html#a10ecbaeaed2cc3ac82fada73e7e041dd',1,'PendingValueDescriptions']]],
|
['descriptions_68',['descriptions',['../structPendingValueDescriptions.html#a10ecbaeaed2cc3ac82fada73e7e041dd',1,'PendingValueDescriptions']]],
|
||||||
['descriptions_20tt_20val_5f_20tt_69',['Signal value descriptions (<tt>VAL_</tt>)',['../md_README.html#autotoc_md136',1,'']]],
|
['descriptions_20and_20multiplex_20ranges_69',['Long value descriptions and multiplex ranges',['../md_tests_2README.html#autotoc_md170',1,'']]],
|
||||||
['diagnostic_70',['diagnostic',['../classDbcDiagnosticError.html#ab3965082f01d66b6d5c20525af44235d',1,'DbcDiagnosticError']]],
|
['descriptions_20tt_20val_5f_20tt_70',['Signal value descriptions (<tt>VAL_</tt>)',['../md_README.html#autotoc_md136',1,'']]],
|
||||||
['diagnostics_71',['diagnostics',['../structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679',1,'DbcParseResult::diagnostics'],['../md_README.html#autotoc_md96',1,'Structured diagnostics']]],
|
['diagnostic_71',['diagnostic',['../classDbcDiagnosticError.html#ab3965082f01d66b6d5c20525af44235d',1,'DbcDiagnosticError']]],
|
||||||
['dispatch_72',['Dispatch',['../classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed',1,'DbcStatementDispatcher']]],
|
['diagnostics_72',['diagnostics',['../structDbcParseResult.html#a3a1987b4381bb1e0a34dc09e31483679',1,'DbcParseResult::diagnostics'],['../md_README.html#autotoc_md96',1,'Structured diagnostics']]],
|
||||||
['dlc_73',['dlc',['../structDecodeFrame.html#a51111ac13988be372d5673d12cf3e060',1,'DecodeFrame::dlc'],['../structFrameInfo.html#aa2b198ea0f55e560c123d35e7b3ecab9',1,'FrameInfo::dlc']]],
|
['dispatch_73',['Dispatch',['../classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed',1,'DbcStatementDispatcher']]],
|
||||||
['documentation_74',['documentation',['../md_README.html',1,'DBC Parser and Runtime Decode Module Documentation'],['../md_changelog.html#autotoc_md42',1,'Documentation'],['../md_README.html#autotoc_md152',1,'Generate API documentation']]],
|
['dlc_74',['dlc',['../structDecodeFrame.html#a51111ac13988be372d5673d12cf3e060',1,'DecodeFrame::dlc'],['../structFrameInfo.html#aa2b198ea0f55e560c123d35e7b3ecab9',1,'FrameInfo::dlc']]],
|
||||||
['documentation_20and_20maintenance_75',['documentation and maintenance',['../md_changelog.html#autotoc_md45',1,'Documentation and maintenance'],['../md_changelog.html#autotoc_md37',1,'Documentation and maintenance']]]
|
['documentation_75',['documentation',['../md_README.html',1,'DBC Parser and Runtime Decode Module Documentation'],['../md_changelog.html#autotoc_md42',1,'Documentation'],['../md_README.html#autotoc_md152',1,'Generate API documentation']]],
|
||||||
|
['documentation_20and_20maintenance_76',['documentation and maintenance',['../md_changelog.html#autotoc_md45',1,'Documentation and maintenance'],['../md_changelog.html#autotoc_md37',1,'Documentation and maintenance']]]
|
||||||
];
|
];
|
||||||
@@ -9,6 +9,6 @@ var searchData=
|
|||||||
['example_20usage_6',['Example Usage',['../md_README.html#autotoc_md120',1,'']]],
|
['example_20usage_6',['Example Usage',['../md_README.html#autotoc_md120',1,'']]],
|
||||||
['examples_2fmain_2ecpp_7',['main.cpp',['../examples_2main_8cpp.html',1,'']]],
|
['examples_2fmain_2ecpp_7',['main.cpp',['../examples_2main_8cpp.html',1,'']]],
|
||||||
['exists_8',['Why the Runtime Decode Layer Exists',['../md_README.html#autotoc_md53',1,'']]],
|
['exists_8',['Why the Runtime Decode Layer Exists',['../md_README.html#autotoc_md53',1,'']]],
|
||||||
['extended_20validation_9',['Extended validation',['../md_tests_2README.html#autotoc_md172',1,'']]],
|
['extended_20validation_9',['Extended validation',['../md_tests_2README.html#autotoc_md173',1,'']]],
|
||||||
['extraction_10',['Intel and Motorola Extraction',['../md_README.html#autotoc_md118',1,'']]]
|
['extraction_10',['Intel and Motorola Extraction',['../md_README.html#autotoc_md118',1,'']]]
|
||||||
];
|
];
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
var searchData=
|
var searchData=
|
||||||
[
|
[
|
||||||
['registertype_0',['registertype',['../classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3',1,'TypeFactory::registerType()'],['../classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d',1,'DbcStatementDispatcher::RegisterType()']]],
|
['registertype_0',['registertype',['../classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d',1,'DbcStatementDispatcher::RegisterType()'],['../classTypeFactory.html#ad6d85795285ee21193ac03e1b24762d3',1,'TypeFactory::registerType()']]],
|
||||||
['resolveattributes_1',['ResolveAttributes',['../structDbcParseContext.html#a1ac7f4a54550aaddef08749806f87001',1,'DbcParseContext']]],
|
['resolveattributes_1',['ResolveAttributes',['../structDbcParseContext.html#a1ac7f4a54550aaddef08749806f87001',1,'DbcParseContext']]],
|
||||||
['resolvecomments_2',['ResolveComments',['../structDbcParseContext.html#aeae343c57a244634489a0e0b960155d7',1,'DbcParseContext']]],
|
['resolvecomments_2',['ResolveComments',['../structDbcParseContext.html#aeae343c57a244634489a0e0b960155d7',1,'DbcParseContext']]],
|
||||||
['resolvevaluedescriptions_3',['ResolveValueDescriptions',['../structDbcParseContext.html#ab5552dad944fde7fa6add6464ddb5369',1,'DbcParseContext']]],
|
['resolvevaluedescriptions_3',['ResolveValueDescriptions',['../structDbcParseContext.html#ab5552dad944fde7fa6add6464ddb5369',1,'DbcParseContext']]],
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__database_8h_source.html#l00023">23</a> of file <a class="el" href="dbc__database_8h_source.html">dbc_database.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__database_8h_source.html#l00023">23</a> of file <a class="el" href="dbc__database_8h_source.html">dbc_database.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__tree__builder_8cpp_source.html#l00014">DbcTreeBuilder::Build()</a>, <a class="el" href="dbc__decode__builder_8cpp_source.html#l00015">DbcDecodeBuilder::Build()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00311">DbcFrameHandler::Handle()</a>, <a class="el" href="dbc__attributes_8cpp_source.html#l00259">DbcParseContext::ResolveAttributes()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00572">DbcParseContext::ValidateMultiplexing()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__tree__builder_8cpp_source.html#l00014">DbcTreeBuilder::Build()</a>, <a class="el" href="dbc__decode__builder_8cpp_source.html#l00015">DbcDecodeBuilder::Build()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00394">DbcFrameHandler::Handle()</a>, <a class="el" href="dbc__attributes_8cpp_source.html#l00259">DbcParseContext::ResolveAttributes()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00644">DbcParseContext::ValidateMultiplexing()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ Public Attributes</h2></td></tr>
|
|||||||
</table>
|
</table>
|
||||||
</div><div class="memdoc">
|
</div><div class="memdoc">
|
||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00522">522</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00594">594</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -181,7 +181,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p>Validate selectors, branch ranges, and signal overlap. </p>
|
<p>Validate selectors, branch ranges, and signal overlap. </p>
|
||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00572">572</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00644">644</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
||||||
|
|
||||||
<p class="reference">References <a class="el" href="dbc__statement__handler_8h_source.html#l00061">database</a>, <a class="el" href="dbc__database_8h_source.html#l00023">DbcDatabase::frames</a>, <a class="el" href="signal__info_8h_source.html#l00031">SignalInfo::isSigned</a>, <a class="el" href="signal__info_8h_source.html#l00026">SignalInfo::multiplexing</a>, and <a class="el" href="dbc__statement__handler_8h_source.html#l00070">signalLines</a>.</p>
|
<p class="reference">References <a class="el" href="dbc__statement__handler_8h_source.html#l00061">database</a>, <a class="el" href="dbc__database_8h_source.html#l00023">DbcDatabase::frames</a>, <a class="el" href="signal__info_8h_source.html#l00031">SignalInfo::isSigned</a>, <a class="el" href="signal__info_8h_source.html#l00026">SignalInfo::multiplexing</a>, and <a class="el" href="dbc__statement__handler_8h_source.html#l00070">signalLines</a>.</p>
|
||||||
|
|
||||||
@@ -205,7 +205,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p>Resolve deferred comments after all definitions are known. </p>
|
<p>Resolve deferred comments after all definitions are known. </p>
|
||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00385">385</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00468">468</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
||||||
|
|
||||||
<p class="reference">References <a class="el" href="frame__info_8h_source.html#l00033">FrameInfo::comment</a>, <a class="el" href="signal__info_8h_source.html#l00039">SignalInfo::comment</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00061">database</a>, and <a class="el" href="dbc__statement__handler_8h_source.html#l00074">pendingComments</a>.</p>
|
<p class="reference">References <a class="el" href="frame__info_8h_source.html#l00033">FrameInfo::comment</a>, <a class="el" href="signal__info_8h_source.html#l00039">SignalInfo::comment</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00061">database</a>, and <a class="el" href="dbc__statement__handler_8h_source.html#l00074">pendingComments</a>.</p>
|
||||||
|
|
||||||
@@ -263,7 +263,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p>Resolve deferred raw descriptions against unique targets. </p>
|
<p>Resolve deferred raw descriptions against unique targets. </p>
|
||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00473">473</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00551">551</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
||||||
|
|
||||||
<p class="reference">References <a class="el" href="dbc__statement__handler_8h_source.html#l00061">database</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00065">pendingValues</a>, and <a class="el" href="signal__info_8h_source.html#l00038">SignalInfo::valueDescriptions</a>.</p>
|
<p class="reference">References <a class="el" href="dbc__statement__handler_8h_source.html#l00061">database</a>, <a class="el" href="dbc__statement__handler_8h_source.html#l00065">pendingValues</a>, and <a class="el" href="signal__info_8h_source.html#l00038">SignalInfo::valueDescriptions</a>.</p>
|
||||||
|
|
||||||
@@ -285,7 +285,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00061">61</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00061">61</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00311">DbcFrameHandler::Handle()</a>, <a class="el" href="dbc__attributes_8cpp_source.html#l00259">ResolveAttributes()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00385">ResolveComments()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00473">ResolveValueDescriptions()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00572">ValidateMultiplexing()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00394">DbcFrameHandler::Handle()</a>, <a class="el" href="dbc__attributes_8cpp_source.html#l00259">ResolveAttributes()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00468">ResolveComments()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00551">ResolveValueDescriptions()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00644">ValidateMultiplexing()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -304,7 +304,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00062">62</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00062">62</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00311">DbcFrameHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00325">DbcSignalHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00394">DbcFrameHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00408">DbcSignalHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -323,7 +323,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00063">63</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00063">63</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00311">DbcFrameHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00394">DbcFrameHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -342,7 +342,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00064">64</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00064">64</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00325">DbcSignalHandler::Handle()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00339">DbcCommentHandler::Handle()</a>, <a class="el" href="dbc__attributes_8cpp_source.html#l00255">DbcAttributeHandler::Handle()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00440">DbcValueDescriptionHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00489">DbcMultiplexingHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00408">DbcSignalHandler::Handle()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00422">DbcCommentHandler::Handle()</a>, <a class="el" href="dbc__attributes_8cpp_source.html#l00255">DbcAttributeHandler::Handle()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00523">DbcValueDescriptionHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00567">DbcMultiplexingHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -361,7 +361,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00065">65</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00065">65</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00440">DbcValueDescriptionHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00473">ResolveValueDescriptions()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00523">DbcValueDescriptionHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00551">ResolveValueDescriptions()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -396,7 +396,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00070">70</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00070">70</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00311">DbcFrameHandler::Handle()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00325">DbcSignalHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00572">ValidateMultiplexing()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00394">DbcFrameHandler::Handle()</a>, <a class="el" href="dbc__statement__handler_8cpp_source.html#l00408">DbcSignalHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00644">ValidateMultiplexing()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -415,7 +415,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00074">74</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00074">74</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00339">DbcCommentHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00385">ResolveComments()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00422">DbcCommentHandler::Handle()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00468">ResolveComments()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00026">26</a> of file <a class="el" href="frame__info_8h_source.html">frame_info.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00026">26</a> of file <a class="el" href="frame__info_8h_source.html">frame_info.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00325">DbcSignalHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00408">DbcSignalHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -168,7 +168,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00027">27</a> of file <a class="el" href="frame__info_8h_source.html">frame_info.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00027">27</a> of file <a class="el" href="frame__info_8h_source.html">frame_info.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00311">DbcFrameHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00394">DbcFrameHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -187,7 +187,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00028">28</a> of file <a class="el" href="frame__info_8h_source.html">frame_info.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00028">28</a> of file <a class="el" href="frame__info_8h_source.html">frame_info.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00311">DbcFrameHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00394">DbcFrameHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -206,7 +206,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00029">29</a> of file <a class="el" href="frame__info_8h_source.html">frame_info.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00029">29</a> of file <a class="el" href="frame__info_8h_source.html">frame_info.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00311">DbcFrameHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00394">DbcFrameHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -225,7 +225,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00030">30</a> of file <a class="el" href="frame__info_8h_source.html">frame_info.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00030">30</a> of file <a class="el" href="frame__info_8h_source.html">frame_info.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00311">DbcFrameHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00394">DbcFrameHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -244,7 +244,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00031">31</a> of file <a class="el" href="frame__info_8h_source.html">frame_info.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00031">31</a> of file <a class="el" href="frame__info_8h_source.html">frame_info.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00325">DbcSignalHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00408">DbcSignalHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -280,7 +280,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00033">33</a> of file <a class="el" href="frame__info_8h_source.html">frame_info.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="frame__info_8h_source.html#l00033">33</a> of file <a class="el" href="frame__info_8h_source.html">frame_info.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00385">DbcParseContext::ResolveComments()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00468">DbcParseContext::ResolveComments()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00023">23</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00023">23</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00339">DbcCommentHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00422">DbcCommentHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -156,7 +156,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00024">24</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00024">24</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00339">DbcCommentHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00422">DbcCommentHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -175,7 +175,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00025">25</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00025">25</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00339">DbcCommentHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00422">DbcCommentHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -194,7 +194,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00026">26</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00026">26</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00339">DbcCommentHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00422">DbcCommentHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -213,7 +213,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00027">27</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00027">27</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00339">DbcCommentHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00422">DbcCommentHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -232,7 +232,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00028">28</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00028">28</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00339">DbcCommentHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00422">DbcCommentHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00014">14</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00014">14</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00440">DbcValueDescriptionHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00523">DbcValueDescriptionHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -154,7 +154,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00015">15</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00015">15</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00440">DbcValueDescriptionHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00523">DbcValueDescriptionHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -173,7 +173,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00016">16</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00016">16</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00440">DbcValueDescriptionHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00523">DbcValueDescriptionHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -192,7 +192,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00017">17</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00017">17</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00440">DbcValueDescriptionHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00523">DbcValueDescriptionHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -211,7 +211,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00018">18</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00018">18</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00440">DbcValueDescriptionHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00523">DbcValueDescriptionHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00026">26</a> of file <a class="el" href="signal__info_8h_source.html">signal_info.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00026">26</a> of file <a class="el" href="signal__info_8h_source.html">signal_info.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00572">DbcParseContext::ValidateMultiplexing()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00644">DbcParseContext::ValidateMultiplexing()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -174,7 +174,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00027">27</a> of file <a class="el" href="signal__info_8h_source.html">signal_info.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00027">27</a> of file <a class="el" href="signal__info_8h_source.html">signal_info.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00325">DbcSignalHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__statement__handler_8cpp_source.html#l00408">DbcSignalHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -193,7 +193,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00028">28</a> of file <a class="el" href="signal__info_8h_source.html">signal_info.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00028">28</a> of file <a class="el" href="signal__info_8h_source.html">signal_info.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00325">DbcSignalHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00408">DbcSignalHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -212,7 +212,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00029">29</a> of file <a class="el" href="signal__info_8h_source.html">signal_info.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00029">29</a> of file <a class="el" href="signal__info_8h_source.html">signal_info.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00325">DbcSignalHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00408">DbcSignalHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -231,7 +231,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00030">30</a> of file <a class="el" href="signal__info_8h_source.html">signal_info.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00030">30</a> of file <a class="el" href="signal__info_8h_source.html">signal_info.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00325">DbcSignalHandler::Handle()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00408">DbcSignalHandler::Handle()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -250,7 +250,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00031">31</a> of file <a class="el" href="signal__info_8h_source.html">signal_info.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00031">31</a> of file <a class="el" href="signal__info_8h_source.html">signal_info.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00572">DbcParseContext::ValidateMultiplexing()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00644">DbcParseContext::ValidateMultiplexing()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -373,7 +373,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00038">38</a> of file <a class="el" href="signal__info_8h_source.html">signal_info.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00038">38</a> of file <a class="el" href="signal__info_8h_source.html">signal_info.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00473">DbcParseContext::ResolveValueDescriptions()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00551">DbcParseContext::ResolveValueDescriptions()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -392,7 +392,7 @@ Public Attributes</h2></td></tr>
|
|||||||
|
|
||||||
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00039">39</a> of file <a class="el" href="signal__info_8h_source.html">signal_info.h</a>.</p>
|
<p class="definition">Definition at line <a class="el" href="signal__info_8h_source.html#l00039">39</a> of file <a class="el" href="signal__info_8h_source.html">signal_info.h</a>.</p>
|
||||||
|
|
||||||
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00385">DbcParseContext::ResolveComments()</a>.</p>
|
<p class="reference">Referenced by <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">DbcTreeModel::data()</a>, and <a class="el" href="dbc__statement__handler_8cpp_source.html#l00468">DbcParseContext::ResolveComments()</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -102,25 +102,27 @@ $(document).ready(function(){initNavTree('tests_2main_8cpp_source.html',''); ini
|
|||||||
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#include <QtTest></span></div>
|
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#include <QtTest></span></div>
|
||||||
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
|
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
|
||||||
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="keywordtype">int</span> RunParserTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
|
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="keywordtype">int</span> RunParserTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
|
||||||
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="keywordtype">int</span> RunDecoderTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
|
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="keywordtype">int</span> RunStatementParserTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
|
||||||
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="keywordtype">int</span> RunCoverageTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
|
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="keywordtype">int</span> RunDecoderTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
|
||||||
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span> </div>
|
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="keywordtype">int</span> RunCoverageTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
|
||||||
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="keywordtype">int</span> RunLifetimeTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
|
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
|
||||||
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span> </div>
|
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="keywordtype">int</span> RunLifetimeTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
|
||||||
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="keywordtype">int</span> RunValidationTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
|
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span> </div>
|
||||||
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> </div>
|
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="keywordtype">int</span> RunValidationTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
|
||||||
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="keywordtype">int</span> RunPipelineTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
|
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
|
||||||
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> </div>
|
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="keywordtype">int</span> RunPipelineTests(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
|
||||||
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="keywordtype">int</span> <a class="code hl_function" href="examples_2main_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv) {</div>
|
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
|
||||||
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> QCoreApplication application(argc, argv);</div>
|
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="keywordtype">int</span> <a class="code hl_function" href="examples_2main_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv) {</div>
|
||||||
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> <span class="keyword">const</span> <span class="keywordtype">int</span> parserResult = RunParserTests(argc, argv);</div>
|
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> QCoreApplication application(argc, argv);</div>
|
||||||
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> <span class="keyword">const</span> <span class="keywordtype">int</span> decoderResult = RunDecoderTests(argc, argv);</div>
|
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> <span class="keyword">const</span> <span class="keywordtype">int</span> parserResult = RunParserTests(argc, argv);</div>
|
||||||
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> <span class="keyword">const</span> <span class="keywordtype">int</span> coverageResult = RunCoverageTests(argc, argv);</div>
|
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> <span class="keyword">const</span> <span class="keywordtype">int</span> statementResult = RunStatementParserTests(argc, argv);</div>
|
||||||
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> <span class="keyword">const</span> <span class="keywordtype">int</span> lifetimeResult = RunLifetimeTests(argc, argv);</div>
|
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> <span class="keyword">const</span> <span class="keywordtype">int</span> decoderResult = RunDecoderTests(argc, argv);</div>
|
||||||
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> <span class="keyword">const</span> <span class="keywordtype">int</span> validationResult = RunValidationTests(argc, argv);</div>
|
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> <span class="keyword">const</span> <span class="keywordtype">int</span> coverageResult = RunCoverageTests(argc, argv);</div>
|
||||||
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> <span class="keyword">const</span> <span class="keywordtype">int</span> pipelineResult = RunPipelineTests(argc, argv);</div>
|
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> <span class="keyword">const</span> <span class="keywordtype">int</span> lifetimeResult = RunLifetimeTests(argc, argv);</div>
|
||||||
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> <span class="keywordflow">return</span> pipelineResult | validationResult | parserResult | decoderResult | coverageResult | lifetimeResult;</div>
|
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">const</span> <span class="keywordtype">int</span> validationResult = RunValidationTests(argc, argv);</div>
|
||||||
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span>}</div>
|
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">const</span> <span class="keywordtype">int</span> pipelineResult = RunPipelineTests(argc, argv);</div>
|
||||||
|
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <span class="keywordflow">return</span> statementResult | pipelineResult | validationResult | parserResult | decoderResult | coverageResult | lifetimeResult;</div>
|
||||||
|
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span>}</div>
|
||||||
<div class="ttc" id="aexamples_2main_8cpp_html_a0ddf1224851353fc92bfbff6f499fa97"><div class="ttname"><a href="examples_2main_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a></div><div class="ttdeci">int main(int argc, char *argv[])</div><div class="ttdoc">Parse a DBC file and demonstrate metadata lookup and CAN decoding.</div><div class="ttdef"><b>Definition</b> <a href="examples_2main_8cpp_source.html#l00101">examples/main.cpp:101</a></div></div>
|
<div class="ttc" id="aexamples_2main_8cpp_html_a0ddf1224851353fc92bfbff6f499fa97"><div class="ttname"><a href="examples_2main_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a></div><div class="ttdeci">int main(int argc, char *argv[])</div><div class="ttdoc">Parse a DBC file and demonstrate metadata lookup and CAN decoding.</div><div class="ttdef"><b>Definition</b> <a href="examples_2main_8cpp_source.html#l00101">examples/main.cpp:101</a></div></div>
|
||||||
</div><!-- fragment --></div><!-- contents -->
|
</div><!-- fragment --></div><!-- contents -->
|
||||||
</div><!-- doc-content -->
|
</div><!-- doc-content -->
|
||||||
|
|||||||
+25
-2
@@ -40,14 +40,15 @@ make
|
|||||||
make check
|
make check
|
||||||
```
|
```
|
||||||
|
|
||||||
`parser_tests.pri` and `decoder_tests.pri` include the original test sources;
|
`parser_tests.pri` includes `dbc_parser_test.cpp` and `dbc_statement_test.cpp`;
|
||||||
|
`decoder_tests.pri` includes the decoder test source;
|
||||||
`tests.pro` also includes `dbc_coverage_test.cpp`, `dbc_lifetime_test.cpp`,
|
`tests.pro` also includes `dbc_coverage_test.cpp`, `dbc_lifetime_test.cpp`,
|
||||||
`dbc_validation_test.cpp`, and `dbc_pipeline_test.cpp`.
|
`dbc_validation_test.cpp`, and `dbc_pipeline_test.cpp`.
|
||||||
`../core/core.pri` supplies the library include path and linkage.
|
`../core/core.pri` supplies the library include path and linkage.
|
||||||
|
|
||||||
## Local regression checks
|
## Local regression checks
|
||||||
|
|
||||||
`run_core_ci.sh` builds the core archive, runs all six QtTest suites and the
|
`run_core_ci.sh` builds the core archive, runs all seven QtTest suites and the
|
||||||
qmake tree target with `make check`, then compiles and runs the standalone C++17
|
qmake tree target with `make check`, then compiles and runs the standalone C++17
|
||||||
tree/builder test without Qt. A failed command returns a nonzero status. The
|
tree/builder test without Qt. A failed command returns a nonzero status. The
|
||||||
`sanitize` mode applies ASan/UBSan flags to core, tests, and the standalone
|
`sanitize` mode applies ASan/UBSan flags to core, tests, and the standalone
|
||||||
@@ -295,6 +296,28 @@ Attribute changes were verified with `qmake6 ../dbc.pro`, `make -j4`, and
|
|||||||
passed. The standalone C++17 tree test also passed. The existing named
|
passed. The standalone C++17 tree test also passed. The existing named
|
||||||
comma-decimal C locale test skipped because the locale is not installed.
|
comma-decimal C locale test skipped because the locale is not installed.
|
||||||
|
|
||||||
|
## Long value descriptions and multiplex ranges
|
||||||
|
|
||||||
|
`dbc_statement_test.cpp` adds a separate `StatementParserTest` suite to the
|
||||||
|
existing parser qmake source list and the main test runner. Both parser APIs are
|
||||||
|
checked with 50,000-character descriptions (including quotes, backslashes,
|
||||||
|
semicolons, and spaces), 10,000 `VAL_` pairs, 10,000 multiplex ranges, and long
|
||||||
|
numeric bounds and whitespace. Valid metadata must survive parsing without
|
||||||
|
truncation, support value-description lookup after decoding, and activate or
|
||||||
|
skip multiplex branches correctly. Statements may precede or follow definitions.
|
||||||
|
|
||||||
|
Malformed long statements cover incomplete quotes/escapes, invalid escapes,
|
||||||
|
missing separators and semicolons, duplicate keys, numeric overflow, empty and
|
||||||
|
reversed ranges, trailing text, and unresolved long names. The diagnostic API
|
||||||
|
must return an empty database with the correct category, path, and source line;
|
||||||
|
the throwing API must report that same location.
|
||||||
|
|
||||||
|
Verified with Qt 6.8.2 in separate Release and ASan/UBSan builds with
|
||||||
|
`CONFIG+=dbc_qt`: each passed 2,449 core QtTest checks (including 29 checks in the
|
||||||
|
new suite), seven model checks, and the qmake tree test. One named-locale case
|
||||||
|
skipped because the locale is unavailable. Sanitizer errors were fatal; local
|
||||||
|
leak checking used `detect_leaks=0` because of the documented ptrace restriction.
|
||||||
|
|
||||||
## Unsupported signal value types
|
## Unsupported signal value types
|
||||||
|
|
||||||
`unsupportedSignalValueTypes` verifies that both parser APIs reject `SIG_VALTYPE_`
|
`unsupportedSignalValueTypes` verifies that both parser APIs reject `SIG_VALTYPE_`
|
||||||
|
|||||||
@@ -0,0 +1,194 @@
|
|||||||
|
#include "dbc_decode_builder.h"
|
||||||
|
#include "dbc_decoder.h"
|
||||||
|
#include "dbc_parser.h"
|
||||||
|
#include <QTemporaryFile>
|
||||||
|
#include <QtTest>
|
||||||
|
#include <iomanip>
|
||||||
|
#include <sstream>
|
||||||
|
#include <stdexcept>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
std::string WriteFixture(QTemporaryFile &file, const std::string &text) {
|
||||||
|
if (!file.open() || file.write(text.data(), static_cast<qint64>(text.size())) != static_cast<qint64>(text.size()) || !file.flush())
|
||||||
|
throw std::runtime_error("Cannot write statement fixture");
|
||||||
|
return file.fileName().toStdString();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string Quote(const std::string &text) {
|
||||||
|
std::ostringstream stream;
|
||||||
|
stream << std::quoted(text);
|
||||||
|
return stream.str();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string RepeatedRanges() {
|
||||||
|
std::string ranges = "1-1";
|
||||||
|
for (unsigned index = 1U; index < 10000U; ++index)
|
||||||
|
ranges += ",1-1";
|
||||||
|
return ranges;
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::string definitions =
|
||||||
|
"BO_ 1 Frame: 2 ECU\n"
|
||||||
|
"SG_ Mode M : 0|8@1+ (1,0) [0|255] \"\" ECU\n"
|
||||||
|
"SG_ Value m1 : 8|8@1+ (1,0) [0|255] \"\" ECU\n";
|
||||||
|
}// namespace
|
||||||
|
|
||||||
|
class StatementParserTest : public QObject {
|
||||||
|
Q_OBJECT
|
||||||
|
private Q_SLOTS:
|
||||||
|
void longValueDescriptions_data();
|
||||||
|
void longValueDescriptions();
|
||||||
|
void longMultiplexRanges_data();
|
||||||
|
void longMultiplexRanges();
|
||||||
|
void invalidLongStatements_data();
|
||||||
|
void invalidLongStatements();
|
||||||
|
};
|
||||||
|
|
||||||
|
void StatementParserTest::longValueDescriptions_data() {
|
||||||
|
QTest::addColumn<std::string>("description");
|
||||||
|
QTest::addColumn<unsigned>("count");
|
||||||
|
QTest::addColumn<bool>("beforeDefinitions");
|
||||||
|
QTest::newRow("50000-character-description") << std::string(50000U, 'x') << 1U << false;
|
||||||
|
std::string escaped;
|
||||||
|
for (unsigned index = 0U; index < 12500U; ++index)
|
||||||
|
escaped += "\"\\; ";
|
||||||
|
QTest::newRow("50000-escaped-characters") << escaped << 1U << true;
|
||||||
|
QTest::newRow("10000-pairs") << std::string("Description") << 10000U << true;
|
||||||
|
QTest::newRow("50000-spaces") << std::string(50000U, ' ') << 1U << false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void StatementParserTest::longValueDescriptions() {
|
||||||
|
QFETCH(std::string, description);
|
||||||
|
QFETCH(unsigned, count);
|
||||||
|
QFETCH(bool, beforeDefinitions);
|
||||||
|
std::string statement = "VAL_ 1 Value";
|
||||||
|
for (unsigned index = 0U; index < count; ++index)
|
||||||
|
statement += " " + std::to_string(index) + " " + Quote(description);
|
||||||
|
statement += ";\n";
|
||||||
|
const std::string frame = "BO_ 1 Frame: 4 ECU\nSG_ Value : 0|32@1+ (1,0) [0|1e10] \"\" ECU\n";
|
||||||
|
QTemporaryFile file;
|
||||||
|
const std::string path = WriteFixture(file, beforeDefinitions ? statement + frame : frame + statement);
|
||||||
|
const DbcParser parser;
|
||||||
|
const DbcParseResult result = parser.ParseFileWithDiagnostics(path);
|
||||||
|
QVERIFY(!result.HasErrors());
|
||||||
|
QVERIFY(result.diagnostics.empty());
|
||||||
|
const std::vector<DbcDatabase> databases = {result.database, parser.ParseFile(path)};
|
||||||
|
for (const DbcDatabase &database: databases) {
|
||||||
|
const ValueDescriptions &values = database.frames.at(0).signals.at(0).valueDescriptions;
|
||||||
|
QCOMPARE(values.size(), static_cast<std::size_t>(count));
|
||||||
|
for (unsigned index = 0U; index < count; ++index)
|
||||||
|
QCOMPARE(values.at(std::uint64_t(index)), description);
|
||||||
|
const DecodeDatabase runtime = DbcDecodeBuilder().Build(database);
|
||||||
|
RawCanFrame raw;
|
||||||
|
raw.canId = 1U;
|
||||||
|
const unsigned last = count - 1U;
|
||||||
|
raw.data = {static_cast<std::uint8_t>(last), static_cast<std::uint8_t>(last >> 8U), 0U, 0U};
|
||||||
|
const DecodedFrameValue decoded = DbcDecoder().Decode(runtime, raw);
|
||||||
|
QCOMPARE(decoded.status, FrameDecodeStatus::Valid);
|
||||||
|
const std::string *label = decoded.signals.at(0).GetValueDescription();
|
||||||
|
QVERIFY(label);
|
||||||
|
QCOMPARE(*label, description);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StatementParserTest::longMultiplexRanges_data() {
|
||||||
|
QTest::addColumn<std::string>("ranges");
|
||||||
|
QTest::addColumn<unsigned>("count");
|
||||||
|
QTest::addColumn<bool>("beforeDefinitions");
|
||||||
|
QTest::newRow("10000-ranges") << RepeatedRanges() << 10000U << false;
|
||||||
|
const std::string paddedOne = std::string(50000U, '0') + "1";
|
||||||
|
QTest::newRow("long-bounds") << paddedOne + "-" + paddedOne << 1U << true;
|
||||||
|
QTest::newRow("long-whitespace") << std::string(50000U, ' ') + "1\t-\t1" + std::string(50000U, ' ') << 1U << false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void StatementParserTest::longMultiplexRanges() {
|
||||||
|
QFETCH(std::string, ranges);
|
||||||
|
QFETCH(unsigned, count);
|
||||||
|
QFETCH(bool, beforeDefinitions);
|
||||||
|
const std::string statement = "SG_MUL_VAL_ 1 Value Mode " + ranges + ";\n";
|
||||||
|
QTemporaryFile file;
|
||||||
|
const std::string path = WriteFixture(file, beforeDefinitions ? statement + definitions : definitions + statement);
|
||||||
|
const DbcParser parser;
|
||||||
|
const DbcParseResult result = parser.ParseFileWithDiagnostics(path);
|
||||||
|
QVERIFY(!result.HasErrors());
|
||||||
|
QVERIFY(result.diagnostics.empty());
|
||||||
|
const std::vector<DbcDatabase> databases = {result.database, parser.ParseFile(path)};
|
||||||
|
for (const DbcDatabase &database: databases) {
|
||||||
|
const Multiplexing &mux = database.frames.at(0).signals.at(1).multiplexing;
|
||||||
|
QCOMPARE(mux.selector, std::string("Mode"));
|
||||||
|
QCOMPARE(mux.ranges.size(), static_cast<std::size_t>(count));
|
||||||
|
for (const MultiplexRange &range: mux.ranges) {
|
||||||
|
QCOMPARE(range.minimum, std::uint64_t(1));
|
||||||
|
QCOMPARE(range.maximum, std::uint64_t(1));
|
||||||
|
}
|
||||||
|
const DecodeDatabase runtime = DbcDecodeBuilder().Build(database);
|
||||||
|
RawCanFrame raw;
|
||||||
|
raw.canId = 1U;
|
||||||
|
raw.data = {1U, 42U};
|
||||||
|
const DecodedFrameValue active = DbcDecoder().Decode(runtime, raw);
|
||||||
|
QCOMPARE(active.status, FrameDecodeStatus::Valid);
|
||||||
|
QVERIFY(active.signals.at(1).valid);
|
||||||
|
QCOMPARE(std::get<std::uint64_t>(active.signals[1].rawValue), std::uint64_t(42));
|
||||||
|
raw.data[0] = 2U;
|
||||||
|
const DecodedFrameValue inactive = DbcDecoder().Decode(runtime, raw);
|
||||||
|
QCOMPARE(inactive.signals.at(1).status, SignalDecodeStatus::Inactive);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StatementParserTest::invalidLongStatements_data() {
|
||||||
|
QTest::addColumn<std::string>("statement");
|
||||||
|
QTest::addColumn<DbcDiagnosticCode>("code");
|
||||||
|
const std::string text(50000U, 'x');
|
||||||
|
const std::string value = "VAL_ 1 Value 0 \"" + text;
|
||||||
|
QTest::newRow("val-missing-quote") << value + ";" << DbcDiagnosticCode::InvalidValueDescription;
|
||||||
|
QTest::newRow("val-dangling-escape") << value + "\\" << DbcDiagnosticCode::InvalidValueDescription;
|
||||||
|
QTest::newRow("val-invalid-escape") << value + "\\q\";" << DbcDiagnosticCode::InvalidValueDescription;
|
||||||
|
QTest::newRow("val-missing-semicolon") << value + "\"" << DbcDiagnosticCode::InvalidValueDescription;
|
||||||
|
QTest::newRow("val-trailing-text") << value + "\"; junk" << DbcDiagnosticCode::InvalidValueDescription;
|
||||||
|
QTest::newRow("val-missing-pair-separator") << value + "\"1 \"On\";" << DbcDiagnosticCode::InvalidValueDescription;
|
||||||
|
QTest::newRow("val-missing-number-separator") << "VAL_ 1 Value 0\"" + text + "\";" << DbcDiagnosticCode::InvalidValueDescription;
|
||||||
|
QTest::newRow("val-duplicate") << value + "\" 00 \"Duplicate\";" << DbcDiagnosticCode::InvalidValueDescription;
|
||||||
|
QTest::newRow("val-overflow") << "VAL_ 1 Value " + std::string(50000U, '9') + " \"Bad\";" << DbcDiagnosticCode::InvalidValueDescription;
|
||||||
|
QTest::newRow("val-long-missing-reference") << "VAL_ 1 " + text + " 0 \"Bad\";" << DbcDiagnosticCode::InvalidValueDescription;
|
||||||
|
const std::string mux = "SG_MUL_VAL_ 1 Value Mode " + RepeatedRanges();
|
||||||
|
QTest::newRow("mux-missing-semicolon") << mux << DbcDiagnosticCode::InvalidMultiplexing;
|
||||||
|
QTest::newRow("mux-trailing-comma") << mux + ",;" << DbcDiagnosticCode::InvalidMultiplexing;
|
||||||
|
QTest::newRow("mux-empty-range") << mux + ",,1-1;" << DbcDiagnosticCode::InvalidMultiplexing;
|
||||||
|
QTest::newRow("mux-reversed-range") << mux + ",2-1;" << DbcDiagnosticCode::InvalidMultiplexing;
|
||||||
|
QTest::newRow("mux-signed-bound") << mux + ",+1-1;" << DbcDiagnosticCode::InvalidMultiplexing;
|
||||||
|
QTest::newRow("mux-suffix") << mux + "x;" << DbcDiagnosticCode::InvalidMultiplexing;
|
||||||
|
QTest::newRow("mux-overflow") << mux + ",0-18446744073709551616;" << DbcDiagnosticCode::InvalidMultiplexing;
|
||||||
|
QTest::newRow("mux-long-overflow") << "SG_MUL_VAL_ 1 Value Mode 0-" + std::string(50000U, '9') + ";" << DbcDiagnosticCode::InvalidMultiplexing;
|
||||||
|
QTest::newRow("mux-trailing-text") << mux + "; junk" << DbcDiagnosticCode::InvalidMultiplexing;
|
||||||
|
QTest::newRow("mux-long-missing-reference") << "SG_MUL_VAL_ 1 " + text + " Mode 1-1;" << DbcDiagnosticCode::InvalidMultiplexing;
|
||||||
|
}
|
||||||
|
|
||||||
|
void StatementParserTest::invalidLongStatements() {
|
||||||
|
QFETCH(std::string, statement);
|
||||||
|
QFETCH(DbcDiagnosticCode, code);
|
||||||
|
QTemporaryFile file;
|
||||||
|
const std::string path = WriteFixture(file, "\n" + statement + "\n" + definitions);
|
||||||
|
const DbcParser parser;
|
||||||
|
const DbcParseResult result = parser.ParseFileWithDiagnostics(path);
|
||||||
|
QVERIFY(result.HasErrors());
|
||||||
|
QVERIFY(result.database.frames.empty());
|
||||||
|
QCOMPARE(result.diagnostics.size(), std::size_t(1));
|
||||||
|
const DbcDiagnostic &error = result.diagnostics[0];
|
||||||
|
QCOMPARE(error.severity, DbcDiagnosticSeverity::Error);
|
||||||
|
QCOMPARE(error.code, code);
|
||||||
|
QCOMPARE(error.filePath, path);
|
||||||
|
QCOMPARE(error.lineNumber, std::size_t(2));
|
||||||
|
try {
|
||||||
|
parser.ParseFile(path);
|
||||||
|
QFAIL("Malformed statements must throw through ParseFile");
|
||||||
|
} catch (const std::runtime_error &exception) {
|
||||||
|
QCOMPARE(std::string(exception.what()), path + ":2: " + error.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int RunStatementParserTests(int argc, char **argv) {
|
||||||
|
StatementParserTest tests;
|
||||||
|
return QTest::qExec(&tests, argc, argv);
|
||||||
|
}
|
||||||
|
|
||||||
|
#include "dbc_statement_test.moc"
|
||||||
+3
-1
@@ -2,6 +2,7 @@
|
|||||||
#include <QtTest>
|
#include <QtTest>
|
||||||
|
|
||||||
int RunParserTests(int argc, char **argv);
|
int RunParserTests(int argc, char **argv);
|
||||||
|
int RunStatementParserTests(int argc, char **argv);
|
||||||
int RunDecoderTests(int argc, char **argv);
|
int RunDecoderTests(int argc, char **argv);
|
||||||
int RunCoverageTests(int argc, char **argv);
|
int RunCoverageTests(int argc, char **argv);
|
||||||
|
|
||||||
@@ -14,10 +15,11 @@ int RunPipelineTests(int argc, char **argv);
|
|||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
QCoreApplication application(argc, argv);
|
QCoreApplication application(argc, argv);
|
||||||
const int parserResult = RunParserTests(argc, argv);
|
const int parserResult = RunParserTests(argc, argv);
|
||||||
|
const int statementResult = RunStatementParserTests(argc, argv);
|
||||||
const int decoderResult = RunDecoderTests(argc, argv);
|
const int decoderResult = RunDecoderTests(argc, argv);
|
||||||
const int coverageResult = RunCoverageTests(argc, argv);
|
const int coverageResult = RunCoverageTests(argc, argv);
|
||||||
const int lifetimeResult = RunLifetimeTests(argc, argv);
|
const int lifetimeResult = RunLifetimeTests(argc, argv);
|
||||||
const int validationResult = RunValidationTests(argc, argv);
|
const int validationResult = RunValidationTests(argc, argv);
|
||||||
const int pipelineResult = RunPipelineTests(argc, argv);
|
const int pipelineResult = RunPipelineTests(argc, argv);
|
||||||
return pipelineResult | validationResult | parserResult | decoderResult | coverageResult | lifetimeResult;
|
return statementResult | pipelineResult | validationResult | parserResult | decoderResult | coverageResult | lifetimeResult;
|
||||||
}
|
}
|
||||||
@@ -1 +1 @@
|
|||||||
SOURCES += $$PWD/dbc_parser_test.cpp
|
SOURCES += $$PWD/dbc_parser_test.cpp $$PWD/dbc_statement_test.cpp
|
||||||
Reference in new issue
Block a user