Compare commits
23
Commits
a0938cb29c
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c43222939f | ||
|
|
a55d1c58ed | ||
|
|
849ce31e2f | ||
|
|
e555ebb571 | ||
|
|
fc97682b37 | ||
|
|
713276d34a | ||
|
|
a202ba12ba | ||
|
|
4ae4e527b8 | ||
|
|
d87c100398 | ||
|
|
0b05152bcf | ||
|
|
6d6ace4315 | ||
|
|
c3d3bd51fb | ||
|
|
7022c84941 | ||
|
|
0708316a37 | ||
|
|
51fcdb88ac | ||
|
|
bce707daf6 | ||
|
|
a6016248f8 | ||
|
|
ef8e21db2e | ||
|
|
21d6f12163 | ||
|
|
1d56a37090 | ||
|
|
344beaf58c | ||
|
|
8bf5dcff30 | ||
|
|
3dd9230fca |
No files matched your search
@@ -1 +1,4 @@
|
||||
*.user
|
||||
.project_rules
|
||||
AGENTS.md
|
||||
build
|
||||
@@ -20,14 +20,19 @@ The implementation follows a simple and practical design:
|
||||
- Qt is not required at the parser or decoder level
|
||||
- the same decode engine can be reused for live traffic and trace replay
|
||||
|
||||
The core library uses C++17 and has no Qt dependency. Qt Core and Qt Test are
|
||||
used by the regression tests; the optional adapter requires Qt Core. Live CAN acquisition, trace-file readers,
|
||||
The core library uses C++17 and has no Qt dependency. Qt integration targets the
|
||||
installed Qt 6.8.2, which is the only supported Qt version. Qt Core and Qt Test are
|
||||
used by the regression tests; model tests also link QtGui for graphical metatypes.
|
||||
The optional adapter requires only Qt Core. Live CAN acquisition, trace-file readers,
|
||||
are left to the consuming application. An optional Qt Core model adapter is provided in `qt/`.
|
||||
|
||||
See [changelog.md](changelog.md) for the release and development history,
|
||||
[tests/README.md](tests/README.md) for test instructions, and
|
||||
[generated API documentation](docs/html/index.html) for the API reference.
|
||||
|
||||
[AGENTS.md](AGENTS.md) contains project instructions for coding agents,
|
||||
including code style, build and test commands, and documentation requirements.
|
||||
|
||||
---
|
||||
|
||||
## High-Level Architecture
|
||||
@@ -124,7 +129,7 @@ Doxyfile API documentation configuration
|
||||
| Component | Source files |
|
||||
| --- | --- |
|
||||
| Parsed metadata | `core/dbc_database.h`, `core/frame_info.h`, `core/signal_info.h` |
|
||||
| Parser and dispatch | `core/dbc_parser.*`, `core/dbc_statement_handler.*`, `core/typefactory.h` |
|
||||
| Parser and dispatch | `core/dbc_parser.*`, `core/dbc_diagnostic.h`, `core/dbc_statement_handler.*`, `core/typefactory.h` |
|
||||
| UI tree | `core/tree_node.*`, `core/dbc_tree_builder.*` |
|
||||
| Runtime database | `core/decode_database.h`, `core/dbc_decode_builder.*` |
|
||||
| Decoder | `core/dbc_decoder.*` |
|
||||
@@ -188,7 +193,7 @@ Notes:
|
||||
|
||||
- `signals` is a list of `SignalInfo`
|
||||
- `isExtended` is determined during CAN ID normalization
|
||||
- `pgn` is derived using simplified J1939 logic when applicable
|
||||
- `pgn` is derived for extended frames only with explicit J1939 opt-in (see below)
|
||||
|
||||
---
|
||||
|
||||
@@ -236,7 +241,26 @@ has no metadata payload. The payload types are:
|
||||
- `FrameInfo`
|
||||
- `SignalInfo`
|
||||
|
||||
The tree supports browsing through the optional `DbcTreeModel` adapter.
|
||||
The tree is independent of Qt and supports browsing through the optional
|
||||
`DbcTreeModel` adapter. `GetParent()` returns a non-owning parent pointer;
|
||||
`GetRow()` returns the zero-based sibling position (zero for a detached node or
|
||||
root). `GetChild()` returns nullptr outside the child range, and `AddChild()`
|
||||
ignores null children. Appending children preserves existing addresses and rows.
|
||||
|
||||
Nodes cannot be copied or moved. Transfer their `std::unique_ptr` ownership to
|
||||
preserve parent links and addresses. `AddChild()` accepts an rvalue ownership
|
||||
handle and rejects self/ancestor insertion and already-attached children with
|
||||
`std::invalid_argument` before consuming ownership. There is no detach or
|
||||
reparent operation; callers must supply exclusive ownership.
|
||||
|
||||
`GetFrameKey()` returns `std::optional<FrameKey>` for frame nodes and signals
|
||||
directly attached to a frame. `GetSignalKey()` returns `std::optional<SignalKey>`
|
||||
for those signals. Roots, detached signals, and signals without a frame parent
|
||||
have no key. Keys use normalized CAN ID plus standard/extended type, and signal
|
||||
keys also include the signal name. They match runtime definition keys, remain
|
||||
independent of row order and frame display names, and survive source-database
|
||||
changes or destruction. Renaming a signal changes its logical identity. Returned
|
||||
keys are values and may be retained after destroying the tree.
|
||||
|
||||
It is **not** the primary runtime decode structure.
|
||||
|
||||
@@ -319,7 +343,7 @@ This structure is used directly by the decoder.
|
||||
|
||||
## `FrameKey`
|
||||
|
||||
Fast lookup key for runtime frame matching.
|
||||
Stable identifier for runtime frame matching and application state.
|
||||
|
||||
Fields:
|
||||
|
||||
@@ -332,22 +356,41 @@ This matters because the same numeric identifier must not be confused between st
|
||||
|
||||
## `DecodeDatabase`
|
||||
|
||||
Top-level runtime decode container.
|
||||
Immutable runtime snapshot with a private frame index. Build it with
|
||||
`DbcDecodeBuilder::Build(parsed)` or construct it from `std::vector<DecodeFrame>`.
|
||||
Construction validates all definitions and duplicate keys before building the lookup
|
||||
index or publishing the snapshot, and throws
|
||||
`std::invalid_argument` for invalid metadata, including manually supplied data:
|
||||
|
||||
Fields:
|
||||
- Normalized CAN IDs must fit 11 bits for standard frames or 29 bits for extended
|
||||
frames. DBC's bit-31 encoding flag must already be removed.
|
||||
- Frame keys must be unique; signal names must be unique within their frame.
|
||||
- Signal lengths must be 1–64 bits, with Intel/Motorola layouts entirely inside
|
||||
the declared payload. Bit coordinates use overflow-safe 64-bit arithmetic.
|
||||
- Byte order, numeric type, and multiplexing role must be valid enum values.
|
||||
- Factor, offset, minimum, and maximum must be finite; minimum must not exceed
|
||||
maximum. Zero and negative factors are allowed.
|
||||
- Multiplexing requires one unsigned selector when branches are present, with
|
||||
branch values in its raw range. Signals may overlap only when they are branches
|
||||
selected by different raw values, including mixed byte orders.
|
||||
|
||||
- `frames`
|
||||
- `frameIndexByKey`
|
||||
`dlc` remains a byte count in the storage range 0–255; construction imposes no
|
||||
additional CAN/CAN FD payload limit. A zero-byte frame may contain no signals.
|
||||
Both `DbcDecodeBuilder::Build` and the direct constructor apply these rules.
|
||||
Construction copies the input, including nested metadata, even for rvalue input.
|
||||
Saved mutable aliases into that input cannot modify definitions or invalidate the
|
||||
lookup index. Database copies still share the frozen snapshot; a failed
|
||||
construction or replacement leaves the previous snapshot and its lookups intact.
|
||||
|
||||
Conceptually:
|
||||
- `GetFrames()` returns a borrowed `const std::vector<DecodeFrame>&`.
|
||||
- `FindFrame(FrameKey)` returns `std::shared_ptr<const DecodeFrame>`.
|
||||
- `FindSignal(SignalKey)` returns `std::shared_ptr<const DecodeSignal>`.
|
||||
- Missing definitions return an empty handle.
|
||||
- Copying a database shares its snapshot; replacing it installs another snapshot.
|
||||
|
||||
```text
|
||||
DecodeDatabase
|
||||
├── vector<DecodeFrame>
|
||||
└── unordered_map<FrameKey, index>
|
||||
```
|
||||
|
||||
This gives the decoder fast access to a frame definition using CAN ID and frame type.
|
||||
Frame lookup uses a hash index; signal lookup scans the matched frame's signals.
|
||||
Decoding shares the snapshot without copying definitions or allocating ownership
|
||||
objects per signal.
|
||||
|
||||
---
|
||||
|
||||
@@ -378,6 +421,7 @@ Represents one decoded signal result.
|
||||
Fields:
|
||||
|
||||
- `definition`
|
||||
- `key`
|
||||
- `rawValue`
|
||||
- `physicalValue`
|
||||
- `valid`
|
||||
@@ -391,12 +435,13 @@ Fields:
|
||||
`std::variant<std::int64_t, std::uint64_t>`. For a valid signal, signed definitions
|
||||
produce the `int64_t` alternative and unsigned definitions produce the `uint64_t`
|
||||
alternative. Raw values remain exact across their full 64-bit ranges. Check
|
||||
`valid` before using the value; an invalid result's default value is not decoded data.
|
||||
`valid` before using the physical value. Raw data is also available when
|
||||
`status == PhysicalConversionFailed`; other invalid results have no decoded numeric data.
|
||||
|
||||
Use `std::get` when the numeric type is known, or `std::get_if` to handle both:
|
||||
|
||||
```cpp
|
||||
if (const auto *value = std::get_if<std::int64_t>(&decodedSignal.rawValue)) {
|
||||
if (const std::int64_t *value = std::get_if<std::int64_t>(&decodedSignal.rawValue)) {
|
||||
std::cout << *value;
|
||||
} else {
|
||||
std::cout << std::get<std::uint64_t>(decodedSignal.rawValue);
|
||||
@@ -424,17 +469,115 @@ Represents one decoded frame result.
|
||||
Fields:
|
||||
|
||||
- `definition`
|
||||
- `key`
|
||||
- `signals`
|
||||
- `valid`
|
||||
- `status`
|
||||
|
||||
`valid` means a matching frame definition was found. Check each signal's
|
||||
`valid` separately: insufficient payload data can leave individual signals
|
||||
invalid even when the frame is valid. An unknown frame returns `valid == false`.
|
||||
invalid even when the frame is valid. An unknown or ambiguous frame returns `valid == false`,
|
||||
a null definition, its requested key, and an empty signal list. A successful PGN
|
||||
match uses the DBC definition key for the frame and its signals.
|
||||
|
||||
The frame and signal `definition` pointers refer into `DecodeDatabase`. Keep
|
||||
that database alive and avoid changes that invalidate its frame or signal
|
||||
storage while using decoded results. The decoder applies factor and offset;
|
||||
it does not clamp physical values to the declared minimum and maximum.
|
||||
`FrameDecodeStatus` summarizes the result:
|
||||
|
||||
| Status | Meaning |
|
||||
| --- | --- |
|
||||
| `UnknownFrame` | No exact CAN ID/type match or eligible PGN match |
|
||||
| `AmbiguousFrame` | No exact match and multiple J1939 definitions share the PGN |
|
||||
| `InsufficientPayload` | Actual byte count is less than the declared `dlc` |
|
||||
| `SignalErrors` | Payload is long enough, but at least one signal failed |
|
||||
| `Valid` | Payload is long enough and every signal is valid or inactive |
|
||||
|
||||
Short-payload status takes precedence over signal errors; inspect each signal's
|
||||
status for the individual cause. `valid` retains its existing meaning of a matched
|
||||
definition and does not imply `status == FrameDecodeStatus::Valid`.
|
||||
|
||||
Payload policy uses `dlc` as a byte count, including for CAN FD; it is not the
|
||||
encoded wire DLC. A shorter payload is never padded: all signals whose bytes are
|
||||
available still decode, even if other signals fail. A longer payload is accepted;
|
||||
bytes beyond `dlc` are ignored. Signal bit layouts must fit the declared `dlc`, so
|
||||
extra bytes cannot rescue an invalid definition. Empty payloads and zero-byte
|
||||
frame definitions follow the same rules. Results include every signal in definition
|
||||
order, preserving successful values and definition handles on partial failures.
|
||||
|
||||
The decoder applies factor and offset; it does not clamp physical values to the
|
||||
declared minimum and maximum. Non-finite conversion results (NaN or positive/
|
||||
negative infinity), including overflow with finite factor/offset, produce
|
||||
`PhysicalConversionFailed`. The exact raw value and non-finite `physicalValue`
|
||||
remain available, while signal `valid` is false. Non-finite numeric parameters are
|
||||
rejected during database construction. Finite parameters can still overflow during
|
||||
conversion; conversion failure of a selector does not prevent raw branch selection.
|
||||
|
||||
### Definition ownership and reload
|
||||
|
||||
`DecodedFrameValue::definition` and `DecodedSignalValue::definition` are owning
|
||||
`std::shared_ptr<const ...>` handles. Each handle retains the immutable runtime
|
||||
snapshot. Definitions remain valid until the last database copy, lookup handle,
|
||||
or decoded result owning that snapshot is released. An independently copied
|
||||
signal result retains its definition even after the parent frame result is
|
||||
removed. Copying or moving results preserves ownership.
|
||||
|
||||
Reload by assigning a newly built database. Stored results continue to describe
|
||||
the old DBC, including its units, scaling, comments, and `VAL_` descriptions;
|
||||
subsequent decoding uses the new DBC. Removed definitions cannot be found in the
|
||||
new database, but old results safely retain their old definitions. Keeping even
|
||||
one signal handle retains the whole old snapshot; release stored results when
|
||||
that metadata is no longer needed.
|
||||
|
||||
`GetFrames()` is a borrowed view. References, iterators, and raw pointers obtained
|
||||
from it or from a handle's `.get()` do not retain ownership. Keep an owning handle
|
||||
or an unchanged database copy while using them. Constructor input is copied and
|
||||
may be changed independently afterward. The raw string pointer from
|
||||
`GetValueDescription()` follows the same rule: keep the signal definition handle
|
||||
alive while using the string.
|
||||
|
||||
Parsed `DbcDatabase`/`FrameInfo`/`SignalInfo` remain ordinary mutable value
|
||||
containers: borrowed pointers follow standard vector invalidation rules. Builders
|
||||
copy their metadata, so parsed input may be changed or destroyed after building.
|
||||
Tree nodes own metadata copies; the Qt model owns its tree and invalidates model
|
||||
indexes on reset. Runtime handles do not depend on the parsed database or tree.
|
||||
Synchronize replacement of a shared database variable with decoding; immutable
|
||||
snapshots do not make concurrent assignment to the same object safe.
|
||||
|
||||
### Stable frame and signal identifiers
|
||||
|
||||
`DecodedFrameValue::key` is a `FrameKey` (normalized `canId`, `isExtended`), also
|
||||
available through `DecodeFrame::GetKey()`. `DecodedSignalValue::key` is a
|
||||
`SignalKey` (frame key, exact case-sensitive signal name). Both are value types
|
||||
with equality and hashers (`FrameKeyHasher`, `SignalKeyHasher`) for application
|
||||
maps and saved selections. Construct the same keys from parsed metadata when
|
||||
needed; do not use addresses or vector positions as identifiers.
|
||||
|
||||
Keys stay equal across reloads and reordering when their components stay equal.
|
||||
Frame renaming and changes to units, bit layout, scaling, or descriptions do not
|
||||
change a key. Changing a CAN ID/frame type or renaming a signal produces a new
|
||||
key. The same name in different frames and standard/extended frames with the
|
||||
same numeric CAN ID remain distinct. Keys identify definitions within one logical
|
||||
DBC database; applications combining databases must add their own database ID.
|
||||
A key is not a version identifier: matching keys in different snapshots may have
|
||||
different metadata. Use `valid`/the definition handle to distinguish a matched
|
||||
result; default keys alone do not indicate successful decoding.
|
||||
|
||||
```cpp
|
||||
DecodeDatabase runtime = DbcDecodeBuilder().Build(parsed);
|
||||
DecodedFrameValue stored = DbcDecoder().Decode(runtime, rawFrame);
|
||||
if (stored.valid && !stored.signals.empty()) {
|
||||
DecodedSignalValue saved = stored.signals.front();
|
||||
SignalKey selection = saved.key;
|
||||
runtime = DbcDecodeBuilder().Build(parser.ParseFile("updated.dbc"));
|
||||
std::shared_ptr<const DecodeSignal> current = runtime.FindSignal(selection);
|
||||
// saved.definition retains old metadata; current holds new metadata or is empty.
|
||||
}
|
||||
```
|
||||
|
||||
**API migration:** replace reads of `runtime.frames` with `runtime.GetFrames()`.
|
||||
To edit runtime definitions, prepare a vector and construct a new database;
|
||||
`frameIndexByKey` is now private and built automatically. `DbcDecoder::FindFrame`
|
||||
and result `definition` fields now use owning handles instead of raw pointers;
|
||||
`definition->name`, boolean/null checks, and existing decode calls remain usable.
|
||||
Use `.get()` only for temporary raw-pointer interoperation with an owner alive.
|
||||
|
||||
---
|
||||
|
||||
@@ -468,6 +611,103 @@ The current parser supports the following DBC elements:
|
||||
- `VAL_` signal value descriptions
|
||||
- basic `M` / `mN` multiplexing
|
||||
|
||||
### Structured diagnostics
|
||||
|
||||
`ParseFileWithDiagnostics(path)` returns `DbcParseResult` containing `database`
|
||||
and `diagnostics`. Each `DbcDiagnostic` has `severity`, `code`, `filePath`,
|
||||
`lineNumber`, and `message`. Paths preserve the caller's supplied spelling.
|
||||
Lines are one-based physical lines, including blank lines; file-level errors use zero.
|
||||
|
||||
```cpp
|
||||
const DbcParser parser;
|
||||
const DbcParseResult result = parser.ParseFileWithDiagnostics("example.dbc");
|
||||
for (const DbcDiagnostic &diagnostic : result.diagnostics) {
|
||||
std::cerr << diagnostic.filePath << ":" << diagnostic.lineNumber
|
||||
<< ": " << diagnostic.message << '\n';
|
||||
}
|
||||
if (!result.HasErrors()) {
|
||||
const DecodeDatabase runtime = DbcDecodeBuilder().Build(result.database);
|
||||
// Inspect warnings before relying on decoding results.
|
||||
}
|
||||
```
|
||||
|
||||
| Severity / code | Meaning |
|
||||
| --- | --- |
|
||||
| `Error` / `FileOpenError` | Input cannot be opened |
|
||||
| `Error` / `FileReadError` | Input cannot be read completely |
|
||||
| `Error` / `InvalidStatement` | Invalid frame/signal definition or comment, unresolved comment reference, duplicate, or payload violation |
|
||||
| `Error` / `InvalidValueDescription` | Invalid `VAL_` syntax, duplicate value, or unresolved reference |
|
||||
| `Error` / `InvalidMultiplexing` | Selector, branch range, or signal overlap validation failed |
|
||||
| `Warning` / `UnsupportedStatement` | Unregistered statement skipped; decoding or metadata may be incomplete |
|
||||
| `Error` / `UnsupportedStatement` | Extended multiplexing (`SG_MUL_VAL_`) rejected |
|
||||
|
||||
Parsing stops at the first error and returns an empty database, together with
|
||||
any preceding warnings and the error. Deferred comment, `VAL_`, and multiplexing errors
|
||||
retain their original source lines. Invalid signal markers use `InvalidStatement`.
|
||||
`HasErrors()` checks severity; warnings alone do not make a parse fail.
|
||||
|
||||
Unknown statements are reported conservatively, including `SIG_VALTYPE_`,
|
||||
attribute relation forms (`BA_REL_`, `BA_DEF_REL_`), signal types/references,
|
||||
environment variables, named `VAL_TABLE_` tables, and vendor extensions. For
|
||||
example, ignoring `SIG_VALTYPE_` may decode a floating-point signal as an integer.
|
||||
The parser does not implement the warned features; consumers should review warnings.
|
||||
|
||||
### Attributes and frame metadata
|
||||
|
||||
`BA_DEF_`, `BA_DEF_DEF_`, and `BA_` support database, `BO_`, `SG_`,
|
||||
`BU_`, and `EV_` scopes with `INT`, `HEX`, `FLOAT`, `STRING`, and `ENUM`
|
||||
definitions. Integer/HEX values use decimal signed 64-bit numbers; floating
|
||||
values are finite and locale independent. ENUM assignments use zero-based indices;
|
||||
defaults accept an index or a quoted label. Strings support escaped quotes and
|
||||
backslashes. Each statement occupies one physical line and ends with `;`.
|
||||
|
||||
```dbc
|
||||
BA_DEF_ BO_ "VFrameFormat" ENUM "StandardCAN","ExtendedCAN","StandardCAN_FD";
|
||||
BA_DEF_DEF_ "VFrameFormat" "StandardCAN";
|
||||
BA_DEF_ BO_ "GenMsgCycleTime" INT 0 10000;
|
||||
BA_DEF_DEF_ "GenMsgCycleTime" 100;
|
||||
BA_ "GenMsgCycleTime" BO_ 256 20;
|
||||
```
|
||||
|
||||
Definitions, defaults, assignments, and frame/signal declarations may appear in
|
||||
any order. Defaults apply to every object of the defined scope; explicit values
|
||||
override them, with the last repeated assignment winning. Duplicate definitions
|
||||
or defaults, undefined names, wrong types/scopes, out-of-range values, and missing
|
||||
frame/signal targets produce `Error / InvalidAttribute` at the source line.
|
||||
|
||||
`DbcDatabase::attributeDefinitions` retains types, ranges, enum labels, and defaults;
|
||||
`attributeAssignments` retains explicit values and targets. Effective values are
|
||||
available in `attributes` on the database, frames and signals. Node/environment
|
||||
assignments are retained by name without checking declarations; their defaults
|
||||
remain on the definitions. Frame/signal attributes are copied into runtime
|
||||
snapshots and tree payloads. Other valid attributes remain available as metadata
|
||||
without changing decoding.
|
||||
|
||||
`FrameInfo` and `DecodeFrame` expose optional `frameFormat` (the enum label) and
|
||||
`cycleTimeMs` (`GenMsgCycleTime`, unsigned 32-bit milliseconds). Missing values
|
||||
remain unset; zero cycle time means unspecified. `StandardCAN` and `ExtendedCAN`
|
||||
are recognized. Other format labels, including CAN FD and `J1939PG`, are preserved
|
||||
with `Warning / UnsupportedAttribute` when effective on a frame. A supported
|
||||
format conflicting with the encoded `BO_` ID also warns. Warnings identify the
|
||||
assignment or default line. Attributes do not change CAN ID normalization or
|
||||
automatically enable CAN FD or J1939 decoding; J1939 still requires parser opt-in.
|
||||
Use `ParseFileWithDiagnostics()` to review these warnings.
|
||||
|
||||
Common `VERSION`, `NS_`, `BS_`, and `BU_` headers produce no diagnostics.
|
||||
Single-token symbols inside the `NS_` declaration list are quiet regardless of
|
||||
indentation, even when they name unsupported syntax. Frame, signal, bus, and
|
||||
node definitions or a line with arguments end the list. Actual unsupported
|
||||
statements outside that list are reported.
|
||||
Node and bus metadata are not stored. Other comment forms (`CM_`, `CM_ BU_`,
|
||||
`CM_ EV_`) are ignored by the comment handler. Frame and signal comments may span
|
||||
physical lines and resolve after definitions are read; other supported statements
|
||||
require one physical line.
|
||||
|
||||
`ParseFile(path)` remains compatible: it returns the database, discards warnings,
|
||||
and throws `std::runtime_error` on the first error with the existing `path:line:`
|
||||
format. Use `ParseFileWithDiagnostics` to see skipped syntax. Resource failures
|
||||
such as allocation errors may still throw.
|
||||
|
||||
---
|
||||
|
||||
## Supported DBC Syntax
|
||||
@@ -514,7 +754,8 @@ example.dbc:3: Invalid CAN ID: invalid
|
||||
```
|
||||
|
||||
Frame and signal definitions are validated as described here; comprehensive
|
||||
DBC grammar coverage is still planned. File-open errors contain the path but have no line number.
|
||||
DBC grammar coverage is still planned. File-open exceptions contain the path but
|
||||
no line number. The structured diagnostic API uses line zero for file-level errors.
|
||||
|
||||
---
|
||||
|
||||
@@ -558,13 +799,16 @@ sawtooth traversal. This uses the stored payload length without introducing
|
||||
an additional CAN or CAN FD payload limit.
|
||||
|
||||
Factor, offset, minimum, and maximum accept signed decimal numbers, fractions,
|
||||
and scientific notation. The entire numeric token must be valid; hexadecimal
|
||||
numbers, NaN, infinity, conversion overflow, and conversion underflow are
|
||||
and scientific notation. Conversion is independent of the application's C and
|
||||
C++ locales: the decimal separator is always a dot (`.`), and comma decimals
|
||||
and digit grouping are rejected. The entire numeric token must be valid; hexadecimal
|
||||
numbers, NaN, infinity, conversion overflow, and conversion underflow (including
|
||||
subnormal values) are
|
||||
rejected. Minimum must not exceed maximum. Zero and negative factors are allowed.
|
||||
|
||||
Basic multiplexing markers `M` and `mN` are supported as described below.
|
||||
Overlapping signals are rejected unless their branch values differ.
|
||||
Duplicate frame/signal name detection remains separate work.
|
||||
Duplicate frame keys and signal names within a frame are rejected.
|
||||
|
||||
Invalid signal definitions stop parsing with `path:line: description`, including
|
||||
when the signal exceeds the declared payload length.
|
||||
@@ -609,12 +853,14 @@ Each result has `SignalDecodeStatus status`:
|
||||
| `Inactive` | Selector is available and chooses another branch |
|
||||
| `SelectorUnavailable` | Branch activation is unknown because selector bytes are missing |
|
||||
| `InsufficientPayload` | Selected or unconditional signal bytes are missing |
|
||||
| `InvalidDefinition` | Invalid bit length or missing/invalid selector in manually built runtime metadata |
|
||||
| `InvalidDefinition` | Defensive decoder check failed; invalid definitions are rejected during database construction |
|
||||
| `PhysicalConversionFailed` | Raw value is available, but the converted physical value is NaN or infinity |
|
||||
|
||||
All statuses except `Valid` have `valid == false`; their numeric fields contain
|
||||
no decoded data and `GetValueDescription()` returns nullptr. Check `status` to
|
||||
All statuses except `Valid` have `valid == false` and `GetValueDescription()`
|
||||
returns nullptr. `PhysicalConversionFailed` preserves extracted raw data and the
|
||||
non-finite conversion result; other invalid statuses have no decoded numeric data. Check `status` to
|
||||
distinguish inactive branches from errors. Consumers constructing runtime metadata
|
||||
manually must obey the same non-overlap rules as the parser. Extended and nested
|
||||
manually receive the same selector and non-overlap validation as parsed files. Extended and nested
|
||||
multiplexing are outside this stage and are explicitly rejected, rather than
|
||||
silently decoded as unconditional signals.
|
||||
|
||||
@@ -639,6 +885,19 @@ Stored in:
|
||||
- `FrameInfo::comment`
|
||||
- `SignalInfo::comment`
|
||||
|
||||
Comments accept spaces and tabs between fields, quotes and backslashes escaped
|
||||
with a preceding backslash, and text spanning multiple physical lines. Newlines, blank
|
||||
lines, and indentation inside quoted text are preserved; CRLF becomes LF.
|
||||
Comments may appear before their frame or signal definitions. References use the
|
||||
same decimal CAN ID validation and normalization as `BO_`, including reserved-bit
|
||||
and overflow checks and distinct standard/extended targets. Repeated comments
|
||||
apply in statement order, so the last comment wins, including empty text.
|
||||
|
||||
Malformed supported comments (including invalid escapes, missing quotes or
|
||||
semicolon, and trailing text) and missing frame/signal references produce an
|
||||
`InvalidStatement` error at the comment's starting line. Failed parses return an
|
||||
empty database; `ParseFile` throws with the same source location.
|
||||
|
||||
---
|
||||
|
||||
## CAN ID Normalization
|
||||
@@ -659,17 +918,55 @@ This is important both for correct lookup and for future interoperability with l
|
||||
|
||||
---
|
||||
|
||||
## PGN Extraction
|
||||
## J1939 Opt-in and PGN Lookup
|
||||
|
||||
PGN is derived only when the frame is treated as extended.
|
||||
Extended CAN identifiers do not imply J1939. The default parser leaves `hasPgn`
|
||||
false and `pgn` zero, and decoding uses exact normalized CAN ID and frame type.
|
||||
Enable J1939 interpretation explicitly for a file:
|
||||
|
||||
The current logic is simplified J1939 extraction:
|
||||
```cpp
|
||||
DbcParserOptions options;
|
||||
options.enableJ1939 = true;
|
||||
const DbcDatabase parsed = DbcParser(options).ParseFile("vehicle.dbc");
|
||||
const DecodeDatabase runtime = DbcDecodeBuilder().Build(parsed);
|
||||
```
|
||||
|
||||
- `pf`
|
||||
- `ps`
|
||||
- `dp`
|
||||
Both parser entry points honor this option. Standard frames remain ordinary CAN.
|
||||
For mixed-protocol files, parse with the default options, then set `hasPgn = true`
|
||||
and `pgn = ExtractJ1939Pgn(frame.canId)` (from `j1939.h`) only on known J1939
|
||||
extended definitions before building the runtime snapshot. The same explicit
|
||||
metadata enables J1939 for manually constructed `DecodeFrame` definitions.
|
||||
Runtime construction rejects `hasPgn` on standard frames or an inconsistent PGN.
|
||||
No DBC attribute automatically enables J1939 interpretation.
|
||||
|
||||
This is enough for a practical start but should not be treated as full J1939 validation.
|
||||
PGN extraction retains both data-page bits (CAN ID bits 25–24) and PF:
|
||||
|
||||
- PDU1 (`PF < 240`): PS is the destination address and is zeroed in the PGN.
|
||||
- PDU2 (`PF >= 240`): PS is the group extension and remains part of the PGN.
|
||||
- Priority and source address are excluded in both cases. This follows the
|
||||
[Linux J1939 PGN layout](https://docs.kernel.org/networking/j1939.html).
|
||||
|
||||
`DecodeDatabase::FindFrame(FrameKey)` stays an exact lookup.
|
||||
`FindFrameByPgn(pgn)` returns a `PgnLookupResult` with an owning `definition`
|
||||
handle for one eligible definition. No match returns a null handle with
|
||||
`ambiguous == false`; multiple definitions return a null handle with
|
||||
`ambiguous == true`. Copies and returned handles retain the immutable snapshot.
|
||||
|
||||
`DbcDecoder::FindFrame` and both `Decode` overloads first try the exact ID/type.
|
||||
Only when that fails for a valid normalized extended ID do they try PGN lookup
|
||||
among definitions with `hasPgn == true`. A unique PGN can therefore match a
|
||||
changed source address or priority, and for PDU1 a changed destination address.
|
||||
A changed PDU2 group extension does not match. Exact matches win even when the
|
||||
PGN is ambiguous, including exact matches to ordinary extended CAN definitions.
|
||||
Multiple PGN candidates are never resolved by order, source, or payload:
|
||||
`FindFrame` returns null and `Decode` returns `AmbiguousFrame` without decoding
|
||||
signals or validating the selection. Missing candidates return `UnknownFrame`.
|
||||
|
||||
On success, decoded frame/signal keys belong to the matched DBC definition;
|
||||
selected-signal decoding also expects those definition keys. Keep the input
|
||||
`RawCanFrame` if the received address/ID is needed separately. This feature does
|
||||
not implement transport-protocol reassembly, address claiming, or full J1939
|
||||
validation.
|
||||
|
||||
---
|
||||
|
||||
@@ -854,6 +1151,8 @@ lines:
|
||||
- `SG_` → `DbcSignalHandler`
|
||||
- `CM_` → `DbcCommentHandler`
|
||||
- `VAL_` → `DbcValueDescriptionHandler`
|
||||
- `SG_MUL_VAL_` → `DbcUnsupportedMultiplexingHandler`
|
||||
- `VERSION`, `NS_`, `BS_`, `BU_` → `DbcHeaderHandler` (also accepts attached colons)
|
||||
|
||||
Grammar implementations live in `core/dbc_statement_handler.cpp`; their interface,
|
||||
context, and dispatcher live in `core/dbc_statement_handler.h`. `core/typefactory.h`
|
||||
@@ -875,8 +1174,8 @@ RegisterType<MyCustomHandler>("CUSTOM_"); // after implementing MyCustomHandler
|
||||
Registration creates one handler; replacing a registration replaces that instance.
|
||||
Register during initialization before dispatching. A line is routed using its
|
||||
full first whitespace-delimited keyword, so `BO_TX_BU_` cannot match `BO_`.
|
||||
Unregistered keywords remain ignored. `SG_` accepts spaces and tabs after its keyword; `CM_` retains its existing
|
||||
policy requiring a literal space.
|
||||
Unregistered keywords produce `UnsupportedStatement` warnings through
|
||||
`ParseFileWithDiagnostics`. `SG_` and `CM_` accept spaces and tabs after their keywords.
|
||||
|
||||
This factory handles statements inside DBC files. A separate format-level
|
||||
factory can be introduced when another file format is implemented. The decoder
|
||||
@@ -897,7 +1196,8 @@ VAL_ 256 State 0 "Off" 1 "On" 2 "Error";
|
||||
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, `\"` and `\\` represent a quote and a backslash; other escapes are rejected.
|
||||
text, escape a quote or a backslash with a preceding backslash; other escapes
|
||||
are rejected.
|
||||
Keys are decimal integers in `INT64_MIN..UINT64_MAX`, with an optional minus
|
||||
sign; plus signs, fractions, hexadecimal numbers, exponents, and overflow are
|
||||
rejected. Keys never pass through `double`.
|
||||
@@ -926,7 +1226,7 @@ if (const std::string *description = value.GetValueDescription()) {
|
||||
It returns `nullptr` for an invalid decode or an unknown value; numeric decoding
|
||||
and `physicalValue` are unchanged. A mapped empty string returns a non-null
|
||||
pointer. The pointer belongs to the signal definition and stays valid while that
|
||||
definition and mapping remain alive and unchanged.
|
||||
definition remains alive. A decoded signal owns its immutable definition across reload.
|
||||
|
||||
For metadata or standalone raw values, use
|
||||
`FindValueDescription(signal.valueDescriptions, rawValue)`, where `rawValue` is
|
||||
@@ -949,8 +1249,9 @@ Not supported yet:
|
||||
|
||||
- extended and nested multiplexing (`SG_MUL_VAL_`, `mNM`)
|
||||
- named `VAL_TABLE_` tables and environment-variable value descriptions
|
||||
- `BA_` attributes
|
||||
- `BA_DEF_` definitions
|
||||
- attribute relation forms (`BA_REL_`, `BA_DEF_REL_`)
|
||||
- `SIG_VALTYPE_` floating-point signal types
|
||||
- signal types/references (`SGTYPE_`, `SIG_TYPE_REF_`) and environment variables
|
||||
- advanced comment handling
|
||||
- full DBC grammar coverage
|
||||
- full J1939 validation
|
||||
@@ -958,13 +1259,15 @@ Not supported yet:
|
||||
|
||||
Additional behavior to account for:
|
||||
|
||||
- unregistered DBC keywords are ignored
|
||||
- unregistered DBC keywords are skipped with warnings in the diagnostic API
|
||||
- an `SG_` statement before the first frame is rejected
|
||||
- duplicate frame and signal definitions are not rejected globally; ambiguous
|
||||
`VAL_` references to them are rejected
|
||||
- duplicate frame keys (normalized CAN ID and frame type) and repeated signal
|
||||
names within a frame are rejected at their definition lines; manually created
|
||||
databases are also checked for ambiguous `VAL_` references during resolution
|
||||
- payload lengths are checked against storage bounds (`0..255`), rather than
|
||||
CAN or CAN FD protocol limits
|
||||
- comment handling is limited to the supported forms and already parsed targets
|
||||
- comment handling is limited to frame and signal comments; references resolve
|
||||
after definitions are read
|
||||
|
||||
Motorola extraction uses DBC sawtooth numbering: a start bit of 7 traverses
|
||||
`7..0, 15..8, 23..16`. Regression tests cover aligned and unaligned signals,
|
||||
@@ -1002,7 +1305,7 @@ Recommended additions:
|
||||
Recommended additions:
|
||||
|
||||
- basic multiplexing (implemented)
|
||||
- attribute parsing
|
||||
- attribute parsing (implemented for definitions, defaults and values)
|
||||
- richer J1939 support
|
||||
- CSV export of decoded traces
|
||||
- optimized filtering and signal selection
|
||||
@@ -1025,12 +1328,15 @@ build also requires Qt Core and Qt Test development packages. Other build
|
||||
systems can compile the sources listed in `core/core_files.pri`; no CMake
|
||||
configuration is currently provided.
|
||||
|
||||
Qt-dependent qmake targets share `qt/qt_version.pri`, which rejects Qt versions
|
||||
other than 6.8.2. The core library remains independent of Qt libraries.
|
||||
|
||||
Open `dbc.pro` in Qt Creator to see two subprojects: `core` and `tests`.
|
||||
`core/core.pro` builds the C++17 static library `dbc_core` without a Qt dependency.
|
||||
`tests/tests.pro` builds the QtTest executable `dbc_tests` and links that library.
|
||||
The root project declares `tests.depends = core` for parallel builds.
|
||||
|
||||
Build out of source (Qt 6; use `qmake` for Qt 5):
|
||||
Build out of source with Qt 6.8.2:
|
||||
|
||||
```sh
|
||||
mkdir build
|
||||
@@ -1061,8 +1367,15 @@ qmake is still the build tool; this target does not link Qt libraries.
|
||||
|
||||
### Optional Qt model adapter
|
||||
|
||||
Requires Qt 5.11 or newer (including Qt 6) for `QAbstractItemModelTester`.
|
||||
The adapter itself links only Qt Core. Enable its library and focused QtTest suite:
|
||||
The adapter and its `QAbstractItemModelTester` suite use Qt 6.8.2.
|
||||
The adapter itself links only Qt Core.
|
||||
|
||||
The model test executable additionally links QtGui and uses QGuiApplication so
|
||||
QAbstractItemModelTester can resolve graphical metatypes such as QPixmap. It
|
||||
defaults to the `offscreen` platform when `QT_QPA_PLATFORM` is unset or empty;
|
||||
no display server is required. An explicit platform setting is preserved.
|
||||
|
||||
Enable its library and focused QtTest suite:
|
||||
|
||||
```sh
|
||||
mkdir -p build-qt
|
||||
@@ -1086,7 +1399,7 @@ directories when building separately. A widget application also needs `QT += wid
|
||||
|
||||
// Run after constructing QApplication; view owns the model through QObject.
|
||||
QTreeView view;
|
||||
auto *model = new DbcTreeModel(&view);
|
||||
DbcTreeModel *model = new DbcTreeModel(&view);
|
||||
model->SetTree(DbcTreeBuilder().Build(DbcParser().ParseFile("example.dbc")));
|
||||
view.setModel(model);
|
||||
view.expandAll();
|
||||
@@ -1188,3 +1501,265 @@ signal syntax and payload bounds, `VAL_` 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.
|
||||
`dbc_pipeline_test.cpp` 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.
|
||||
|
||||
## Code review and additional checks
|
||||
|
||||
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 `TypeFactory`.
|
||||
Core, adapter, example, and test C++ sources use explicit return types and contain
|
||||
no lambdas. Public metadata and parser-state comments use Doxygen descriptions.
|
||||
|
||||
See [tests/README.md](tests/README.md#extended-validation) for attribute boundary
|
||||
regressions, sanitizer commands, and the latest validation results.
|
||||
|
||||
## Measuring code coverage
|
||||
|
||||
Coverage instrumentation is separate from the QtTest suite named `CoverageTest`:
|
||||
that suite runs extra regression checks, but coverage counters require a specially
|
||||
instrumented build. Use a separate build directory for each coverage tool.
|
||||
|
||||
### GCC, gcov, and LCOV on Debian/Ubuntu
|
||||
|
||||
Install the build and report tools:
|
||||
|
||||
```sh
|
||||
sudo apt install build-essential qt6-base-dev qt6-base-dev-tools qmake6 lcov
|
||||
# Optional IDE:
|
||||
sudo apt install qtcreator
|
||||
```
|
||||
|
||||
GCC supplies `gcov`; the `lcov` package supplies `lcov` and `genhtml`. Use the
|
||||
`gcov` version matching the GCC used by the selected Qt Creator kit. These
|
||||
instructions use GCC and Qt 6.8.2.
|
||||
|
||||
From the repository root, create a fresh coverage build. `--coverage` must be
|
||||
passed to both compilation and linking; Debug avoids optimization that can make
|
||||
source-level results harder to interpret. `-fprofile-abs-path` makes source paths
|
||||
in the coverage data independent of the compilation working directory.
|
||||
|
||||
```sh
|
||||
DBC_SOURCE_DIR="$(pwd)"
|
||||
mkdir -p build-coverage
|
||||
cd build-coverage
|
||||
|
||||
qmake6 "$DBC_SOURCE_DIR/dbc.pro" \
|
||||
CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release \
|
||||
'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' \
|
||||
'QMAKE_LFLAGS+=--coverage'
|
||||
make -j4
|
||||
|
||||
# The standalone tree test is not a qmake target; instrument it separately.
|
||||
mkdir -p standalone
|
||||
c++ -std=c++17 -O0 -g --coverage -fprofile-abs-path \
|
||||
-I"$DBC_SOURCE_DIR/core" \
|
||||
"$DBC_SOURCE_DIR/tests/tree_node_test.cpp" \
|
||||
"$DBC_SOURCE_DIR/core/tree_node.cpp" \
|
||||
"$DBC_SOURCE_DIR/core/dbc_tree_builder.cpp" \
|
||||
-o standalone/tree_node_tests
|
||||
|
||||
# Capture a zero-count baseline so unexecuted compiled code remains in the report.
|
||||
lcov --capture --initial --directory . --branch-coverage \
|
||||
--include "$DBC_SOURCE_DIR/core/*" --include "$DBC_SOURCE_DIR/qt/*" \
|
||||
--output-file baseline.info
|
||||
|
||||
# Reset counts before each new measurement; otherwise executions accumulate.
|
||||
lcov --zerocounters --directory .
|
||||
make check
|
||||
./standalone/tree_node_tests
|
||||
|
||||
lcov --capture --directory . --branch-coverage \
|
||||
--include "$DBC_SOURCE_DIR/core/*" --include "$DBC_SOURCE_DIR/qt/*" \
|
||||
--output-file executed.info
|
||||
lcov --add-tracefile baseline.info --add-tracefile executed.info \
|
||||
--branch-coverage --output-file coverage.info
|
||||
|
||||
genhtml coverage.info --branch-coverage --demangle-cpp --output-directory html
|
||||
lcov --summary coverage.info --branch-coverage
|
||||
```
|
||||
|
||||
Open `build-coverage/html/index.html` in a browser. The report includes the
|
||||
library's `core/` and `qt/` sources and instantiated header code; test sources,
|
||||
generated moc files, and Qt/STL headers are excluded. Click a filename to inspect
|
||||
execution counts, uncovered lines, and branch outcomes. Branch coverage is a
|
||||
separate metric: executing a line does not necessarily exercise every outcome.
|
||||
C++ branch data can also include compiler-generated exception paths.
|
||||
|
||||
For another run with unchanged sources, repeat the reset, test execution,
|
||||
capture, merge, and HTML generation steps. After changing sources or compiler
|
||||
flags, rebuild and regenerate `baseline.info` before measuring again. A fresh
|
||||
build directory avoids mixing old profiling data with a different build.
|
||||
|
||||
An initial measurement with GCC 14.2 and Qt 6.8.2 on 2026-10-07, including both
|
||||
QtTest executables and the standalone tree test, yielded 97.8% line coverage
|
||||
(724/740) and 70.7% branch coverage (833/1178). These are a snapshot, not fixed
|
||||
expected values for later changes or other toolchains.
|
||||
|
||||
After adding direct comment-handler and ambiguous `VAL_` reference tests, the
|
||||
same configuration measured 98.4% line coverage (728/740) and 71.4% branch
|
||||
coverage (841/1178).
|
||||
|
||||
See [GCC instrumentation options](https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html)
|
||||
and the [LCOV project documentation](https://github.com/linux-test-project/lcov).
|
||||
|
||||
### Configure the GCC coverage build in Qt Creator
|
||||
|
||||
1. Open `dbc.pro` and select a GCC kit with Qt 6.8.2.
|
||||
2. In **Projects > Build Settings**, clone **Debug** as **Coverage**.
|
||||
3. Choose a separate build directory, such as `build-coverage`.
|
||||
4. Expand the **qmake** build step and add these **Additional arguments**:
|
||||
|
||||
```text
|
||||
CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release "QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path" "QMAKE_LFLAGS+=--coverage"
|
||||
```
|
||||
|
||||
5. Run qmake and build the project. Both `dbc_tests` and `dbc_model_tests` must
|
||||
run to include coverage from the core and optional model adapter.
|
||||
6. In a terminal in the coverage build directory, compile the standalone test
|
||||
and run the LCOV/report commands above. Set `DBC_SOURCE_DIR` to the absolute
|
||||
repository path if using a new terminal. `make check` runs both QtTest
|
||||
executables; the standalone tree executable must be run separately.
|
||||
7. View `html/index.html` in a browser. This workflow produces HTML reports;
|
||||
it does not require a licensed coverage toolchain.
|
||||
|
||||
### Configure all build variants in Qt Creator
|
||||
|
||||
The local `dbc.pro.user` stores machine-specific kit IDs and build/run settings.
|
||||
It is ignored by Git (`*.user`) and should not be committed or copied between
|
||||
machines. Recreate the configurations below through the UI when setting up a
|
||||
new checkout. The `Qt4ProjectManager` identifiers inside `.user` are historical
|
||||
Qt Creator setting names; the project still requires Qt 6.8.2.
|
||||
|
||||
The local configuration set uses these independent build directories:
|
||||
|
||||
| Configuration | Build directory example | Purpose |
|
||||
| --- | --- | --- |
|
||||
| Debug | `/tmp/build/dbc/Desktop-Debug` | Core library and parser/decoder/coverage regression tests |
|
||||
| Release | `/tmp/build/dbc/Desktop-Release` | The same targets with release settings |
|
||||
| Profile | `/tmp/build/dbc/Desktop-Profile` | Existing Qt Creator profiling configuration; not code coverage |
|
||||
| Debug Qt Models | `/tmp/build/dbc/Desktop-Debug-Qt-Models` | Debug targets plus optional adapter and model tests |
|
||||
| Release Qt Models | `/tmp/build/dbc/Desktop-Release-Qt-Models` | Release targets plus optional adapter and model tests |
|
||||
| Debug Qt Models Strict | `/tmp/build/dbc/Desktop-Debug-Qt-Models-Strict` | Model build with `QT_FATAL_WARNINGS=1` for builds and runs |
|
||||
| Coverage | `/tmp/build/dbc/Desktop-Coverage` | Instrumented core/model build, test execution, and LCOV HTML report |
|
||||
| Core Only | `/tmp/build/dbc/Desktop-Core-Only` | The Qt-free core static library |
|
||||
| Tree Tests | `/tmp/build/dbc/Desktop-Tree-Tests` | Standalone C++17 tree test without Qt |
|
||||
| Demo | `/tmp/build/dbc/Desktop-Demo` | Core library and command-line demo |
|
||||
|
||||
The temporary paths are examples; choose permanent build directories if desired.
|
||||
Do not share a build directory between these configurations.
|
||||
|
||||
To add the ordinary qmake configurations:
|
||||
|
||||
1. Open `dbc.pro` with a GCC/Qt 6.8.2 kit.
|
||||
2. Go to **Projects > Build Settings**. Keep the existing Debug, Release, and
|
||||
Profile configurations. Remove or disable a Coco build step if one remains.
|
||||
3. Select Debug, press **Clone**, and name the clone **Debug Qt Models**. Set
|
||||
its build directory from the table and add `CONFIG+=dbc_qt` to the qmake
|
||||
step's **Additional arguments**.
|
||||
4. Clone Release as **Release Qt Models** with the same qmake argument and its
|
||||
own build directory.
|
||||
5. Clone Debug Qt Models as **Debug Qt Models Strict**. In **Build Environment**,
|
||||
add `QT_FATAL_WARNINGS=1`. Run configurations should use the build environment.
|
||||
6. Clone Debug Qt Models as **Coverage**. In qmake **Additional arguments**, use:
|
||||
|
||||
```text
|
||||
CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release "QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path" "QMAKE_LFLAGS+=--coverage"
|
||||
```
|
||||
|
||||
7. For Coverage, select **Add Build Step > Custom Process Step** after qmake
|
||||
and Make, then set:
|
||||
|
||||
| Field | Value |
|
||||
| --- | --- |
|
||||
| Command | `/bin/sh` |
|
||||
| Arguments | `"%{sourceDir}/tests/coverage_report.sh" "%{sourceDir}" "%{buildDir}"` |
|
||||
| Working directory | `%{buildDir}` |
|
||||
|
||||
This script compiles the standalone tree test, resets counters, runs both
|
||||
QtTest executables and the tree test, and generates `%{buildDir}/html/index.html`.
|
||||
It stops if any test fails. Therefore building Coverage also executes tests.
|
||||
`lcov` and `genhtml` must be installed. Use this configuration with the GCC kit;
|
||||
`gcov` and the compiler used for the standalone test must match that kit.
|
||||
8. Run qmake and build each new configuration once. The default root builds
|
||||
expose `dbc_tests`; model configurations also expose `dbc_model_tests`.
|
||||
|
||||
Qt Creator expands `%{sourceDir}` and `%{buildDir}` in custom steps to the source
|
||||
and active build directories. Use the field's variable chooser if needed.
|
||||
|
||||
For the three independent builds, clone Debug, assign the name and build
|
||||
directory from the table, and replace its qmake/Make build steps with the custom
|
||||
process steps below. These steps are local IDE settings and do not change
|
||||
`dbc.pro`. Give each step a descriptive name and retain the listed order.
|
||||
|
||||
For **Core Only**:
|
||||
|
||||
| Command | Arguments | Working directory |
|
||||
| --- | --- | --- |
|
||||
| `/usr/bin/mkdir` | `-p "%{buildDir}"` | `%{sourceDir}` |
|
||||
| `/usr/bin/qmake6` | `"%{sourceDir}/core/core.pro" CONFIG+=debug CONFIG-=release` | `%{buildDir}` |
|
||||
| `/usr/bin/make` | `-j4` | `%{buildDir}` |
|
||||
|
||||
Keep a clean step with `make clean` in `%{buildDir}`. Core Only creates a static
|
||||
library, so there is no executable to run.
|
||||
|
||||
For **Tree Tests**:
|
||||
|
||||
1. Add a custom step with command `/usr/bin/mkdir`, arguments `-p "%{buildDir}"`,
|
||||
and working directory `%{sourceDir}`.
|
||||
2. Add a custom step with command `/usr/bin/c++`, working directory `%{buildDir}`,
|
||||
and these arguments:
|
||||
|
||||
```text
|
||||
-std=c++17 -O0 -g -I"%{sourceDir}/core" "%{sourceDir}/tests/tree_node_test.cpp" "%{sourceDir}/core/tree_node.cpp" "%{sourceDir}/core/dbc_tree_builder.cpp" -o "%{buildDir}/tree_node_tests"
|
||||
```
|
||||
|
||||
3. Remove the default Make clean step: this direct compiler build creates no
|
||||
Makefile. Run the resulting executable as described below.
|
||||
|
||||
For **Demo**:
|
||||
|
||||
| Command | Arguments | Working directory |
|
||||
| --- | --- | --- |
|
||||
| `/usr/bin/mkdir` | `-p "%{buildDir}/core" "%{buildDir}/examples"` | `%{sourceDir}` |
|
||||
| `/usr/bin/qmake6` | `"%{sourceDir}/core/core.pro" CONFIG+=debug CONFIG-=release` | `%{buildDir}/core` |
|
||||
| `/usr/bin/make` | `-j4` | `%{buildDir}/core` |
|
||||
| `/usr/bin/qmake6` | `"%{sourceDir}/examples/demo.pro" "DBC_CORE_BUILD_DIR=%{buildDir}/core" CONFIG+=debug CONFIG-=release` | `%{buildDir}/examples` |
|
||||
| `/usr/bin/make` | `-j4` | `%{buildDir}/examples` |
|
||||
|
||||
Replace the default clean step with two custom steps: `/usr/bin/make` with
|
||||
arguments `clean`, first in `%{buildDir}/examples`, then in `%{buildDir}/core`.
|
||||
|
||||
To configure execution and switch variants:
|
||||
|
||||
1. Go to **Projects > Run Settings** and select the appropriate qmake target:
|
||||
`dbc_tests` for ordinary builds or `dbc_model_tests` for model builds.
|
||||
2. To run all QtTest suites together, add a **Custom Executable** named
|
||||
**All QtTest suites**, with executable `/usr/bin/make`, arguments `check`,
|
||||
and working directory `%{buildDir}`. Use it with an ordinary or model qmake
|
||||
configuration. Coverage already runs every test in its final build step.
|
||||
3. For Tree Tests, add a **Custom Executable** named **Standalone tree test**,
|
||||
executable `%{buildDir}/tree_node_tests`, working directory `%{buildDir}`,
|
||||
and no arguments.
|
||||
4. For Demo, add a **Custom Executable** named **Demo**, executable
|
||||
`%{buildDir}/examples/dbc_demo`, working directory `%{buildDir}/examples`.
|
||||
Set **Command line arguments** to the quoted absolute path of your DBC file.
|
||||
5. For Coverage on Linux, optionally add a **Custom Executable** named
|
||||
**Coverage HTML report**, executable `/usr/bin/xdg-open`, arguments
|
||||
`"%{buildDir}/html/index.html"`, working directory `%{buildDir}`. Running it
|
||||
opens the generated report in the default browser.
|
||||
6. Use the kit/build/run selector above the Run button to choose the build
|
||||
configuration and its corresponding executable. Build with **Ctrl+B**,
|
||||
then run with **Ctrl+R**. The Build Settings configuration list can also
|
||||
switch the active build.
|
||||
7. If `.user` was edited externally, close and reopen the project so Qt Creator
|
||||
reads the new settings. Do not edit it while the project is open, because
|
||||
Qt Creator can overwrite external changes when saving its session.
|
||||
|
||||
See Qt Creator's [build configuration guide](https://doc.qt.io/qtcreator/creator-build-settings.html)
|
||||
and [run configuration guide](https://doc.qt.io/qtcreator/creator-run-settings.html).
|
||||
@@ -0,0 +1,23 @@
|
||||
QMAKE_CXX.QT_COMPILER_STDCXX = 201703L
|
||||
QMAKE_CXX.QMAKE_GCC_MAJOR_VERSION = 14
|
||||
QMAKE_CXX.QMAKE_GCC_MINOR_VERSION = 2
|
||||
QMAKE_CXX.QMAKE_GCC_PATCH_VERSION = 0
|
||||
QMAKE_CXX.COMPILER_MACROS = \
|
||||
QT_COMPILER_STDCXX \
|
||||
QMAKE_GCC_MAJOR_VERSION \
|
||||
QMAKE_GCC_MINOR_VERSION \
|
||||
QMAKE_GCC_PATCH_VERSION
|
||||
QMAKE_CXX.INCDIRS = \
|
||||
/usr/include/c++/14 \
|
||||
/usr/include/x86_64-linux-gnu/c++/14 \
|
||||
/usr/include/c++/14/backward \
|
||||
/usr/lib/gcc/x86_64-linux-gnu/14/include \
|
||||
/usr/local/include \
|
||||
/usr/include/x86_64-linux-gnu \
|
||||
/usr/include
|
||||
QMAKE_CXX.LIBDIRS = \
|
||||
/usr/lib/gcc/x86_64-linux-gnu/14 \
|
||||
/usr/lib/x86_64-linux-gnu \
|
||||
/usr/lib \
|
||||
/lib/x86_64-linux-gnu \
|
||||
/lib
|
||||
@@ -0,0 +1,642 @@
|
||||
#############################################################################
|
||||
# Makefile for building: dbc
|
||||
# Generated by qmake (3.1) (Qt 6.8.2)
|
||||
# Project: ../dbc.pro
|
||||
# Template: subdirs
|
||||
# Command: /usr/bin/qmake6 -o Makefile ../dbc.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage
|
||||
#############################################################################
|
||||
|
||||
MAKEFILE = Makefile
|
||||
|
||||
EQ = =
|
||||
|
||||
first: make_first
|
||||
QMAKE = /usr/bin/qmake6
|
||||
DEL_FILE = rm -f
|
||||
CHK_DIR_EXISTS= test -d
|
||||
MKDIR = mkdir -p
|
||||
COPY = cp -f
|
||||
COPY_FILE = cp -f
|
||||
COPY_DIR = cp -f -R
|
||||
INSTALL_FILE = install -m 644 -p
|
||||
INSTALL_PROGRAM = install -m 755 -p
|
||||
INSTALL_DIR = cp -f -R
|
||||
QINSTALL = /usr/bin/qmake6 -install qinstall
|
||||
QINSTALL_PROGRAM = /usr/bin/qmake6 -install qinstall -exe
|
||||
DEL_FILE = rm -f
|
||||
SYMLINK = ln -f -s
|
||||
DEL_DIR = rmdir
|
||||
MOVE = mv -f
|
||||
TAR = tar -cf
|
||||
COMPRESS = gzip -9f
|
||||
DISTNAME = dbc1.0.0
|
||||
DISTDIR = /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/build-coverage/.tmp/dbc1.0.0
|
||||
SUBTARGETS = \
|
||||
sub-core \
|
||||
sub-tests \
|
||||
sub-tests-tree_tests-pro \
|
||||
sub-qt \
|
||||
sub-tests-model_tests-pro
|
||||
|
||||
|
||||
sub-core-qmake_all: FORCE
|
||||
@test -d core/ || mkdir -p core/
|
||||
cd core/ && $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/core.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage
|
||||
cd core/ && $(MAKE) -f Makefile qmake_all
|
||||
sub-core: FORCE
|
||||
@test -d core/ || mkdir -p core/
|
||||
cd core/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/core.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile
|
||||
sub-core-make_first: FORCE
|
||||
@test -d core/ || mkdir -p core/
|
||||
cd core/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/core.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile
|
||||
sub-core-all: FORCE
|
||||
@test -d core/ || mkdir -p core/
|
||||
cd core/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/core.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile all
|
||||
sub-core-clean: FORCE
|
||||
@test -d core/ || mkdir -p core/
|
||||
cd core/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/core.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile clean
|
||||
sub-core-distclean: FORCE
|
||||
@test -d core/ || mkdir -p core/
|
||||
cd core/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/core.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile distclean
|
||||
sub-core-install_subtargets: FORCE
|
||||
@test -d core/ || mkdir -p core/
|
||||
cd core/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/core.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile install
|
||||
sub-core-uninstall_subtargets: FORCE
|
||||
@test -d core/ || mkdir -p core/
|
||||
cd core/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/core.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile uninstall
|
||||
sub-tests-qmake_all: sub-core-qmake_all FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage
|
||||
cd tests/ && $(MAKE) -f Makefile qmake_all
|
||||
sub-tests: sub-core FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile
|
||||
sub-tests-make_first: sub-core-make_first FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile
|
||||
sub-tests-all: sub-core-all FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile all
|
||||
sub-tests-clean: sub-core-clean FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile clean
|
||||
sub-tests-distclean: sub-core-distclean FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile distclean
|
||||
sub-tests-install_subtargets: sub-core-install_subtargets FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile install
|
||||
sub-tests-uninstall_subtargets: sub-core-uninstall_subtargets FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile uninstall
|
||||
sub-tests-tree_tests-pro-qmake_all: FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && $(QMAKE) -o Makefile.tree_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tree_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage
|
||||
cd tests/ && $(MAKE) -f Makefile.tree_tests qmake_all
|
||||
sub-tests-tree_tests-pro: FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile.tree_tests || $(QMAKE) -o Makefile.tree_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tree_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile.tree_tests
|
||||
sub-tests-tree_tests-pro-make_first: FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile.tree_tests || $(QMAKE) -o Makefile.tree_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tree_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile.tree_tests
|
||||
sub-tests-tree_tests-pro-all: FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile.tree_tests || $(QMAKE) -o Makefile.tree_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tree_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile.tree_tests all
|
||||
sub-tests-tree_tests-pro-clean: FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile.tree_tests || $(QMAKE) -o Makefile.tree_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tree_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile.tree_tests clean
|
||||
sub-tests-tree_tests-pro-distclean: FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile.tree_tests || $(QMAKE) -o Makefile.tree_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tree_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile.tree_tests distclean
|
||||
sub-tests-tree_tests-pro-install_subtargets: FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile.tree_tests || $(QMAKE) -o Makefile.tree_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tree_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile.tree_tests install
|
||||
sub-tests-tree_tests-pro-uninstall_subtargets: FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile.tree_tests || $(QMAKE) -o Makefile.tree_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tree_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile.tree_tests uninstall
|
||||
sub-qt-qmake_all: sub-core-qmake_all FORCE
|
||||
@test -d qt/ || mkdir -p qt/
|
||||
cd qt/ && $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/qt.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage
|
||||
cd qt/ && $(MAKE) -f Makefile qmake_all
|
||||
sub-qt: sub-core FORCE
|
||||
@test -d qt/ || mkdir -p qt/
|
||||
cd qt/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/qt.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile
|
||||
sub-qt-make_first: sub-core-make_first FORCE
|
||||
@test -d qt/ || mkdir -p qt/
|
||||
cd qt/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/qt.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile
|
||||
sub-qt-all: sub-core-all FORCE
|
||||
@test -d qt/ || mkdir -p qt/
|
||||
cd qt/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/qt.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile all
|
||||
sub-qt-clean: sub-core-clean FORCE
|
||||
@test -d qt/ || mkdir -p qt/
|
||||
cd qt/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/qt.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile clean
|
||||
sub-qt-distclean: sub-core-distclean FORCE
|
||||
@test -d qt/ || mkdir -p qt/
|
||||
cd qt/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/qt.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile distclean
|
||||
sub-qt-install_subtargets: sub-core-install_subtargets FORCE
|
||||
@test -d qt/ || mkdir -p qt/
|
||||
cd qt/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/qt.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile install
|
||||
sub-qt-uninstall_subtargets: sub-core-uninstall_subtargets FORCE
|
||||
@test -d qt/ || mkdir -p qt/
|
||||
cd qt/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/qt.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile uninstall
|
||||
sub-tests-model_tests-pro-qmake_all: sub-qt-qmake_all FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && $(QMAKE) -o Makefile.model_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/model_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage
|
||||
cd tests/ && $(MAKE) -f Makefile.model_tests qmake_all
|
||||
sub-tests-model_tests-pro: sub-qt FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile.model_tests || $(QMAKE) -o Makefile.model_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/model_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile.model_tests
|
||||
sub-tests-model_tests-pro-make_first: sub-qt-make_first FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile.model_tests || $(QMAKE) -o Makefile.model_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/model_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile.model_tests
|
||||
sub-tests-model_tests-pro-all: sub-qt-all FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile.model_tests || $(QMAKE) -o Makefile.model_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/model_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile.model_tests all
|
||||
sub-tests-model_tests-pro-clean: sub-qt-clean FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile.model_tests || $(QMAKE) -o Makefile.model_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/model_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile.model_tests clean
|
||||
sub-tests-model_tests-pro-distclean: sub-qt-distclean FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile.model_tests || $(QMAKE) -o Makefile.model_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/model_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile.model_tests distclean
|
||||
sub-tests-model_tests-pro-install_subtargets: sub-qt-install_subtargets FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile.model_tests || $(QMAKE) -o Makefile.model_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/model_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile.model_tests install
|
||||
sub-tests-model_tests-pro-uninstall_subtargets: sub-qt-uninstall_subtargets FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile.model_tests || $(QMAKE) -o Makefile.model_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/model_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile.model_tests uninstall
|
||||
|
||||
Makefile: ../dbc.pro /usr/lib/x86_64-linux-gnu/qt6/mkspecs/linux-g++/qmake.conf /usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/spec_pre.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/unix.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/linux.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/sanitize.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/gcc-base.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/gcc-base-unix.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/g++-base.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/g++-unix.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/qconfig.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3danimation.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dcore.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dextras.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dinput.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dlogic.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickanimation.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickextras.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickinput.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickrender.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickscene2d.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickscene3d.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3drender.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_bluetooth.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_charts.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_chartsqml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_concurrent.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_concurrent_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_core.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_core_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_datavisualization.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_datavisualizationqml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_dbus.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_dbus_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_designer.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_eglfs_kms_gbm_support_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_example_icons_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_examples_asset_downloader_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_fb_support_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_graphs.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_graphswidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_grpc.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_grpcquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_gui.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_gui_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_help.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_httpserver.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_hunspellinputmethod.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_input_support_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_kms_support_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsanimation.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsfolderlistmodel.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsplatform.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsqmlmodels.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labssettings.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labssharedimage.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labswavefrontmesh.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_linguist.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_location.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_multimedia.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_multimediawidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_network.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_network_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_networkauth.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_nfc.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_opengl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_opengl_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_openglwidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_openglwidgets_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_pdf.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_pdfquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_pdfwidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_positioning.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_positioningquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_printsupport.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_printsupport_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobuf.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobufqtcoretypes.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobufqtguitypes.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobufquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobufwellknowntypes.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlassetdownloader.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlcompiler.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlcore.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlintegration.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmllocalstorage.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlmeta.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlmeta_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlmodels.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlnetwork.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmltest.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlworkerscript.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlxmllistmodel.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3d.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dassetimport.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dassetutils.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3deffects.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dhelpers.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dhelpersimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3diblbaker.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dparticleeffects.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dparticles.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dphysics.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dphysicshelpers.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3druntimerender.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dutils.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dxr.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2basic.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2basicstyleimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2fusion.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2fusionstyleimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2imagine.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2imaginestyleimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2impl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2material.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2materialstyleimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2universal.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2universalstyleimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickdialogs2.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickdialogs2quickimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickdialogs2utils.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicklayouts.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktemplates2.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktimeline.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktimeline_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktimelineblendtrees.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktimelineblendtrees_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickvectorimage.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickwidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_remoteobjects.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_remoteobjectsqml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_repparser.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_scxml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_scxmlqml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_sensors.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_sensorsquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_serialbus.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_serialport.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_shadertools.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_shadertools_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_spatialaudio.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_sql.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_sql_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_statemachine.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_statemachineqml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_svg.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_svgwidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_testlib.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_testlib_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_texttospeech.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_uiplugin.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_uitools.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_virtualkeyboard.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_virtualkeyboardsettings.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandclient.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositor.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositoriviapplication.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositorpresentationtime.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositorwlshell.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositorxdgshell.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webchannel.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webchannelquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webenginecore.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webenginequick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webenginequickdelegatesqml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webenginewidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_websockets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webview.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webviewquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_widgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_widgets_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_xml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_xml_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/qt_functions.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/qt_config.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/linux-g++/qmake.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/spec_post.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/exclusive_builds.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/toolchain.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/default_pre.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/resolve_config.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/default_post.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/warn_on.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/qmake_use.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/file_copies.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/testcase_targets.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/exceptions.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/yacc.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/lex.prf \
|
||||
../dbc.pro
|
||||
$(QMAKE) -o Makefile ../dbc.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/spec_pre.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/unix.conf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/linux.conf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/sanitize.conf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/gcc-base.conf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/gcc-base-unix.conf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/g++-base.conf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/g++-unix.conf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/qconfig.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3danimation.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dcore.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dextras.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dinput.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dlogic.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquick.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickanimation.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickextras.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickinput.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickrender.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickscene2d.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickscene3d.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3drender.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_bluetooth.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_charts.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_chartsqml.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_concurrent.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_concurrent_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_core.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_core_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_datavisualization.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_datavisualizationqml.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_dbus.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_dbus_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_designer.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_devicediscovery_support_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_eglfs_kms_gbm_support_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_example_icons_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_examples_asset_downloader_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_fb_support_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_graphs.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_graphswidgets.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_grpc.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_grpcquick.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_gui.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_gui_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_help.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_httpserver.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_hunspellinputmethod.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_input_support_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_kms_support_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsanimation.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsfolderlistmodel.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsplatform.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsqmlmodels.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labssettings.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labssharedimage.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labswavefrontmesh.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_linguist.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_location.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_multimedia.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_multimediawidgets.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_network.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_network_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_networkauth.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_nfc.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_opengl.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_opengl_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_openglwidgets.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_openglwidgets_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_pdf.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_pdfquick.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_pdfwidgets.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_positioning.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_positioningquick.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_printsupport.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_printsupport_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobuf.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobufqtcoretypes.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobufqtguitypes.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobufquick.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobufwellknowntypes.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qml.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlassetdownloader.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlcompiler.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlcore.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlintegration.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmllocalstorage.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlmeta.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlmeta_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlmodels.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlnetwork.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmltest.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlworkerscript.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlxmllistmodel.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3d.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dassetimport.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dassetutils.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3deffects.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dhelpers.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dhelpersimpl.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3diblbaker.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dparticleeffects.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dparticles.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dphysics.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dphysicshelpers.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3druntimerender.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dutils.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dxr.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2basic.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2basicstyleimpl.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2fusion.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2fusionstyleimpl.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2imagine.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2imaginestyleimpl.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2impl.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2material.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2materialstyleimpl.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2universal.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2universalstyleimpl.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickdialogs2.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickdialogs2quickimpl.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickdialogs2utils.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicklayouts.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktemplates2.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktimeline.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktimeline_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktimelineblendtrees.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktimelineblendtrees_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickvectorimage.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickwidgets.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_remoteobjects.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_remoteobjectsqml.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_repparser.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_scxml.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_scxmlqml.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_sensors.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_sensorsquick.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_serialbus.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_serialport.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_shadertools.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_shadertools_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_spatialaudio.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_sql.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_sql_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_statemachine.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_statemachineqml.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_svg.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_svgwidgets.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_testlib.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_testlib_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_texttospeech.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_uiplugin.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_uitools.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_virtualkeyboard.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_virtualkeyboardsettings.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandclient.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositor.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositoriviapplication.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositorpresentationtime.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositorwlshell.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositorxdgshell.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webchannel.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webchannelquick.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webenginecore.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webenginequick.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webenginequickdelegatesqml.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webenginewidgets.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_websockets.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webview.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webviewquick.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_widgets.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_widgets_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_xml.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_xml_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/qt_functions.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/qt_config.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/linux-g++/qmake.conf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/spec_post.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/exclusive_builds.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/toolchain.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/default_pre.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/resolve_config.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/default_post.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/warn_on.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/qmake_use.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/file_copies.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/testcase_targets.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/exceptions.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/yacc.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/lex.prf:
|
||||
../dbc.pro:
|
||||
qmake: FORCE
|
||||
@$(QMAKE) -o Makefile ../dbc.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage
|
||||
|
||||
qmake_all: sub-core-qmake_all sub-tests-qmake_all sub-tests-tree_tests-pro-qmake_all sub-qt-qmake_all sub-tests-model_tests-pro-qmake_all FORCE
|
||||
|
||||
make_first: sub-core-make_first sub-tests-make_first sub-tests-tree_tests-pro-make_first sub-qt-make_first sub-tests-model_tests-pro-make_first FORCE
|
||||
all: sub-core-all sub-tests-all sub-tests-tree_tests-pro-all sub-qt-all sub-tests-model_tests-pro-all FORCE
|
||||
clean: sub-core-clean sub-tests-clean sub-tests-tree_tests-pro-clean sub-qt-clean sub-tests-model_tests-pro-clean FORCE
|
||||
distclean: sub-core-distclean sub-tests-distclean sub-tests-tree_tests-pro-distclean sub-qt-distclean sub-tests-model_tests-pro-distclean FORCE
|
||||
-$(DEL_FILE) Makefile
|
||||
-$(DEL_FILE) .qmake.stash
|
||||
install_subtargets: sub-core-install_subtargets sub-tests-install_subtargets sub-tests-tree_tests-pro-install_subtargets sub-qt-install_subtargets sub-tests-model_tests-pro-install_subtargets FORCE
|
||||
uninstall_subtargets: sub-core-uninstall_subtargets sub-tests-uninstall_subtargets sub-tests-tree_tests-pro-uninstall_subtargets sub-qt-uninstall_subtargets sub-tests-model_tests-pro-uninstall_subtargets FORCE
|
||||
|
||||
sub-core-check:
|
||||
@test -d core/ || mkdir -p core/
|
||||
cd core/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/core.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile check
|
||||
sub-tests-check: sub-core-check
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile check
|
||||
sub-tests-tree_tests-pro-check:
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile.tree_tests || $(QMAKE) -o Makefile.tree_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tree_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile.tree_tests check
|
||||
sub-qt-check: sub-core-check
|
||||
@test -d qt/ || mkdir -p qt/
|
||||
cd qt/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/qt.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile check
|
||||
sub-tests-model_tests-pro-check: sub-qt-check
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile.model_tests || $(QMAKE) -o Makefile.model_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/model_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile.model_tests check
|
||||
check: sub-core-check sub-tests-check sub-tests-tree_tests-pro-check sub-qt-check sub-tests-model_tests-pro-check
|
||||
|
||||
sub-core-benchmark:
|
||||
@test -d core/ || mkdir -p core/
|
||||
cd core/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/core.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile benchmark
|
||||
sub-tests-benchmark: sub-core-benchmark
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile benchmark
|
||||
sub-tests-tree_tests-pro-benchmark:
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile.tree_tests || $(QMAKE) -o Makefile.tree_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tree_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile.tree_tests benchmark
|
||||
sub-qt-benchmark: sub-core-benchmark
|
||||
@test -d qt/ || mkdir -p qt/
|
||||
cd qt/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/qt.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile benchmark
|
||||
sub-tests-model_tests-pro-benchmark: sub-qt-benchmark
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile.model_tests || $(QMAKE) -o Makefile.model_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/model_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -f Makefile.model_tests benchmark
|
||||
benchmark: sub-core-benchmark sub-tests-benchmark sub-tests-tree_tests-pro-benchmark sub-qt-benchmark sub-tests-model_tests-pro-benchmark
|
||||
install:install_subtargets FORCE
|
||||
|
||||
uninstall: uninstall_subtargets FORCE
|
||||
|
||||
FORCE:
|
||||
|
||||
.SUFFIXES:
|
||||
|
||||
dist: distdir FORCE
|
||||
(cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR)
|
||||
|
||||
distdir: sub-core-distdir sub-tests-distdir sub-tests-tree_tests-pro-distdir sub-qt-distdir sub-tests-model_tests-pro-distdir FORCE
|
||||
@test -d $(DISTDIR) || mkdir -p $(DISTDIR)
|
||||
$(COPY_FILE) --parents /usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/spec_pre.prf /usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/unix.conf /usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/linux.conf /usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/sanitize.conf /usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/gcc-base.conf /usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/gcc-base-unix.conf /usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/g++-base.conf /usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/g++-unix.conf /usr/lib/x86_64-linux-gnu/qt6/mkspecs/qconfig.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3danimation.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dcore.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dextras.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dinput.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dlogic.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquick.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickanimation.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickextras.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickinput.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickrender.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickscene2d.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickscene3d.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3drender.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_bluetooth.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_charts.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_chartsqml.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_concurrent.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_concurrent_private.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_core.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_core_private.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_datavisualization.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_datavisualizationqml.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_dbus.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_dbus_private.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_designer.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_devicediscovery_support_private.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_eglfs_kms_gbm_support_private.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_example_icons_private.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_examples_asset_downloader_private.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_fb_support_private.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_graphs.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_graphswidgets.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_grpc.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_grpcquick.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_gui.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_gui_private.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_help.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_httpserver.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_hunspellinputmethod.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_input_support_private.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_kms_support_private.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsanimation.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsfolderlistmodel.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsplatform.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsqmlmodels.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labssettings.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labssharedimage.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labswavefrontmesh.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_linguist.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_location.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_multimedia.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_multimediawidgets.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_network.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_network_private.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_networkauth.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_nfc.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_opengl.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_opengl_private.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_openglwidgets.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_openglwidgets_private.pri /usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_
Line truncated
|
||||
|
||||
sub-core-distdir: FORCE
|
||||
@test -d core/ || mkdir -p core/
|
||||
cd core/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/core.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -e -f Makefile distdir DISTDIR=$(DISTDIR)/core
|
||||
|
||||
sub-tests-distdir: FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -e -f Makefile distdir DISTDIR=$(DISTDIR)/tests
|
||||
|
||||
sub-tests-tree_tests-pro-distdir: FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile.tree_tests || $(QMAKE) -o Makefile.tree_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/tree_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -e -f Makefile.tree_tests distdir DISTDIR=$(DISTDIR)/tests
|
||||
|
||||
sub-qt-distdir: FORCE
|
||||
@test -d qt/ || mkdir -p qt/
|
||||
cd qt/ && ( test -e Makefile || $(QMAKE) -o Makefile /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/qt.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -e -f Makefile distdir DISTDIR=$(DISTDIR)/qt
|
||||
|
||||
sub-tests-model_tests-pro-distdir: FORCE
|
||||
@test -d tests/ || mkdir -p tests/
|
||||
cd tests/ && ( test -e Makefile.model_tests || $(QMAKE) -o Makefile.model_tests /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tests/model_tests.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage ) && $(MAKE) -e -f Makefile.model_tests distdir DISTDIR=$(DISTDIR)/tests
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,842 @@
|
||||
#############################################################################
|
||||
# Makefile for building: libdbc_core.a
|
||||
# Generated by qmake (3.1) (Qt 6.8.2)
|
||||
# Project: ../../core/core.pro
|
||||
# Template: lib
|
||||
# Command: /usr/bin/qmake6 -o Makefile ../../core/core.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage
|
||||
#############################################################################
|
||||
|
||||
MAKEFILE = Makefile
|
||||
|
||||
EQ = =
|
||||
|
||||
####### Compiler, tools and options
|
||||
|
||||
CC = gcc
|
||||
CXX = g++
|
||||
DEFINES =
|
||||
CFLAGS = -pipe -g -fPIC -Wall -Wextra $(DEFINES)
|
||||
CXXFLAGS = -pipe --coverage -fprofile-abs-path -g -fPIC -std=gnu++1z -Wall -Wextra $(DEFINES)
|
||||
INCPATH = -I../../core -I. -I/usr/lib/x86_64-linux-gnu/qt6/mkspecs/linux-g++
|
||||
QMAKE = /usr/bin/qmake6
|
||||
DEL_FILE = rm -f
|
||||
CHK_DIR_EXISTS= test -d
|
||||
MKDIR = mkdir -p
|
||||
COPY = cp -f
|
||||
COPY_FILE = cp -f
|
||||
COPY_DIR = cp -f -R
|
||||
INSTALL_FILE = install -m 644 -p
|
||||
INSTALL_PROGRAM = install -m 755 -p
|
||||
INSTALL_DIR = cp -f -R
|
||||
QINSTALL = /usr/bin/qmake6 -install qinstall
|
||||
QINSTALL_PROGRAM = /usr/bin/qmake6 -install qinstall -exe
|
||||
DEL_FILE = rm -f
|
||||
SYMLINK = ln -f -s
|
||||
DEL_DIR = rmdir
|
||||
MOVE = mv -f
|
||||
TAR = tar -cf
|
||||
COMPRESS = gzip -9f
|
||||
DISTNAME = dbc_core1.0.0
|
||||
DISTDIR = /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/build-coverage/core/.tmp/dbc_core1.0.0
|
||||
AR = ar cqs
|
||||
RANLIB =
|
||||
SED = sed
|
||||
STRIP = strip
|
||||
|
||||
####### Output directory
|
||||
|
||||
OBJECTS_DIR = ./
|
||||
|
||||
####### Files
|
||||
|
||||
SOURCES = ../../core/dbc_attributes.cpp \
|
||||
../../core/decode_database.cpp \
|
||||
../../core/dbc_decode_builder.cpp \
|
||||
../../core/dbc_decoder.cpp \
|
||||
../../core/dbc_parser.cpp \
|
||||
../../core/dbc_statement_handler.cpp \
|
||||
../../core/dbc_tree_builder.cpp \
|
||||
../../core/tree_node.cpp
|
||||
OBJECTS = dbc_attributes.o \
|
||||
decode_database.o \
|
||||
dbc_decode_builder.o \
|
||||
dbc_decoder.o \
|
||||
dbc_parser.o \
|
||||
dbc_statement_handler.o \
|
||||
dbc_tree_builder.o \
|
||||
tree_node.o
|
||||
DIST = /usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/spec_pre.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/unix.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/linux.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/sanitize.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/gcc-base.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/gcc-base-unix.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/g++-base.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/g++-unix.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/qconfig.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3danimation.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dcore.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dextras.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dinput.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dlogic.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickanimation.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickextras.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickinput.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickrender.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickscene2d.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickscene3d.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3drender.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_bluetooth.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_charts.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_chartsqml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_concurrent.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_concurrent_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_core.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_core_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_datavisualization.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_datavisualizationqml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_dbus.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_dbus_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_designer.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_eglfs_kms_gbm_support_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_example_icons_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_examples_asset_downloader_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_fb_support_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_graphs.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_graphswidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_grpc.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_grpcquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_gui.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_gui_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_help.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_httpserver.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_hunspellinputmethod.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_input_support_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_kms_support_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsanimation.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsfolderlistmodel.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsplatform.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsqmlmodels.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labssettings.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labssharedimage.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labswavefrontmesh.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_linguist.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_location.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_multimedia.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_multimediawidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_network.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_network_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_networkauth.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_nfc.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_opengl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_opengl_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_openglwidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_openglwidgets_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_pdf.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_pdfquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_pdfwidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_positioning.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_positioningquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_printsupport.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_printsupport_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobuf.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobufqtcoretypes.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobufqtguitypes.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobufquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobufwellknowntypes.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlassetdownloader.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlcompiler.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlcore.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlintegration.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmllocalstorage.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlmeta.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlmeta_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlmodels.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlnetwork.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmltest.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlworkerscript.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlxmllistmodel.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3d.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dassetimport.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dassetutils.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3deffects.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dhelpers.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dhelpersimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3diblbaker.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dparticleeffects.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dparticles.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dphysics.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dphysicshelpers.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3druntimerender.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dutils.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dxr.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2basic.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2basicstyleimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2fusion.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2fusionstyleimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2imagine.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2imaginestyleimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2impl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2material.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2materialstyleimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2universal.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2universalstyleimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickdialogs2.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickdialogs2quickimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickdialogs2utils.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicklayouts.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktemplates2.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktimeline.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktimeline_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktimelineblendtrees.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktimelineblendtrees_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickvectorimage.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickwidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_remoteobjects.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_remoteobjectsqml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_repparser.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_scxml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_scxmlqml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_sensors.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_sensorsquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_serialbus.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_serialport.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_shadertools.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_shadertools_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_spatialaudio.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_sql.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_sql_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_statemachine.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_statemachineqml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_svg.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_svgwidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_testlib.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_testlib_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_texttospeech.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_uiplugin.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_uitools.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_virtualkeyboard.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_virtualkeyboardsettings.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandclient.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositor.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositoriviapplication.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositorpresentationtime.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositorwlshell.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositorxdgshell.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webchannel.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webchannelquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webenginecore.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webenginequick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webenginequickdelegatesqml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webenginewidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_websockets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webview.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webviewquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_widgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_widgets_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_xml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_xml_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/qt_functions.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/qt_config.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/linux-g++/qmake.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/spec_post.prf \
|
||||
../../.qmake.stash \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/exclusive_builds.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/toolchain.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/default_pre.prf \
|
||||
../../../core/core_files.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/resolve_config.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/default_post.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/warn_on.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/qmake_use.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/file_copies.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/testcase_targets.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/exceptions.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/yacc.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/lex.prf \
|
||||
../../../core/core.pro /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/attributes.h \
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/j1939.h \
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/signal_layout.h \
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/definition_key.h \
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_diagnostic.h \
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/multiplexing.h \
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_database.h \
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decode_builder.h \
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decoder.h \
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_parser.h \
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h \
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_tree_builder.h \
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/decode_database.h \
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/frame_info.h \
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/signal_info.h \
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/value_descriptions.h \
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/tree_node.h \
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/text_utils.h \
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/typefactory.h ../../core/dbc_attributes.cpp \
|
||||
../../core/decode_database.cpp \
|
||||
../../core/dbc_decode_builder.cpp \
|
||||
../../core/dbc_decoder.cpp \
|
||||
../../core/dbc_parser.cpp \
|
||||
../../core/dbc_statement_handler.cpp \
|
||||
../../core/dbc_tree_builder.cpp \
|
||||
../../core/tree_node.cpp
|
||||
QMAKE_TARGET = dbc_core
|
||||
DESTDIR =
|
||||
TARGET = libdbc_core.a
|
||||
|
||||
|
||||
first: all
|
||||
####### Build rules
|
||||
|
||||
staticlib: $(TARGET)
|
||||
|
||||
libdbc_core.a: $(OBJECTS) $(OBJCOMP)
|
||||
-$(DEL_FILE) $(TARGET)
|
||||
$(AR) $(DESTDIR)$(TARGET) $(OBJECTS)
|
||||
|
||||
|
||||
Makefile: ../../core/core.pro /usr/lib/x86_64-linux-gnu/qt6/mkspecs/linux-g++/qmake.conf /usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/spec_pre.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/unix.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/linux.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/sanitize.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/gcc-base.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/gcc-base-unix.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/g++-base.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/g++-unix.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/qconfig.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3danimation.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dcore.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dextras.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dinput.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dlogic.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickanimation.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickextras.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickinput.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickrender.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickscene2d.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickscene3d.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3drender.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_bluetooth.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_charts.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_chartsqml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_concurrent.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_concurrent_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_core.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_core_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_datavisualization.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_datavisualizationqml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_dbus.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_dbus_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_designer.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_eglfs_kms_gbm_support_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_example_icons_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_examples_asset_downloader_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_fb_support_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_graphs.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_graphswidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_grpc.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_grpcquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_gui.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_gui_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_help.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_httpserver.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_hunspellinputmethod.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_input_support_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_kms_support_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsanimation.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsfolderlistmodel.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsplatform.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsqmlmodels.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labssettings.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labssharedimage.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labswavefrontmesh.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_linguist.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_location.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_multimedia.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_multimediawidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_network.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_network_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_networkauth.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_nfc.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_opengl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_opengl_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_openglwidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_openglwidgets_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_pdf.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_pdfquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_pdfwidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_positioning.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_positioningquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_printsupport.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_printsupport_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobuf.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobufqtcoretypes.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobufqtguitypes.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobufquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobufwellknowntypes.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlassetdownloader.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlcompiler.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlcore.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlintegration.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmllocalstorage.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlmeta.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlmeta_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlmodels.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlnetwork.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmltest.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlworkerscript.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlxmllistmodel.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3d.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dassetimport.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dassetutils.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3deffects.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dhelpers.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dhelpersimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3diblbaker.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dparticleeffects.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dparticles.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dphysics.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dphysicshelpers.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3druntimerender.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dutils.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dxr.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2basic.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2basicstyleimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2fusion.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2fusionstyleimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2imagine.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2imaginestyleimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2impl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2material.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2materialstyleimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2universal.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2universalstyleimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickdialogs2.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickdialogs2quickimpl.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickdialogs2utils.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicklayouts.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktemplates2.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktimeline.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktimeline_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktimelineblendtrees.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktimelineblendtrees_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickvectorimage.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickwidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_remoteobjects.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_remoteobjectsqml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_repparser.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_scxml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_scxmlqml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_sensors.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_sensorsquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_serialbus.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_serialport.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_shadertools.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_shadertools_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_spatialaudio.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_sql.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_sql_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_statemachine.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_statemachineqml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_svg.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_svgwidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_testlib.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_testlib_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_texttospeech.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_uiplugin.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_uitools.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_virtualkeyboard.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_virtualkeyboardsettings.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandclient.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositor.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositoriviapplication.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositorpresentationtime.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositorwlshell.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositorxdgshell.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webchannel.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webchannelquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webenginecore.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webenginequick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webenginequickdelegatesqml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webenginewidgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_websockets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webview.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webviewquick.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_widgets.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_widgets_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_xml.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_xml_private.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/qt_functions.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/qt_config.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/linux-g++/qmake.conf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/spec_post.prf \
|
||||
../.qmake.stash \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/exclusive_builds.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/toolchain.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/default_pre.prf \
|
||||
../../core/core_files.pri \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/resolve_config.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/default_post.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/warn_on.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/qmake_use.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/file_copies.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/testcase_targets.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/exceptions.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/yacc.prf \
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/lex.prf \
|
||||
../../core/core.pro
|
||||
$(QMAKE) -o Makefile ../../core/core.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/spec_pre.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/unix.conf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/linux.conf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/sanitize.conf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/gcc-base.conf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/gcc-base-unix.conf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/g++-base.conf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/common/g++-unix.conf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/qconfig.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3danimation.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dcore.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dextras.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dinput.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dlogic.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquick.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickanimation.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickextras.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickinput.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickrender.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickscene2d.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3dquickscene3d.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_3drender.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_bluetooth.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_charts.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_chartsqml.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_concurrent.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_concurrent_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_core.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_core_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_datavisualization.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_datavisualizationqml.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_dbus.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_dbus_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_designer.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_devicediscovery_support_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_eglfs_kms_gbm_support_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_example_icons_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_examples_asset_downloader_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_fb_support_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_graphs.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_graphswidgets.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_grpc.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_grpcquick.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_gui.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_gui_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_help.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_httpserver.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_hunspellinputmethod.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_input_support_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_kms_support_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsanimation.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsfolderlistmodel.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsplatform.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labsqmlmodels.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labssettings.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labssharedimage.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_labswavefrontmesh.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_linguist.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_location.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_multimedia.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_multimediawidgets.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_network.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_network_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_networkauth.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_nfc.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_opengl.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_opengl_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_openglwidgets.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_openglwidgets_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_pdf.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_pdfquick.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_pdfwidgets.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_positioning.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_positioningquick.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_printsupport.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_printsupport_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobuf.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobufqtcoretypes.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobufqtguitypes.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobufquick.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_protobufwellknowntypes.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qml.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlassetdownloader.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlcompiler.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlcore.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlintegration.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmllocalstorage.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlmeta.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlmeta_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlmodels.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlnetwork.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmltest.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlworkerscript.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_qmlxmllistmodel.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3d.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dassetimport.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dassetutils.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3deffects.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dhelpers.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dhelpersimpl.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3diblbaker.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dparticleeffects.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dparticles.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dphysics.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dphysicshelpers.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3druntimerender.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dutils.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quick3dxr.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2basic.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2basicstyleimpl.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2fusion.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2fusionstyleimpl.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2imagine.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2imaginestyleimpl.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2impl.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2material.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2materialstyleimpl.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2universal.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickcontrols2universalstyleimpl.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickdialogs2.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickdialogs2quickimpl.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickdialogs2utils.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicklayouts.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktemplates2.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktimeline.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktimeline_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktimelineblendtrees.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quicktimelineblendtrees_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickvectorimage.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_quickwidgets.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_remoteobjects.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_remoteobjectsqml.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_repparser.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_scxml.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_scxmlqml.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_sensors.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_sensorsquick.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_serialbus.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_serialport.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_shadertools.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_shadertools_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_spatialaudio.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_sql.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_sql_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_statemachine.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_statemachineqml.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_svg.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_svgwidgets.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_testlib.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_testlib_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_texttospeech.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_uiplugin.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_uitools.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_virtualkeyboard.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_virtualkeyboardsettings.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandclient.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositor.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositoriviapplication.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositorpresentationtime.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositorwlshell.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_waylandcompositorxdgshell.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webchannel.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webchannelquick.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webenginecore.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webenginequick.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webenginequickdelegatesqml.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webenginewidgets.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_websockets.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webview.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_webviewquick.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_widgets.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_widgets_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_xml.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/modules/qt_lib_xml_private.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/qt_functions.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/qt_config.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/linux-g++/qmake.conf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/spec_post.prf:
|
||||
../.qmake.stash:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/exclusive_builds.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/toolchain.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/default_pre.prf:
|
||||
../../core/core_files.pri:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/resolve_config.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/default_post.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/warn_on.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/qmake_use.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/file_copies.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/testcase_targets.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/exceptions.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/yacc.prf:
|
||||
/usr/lib/x86_64-linux-gnu/qt6/mkspecs/features/lex.prf:
|
||||
../../core/core.pro:
|
||||
qmake: FORCE
|
||||
@$(QMAKE) -o Makefile ../../core/core.pro CONFIG+=dbc_qt CONFIG+=debug CONFIG-=release 'QMAKE_CXXFLAGS+=--coverage -fprofile-abs-path' QMAKE_LFLAGS+=--coverage
|
||||
|
||||
qmake_all: FORCE
|
||||
|
||||
|
||||
all: Makefile libdbc_core.a
|
||||
|
||||
dist: distdir FORCE
|
||||
(cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR)
|
||||
|
||||
distdir: FORCE
|
||||
@test -d $(DISTDIR) || mkdir -p $(DISTDIR)
|
||||
$(COPY_FILE) --parents $(DIST) $(DISTDIR)/
|
||||
|
||||
|
||||
clean: compiler_clean
|
||||
-$(DEL_FILE) $(OBJECTS)
|
||||
-$(DEL_FILE) *~ core *.core
|
||||
|
||||
|
||||
distclean: clean
|
||||
-$(DEL_FILE) $(TARGET)
|
||||
-$(DEL_FILE) Makefile
|
||||
|
||||
|
||||
####### Sub-libraries
|
||||
|
||||
check: first
|
||||
|
||||
benchmark: first
|
||||
|
||||
compiler_yacc_decl_make_all:
|
||||
compiler_yacc_decl_clean:
|
||||
compiler_yacc_impl_make_all:
|
||||
compiler_yacc_impl_clean:
|
||||
compiler_lex_make_all:
|
||||
compiler_lex_clean:
|
||||
compiler_clean:
|
||||
|
||||
####### Compile
|
||||
|
||||
dbc_attributes.o: ../../core/dbc_attributes.cpp ../../core/dbc_statement_handler.h \
|
||||
../../core/dbc_database.h \
|
||||
../../core/frame_info.h \
|
||||
../../core/attributes.h \
|
||||
../../core/signal_info.h \
|
||||
../../core/multiplexing.h \
|
||||
../../core/value_descriptions.h \
|
||||
../../core/dbc_diagnostic.h \
|
||||
../../core/typefactory.h
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o dbc_attributes.o ../../core/dbc_attributes.cpp
|
||||
|
||||
decode_database.o: ../../core/decode_database.cpp ../../core/decode_database.h \
|
||||
../../core/attributes.h \
|
||||
../../core/definition_key.h \
|
||||
../../core/multiplexing.h \
|
||||
../../core/value_descriptions.h \
|
||||
../../core/j1939.h \
|
||||
../../core/signal_layout.h
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o decode_database.o ../../core/decode_database.cpp
|
||||
|
||||
dbc_decode_builder.o: ../../core/dbc_decode_builder.cpp ../../core/dbc_decode_builder.h \
|
||||
../../core/dbc_database.h \
|
||||
../../core/frame_info.h \
|
||||
../../core/attributes.h \
|
||||
../../core/signal_info.h \
|
||||
../../core/multiplexing.h \
|
||||
../../core/value_descriptions.h \
|
||||
../../core/decode_database.h \
|
||||
../../core/definition_key.h
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o dbc_decode_builder.o ../../core/dbc_decode_builder.cpp
|
||||
|
||||
dbc_decoder.o: ../../core/dbc_decoder.cpp ../../core/dbc_decoder.h \
|
||||
../../core/decode_database.h \
|
||||
../../core/attributes.h \
|
||||
../../core/definition_key.h \
|
||||
../../core/multiplexing.h \
|
||||
../../core/value_descriptions.h \
|
||||
../../core/j1939.h \
|
||||
../../core/signal_layout.h
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o dbc_decoder.o ../../core/dbc_decoder.cpp
|
||||
|
||||
dbc_parser.o: ../../core/dbc_parser.cpp ../../core/dbc_parser.h \
|
||||
../../core/dbc_diagnostic.h \
|
||||
../../core/dbc_database.h \
|
||||
../../core/frame_info.h \
|
||||
../../core/attributes.h \
|
||||
../../core/signal_info.h \
|
||||
../../core/multiplexing.h \
|
||||
../../core/value_descriptions.h \
|
||||
../../core/dbc_statement_handler.h \
|
||||
../../core/typefactory.h \
|
||||
../../core/text_utils.h
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o dbc_parser.o ../../core/dbc_parser.cpp
|
||||
|
||||
dbc_statement_handler.o: ../../core/dbc_statement_handler.cpp ../../core/dbc_statement_handler.h \
|
||||
../../core/dbc_database.h \
|
||||
../../core/frame_info.h \
|
||||
../../core/attributes.h \
|
||||
../../core/signal_info.h \
|
||||
../../core/multiplexing.h \
|
||||
../../core/value_descriptions.h \
|
||||
../../core/dbc_diagnostic.h \
|
||||
../../core/typefactory.h \
|
||||
../../core/j1939.h \
|
||||
../../core/text_utils.h \
|
||||
../../core/signal_layout.h
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o dbc_statement_handler.o ../../core/dbc_statement_handler.cpp
|
||||
|
||||
dbc_tree_builder.o: ../../core/dbc_tree_builder.cpp ../../core/dbc_tree_builder.h \
|
||||
../../core/dbc_database.h \
|
||||
../../core/frame_info.h \
|
||||
../../core/attributes.h \
|
||||
../../core/signal_info.h \
|
||||
../../core/multiplexing.h \
|
||||
../../core/value_descriptions.h \
|
||||
../../core/tree_node.h \
|
||||
../../core/definition_key.h
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o dbc_tree_builder.o ../../core/dbc_tree_builder.cpp
|
||||
|
||||
tree_node.o: ../../core/tree_node.cpp ../../core/tree_node.h \
|
||||
../../core/definition_key.h \
|
||||
../../core/frame_info.h \
|
||||
../../core/attributes.h \
|
||||
../../core/signal_info.h \
|
||||
../../core/multiplexing.h \
|
||||
../../core/value_descriptions.h
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o tree_node.o ../../core/tree_node.cpp
|
||||
|
||||
####### Install
|
||||
|
||||
install: FORCE
|
||||
|
||||
uninstall: FORCE
|
||||
|
||||
FORCE:
|
||||
|
||||
.SUFFIXES:
|
||||
|
||||
Binary file not shown.
Whitespace-only changes.
Whitespace-only changes.
Binary file not shown.
Binary file not shown.
Whitespace-only changes.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Whitespace-only changes.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
Binary file not shown.
|
After Width: | Height: | Size: 141 B |
@@ -0,0 +1 @@
|
||||
genhtml coverage.info --branch-coverage --demangle-cpp --output-directory html --quiet
|
||||
@@ -0,0 +1,253 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_attributes.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_attributes.cpp<span style="font-size: 80%;"> (<a href="dbc_attributes.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">98.8 %</td>
|
||||
<td class="headerCovTableEntry">260</td>
|
||||
<td class="headerCovTableEntry">257</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">20</td>
|
||||
<td class="headerCovTableEntry">20</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">73.5 %</td>
|
||||
<td class="headerCovTableEntry">604</td>
|
||||
<td class="headerCovTableEntry">444</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="dbc_attributes.cpp.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L232">(anonymous namespace)::ApplyDefault(DbcDatabase&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, AttributeDefinition const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">15</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L212">(anonymous namespace)::Target(DbcDatabase&, AttributeAssignment const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">15</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L203">(anonymous namespace)::ParseId(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, AttributeAssignment&)</a></td>
|
||||
|
||||
<td class="coverFnHi">32</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L225">(anonymous namespace)::ValidateCycleTime(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::variant<long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">36</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L97">(anonymous namespace)::ParseScope(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">110</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L93">(anonymous namespace)::IsScope(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">115</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L121">(anonymous namespace)::Value((anonymous namespace)::Token const&, AttributeDefinition const&, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">204</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L196">(anonymous namespace)::FindDefinition(DbcDatabase&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">218</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L83">(anonymous namespace)::AttributeTokens::End() const</a></td>
|
||||
|
||||
<td class="coverFnHi">245</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L82">(anonymous namespace)::AttributeTokens::Empty() const</a></td>
|
||||
|
||||
<td class="coverFnHi">262</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L76">(anonymous namespace)::AttributeTokens::Quoted()</a></td>
|
||||
|
||||
<td class="coverFnHi">315</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L146">(anonymous namespace)::Define((anonymous namespace)::AttributeTokens&, DbcDatabase&)</a></td>
|
||||
|
||||
<td class="coverFnHi">393</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L253">DbcParseContext::ResolveAttributes(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<DbcDiagnostic, std::allocator<DbcDiagnostic> >&)</a></td>
|
||||
|
||||
<td class="coverFnHi">549</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L64">(anonymous namespace)::AttributeTokens::AttributeTokens(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">621</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L12">(anonymous namespace)::Tokenize(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">621</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L249">DbcAttributeHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">621</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L106">long (anonymous namespace)::ParseNumber<long>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">866</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_attributes.cpp.gcov.html#L106">double (anonymous namespace)::ParseNumber<double>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">239</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_attributes.cpp.gcov.html#L106">long (anonymous namespace)::ParseNumber<long>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">627</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L70">(anonymous namespace)::AttributeTokens::Word()</a></td>
|
||||
|
||||
<td class="coverFnHi">1681</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L65">(anonymous namespace)::AttributeTokens::Take()</a></td>
|
||||
|
||||
<td class="coverFnHi">2639</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,253 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_attributes.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_attributes.cpp<span style="font-size: 80%;"> (<a href="dbc_attributes.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">98.8 %</td>
|
||||
<td class="headerCovTableEntry">260</td>
|
||||
<td class="headerCovTableEntry">257</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">20</td>
|
||||
<td class="headerCovTableEntry">20</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">73.5 %</td>
|
||||
<td class="headerCovTableEntry">604</td>
|
||||
<td class="headerCovTableEntry">444</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="dbc_attributes.cpp.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L232">(anonymous namespace)::ApplyDefault(DbcDatabase&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, AttributeDefinition const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">15</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L64">(anonymous namespace)::AttributeTokens::AttributeTokens(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">621</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L82">(anonymous namespace)::AttributeTokens::Empty() const</a></td>
|
||||
|
||||
<td class="coverFnHi">262</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L83">(anonymous namespace)::AttributeTokens::End() const</a></td>
|
||||
|
||||
<td class="coverFnHi">245</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L76">(anonymous namespace)::AttributeTokens::Quoted()</a></td>
|
||||
|
||||
<td class="coverFnHi">315</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L65">(anonymous namespace)::AttributeTokens::Take()</a></td>
|
||||
|
||||
<td class="coverFnHi">2639</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L70">(anonymous namespace)::AttributeTokens::Word()</a></td>
|
||||
|
||||
<td class="coverFnHi">1681</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L146">(anonymous namespace)::Define((anonymous namespace)::AttributeTokens&, DbcDatabase&)</a></td>
|
||||
|
||||
<td class="coverFnHi">393</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L196">(anonymous namespace)::FindDefinition(DbcDatabase&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">218</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L93">(anonymous namespace)::IsScope(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">115</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L203">(anonymous namespace)::ParseId(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, AttributeAssignment&)</a></td>
|
||||
|
||||
<td class="coverFnHi">32</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L97">(anonymous namespace)::ParseScope(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">110</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L212">(anonymous namespace)::Target(DbcDatabase&, AttributeAssignment const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">15</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L12">(anonymous namespace)::Tokenize(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">621</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L225">(anonymous namespace)::ValidateCycleTime(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::variant<long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">36</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L121">(anonymous namespace)::Value((anonymous namespace)::Token const&, AttributeDefinition const&, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">204</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L249">DbcAttributeHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">621</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L253">DbcParseContext::ResolveAttributes(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<DbcDiagnostic, std::allocator<DbcDiagnostic> >&)</a></td>
|
||||
|
||||
<td class="coverFnHi">549</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_attributes.cpp.gcov.html#L106">long (anonymous namespace)::ParseNumber<long>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">866</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_attributes.cpp.gcov.html#L106">double (anonymous namespace)::ParseNumber<double>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">239</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_attributes.cpp.gcov.html#L106">long (anonymous namespace)::ParseNumber<long>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">627</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,451 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_attributes.cpp</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_attributes.cpp<span style="font-size: 80%;"> (source / <a href="dbc_attributes.cpp.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">98.8 %</td>
|
||||
<td class="headerCovTableEntry">260</td>
|
||||
<td class="headerCovTableEntry">257</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">20</td>
|
||||
<td class="headerCovTableEntry">20</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">73.5 %</td>
|
||||
<td class="headerCovTableEntry">604</td>
|
||||
<td class="headerCovTableEntry">444</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : // SPDX-License-Identifier: MIT</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : #include "dbc_statement_handler.h"</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : #include <charconv></span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : #include <cmath></span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : #include <limits></span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : #include <set></span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : </span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : namespace {</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : struct Token {</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : std::string text;</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : bool quoted = false;</span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : };</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : </span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> :<span class="tlaGNC"> 621 : std::vector<Token> Tokenize(const std::string &text) {</span></span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> :<span class="tlaGNC"> 621 : std::vector<Token> tokens;</span></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> :<span class="tlaGNC"> 621 : std::size_t index = 0U;</span></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> [<span class="tlaGBC" title="Branch 0 was taken 5528 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 613 times"> + </span>]:<span class="tlaGNC"> 6141 : while (index < text.size()) {</span></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> :<span class="tlaGNC"> 5528 : const char character = text[index++];</span></span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> [<span class="tlaGBC" title="Branch 0 was taken 3390 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2138 times"> + </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaGBC" title="Branch 3 was taken 3390 times"> + </span>]:<span class="tlaGNC"> 5528 : if (character == ' ' || character == '\t')</span></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> :<span class="tlaGNC"> 2138 : continue;</span></span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> :<span class="tlaGNC"> 3390 : Token token;</span></span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> [<span class="tlaGBC" title="Branch 0 was taken 652 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2738 times"> + </span>]:<span class="tlaGNC"> 3390 : if (character == '"') {</span></span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> :<span class="tlaGNC"> 652 : token.quoted = true;</span></span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> :<span class="tlaGNC"> 652 : bool closed = false;</span></span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> [<span class="tlaGBC" title="Branch 0 was taken 1936 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 1938 : while (index < text.size()) {</span></span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> :<span class="tlaGNC"> 1936 : char next = text[index++];</span></span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> [<span class="tlaGBC" title="Branch 0 was taken 648 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1288 times"> + </span>]:<span class="tlaGNC"> 1936 : if (next == '"') {</span></span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> :<span class="tlaGNC"> 648 : closed = true;</span></span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> :<span class="tlaGNC"> 648 : break;</span></span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : : }</span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1284 times"> + </span>]:<span class="tlaGNC"> 1288 : if (next == '\\') {</span></span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span>]:<span class="tlaGNC"> 4 : if (index == text.size())</span></span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> [<span class="tlaUNC" title="Branch 0 was not executed"> # </span><span class="tlaUNC" title="Branch 1 was not executed"> # </span>]:<span class="tlaUNC"> 0 : throw std::runtime_error("Incomplete attribute escape.");</span></span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> :<span class="tlaGNC"> 4 : next = text[index++];</span></span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1 time"> + </span>]:<span class="tlaGNC"> 4 : if (next != '"' && next != '\\')</span></span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Invalid attribute escape.");</span></span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : : }</span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> [<span class="tlaGBC" title="Branch 0 was taken 1286 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1286 : token.text += next;</span></span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : : }</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 648 times"> + </span>]:<span class="tlaGNC"> 650 : if (!closed)</span></span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Unterminated attribute string.");</span></span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> [<span class="tlaGBC" title="Branch 0 was taken 33 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 615 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 33 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1296 : if (index < text.size() && text[index] != ' ' && text[index] != '\t' &&</span></span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> [<span class="tlaGBC" title="Branch 0 was taken 648 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 23 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 10 times"> + </span> :<span class="tlaGNC"> 1296 : text[index] != ',' && text[index] != ';')</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 21 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 646 times"> + </span>]
|
||||
<span id="L44"><span class="lineNum"> 44</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Missing separator after attribute string.");</span></span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> [<span class="tlaGBC" title="Branch 0 was taken 2125 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 613 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 10 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2115 times"> + </span>]:<span class="tlaGNC"> 2738 : } else if (character == ';' || character == ',') {</span></span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> [<span class="tlaGBC" title="Branch 0 was taken 623 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 623 : token.text = character;</span></span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : : } else {</span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> [<span class="tlaGBC" title="Branch 0 was taken 2115 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2115 : token.text = character;</span></span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> [<span class="tlaGBC" title="Branch 0 was taken 7618 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1521 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 7618 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 18280 : while (index < text.size() && text[index] != ' ' && text[index] != '\t' &&</span></span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> [<span class="tlaGBC" title="Branch 0 was taken 9139 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 7028 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 590 times"> + </span> :<span class="tlaGNC"> 18280 : text[index] != ';' && text[index] != ',') {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 7028 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 7028 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 2113 times"> + </span>]
|
||||
<span id="L51"><span class="lineNum"> 51</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 7026 times"> + </span>]:<span class="tlaGNC"> 7028 : if (text[index] == '"')</span></span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Missing separator before attribute string.");</span></span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> [<span class="tlaGBC" title="Branch 0 was taken 7026 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 7026 : token.text += text[index++];</span></span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> : : }</span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> : : }</span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> [<span class="tlaGBC" title="Branch 0 was taken 3382 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 3382 : tokens.push_back(token);</span></span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> :<span class="tlaGNC"> 3390 : }</span></span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> [<span class="tlaGBC" title="Branch 0 was taken 613 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 613 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 613 : if (tokens.empty() || tokens.back().quoted || tokens.back().text != ";")</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 613 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 611 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 2 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 611 times"> + </span>]
|
||||
<span id="L59"><span class="lineNum"> 59</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Attribute statement requires a semicolon.");</span></span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> :<span class="tlaGNC"> 611 : tokens.pop_back();</span></span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> :<span class="tlaGNC"> 611 : return tokens;</span></span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> :<span class="tlaGNC"> 10 : }</span></span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> : : </span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> : : class AttributeTokens {</span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> : : public:</span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> :<span class="tlaGNC"> 621 : explicit AttributeTokens(const std::string &line) : tokens(Tokenize(line)) {}</span></span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> :<span class="tlaGNC"> 2639 : Token Take() {</span></span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2635 times"> + </span>]:<span class="tlaGNC"> 2639 : if (position == tokens.size())</span></span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::runtime_error("Incomplete attribute statement.");</span></span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> :<span class="tlaGNC"> 2635 : return tokens[position++];</span></span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> : : }</span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> :<span class="tlaGNC"> 1681 : std::string Word() {</span></span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> [<span class="tlaGBC" title="Branch 0 was taken 1681 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1681 : const Token token = Take();</span></span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> [<span class="tlaGBC" title="Branch 0 was taken 1679 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 1679 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 1681 : if (token.quoted || token.text == "," || token.text == ";")</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 1679 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 1679 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaUNC" title="Branch 8 was not taken"> - </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 1679 times"> + </span><span class="tlaGBC" title="Branch 10 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 11 was taken 1679 times"> + </span>]
|
||||
<span id="L75"><span class="lineNum"> 75</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Expected an attribute keyword or number.");</span></span>
|
||||
<span id="L76"><span class="lineNum"> 76</span> [<span class="tlaGBC" title="Branch 0 was taken 1679 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 3358 : return token.text;</span></span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> :<span class="tlaGNC"> 1681 : }</span></span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> :<span class="tlaGNC"> 315 : std::string Quoted() {</span></span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> [<span class="tlaGBC" title="Branch 0 was taken 311 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span>]:<span class="tlaGNC"> 315 : const Token token = Take();</span></span>
|
||||
<span id="L80"><span class="lineNum"> 80</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 309 times"> + </span>]:<span class="tlaGNC"> 311 : if (!token.quoted)</span></span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Expected a quoted attribute name or string.");</span></span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> [<span class="tlaGBC" title="Branch 0 was taken 309 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 618 : return token.text;</span></span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> :<span class="tlaGNC"> 311 : }</span></span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> :<span class="tlaGNC"> 262 : bool Empty() const { return position == tokens.size(); }</span></span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> :<span class="tlaGNC"> 245 : void End() const {</span></span>
|
||||
<span id="L86"><span class="lineNum"> 86</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 245 times"> + </span>]:<span class="tlaGNC"> 245 : if (!Empty())</span></span>
|
||||
<span id="L87"><span class="lineNum"> 87</span> [<span class="tlaUNC" title="Branch 0 was not executed"> # </span><span class="tlaUNC" title="Branch 1 was not executed"> # </span>]:<span class="tlaUNC"> 0 : throw std::runtime_error("Unexpected trailing attribute fields.");</span></span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> :<span class="tlaGNC"> 245 : }</span></span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> : : </span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> : : private:</span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> : : std::vector<Token> tokens;</span>
|
||||
<span id="L92"><span class="lineNum"> 92</span> : : std::size_t position = 0U;</span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> : : };</span>
|
||||
<span id="L94"><span class="lineNum"> 94</span> : : </span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> :<span class="tlaGNC"> 115 : bool IsScope(const std::string &text) {</span></span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> [<span class="tlaGBC" title="Branch 0 was taken 88 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 27 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 83 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 5 times"> + </span> :<span class="tlaGNC"> 115 : return text == "BO_" || text == "SG_" || text == "BU_" || text == "EV_";</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 82 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 6 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 7 was taken 81 times"> + </span>]
|
||||
<span id="L97"><span class="lineNum"> 97</span> : : }</span>
|
||||
<span id="L98"><span class="lineNum"> 98</span> : : </span>
|
||||
<span id="L99"><span class="lineNum"> 99</span> :<span class="tlaGNC"> 110 : AttributeScope ParseScope(const std::string &text) {</span></span>
|
||||
<span id="L100"><span class="lineNum"> 100</span> [<span class="tlaGBC" title="Branch 0 was taken 93 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 17 times"> + </span>]:<span class="tlaGNC"> 110 : if (text == "BO_") return AttributeScope::Frame;</span></span>
|
||||
<span id="L101"><span class="lineNum"> 101</span> [<span class="tlaGBC" title="Branch 0 was taken 11 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6 times"> + </span>]:<span class="tlaGNC"> 17 : if (text == "SG_") return AttributeScope::Signal;</span></span>
|
||||
<span id="L102"><span class="lineNum"> 102</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span>]:<span class="tlaGNC"> 6 : if (text == "BU_") return AttributeScope::Node;</span></span>
|
||||
<span id="L103"><span class="lineNum"> 103</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 4 : if (text == "EV_") return AttributeScope::Environment;</span></span>
|
||||
<span id="L104"><span class="lineNum"> 104</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Unsupported attribute scope: " + text);</span></span>
|
||||
<span id="L105"><span class="lineNum"> 105</span> : : }</span>
|
||||
<span id="L106"><span class="lineNum"> 106</span> : : </span>
|
||||
<span id="L107"><span class="lineNum"> 107</span> : : template<class Numeric></span>
|
||||
<span id="L108"><span class="lineNum"> 108</span> :<span class="tlaGNC"> 866 : Numeric ParseNumber(const std::string &text) {</span></span>
|
||||
<span id="L109"><span class="lineNum"> 109</span> :<span class="tlaGNC"> 866 : const char *begin = text.data();</span></span>
|
||||
<span id="L110"><span class="lineNum"> 110</span> :<span class="tlaGNC"> 866 : const char *end = begin + text.size();</span></span>
|
||||
<span id="L111"><span class="lineNum"> 111</span> [<span class="tlaGBC" title="Branch 0 was taken 866 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 78 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 788 times"> + </span>]:<span class="tlaGNC"> 866 : if (begin != end && *begin == '+') {</span></span>
|
||||
<span id="L112"><span class="lineNum"> 112</span> :<span class="tlaGNC"> 78 : ++begin;</span></span>
|
||||
<span id="L113"><span class="lineNum"> 113</span> [<span class="tlaGBC" title="Branch 0 was taken 54 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 24 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 30 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 24 times"> + </span> :<span class="tlaGNC"> 78 : if (begin != end && (*begin == '-' || *begin == '+'))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 24 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 6 times"> + </span>]
|
||||
<span id="L114"><span class="lineNum"> 114</span> [<span class="tlaGBC" title="Branch 0 was taken 48 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 48 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 48 : throw std::runtime_error("Invalid attribute number: " + text);</span></span>
|
||||
<span id="L115"><span class="lineNum"> 115</span> : : }</span>
|
||||
<span id="L116"><span class="lineNum"> 116</span> :<span class="tlaGNC"> 818 : Numeric value = 0;</span></span>
|
||||
<span id="L117"><span class="lineNum"> 117</span> [<span class="tlaGBC" title="Branch 0 was taken 595 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 818 : const std::from_chars_result parsed = std::from_chars(begin, end, value);</span></span>
|
||||
<span id="L118"><span class="lineNum"> 118</span> [<span class="tlaGBC" title="Branch 0 was taken 794 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 24 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 664 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 130 times"> + </span> :<span class="tlaGNC"> 818 : if (begin == end || parsed.ec != std::errc() || parsed.ptr != end || !std::isfinite(value))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 576 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 88 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 28 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 548 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 270 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 548 times"> + </span>]
|
||||
<span id="L119"><span class="lineNum"> 119</span> [<span class="tlaGBC" title="Branch 0 was taken 270 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 270 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 270 : throw std::runtime_error("Invalid attribute number: " + text);</span></span>
|
||||
<span id="L120"><span class="lineNum"> 120</span> :<span class="tlaGNC"> 548 : return value;</span></span>
|
||||
<span id="L121"><span class="lineNum"> 121</span> : : }</span>
|
||||
<span id="L122"><span class="lineNum"> 122</span> : : </span>
|
||||
<span id="L123"><span class="lineNum"> 123</span> :<span class="tlaGNC"> 204 : AttributeValue Value(const Token &token, const AttributeDefinition &definition, bool isDefault) {</span></span>
|
||||
<span id="L124"><span class="lineNum"> 124</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 198 times"> + </span>]:<span class="tlaGNC"> 204 : if (definition.type == AttributeType::String) {</span></span>
|
||||
<span id="L125"><span class="lineNum"> 125</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 6 : if (!token.quoted) throw std::runtime_error("Attribute STRING requires quoted text.");</span></span>
|
||||
<span id="L126"><span class="lineNum"> 126</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : return token.text;</span></span>
|
||||
<span id="L127"><span class="lineNum"> 127</span> : : }</span>
|
||||
<span id="L128"><span class="lineNum"> 128</span> [<span class="tlaGBC" title="Branch 0 was taken 10 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 188 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 5 times"> + </span> :<span class="tlaGNC"> 198 : if (definition.type == AttributeType::Enum && isDefault && token.quoted) {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 1 time"> + </span>]
|
||||
<span id="L129"><span class="lineNum"> 129</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 9 : for (std::size_t index = 0U; index < definition.enumValues.size(); ++index) {</span></span>
|
||||
<span id="L130"><span class="lineNum"> 130</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 5 times"> + </span>]:<span class="tlaGNC"> 7 : if (definition.enumValues[index] == token.text)</span></span>
|
||||
<span id="L131"><span class="lineNum"> 131</span> :<span class="tlaGNC"> 2 : return static_cast<std::int64_t>(index);</span></span>
|
||||
<span id="L132"><span class="lineNum"> 132</span> : : }</span>
|
||||
<span id="L133"><span class="lineNum"> 133</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Unknown attribute ENUM default label.");</span></span>
|
||||
<span id="L134"><span class="lineNum"> 134</span> : : }</span>
|
||||
<span id="L135"><span class="lineNum"> 135</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 192 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 194 : if (token.quoted) throw std::runtime_error("Numeric attribute requires an unquoted number.");</span></span>
|
||||
<span id="L136"><span class="lineNum"> 136</span> [<span class="tlaGBC" title="Branch 0 was taken 53 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 139 times"> + </span>]:<span class="tlaGNC"> 192 : if (definition.type == AttributeType::Float) {</span></span>
|
||||
<span id="L137"><span class="lineNum"> 137</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 48 times"> + </span>]:<span class="tlaGNC"> 53 : const double value = ParseNumber<double>(token.text);</span></span>
|
||||
<span id="L138"><span class="lineNum"> 138</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 3 times"> + </span>]:<span class="tlaGNC"> 5 : if (value < definition.minimum || value > definition.maximum)</span></span>
|
||||
<span id="L139"><span class="lineNum"> 139</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Attribute FLOAT value outside definition range.");</span></span>
|
||||
<span id="L140"><span class="lineNum"> 140</span> :<span class="tlaGNC"> 3 : return value;</span></span>
|
||||
<span id="L141"><span class="lineNum"> 141</span> : : }</span>
|
||||
<span id="L142"><span class="lineNum"> 142</span> [<span class="tlaGBC" title="Branch 0 was taken 31 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 108 times"> + </span>]:<span class="tlaGNC"> 139 : const std::int64_t value = ParseNumber<std::int64_t>(token.text);</span></span>
|
||||
<span id="L143"><span class="lineNum"> 143</span> [<span class="tlaGBC" title="Branch 0 was taken 31 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 27 times"> + </span>]:<span class="tlaGNC"> 31 : if (value < definition.integerMinimum || value > definition.integerMaximum)</span></span>
|
||||
<span id="L144"><span class="lineNum"> 144</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::runtime_error("Attribute integer/ENUM value outside definition range.");</span></span>
|
||||
<span id="L145"><span class="lineNum"> 145</span> :<span class="tlaGNC"> 27 : return value;</span></span>
|
||||
<span id="L146"><span class="lineNum"> 146</span> : : }</span>
|
||||
<span id="L147"><span class="lineNum"> 147</span> : : </span>
|
||||
<span id="L148"><span class="lineNum"> 148</span> :<span class="tlaGNC"> 393 : void Define(AttributeTokens &tokens, DbcDatabase &database) {</span></span>
|
||||
<span id="L149"><span class="lineNum"> 149</span> :<span class="tlaGNC"> 393 : AttributeDefinition definition;</span></span>
|
||||
<span id="L150"><span class="lineNum"> 150</span> [<span class="tlaGBC" title="Branch 0 was taken 393 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 393 : const Token first = tokens.Take();</span></span>
|
||||
<span id="L151"><span class="lineNum"> 151</span> [<span class="tlaGBC" title="Branch 0 was taken 393 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 393 : std::string name = first.text;</span></span>
|
||||
<span id="L152"><span class="lineNum"> 152</span> [<span class="tlaGBC" title="Branch 0 was taken 76 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 317 times"> + </span>]:<span class="tlaGNC"> 393 : if (!first.quoted) {</span></span>
|
||||
<span id="L153"><span class="lineNum"> 153</span> [<span class="tlaGBC" title="Branch 0 was taken 74 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 76 : definition.scope = ParseScope(first.text);</span></span>
|
||||
<span id="L154"><span class="lineNum"> 154</span> [<span class="tlaGBC" title="Branch 0 was taken 72 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 74 : name = tokens.Quoted();</span></span>
|
||||
<span id="L155"><span class="lineNum"> 155</span> : : }</span>
|
||||
<span id="L156"><span class="lineNum"> 156</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 389 times"> + </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 389 : if (name.empty()) throw std::runtime_error("Empty attribute name.");</span></span>
|
||||
<span id="L157"><span class="lineNum"> 157</span> [<span class="tlaGBC" title="Branch 0 was taken 387 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 389 : const std::string type = tokens.Word();</span></span>
|
||||
<span id="L158"><span class="lineNum"> 158</span> [<span class="tlaGBC" title="Branch 0 was taken 387 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 230 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 157 times"> + </span> :<span class="tlaGNC"> 387 : if (type == "INT" || type == "HEX") {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 230 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 98 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 132 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 255 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 132 times"> + </span>]
|
||||
<span id="L159"><span class="lineNum"> 159</span> [<span class="tlaGBC" title="Branch 0 was taken 255 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 157 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 98 times"> + </span>]:<span class="tlaGNC"> 255 : definition.type = type == "INT" ? AttributeType::Integer : AttributeType::Hex;</span></span>
|
||||
<span id="L160"><span class="lineNum"> 160</span> [<span class="tlaGBC" title="Branch 0 was taken 255 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 201 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 54 times"> + </span>]:<span class="tlaGNC"> 309 : definition.integerMinimum = ParseNumber<std::int64_t>(tokens.Word());</span></span>
|
||||
<span id="L161"><span class="lineNum"> 161</span> [<span class="tlaGBC" title="Branch 0 was taken 201 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 145 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 56 times"> + </span>]:<span class="tlaGNC"> 257 : definition.integerMaximum = ParseNumber<std::int64_t>(tokens.Word());</span></span>
|
||||
<span id="L162"><span class="lineNum"> 162</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 143 times"> + </span>]:<span class="tlaGNC"> 145 : if (definition.integerMinimum > definition.integerMaximum)</span></span>
|
||||
<span id="L163"><span class="lineNum"> 163</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Reversed attribute integer range.");</span></span>
|
||||
<span id="L164"><span class="lineNum"> 164</span> [<span class="tlaGBC" title="Branch 0 was taken 132 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 106 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 26 times"> + </span>]:<span class="tlaGNC"> 132 : } else if (type == "FLOAT") {</span></span>
|
||||
<span id="L165"><span class="lineNum"> 165</span> :<span class="tlaGNC"> 106 : definition.type = AttributeType::Float;</span></span>
|
||||
<span id="L166"><span class="lineNum"> 166</span> [<span class="tlaGBC" title="Branch 0 was taken 106 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 80 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 26 times"> + </span>]:<span class="tlaGNC"> 132 : definition.minimum = ParseNumber<double>(tokens.Word());</span></span>
|
||||
<span id="L167"><span class="lineNum"> 167</span> [<span class="tlaGBC" title="Branch 0 was taken 80 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 54 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 26 times"> + </span>]:<span class="tlaGNC"> 106 : definition.maximum = ParseNumber<double>(tokens.Word());</span></span>
|
||||
<span id="L168"><span class="lineNum"> 168</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 52 times"> + </span>]:<span class="tlaGNC"> 54 : if (definition.minimum > definition.maximum)</span></span>
|
||||
<span id="L169"><span class="lineNum"> 169</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Reversed attribute FLOAT range.");</span></span>
|
||||
<span id="L170"><span class="lineNum"> 170</span> [<span class="tlaGBC" title="Branch 0 was taken 26 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 11 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 15 times"> + </span>]:<span class="tlaGNC"> 26 : } else if (type == "STRING") {</span></span>
|
||||
<span id="L171"><span class="lineNum"> 171</span> :<span class="tlaGNC"> 11 : definition.type = AttributeType::String;</span></span>
|
||||
<span id="L172"><span class="lineNum"> 172</span> [<span class="tlaGBC" title="Branch 0 was taken 15 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 13 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2 times"> + </span>]:<span class="tlaGNC"> 15 : } else if (type == "ENUM") {</span></span>
|
||||
<span id="L173"><span class="lineNum"> 173</span> :<span class="tlaGNC"> 13 : definition.type = AttributeType::Enum;</span></span>
|
||||
<span id="L174"><span class="lineNum"> 174</span> :<span class="tlaGNC"> 13 : std::set<std::string> labels;</span></span>
|
||||
<span id="L175"><span class="lineNum"> 175</span> : : for (;;) {</span>
|
||||
<span id="L176"><span class="lineNum"> 176</span> [<span class="tlaGBC" title="Branch 0 was taken 19 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span>]:<span class="tlaGNC"> 23 : const std::string label = tokens.Quoted();</span></span>
|
||||
<span id="L177"><span class="lineNum"> 177</span> [<span class="tlaGBC" title="Branch 0 was taken 19 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 17 times"> + </span>]:<span class="tlaGNC"> 19 : if (!labels.insert(label).second)</span></span>
|
||||
<span id="L178"><span class="lineNum"> 178</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Duplicate attribute ENUM label.");</span></span>
|
||||
<span id="L179"><span class="lineNum"> 179</span> [<span class="tlaGBC" title="Branch 0 was taken 17 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 17 : definition.enumValues.push_back(label);</span></span>
|
||||
<span id="L180"><span class="lineNum"> 180</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 10 times"> + </span>]:<span class="tlaGNC"> 17 : if (tokens.Empty()) break;</span></span>
|
||||
<span id="L181"><span class="lineNum"> 181</span> [<span class="tlaGBC" title="Branch 0 was taken 10 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 10 : const Token separator = tokens.Take();</span></span>
|
||||
<span id="L182"><span class="lineNum"> 182</span> [<span class="tlaGBC" title="Branch 0 was taken 10 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 10 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 10 : if (separator.quoted || separator.text != ",") throw std::runtime_error("Expected ENUM comma.");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 4 was not taken"> - </span><span class="tlaGBC" title="Branch 5 was taken 10 times"> + </span><span class="tlaUNC" title="Branch 6 was not taken"> - </span><span class="tlaGBC" title="Branch 7 was taken 10 times"> + </span><span class="tlaUNC" title="Branch 8 was not taken"> - </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span>]
|
||||
<span id="L183"><span class="lineNum"> 183</span> [<span class="tlaGBC" title="Branch 0 was taken 10 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 7 times"> + </span>]:<span class="tlaGNC"> 29 : }</span></span>
|
||||
<span id="L184"><span class="lineNum"> 184</span> :<span class="tlaGNC"> 7 : definition.integerMaximum = static_cast<std::int64_t>(definition.enumValues.size() - 1U);</span></span>
|
||||
<span id="L185"><span class="lineNum"> 185</span> :<span class="tlaGNC"> 13 : } else {</span></span>
|
||||
<span id="L186"><span class="lineNum"> 186</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Unsupported attribute definition type: " + type);</span></span>
|
||||
<span id="L187"><span class="lineNum"> 187</span> : : }</span>
|
||||
<span id="L188"><span class="lineNum"> 188</span> [<span class="tlaGBC" title="Branch 0 was taken 213 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 213 : tokens.End();</span></span>
|
||||
<span id="L189"><span class="lineNum"> 189</span> [<span class="tlaGBC" title="Branch 0 was taken 213 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 209 times"> + </span> :<span class="tlaGNC"> 213 : if (name == "VFrameFormat" && (definition.scope != AttributeScope::Frame || definition.type != AttributeType::Enum))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 2 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 211 times"> + </span>]
|
||||
<span id="L190"><span class="lineNum"> 190</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("VFrameFormat requires a BO_ ENUM definition.");</span></span>
|
||||
<span id="L191"><span class="lineNum"> 191</span> [<span class="tlaGBC" title="Branch 0 was taken 211 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 8 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 203 times"> + </span> :<span class="tlaGNC"> 217 : if (name == "GenMsgCycleTime" && (definition.scope != AttributeScope::Frame ||</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 209 times"> + </span>]
|
||||
<span id="L192"><span class="lineNum"> 192</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 6 : (definition.type != AttributeType::Integer && definition.type != AttributeType::Hex)))</span></span>
|
||||
<span id="L193"><span class="lineNum"> 193</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("GenMsgCycleTime requires a BO_ integer definition.");</span></span>
|
||||
<span id="L194"><span class="lineNum"> 194</span> [<span class="tlaGBC" title="Branch 0 was taken 209 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 207 times"> + </span>]:<span class="tlaGNC"> 209 : if (!database.attributeDefinitions.emplace(name, definition).second)</span></span>
|
||||
<span id="L195"><span class="lineNum"> 195</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Duplicate attribute definition: " + name);</span></span>
|
||||
<span id="L196"><span class="lineNum"> 196</span> :<span class="tlaGNC"> 945 : }</span></span>
|
||||
<span id="L197"><span class="lineNum"> 197</span> : : </span>
|
||||
<span id="L198"><span class="lineNum"> 198</span> :<span class="tlaGNC"> 218 : AttributeDefinition &FindDefinition(DbcDatabase &database, const std::string &name) {</span></span>
|
||||
<span id="L199"><span class="lineNum"> 199</span> [<span class="tlaGBC" title="Branch 0 was taken 218 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 218 : const std::map<std::string, AttributeDefinition>::iterator found = database.attributeDefinitions.find(name);</span></span>
|
||||
<span id="L200"><span class="lineNum"> 200</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 214 times"> + </span>]:<span class="tlaGNC"> 218 : if (found == database.attributeDefinitions.end())</span></span>
|
||||
<span id="L201"><span class="lineNum"> 201</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::runtime_error("Undefined attribute: " + name);</span></span>
|
||||
<span id="L202"><span class="lineNum"> 202</span> :<span class="tlaGNC"> 428 : return found->second;</span></span>
|
||||
<span id="L203"><span class="lineNum"> 203</span> : : }</span>
|
||||
<span id="L204"><span class="lineNum"> 204</span> : : </span>
|
||||
<span id="L205"><span class="lineNum"> 205</span> :<span class="tlaGNC"> 32 : void ParseId(const std::string &text, AttributeAssignment &assignment) {</span></span>
|
||||
<span id="L206"><span class="lineNum"> 206</span> :<span class="tlaGNC"> 32 : const std::int64_t raw = ParseNumber<std::int64_t>(text);</span></span>
|
||||
<span id="L207"><span class="lineNum"> 207</span> [<span class="tlaGBC" title="Branch 0 was taken 30 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 28 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2 times"> + </span> :<span class="tlaGNC"> 32 : if (raw < 0 || raw > std::numeric_limits<std::uint32_t>::max() || (raw & 0x60000000U) != 0)</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 26 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 26 times"> + </span>]
|
||||
<span id="L208"><span class="lineNum"> 208</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6 : throw std::runtime_error("Invalid attribute CAN ID.");</span></span>
|
||||
<span id="L209"><span class="lineNum"> 209</span> :<span class="tlaGNC"> 26 : const std::uint32_t id = static_cast<std::uint32_t>(raw);</span></span>
|
||||
<span id="L210"><span class="lineNum"> 210</span> :<span class="tlaGNC"> 26 : assignment.canId = id & 0x1fffffffU;</span></span>
|
||||
<span id="L211"><span class="lineNum"> 211</span> [<span class="tlaGBC" title="Branch 0 was taken 24 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaGBC" title="Branch 3 was taken 24 times"> + </span>]:<span class="tlaGNC"> 26 : assignment.isExtended = (id & 0x80000000U) != 0U || id > 0x7ffU;</span></span>
|
||||
<span id="L212"><span class="lineNum"> 212</span> :<span class="tlaGNC"> 26 : }</span></span>
|
||||
<span id="L213"><span class="lineNum"> 213</span> : : </span>
|
||||
<span id="L214"><span class="lineNum"> 214</span> :<span class="tlaGNC"> 15 : AttributeMap &Target(DbcDatabase &database, const AttributeAssignment &assignment) {</span></span>
|
||||
<span id="L215"><span class="lineNum"> 215</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 12 times"> + </span>]:<span class="tlaGNC"> 15 : if (assignment.scope == AttributeScope::Database) return database.attributes;</span></span>
|
||||
<span id="L216"><span class="lineNum"> 216</span> [<span class="tlaGBC" title="Branch 0 was taken 14 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 16 : for (FrameInfo &frame: database.frames) {</span></span>
|
||||
<span id="L217"><span class="lineNum"> 217</span> [<span class="tlaGBC" title="Branch 0 was taken 12 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 10 times"> + </span>]:<span class="tlaGNC"> 14 : if (frame.canId != assignment.canId || frame.isExtended != assignment.isExtended) continue;</span></span>
|
||||
<span id="L218"><span class="lineNum"> 218</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3 times"> + </span>]:<span class="tlaGNC"> 11 : if (assignment.scope == AttributeScope::Frame) return frame.attributes;</span></span>
|
||||
<span id="L219"><span class="lineNum"> 219</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 3 : for (SignalInfo &signal: frame.signals) {</span></span>
|
||||
<span id="L220"><span class="lineNum"> 220</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1 : if (signal.name == assignment.targetName) return signal.attributes;</span></span>
|
||||
<span id="L221"><span class="lineNum"> 221</span> : : }</span>
|
||||
<span id="L222"><span class="lineNum"> 222</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Unresolved attribute signal: " + assignment.targetName);</span></span>
|
||||
<span id="L223"><span class="lineNum"> 223</span> : : }</span>
|
||||
<span id="L224"><span class="lineNum"> 224</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Unresolved attribute frame.");</span></span>
|
||||
<span id="L225"><span class="lineNum"> 225</span> : : }</span>
|
||||
<span id="L226"><span class="lineNum"> 226</span> : : </span>
|
||||
<span id="L227"><span class="lineNum"> 227</span> :<span class="tlaGNC"> 36 : void ValidateCycleTime(const std::string &name, const AttributeValue &value) {</span></span>
|
||||
<span id="L228"><span class="lineNum"> 228</span> [<span class="tlaGBC" title="Branch 0 was taken 28 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 8 times"> + </span>]:<span class="tlaGNC"> 36 : if (name != "GenMsgCycleTime") return;</span></span>
|
||||
<span id="L229"><span class="lineNum"> 229</span> :<span class="tlaGNC"> 8 : const std::int64_t milliseconds = std::get<std::int64_t>(value);</span></span>
|
||||
<span id="L230"><span class="lineNum"> 230</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 4 times"> + </span> :<span class="tlaGNC"> 8 : if (milliseconds < 0 || milliseconds > std::numeric_limits<std::uint32_t>::max())</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 4 times"> + </span>]
|
||||
<span id="L231"><span class="lineNum"> 231</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::runtime_error("GenMsgCycleTime must fit unsigned 32-bit milliseconds.");</span></span>
|
||||
<span id="L232"><span class="lineNum"> 232</span> : : }</span>
|
||||
<span id="L233"><span class="lineNum"> 233</span> : : </span>
|
||||
<span id="L234"><span class="lineNum"> 234</span> :<span class="tlaGNC"> 15 : void ApplyDefault(DbcDatabase &database, const std::string &name, const AttributeDefinition &definition) {</span></span>
|
||||
<span id="L235"><span class="lineNum"> 235</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 15 times"> + </span>]:<span class="tlaGNC"> 15 : if (!definition.defaultValue) return;</span></span>
|
||||
<span id="L236"><span class="lineNum"> 236</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 10 times"> + </span>]:<span class="tlaGNC"> 15 : if (definition.scope == AttributeScope::Database) {</span></span>
|
||||
<span id="L237"><span class="lineNum"> 237</span> :<span class="tlaGNC"> 5 : database.attributes[name] = *definition.defaultValue;</span></span>
|
||||
<span id="L238"><span class="lineNum"> 238</span> :<span class="tlaGNC"> 5 : return;</span></span>
|
||||
<span id="L239"><span class="lineNum"> 239</span> : : }</span>
|
||||
<span id="L240"><span class="lineNum"> 240</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaGBC" title="Branch 3 was taken 2 times"> + </span>]:<span class="tlaGNC"> 10 : if (definition.scope != AttributeScope::Frame && definition.scope != AttributeScope::Signal)</span></span>
|
||||
<span id="L241"><span class="lineNum"> 241</span> :<span class="tlaUNC"> 0 : return;</span></span>
|
||||
<span id="L242"><span class="lineNum"> 242</span> [<span class="tlaGBC" title="Branch 0 was taken 18 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 10 times"> + </span>]:<span class="tlaGNC"> 28 : for (FrameInfo &frame: database.frames) {</span></span>
|
||||
<span id="L243"><span class="lineNum"> 243</span> [<span class="tlaGBC" title="Branch 0 was taken 14 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 14 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 18 : if (definition.scope == AttributeScope::Frame) frame.attributes[name] = *definition.defaultValue;</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 14 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L244"><span class="lineNum"> 244</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 14 times"> + </span>]:<span class="tlaGNC"> 18 : if (definition.scope == AttributeScope::Signal) {</span></span>
|
||||
<span id="L245"><span class="lineNum"> 245</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 6 : for (SignalInfo &signal: frame.signals) signal.attributes[name] = *definition.defaultValue;</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 4 times"> + </span>]
|
||||
<span id="L246"><span class="lineNum"> 246</span> : : }</span>
|
||||
<span id="L247"><span class="lineNum"> 247</span> : : }</span>
|
||||
<span id="L248"><span class="lineNum"> 248</span> : : }</span>
|
||||
<span id="L249"><span class="lineNum"> 249</span> : : }// namespace</span>
|
||||
<span id="L250"><span class="lineNum"> 250</span> : : </span>
|
||||
<span id="L251"><span class="lineNum"> 251</span> :<span class="tlaGNC"> 621 : void DbcAttributeHandler::Handle(const std::string &line, DbcParseContext &context) const {</span></span>
|
||||
<span id="L252"><span class="lineNum"> 252</span> :<span class="tlaGNC"> 621 : context.pendingAttributes.push_back({line, context.lineNumber});</span></span>
|
||||
<span id="L253"><span class="lineNum"> 253</span> [<span class="tlaGBC" title="Branch 0 was taken 621 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 621 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 1242 : }</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 4 was not taken"> - </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L254"><span class="lineNum"> 254</span> : : </span>
|
||||
<span id="L255"><span class="lineNum"> 255</span> :<span class="tlaGNC"> 549 : void DbcParseContext::ResolveAttributes(const std::string &filePath, std::vector<DbcDiagnostic> &diagnostics) {</span></span>
|
||||
<span id="L256"><span class="lineNum"> 256</span> :<span class="tlaGNC"> 549 : std::map<std::string, std::size_t> defaultLines;</span></span>
|
||||
<span id="L257"><span class="lineNum"> 257</span> :<span class="tlaGNC"> 549 : std::vector<std::size_t> assignmentLines;</span></span>
|
||||
<span id="L258"><span class="lineNum"> 258</span> : : // Resolve each phase independently of source ordering.</span>
|
||||
<span id="L259"><span class="lineNum"> 259</span> :<span class="tlaGNC"> 549 : const char *keywords[] = {"BA_DEF_", "BA_DEF_DEF_", "BA_"};</span></span>
|
||||
<span id="L260"><span class="lineNum"> 260</span> [<span class="tlaGBC" title="Branch 0 was taken 1177 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 163 times"> + </span>]:<span class="tlaGNC"> 1340 : for (const char *phase: keywords) {</span></span>
|
||||
<span id="L261"><span class="lineNum"> 261</span> [<span class="tlaGBC" title="Branch 0 was taken 1303 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 791 times"> + </span>]:<span class="tlaGNC"> 2094 : for (const PendingAttribute &pending: pendingAttributes) {</span></span>
|
||||
<span id="L262"><span class="lineNum"> 262</span> [<span class="tlaGBC" title="Branch 0 was taken 1303 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1303 : const std::string keyword = pending.statement.substr(0U, pending.statement.find_first_of(" \t"));</span></span>
|
||||
<span id="L263"><span class="lineNum"> 263</span> [<span class="tlaGBC" title="Branch 0 was taken 1303 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 682 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 621 times"> + </span>]:<span class="tlaGNC"> 1303 : if (keyword != phase) continue;</span></span>
|
||||
<span id="L264"><span class="lineNum"> 264</span> : : try {</span>
|
||||
<span id="L265"><span class="lineNum"> 265</span> [<span class="tlaGBC" title="Branch 0 was taken 611 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 10 times"> + </span>]:<span class="tlaGNC"> 621 : AttributeTokens tokens(pending.statement);</span></span>
|
||||
<span id="L266"><span class="lineNum"> 266</span> [<span class="tlaGBC" title="Branch 0 was taken 611 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 611 : tokens.Word();</span></span>
|
||||
<span id="L267"><span class="lineNum"> 267</span> [<span class="tlaGBC" title="Branch 0 was taken 611 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 393 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 218 times"> + </span>]:<span class="tlaGNC"> 611 : if (keyword == "BA_DEF_") {</span></span>
|
||||
<span id="L268"><span class="lineNum"> 268</span> [<span class="tlaGBC" title="Branch 0 was taken 207 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 186 times"> + </span>]:<span class="tlaGNC"> 393 : Define(tokens, database);</span></span>
|
||||
<span id="L269"><span class="lineNum"> 269</span> :<span class="tlaGNC"> 207 : continue;</span></span>
|
||||
<span id="L270"><span class="lineNum"> 270</span> : : }</span>
|
||||
<span id="L271"><span class="lineNum"> 271</span> [<span class="tlaGBC" title="Branch 0 was taken 218 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 218 : const std::string name = tokens.Quoted();</span></span>
|
||||
<span id="L272"><span class="lineNum"> 272</span> [<span class="tlaGBC" title="Branch 0 was taken 214 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span>]:<span class="tlaGNC"> 218 : AttributeDefinition &definition = FindDefinition(database, name);</span></span>
|
||||
<span id="L273"><span class="lineNum"> 273</span> [<span class="tlaGBC" title="Branch 0 was taken 214 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 99 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 115 times"> + </span>]:<span class="tlaGNC"> 214 : if (keyword == "BA_DEF_DEF_") {</span></span>
|
||||
<span id="L274"><span class="lineNum"> 274</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 97 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 99 : if (definition.defaultValue) throw std::runtime_error("Duplicate attribute default: " + name);</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L275"><span class="lineNum"> 275</span> [<span class="tlaGBC" title="Branch 0 was taken 97 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 17 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 80 times"> + </span>]:<span class="tlaGNC"> 177 : definition.defaultValue = Value(tokens.Take(), definition, true);</span></span>
|
||||
<span id="L276"><span class="lineNum"> 276</span> [<span class="tlaGBC" title="Branch 0 was taken 15 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 17 : ValidateCycleTime(name, *definition.defaultValue);</span></span>
|
||||
<span id="L277"><span class="lineNum"> 277</span> [<span class="tlaGBC" title="Branch 0 was taken 15 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 15 : tokens.End();</span></span>
|
||||
<span id="L278"><span class="lineNum"> 278</span> [<span class="tlaGBC" title="Branch 0 was taken 15 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 15 : defaultLines[name] = pending.lineNumber;</span></span>
|
||||
<span id="L279"><span class="lineNum"> 279</span> [<span class="tlaGBC" title="Branch 0 was taken 15 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 15 : ApplyDefault(database, name, definition);</span></span>
|
||||
<span id="L280"><span class="lineNum"> 280</span> :<span class="tlaGNC"> 15 : continue;</span></span>
|
||||
<span id="L281"><span class="lineNum"> 281</span> : : }</span>
|
||||
<span id="L282"><span class="lineNum"> 282</span> :<span class="tlaGNC"> 115 : AttributeAssignment assignment;</span></span>
|
||||
<span id="L283"><span class="lineNum"> 283</span> [<span class="tlaGBC" title="Branch 0 was taken 115 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 115 : assignment.name = name;</span></span>
|
||||
<span id="L284"><span class="lineNum"> 284</span> [<span class="tlaGBC" title="Branch 0 was taken 115 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 115 : Token value = tokens.Take();</span></span>
|
||||
<span id="L285"><span class="lineNum"> 285</span> [<span class="tlaGBC" title="Branch 0 was taken 115 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 115 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 115 : if (!value.quoted && IsScope(value.text)) {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 34 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 81 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 34 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 81 times"> + </span>]
|
||||
<span id="L286"><span class="lineNum"> 286</span> [<span class="tlaGBC" title="Branch 0 was taken 34 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 34 : assignment.scope = ParseScope(value.text);</span></span>
|
||||
<span id="L287"><span class="lineNum"> 287</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 27 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2 times"> + </span>]:<span class="tlaGNC"> 34 : if (assignment.scope == AttributeScope::Frame || assignment.scope == AttributeScope::Signal)</span></span>
|
||||
<span id="L288"><span class="lineNum"> 288</span> [<span class="tlaGBC" title="Branch 0 was taken 32 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 26 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 6 times"> + </span>]:<span class="tlaGNC"> 38 : ParseId(tokens.Word(), assignment);</span></span>
|
||||
<span id="L289"><span class="lineNum"> 289</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 21 times"> + </span>]:<span class="tlaGNC"> 28 : if (assignment.scope != AttributeScope::Frame)</span></span>
|
||||
<span id="L290"><span class="lineNum"> 290</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 7 : assignment.targetName = tokens.Word();</span></span>
|
||||
<span id="L291"><span class="lineNum"> 291</span> [<span class="tlaGBC" title="Branch 0 was taken 28 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 28 : value = tokens.Take();</span></span>
|
||||
<span id="L292"><span class="lineNum"> 292</span> : : }</span>
|
||||
<span id="L293"><span class="lineNum"> 293</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 107 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 109 : if (assignment.scope != definition.scope) throw std::runtime_error("Attribute assignment scope differs from definition.");</span></span>
|
||||
<span id="L294"><span class="lineNum"> 294</span> [<span class="tlaGBC" title="Branch 0 was taken 19 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 88 times"> + </span>]:<span class="tlaGNC"> 107 : assignment.value = Value(value, definition, false);</span></span>
|
||||
<span id="L295"><span class="lineNum"> 295</span> [<span class="tlaGBC" title="Branch 0 was taken 17 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 19 : ValidateCycleTime(name, assignment.value);</span></span>
|
||||
<span id="L296"><span class="lineNum"> 296</span> [<span class="tlaGBC" title="Branch 0 was taken 17 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 17 : tokens.End();</span></span>
|
||||
<span id="L297"><span class="lineNum"> 297</span> : : // Repeated explicit assignments use the last value, matching comments.</span>
|
||||
<span id="L298"><span class="lineNum"> 298</span> [<span class="tlaGBC" title="Branch 0 was taken 16 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 2 was taken 15 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1 time"> + </span>]:<span class="tlaGNC"> 17 : if (assignment.scope != AttributeScope::Node && assignment.scope != AttributeScope::Environment)</span></span>
|
||||
<span id="L299"><span class="lineNum"> 299</span> [<span class="tlaGBC" title="Branch 0 was taken 11 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 11 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 15 : Target(database, assignment)[name] = assignment.value;</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 11 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L300"><span class="lineNum"> 300</span> [<span class="tlaGBC" title="Branch 0 was taken 13 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 13 : database.attributeAssignments.push_back(assignment);</span></span>
|
||||
<span id="L301"><span class="lineNum"> 301</span> [<span class="tlaGBC" title="Branch 0 was taken 13 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 13 : assignmentLines.push_back(pending.lineNumber);</span></span>
|
||||
<span id="L302"><span class="lineNum"> 302</span> [<span class="tlaGBC" title="Branch 0 was taken 13 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 15 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 13 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 222 times"> + </span> :<span class="tlaGNC"> 1406 : } catch (const std::exception &error) {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 4 was not taken"> - </span><span class="tlaGBC" title="Branch 5 was taken 386 times"> + </span>]
|
||||
<span id="L303"><span class="lineNum"> 303</span> [<span class="tlaGBC" title="Branch 0 was taken 386 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 386 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1158 : throw DbcDiagnosticError(DbcDiagnosticCode::InvalidAttribute, filePath, pending.lineNumber, error.what());</span></span>
|
||||
<span id="L304"><span class="lineNum"> 304</span> :<span class="tlaGNC"> 386 : }</span></span>
|
||||
<span id="L305"><span class="lineNum"> 305</span> [<span class="tlaGBC" title="Branch 0 was taken 13 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 904 times"> + </span>]:<span class="tlaGNC"> 1303 : }</span></span>
|
||||
<span id="L306"><span class="lineNum"> 306</span> : : }</span>
|
||||
<span id="L307"><span class="lineNum"> 307</span> [<span class="tlaGBC" title="Branch 0 was taken 179 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 163 times"> + </span>]:<span class="tlaGNC"> 342 : for (FrameInfo &frame: database.frames) {</span></span>
|
||||
<span id="L308"><span class="lineNum"> 308</span> [<span class="tlaGBC" title="Branch 0 was taken 12 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 179 times"> + </span>]:<span class="tlaGNC"> 191 : for (const AttributeMap::value_type &attribute: frame.attributes) {</span></span>
|
||||
<span id="L309"><span class="lineNum"> 309</span> [<span class="tlaGBC" title="Branch 0 was taken 12 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 5 times"> + </span> :<span class="tlaGNC"> 16 : if (attribute.first != "VFrameFormat" && attribute.first != "GenMsgCycleTime") continue;</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 7 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 3 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 9 times"> + </span>]
|
||||
<span id="L310"><span class="lineNum"> 310</span> [<span class="tlaGBC" title="Branch 0 was taken 9 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 9 : std::size_t line = defaultLines[attribute.first];</span></span>
|
||||
<span id="L311"><span class="lineNum"> 311</span> [<span class="tlaGBC" title="Branch 0 was taken 28 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 9 times"> + </span>]:<span class="tlaGNC"> 37 : for (std::size_t index = 0U; index < database.attributeAssignments.size(); ++index) {</span></span>
|
||||
<span id="L312"><span class="lineNum"> 312</span> :<span class="tlaGNC"> 28 : const AttributeAssignment &assignment = database.attributeAssignments[index];</span></span>
|
||||
<span id="L313"><span class="lineNum"> 313</span> [<span class="tlaGBC" title="Branch 0 was taken 12 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 40 : if (assignment.name == attribute.first && assignment.scope == AttributeScope::Frame &&</span></span>
|
||||
<span id="L314"><span class="lineNum"> 314</span> [<span class="tlaGBC" title="Branch 0 was taken 12 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 16 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 9 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 3 times"> + </span> :<span class="tlaGNC"> 40 : assignment.canId == frame.canId && assignment.isExtended == frame.isExtended)</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 23 times"> + </span>]
|
||||
<span id="L315"><span class="lineNum"> 315</span> :<span class="tlaGNC"> 5 : line = assignmentLines[index];</span></span>
|
||||
<span id="L316"><span class="lineNum"> 316</span> : : }</span>
|
||||
<span id="L317"><span class="lineNum"> 317</span> [<span class="tlaGBC" title="Branch 0 was taken 9 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 9 : const std::int64_t value = std::get<std::int64_t>(attribute.second);</span></span>
|
||||
<span id="L318"><span class="lineNum"> 318</span> [<span class="tlaGBC" title="Branch 0 was taken 9 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 5 times"> + </span>]:<span class="tlaGNC"> 9 : if (attribute.first == "GenMsgCycleTime") {</span></span>
|
||||
<span id="L319"><span class="lineNum"> 319</span> :<span class="tlaGNC"> 4 : frame.cycleTimeMs = static_cast<std::uint32_t>(value);</span></span>
|
||||
<span id="L320"><span class="lineNum"> 320</span> :<span class="tlaGNC"> 4 : continue;</span></span>
|
||||
<span id="L321"><span class="lineNum"> 321</span> : : }</span>
|
||||
<span id="L322"><span class="lineNum"> 322</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 5 : frame.frameFormat = database.attributeDefinitions.at(attribute.first).enumValues[static_cast<std::size_t>(value)];</span></span>
|
||||
<span id="L323"><span class="lineNum"> 323</span> :<span class="tlaGNC"> 5 : const std::string &format = *frame.frameFormat;</span></span>
|
||||
<span id="L324"><span class="lineNum"> 324</span> :<span class="tlaGNC"> 5 : std::string warning;</span></span>
|
||||
<span id="L325"><span class="lineNum"> 325</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2 times"> + </span> :<span class="tlaGNC"> 5 : if (format != "StandardCAN" && format != "ExtendedCAN")</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 8 was taken 2 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 3 times"> + </span>]
|
||||
<span id="L326"><span class="lineNum"> 326</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 2 : warning = "Unsupported VFrameFormat '" + format + "' is preserved; decoding may be incomplete.";</span></span>
|
||||
<span id="L327"><span class="lineNum"> 327</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 3 was taken 2 times"> + </span>]:<span class="tlaGNC"> 3 : else if ((format == "ExtendedCAN") != frame.isExtended)</span></span>
|
||||
<span id="L328"><span class="lineNum"> 328</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1 : warning = "VFrameFormat '" + format + "' conflicts with the BO_ CAN ID; ID interpretation is unchanged.";</span></span>
|
||||
<span id="L329"><span class="lineNum"> 329</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 5 : if (!warning.empty())</span></span>
|
||||
<span id="L330"><span class="lineNum"> 330</span> :<span class="tlaGNC"> 3 : diagnostics.push_back({DbcDiagnosticSeverity::Warning, DbcDiagnosticCode::UnsupportedAttribute, filePath, line, warning});</span></span>
|
||||
<span id="L331"><span class="lineNum"> 331</span> :<span class="tlaGNC"> 5 : }</span></span>
|
||||
<span id="L332"><span class="lineNum"> 332</span> : : }</span>
|
||||
<span id="L333"><span class="lineNum"> 333</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 938 : }</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaUNC" title="Branch 6 was not taken"> - </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span>]
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_decode_builder.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_decode_builder.cpp<span style="font-size: 80%;"> (<a href="dbc_decode_builder.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">40</td>
|
||||
<td class="headerCovTableEntry">40</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">62.5 %</td>
|
||||
<td class="headerCovTableEntry">40</td>
|
||||
<td class="headerCovTableEntry">25</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="dbc_decode_builder.cpp.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decode_builder.cpp.gcov.html#L13">DbcDecodeBuilder::Build(DbcDatabase const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">108</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_decode_builder.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_decode_builder.cpp<span style="font-size: 80%;"> (<a href="dbc_decode_builder.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">40</td>
|
||||
<td class="headerCovTableEntry">40</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">62.5 %</td>
|
||||
<td class="headerCovTableEntry">40</td>
|
||||
<td class="headerCovTableEntry">25</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="dbc_decode_builder.cpp.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decode_builder.cpp.gcov.html#L13">DbcDecodeBuilder::Build(DbcDatabase const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">108</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,146 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_decode_builder.cpp</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_decode_builder.cpp<span style="font-size: 80%;"> (source / <a href="dbc_decode_builder.cpp.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">40</td>
|
||||
<td class="headerCovTableEntry">40</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">62.5 %</td>
|
||||
<td class="headerCovTableEntry">40</td>
|
||||
<td class="headerCovTableEntry">25</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : * @file dbc_decode_builder.cpp</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : * @brief Conversion of parsed metadata to runtime definitions.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : #include "dbc_decode_builder.h"</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : #include <utility></span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : </span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> :<span class="tlaGNC"> 108 : DecodeDatabase DbcDecodeBuilder::Build(const DbcDatabase &source) const {</span></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> :<span class="tlaGNC"> 108 : std::vector<DecodeFrame> frames;</span></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> [<span class="tlaGBC" title="Branch 0 was taken 108 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 108 : frames.reserve(source.frames.size());</span></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : </span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 108 times"> + </span>]:<span class="tlaGNC"> 248 : for (const FrameInfo &sourceFrame: source.frames) {</span></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> :<span class="tlaGNC"> 140 : DecodeFrame targetFrame;</span></span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : : </span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : targetFrame.attributes = sourceFrame.attributes;</span></span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : targetFrame.frameFormat = sourceFrame.frameFormat;</span></span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> :<span class="tlaGNC"> 140 : targetFrame.cycleTimeMs = sourceFrame.cycleTimeMs;</span></span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : targetFrame.name = sourceFrame.name;</span></span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> :<span class="tlaGNC"> 140 : targetFrame.canId = sourceFrame.canId;</span></span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> :<span class="tlaGNC"> 140 : targetFrame.isExtended = sourceFrame.isExtended;</span></span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> :<span class="tlaGNC"> 140 : targetFrame.dlc = sourceFrame.dlc;</span></span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> :<span class="tlaGNC"> 140 : targetFrame.pgn = sourceFrame.pgn;</span></span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> :<span class="tlaGNC"> 140 : targetFrame.hasPgn = sourceFrame.hasPgn;</span></span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : targetFrame.transmitter = sourceFrame.transmitter;</span></span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : targetFrame.comment = sourceFrame.comment;</span></span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : : </span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : targetFrame.signals.reserve(sourceFrame.signals.size());</span></span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> [<span class="tlaGBC" title="Branch 0 was taken 173 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 140 times"> + </span>]:<span class="tlaGNC"> 313 : for (const SignalInfo &sourceSignal: sourceFrame.signals) {</span></span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> :<span class="tlaGNC"> 173 : DecodeSignal targetSignal;</span></span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : : </span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> [<span class="tlaGBC" title="Branch 0 was taken 173 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 173 : targetSignal.attributes = sourceSignal.attributes;</span></span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> :<span class="tlaGNC"> 173 : targetSignal.multiplexing = sourceSignal.multiplexing;</span></span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> [<span class="tlaGBC" title="Branch 0 was taken 173 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 173 : targetSignal.name = sourceSignal.name;</span></span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> :<span class="tlaGNC"> 173 : targetSignal.startBit = sourceSignal.startBit;</span></span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> :<span class="tlaGNC"> 173 : targetSignal.length = sourceSignal.length;</span></span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> [<span class="tlaGBC" title="Branch 0 was taken 155 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 18 times"> + </span>]:<span class="tlaGNC"> 173 : targetSignal.byteOrder = sourceSignal.isLittleEndian ? ByteOrder::Intel : ByteOrder::Motorola;</span></span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 167 times"> + </span>]:<span class="tlaGNC"> 173 : targetSignal.valueType = sourceSignal.isSigned ? ValueType::Signed : ValueType::Unsigned;</span></span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> :<span class="tlaGNC"> 173 : targetSignal.factor = sourceSignal.factor;</span></span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> :<span class="tlaGNC"> 173 : targetSignal.offset = sourceSignal.offset;</span></span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> :<span class="tlaGNC"> 173 : targetSignal.minimum = sourceSignal.minimum;</span></span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> :<span class="tlaGNC"> 173 : targetSignal.maximum = sourceSignal.maximum;</span></span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> [<span class="tlaGBC" title="Branch 0 was taken 173 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 173 : targetSignal.unit = sourceSignal.unit;</span></span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> [<span class="tlaGBC" title="Branch 0 was taken 173 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 173 : targetSignal.receivers = sourceSignal.receivers;</span></span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> [<span class="tlaGBC" title="Branch 0 was taken 173 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 173 : targetSignal.comment = sourceSignal.comment;</span></span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> [<span class="tlaGBC" title="Branch 0 was taken 173 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 173 : targetSignal.valueDescriptions = sourceSignal.valueDescriptions;</span></span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> : : </span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> [<span class="tlaGBC" title="Branch 0 was taken 173 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 173 : targetFrame.signals.push_back(std::move(targetSignal));</span></span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> :<span class="tlaGNC"> 173 : }</span></span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> : : </span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : frames.push_back(std::move(targetFrame));</span></span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> :<span class="tlaGNC"> 140 : }</span></span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> : : </span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> [<span class="tlaGBC" title="Branch 0 was taken 68 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 40 times"> + </span>]:<span class="tlaGNC"> 176 : return DecodeDatabase(frames);</span></span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> :<span class="tlaGNC"> 108 : }</span></span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,181 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_decoder.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_decoder.cpp<span style="font-size: 80%;"> (<a href="dbc_decoder.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">94.9 %</td>
|
||||
<td class="headerCovTableEntry">156</td>
|
||||
<td class="headerCovTableEntry">148</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">72.8 %</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
<td class="headerCovTableEntry">115</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="dbc_decoder.cpp.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L39">DbcDecoder::Decode(DecodeDatabase const&, RawCanFrame const&, std::vector<SignalKey, std::allocator<SignalKey> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">12</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L18">DbcDecoder::FindFrame(DecodeDatabase const&, unsigned int, bool) const</a></td>
|
||||
|
||||
<td class="coverFnHi">32</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L250">DbcDecoder::SignExtend(unsigned long, unsigned int)</a></td>
|
||||
|
||||
<td class="coverFnHi">81</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L216">DbcDecoder::ExtractMotorola(std::vector<unsigned char, std::allocator<unsigned char> > const&, unsigned int, unsigned int, unsigned long&)</a></td>
|
||||
|
||||
<td class="coverFnHi">3138</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L193">DbcDecoder::ExtractIntel(std::vector<unsigned char, std::allocator<unsigned char> > const&, unsigned int, unsigned int, unsigned long&)</a></td>
|
||||
|
||||
<td class="coverFnHi">3242</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L111">DbcDecoder::ReadSelector(DecodeFrame const&, RawCanFrame const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">6341</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L131">DbcDecoder::DecodeOneSignal(DecodeSignal const&, unsigned char, RawCanFrame const&, DbcDecoder::SelectorState const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">6375</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L181">DbcDecoder::ExtractUnsigned(std::vector<unsigned char, std::allocator<unsigned char> > const&, DecodeSignal const&, unsigned long&)</a></td>
|
||||
|
||||
<td class="coverFnHi">6380</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L34">DbcDecoder::Decode(DecodeDatabase const&, RawCanFrame const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">6396</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L99">DbcDecoder::IsValidDefinition(DecodeSignal const&, unsigned char)</a></td>
|
||||
|
||||
<td class="coverFnHi">6396</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L45">DbcDecoder::DecodeImpl(DecodeDatabase const&, RawCanFrame const&, std::vector<SignalKey, std::allocator<SignalKey> > const*) const</a></td>
|
||||
|
||||
<td class="coverFnHi">6408</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L24">DbcDecoder::ResolveFrame(DecodeDatabase const&, unsigned int, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">6440</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,181 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_decoder.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_decoder.cpp<span style="font-size: 80%;"> (<a href="dbc_decoder.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">94.9 %</td>
|
||||
<td class="headerCovTableEntry">156</td>
|
||||
<td class="headerCovTableEntry">148</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">72.8 %</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
<td class="headerCovTableEntry">115</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="dbc_decoder.cpp.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L34">DbcDecoder::Decode(DecodeDatabase const&, RawCanFrame const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">6396</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L39">DbcDecoder::Decode(DecodeDatabase const&, RawCanFrame const&, std::vector<SignalKey, std::allocator<SignalKey> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">12</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L45">DbcDecoder::DecodeImpl(DecodeDatabase const&, RawCanFrame const&, std::vector<SignalKey, std::allocator<SignalKey> > const*) const</a></td>
|
||||
|
||||
<td class="coverFnHi">6408</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L131">DbcDecoder::DecodeOneSignal(DecodeSignal const&, unsigned char, RawCanFrame const&, DbcDecoder::SelectorState const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">6375</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L193">DbcDecoder::ExtractIntel(std::vector<unsigned char, std::allocator<unsigned char> > const&, unsigned int, unsigned int, unsigned long&)</a></td>
|
||||
|
||||
<td class="coverFnHi">3242</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L216">DbcDecoder::ExtractMotorola(std::vector<unsigned char, std::allocator<unsigned char> > const&, unsigned int, unsigned int, unsigned long&)</a></td>
|
||||
|
||||
<td class="coverFnHi">3138</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L181">DbcDecoder::ExtractUnsigned(std::vector<unsigned char, std::allocator<unsigned char> > const&, DecodeSignal const&, unsigned long&)</a></td>
|
||||
|
||||
<td class="coverFnHi">6380</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L18">DbcDecoder::FindFrame(DecodeDatabase const&, unsigned int, bool) const</a></td>
|
||||
|
||||
<td class="coverFnHi">32</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L99">DbcDecoder::IsValidDefinition(DecodeSignal const&, unsigned char)</a></td>
|
||||
|
||||
<td class="coverFnHi">6396</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L111">DbcDecoder::ReadSelector(DecodeFrame const&, RawCanFrame const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">6341</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L24">DbcDecoder::ResolveFrame(DecodeDatabase const&, unsigned int, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">6440</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.cpp.gcov.html#L250">DbcDecoder::SignExtend(unsigned long, unsigned int)</a></td>
|
||||
|
||||
<td class="coverFnHi">81</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,353 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_decoder.cpp</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_decoder.cpp<span style="font-size: 80%;"> (source / <a href="dbc_decoder.cpp.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">94.9 %</td>
|
||||
<td class="headerCovTableEntry">156</td>
|
||||
<td class="headerCovTableEntry">148</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">72.8 %</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
<td class="headerCovTableEntry">115</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : * @file dbc_decoder.cpp</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : * @brief CAN signal extraction and physical value conversion.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : #include "dbc_decoder.h"</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : #include "j1939.h"</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : #include "signal_layout.h"</span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : : #include <cmath></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : #include <stdexcept></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : : #include <unordered_set></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : #include <utility></span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : : </span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> :<span class="tlaGNC"> 32 : std::shared_ptr<const DecodeFrame> DbcDecoder::FindFrame(const DecodeDatabase &database,</span></span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : : std::uint32_t canId,</span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : : bool isExtended) const {</span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> [<span class="tlaGBC" title="Branch 0 was taken 32 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 32 : return ResolveFrame(database, canId, isExtended).definition;</span></span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : : }</span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : : </span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> :<span class="tlaGNC"> 6440 : PgnLookupResult DbcDecoder::ResolveFrame(const DecodeDatabase &database,</span></span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : : std::uint32_t canId, bool isExtended) {</span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> [<span class="tlaGBC" title="Branch 0 was taken 6440 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6440 : const std::shared_ptr<const DecodeFrame> exact = database.FindFrame(FrameKey(canId, isExtended));</span></span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> [<span class="tlaGBC" title="Branch 0 was taken 6335 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 105 times"> + </span>]:<span class="tlaGNC"> 6440 : if (exact)</span></span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> :<span class="tlaGNC"> 6335 : return {exact, false};</span></span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> [<span class="tlaGBC" title="Branch 0 was taken 87 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 18 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 80 times"> + </span>]:<span class="tlaGNC"> 105 : if (!isExtended || canId > 0x1FFFFFFFU)</span></span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> :<span class="tlaGNC"> 25 : return {};</span></span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> [<span class="tlaGBC" title="Branch 0 was taken 80 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 80 : return database.FindFrameByPgn(ExtractJ1939Pgn(canId));</span></span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> :<span class="tlaGNC"> 6440 : }</span></span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : : </span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> :<span class="tlaGNC"> 6396 : DecodedFrameValue DbcDecoder::Decode(const DecodeDatabase &database,</span></span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : : const RawCanFrame &frame) const {</span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> :<span class="tlaGNC"> 6396 : return DecodeImpl(database, frame, nullptr);</span></span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : : }</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : : </span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> :<span class="tlaGNC"> 12 : DecodedFrameValue DbcDecoder::Decode(const DecodeDatabase &database,</span></span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : : const RawCanFrame &frame,</span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> : : const std::vector<SignalKey> &selection) const {</span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> :<span class="tlaGNC"> 12 : return DecodeImpl(database, frame, &selection);</span></span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> : : }</span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : : </span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> :<span class="tlaGNC"> 6408 : DecodedFrameValue DbcDecoder::DecodeImpl(const DecodeDatabase &database,</span></span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> : : const RawCanFrame &frame,</span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> : : const std::vector<SignalKey> *selection) const {</span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> :<span class="tlaGNC"> 6408 : DecodedFrameValue result;</span></span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> :<span class="tlaGNC"> 6408 : result.key = FrameKey(frame.canId, frame.isExtended);</span></span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> [<span class="tlaGBC" title="Branch 0 was taken 6408 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6408 : const PgnLookupResult match = ResolveFrame(database, frame.canId, frame.isExtended);</span></span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> [<span class="tlaGBC" title="Branch 0 was taken 8 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6400 times"> + </span>]:<span class="tlaGNC"> 6408 : if (match.ambiguous) {</span></span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> :<span class="tlaGNC"> 8 : result.status = FrameDecodeStatus::AmbiguousFrame;</span></span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> :<span class="tlaGNC"> 8 : return result;</span></span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> : : }</span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> :<span class="tlaGNC"> 6400 : const std::shared_ptr<const DecodeFrame> definition = match.definition;</span></span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> [<span class="tlaGBC" title="Branch 0 was taken 55 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6345 times"> + </span>]:<span class="tlaGNC"> 6400 : if (definition == nullptr)</span></span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> :<span class="tlaGNC"> 55 : return result;</span></span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> :<span class="tlaGNC"> 6345 : result.key = definition->GetKey();</span></span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> : : </span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> :<span class="tlaGNC"> 6345 : std::vector<const DecodeSignal *> selected;</span></span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> [<span class="tlaGBC" title="Branch 0 was taken 8 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6337 times"> + </span>]:<span class="tlaGNC"> 6345 : if (selection != nullptr) {</span></span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> [<span class="tlaGBC" title="Branch 0 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 8 : selected.reserve(selection->size());</span></span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> :<span class="tlaGNC"> 8 : std::unordered_set<SignalKey, SignalKeyHasher> keys;</span></span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> [<span class="tlaGBC" title="Branch 0 was taken 8 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span>]:<span class="tlaGNC"> 12 : for (const SignalKey &key: *selection) {</span></span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span>]:<span class="tlaGNC"> 8 : if (!(key.frame == result.key))</span></span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::invalid_argument("Selected signal belongs to another frame: " + key.name);</span></span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaGBC" title="Branch 3 was taken 4 times"> + </span>]:<span class="tlaGNC"> 4 : if (!keys.insert(key).second)</span></span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> [<span class="tlaUNC" title="Branch 0 was not executed"> # </span><span class="tlaUNC" title="Branch 1 was not executed"> # </span><span class="tlaUNC" title="Branch 2 was not executed"> # </span><span class="tlaUNC" title="Branch 3 was not executed"> # </span>]:<span class="tlaUNC"> 0 : throw std::invalid_argument("Duplicate selected signal: " + key.name);</span></span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : const std::shared_ptr<const DecodeSignal> signal = database.FindSignal(key);</span></span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span>]:<span class="tlaGNC"> 4 : if (!signal)</span></span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> [<span class="tlaUNC" title="Branch 0 was not executed"> # </span><span class="tlaUNC" title="Branch 1 was not executed"> # </span><span class="tlaUNC" title="Branch 2 was not executed"> # </span><span class="tlaUNC" title="Branch 3 was not executed"> # </span>]:<span class="tlaUNC"> 0 : throw std::invalid_argument("Unknown selected signal: " + key.name);</span></span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : selected.push_back(signal.get());</span></span>
|
||||
<span id="L75"><span class="lineNum"> 75</span> :<span class="tlaGNC"> 4 : }</span></span>
|
||||
<span id="L76"><span class="lineNum"> 76</span> :<span class="tlaGNC"> 8 : }</span></span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> : : </span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> :<span class="tlaGNC"> 6341 : result.definition = definition;</span></span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> :<span class="tlaGNC"> 6341 : result.valid = true;</span></span>
|
||||
<span id="L80"><span class="lineNum"> 80</span> :<span class="tlaGNC"> 6341 : result.status = frame.data.size() < definition->dlc</span></span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> [<span class="tlaGBC" title="Branch 0 was taken 6238 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 103 times"> + </span>]:<span class="tlaGNC"> 6341 : ? FrameDecodeStatus::InsufficientPayload</span></span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> : : : FrameDecodeStatus::Valid;</span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> : : </span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> [<span class="tlaGBC" title="Branch 0 was taken 6341 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6341 : const SelectorState selector = ReadSelector(*definition, frame);</span></span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6337 times"> + </span>]:<span class="tlaGNC"> 6341 : const std::size_t count = selection != nullptr ? selected.size() : definition->signals.size();</span></span>
|
||||
<span id="L86"><span class="lineNum"> 86</span> [<span class="tlaGBC" title="Branch 0 was taken 6341 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6341 : result.signals.reserve(count);</span></span>
|
||||
<span id="L87"><span class="lineNum"> 87</span> [<span class="tlaGBC" title="Branch 0 was taken 6375 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6341 times"> + </span>]:<span class="tlaGNC"> 12716 : for (std::size_t index = 0U; index < count; ++index) {</span></span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6371 times"> + </span>]:<span class="tlaGNC"> 6375 : const DecodeSignal &signal = selection != nullptr ? *selected[index] : definition->signals[index];</span></span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> [<span class="tlaGBC" title="Branch 0 was taken 6375 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6375 : DecodedSignalValue decoded = DecodeOneSignal(signal, definition->dlc, frame, selector);</span></span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> [<span class="tlaGBC" title="Branch 0 was taken 44 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6331 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 31 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 13 times"> + </span>]:<span class="tlaGNC"> 6375 : if (!decoded.valid && decoded.status != SignalDecodeStatus::Inactive &&</span></span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 26 times"> + </span>]:<span class="tlaGNC"> 31 : result.status == FrameDecodeStatus::Valid)</span></span>
|
||||
<span id="L92"><span class="lineNum"> 92</span> :<span class="tlaGNC"> 5 : result.status = FrameDecodeStatus::SignalErrors;</span></span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> :<span class="tlaGNC"> 6375 : decoded.definition = std::shared_ptr<const DecodeSignal>(definition, &signal);</span></span>
|
||||
<span id="L94"><span class="lineNum"> 94</span> [<span class="tlaGBC" title="Branch 0 was taken 6375 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6375 : decoded.key = SignalKey(result.key, signal.name);</span></span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> [<span class="tlaGBC" title="Branch 0 was taken 6375 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6375 : result.signals.push_back(std::move(decoded));</span></span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> :<span class="tlaGNC"> 6375 : }</span></span>
|
||||
<span id="L97"><span class="lineNum"> 97</span> : : </span>
|
||||
<span id="L98"><span class="lineNum"> 98</span> :<span class="tlaGNC"> 6341 : return result;</span></span>
|
||||
<span id="L99"><span class="lineNum"> 99</span> :<span class="tlaGNC"> 6420 : }</span></span>
|
||||
<span id="L100"><span class="lineNum"> 100</span> : : </span>
|
||||
<span id="L101"><span class="lineNum"> 101</span> :<span class="tlaGNC"> 6396 : bool DbcDecoder::IsValidDefinition(const DecodeSignal &signal, std::uint8_t dlc) {</span></span>
|
||||
<span id="L102"><span class="lineNum"> 102</span> [<span class="tlaGBC" title="Branch 0 was taken 3144 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3252 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 3144 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 6396 : if ((signal.byteOrder != ByteOrder::Intel && signal.byteOrder != ByteOrder::Motorola) ||</span></span>
|
||||
<span id="L103"><span class="lineNum"> 103</span> [<span class="tlaGBC" title="Branch 0 was taken 85 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6311 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 85 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 6396 : (signal.valueType != ValueType::Unsigned && signal.valueType != ValueType::Signed) ||</span></span>
|
||||
<span id="L104"><span class="lineNum"> 104</span> [<span class="tlaGBC" title="Branch 0 was taken 71 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6325 times"> + </span>]:<span class="tlaGNC"> 6396 : (signal.multiplexing.role != MultiplexRole::Unconditional &&</span></span>
|
||||
<span id="L105"><span class="lineNum"> 105</span> [<span class="tlaGBC" title="Branch 0 was taken 29 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 42 times"> + </span>]:<span class="tlaGNC"> 71 : signal.multiplexing.role != MultiplexRole::Selector &&</span></span>
|
||||
<span id="L106"><span class="lineNum"> 106</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 29 times"> + </span>]:<span class="tlaGNC"> 29 : signal.multiplexing.role != MultiplexRole::Branch))</span></span>
|
||||
<span id="L107"><span class="lineNum"> 107</span> :<span class="tlaUNC"> 0 : return false;</span></span>
|
||||
<span id="L108"><span class="lineNum"> 108</span> : : </span>
|
||||
<span id="L109"><span class="lineNum"> 109</span> :<span class="tlaGNC"> 6396 : return IsValidSignalLayout(signal.startBit, signal.length,</span></span>
|
||||
<span id="L110"><span class="lineNum"> 110</span> :<span class="tlaGNC"> 6396 : signal.byteOrder == ByteOrder::Intel, dlc);</span></span>
|
||||
<span id="L111"><span class="lineNum"> 111</span> : : }</span>
|
||||
<span id="L112"><span class="lineNum"> 112</span> : : </span>
|
||||
<span id="L113"><span class="lineNum"> 113</span> :<span class="tlaGNC"> 6341 : DbcDecoder::SelectorState DbcDecoder::ReadSelector(const DecodeFrame &definition,</span></span>
|
||||
<span id="L114"><span class="lineNum"> 114</span> : : const RawCanFrame &frame) {</span>
|
||||
<span id="L115"><span class="lineNum"> 115</span> :<span class="tlaGNC"> 6341 : SelectorState selector;</span></span>
|
||||
<span id="L116"><span class="lineNum"> 116</span> :<span class="tlaGNC"> 6341 : std::size_t count = 0U;</span></span>
|
||||
<span id="L117"><span class="lineNum"> 117</span> [<span class="tlaGBC" title="Branch 0 was taken 6375 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6341 times"> + </span>]:<span class="tlaGNC"> 12716 : for (const DecodeSignal &signal: definition.signals) {</span></span>
|
||||
<span id="L118"><span class="lineNum"> 118</span> [<span class="tlaGBC" title="Branch 0 was taken 21 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6354 times"> + </span>]:<span class="tlaGNC"> 6375 : if (signal.multiplexing.role == MultiplexRole::Selector) {</span></span>
|
||||
<span id="L119"><span class="lineNum"> 119</span> :<span class="tlaGNC"> 21 : selector.definition = &signal;</span></span>
|
||||
<span id="L120"><span class="lineNum"> 120</span> :<span class="tlaGNC"> 21 : ++count;</span></span>
|
||||
<span id="L121"><span class="lineNum"> 121</span> : : }</span>
|
||||
<span id="L122"><span class="lineNum"> 122</span> : : }</span>
|
||||
<span id="L123"><span class="lineNum"> 123</span> [<span class="tlaGBC" title="Branch 0 was taken 6320 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 21 times"> + </span>]:<span class="tlaGNC"> 6341 : if (count != 1U)</span></span>
|
||||
<span id="L124"><span class="lineNum"> 124</span> :<span class="tlaGNC"> 6320 : return selector;</span></span>
|
||||
<span id="L125"><span class="lineNum"> 125</span> : : </span>
|
||||
<span id="L126"><span class="lineNum"> 126</span> :<span class="tlaGNC"> 21 : const DecodeSignal &signal = *selector.definition;</span></span>
|
||||
<span id="L127"><span class="lineNum"> 127</span> [<span class="tlaGBC" title="Branch 0 was taken 21 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 42 : selector.valid = signal.valueType == ValueType::Unsigned &&</span></span>
|
||||
<span id="L128"><span class="lineNum"> 128</span> [<span class="tlaGBC" title="Branch 0 was taken 21 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 21 : IsValidDefinition(signal, definition.dlc);</span></span>
|
||||
<span id="L129"><span class="lineNum"> 129</span> [<span class="tlaGBC" title="Branch 0 was taken 21 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 19 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2 times"> + </span>]:<span class="tlaGNC"> 21 : selector.available = selector.valid && ExtractUnsigned(frame.data, signal, selector.value);</span></span>
|
||||
<span id="L130"><span class="lineNum"> 130</span> :<span class="tlaGNC"> 21 : return selector;</span></span>
|
||||
<span id="L131"><span class="lineNum"> 131</span> : : }</span>
|
||||
<span id="L132"><span class="lineNum"> 132</span> : : </span>
|
||||
<span id="L133"><span class="lineNum"> 133</span> :<span class="tlaGNC"> 6375 : DecodedSignalValue DbcDecoder::DecodeOneSignal(const DecodeSignal &signal,</span></span>
|
||||
<span id="L134"><span class="lineNum"> 134</span> : : std::uint8_t dlc,</span>
|
||||
<span id="L135"><span class="lineNum"> 135</span> : : const RawCanFrame &frame,</span>
|
||||
<span id="L136"><span class="lineNum"> 136</span> : : const SelectorState &selector) {</span>
|
||||
<span id="L137"><span class="lineNum"> 137</span> :<span class="tlaGNC"> 6375 : DecodedSignalValue decoded;</span></span>
|
||||
<span id="L138"><span class="lineNum"> 138</span> :<span class="tlaGNC"> 6375 : std::uint64_t unsignedValue = 0U;</span></span>
|
||||
<span id="L139"><span class="lineNum"> 139</span> : : </span>
|
||||
<span id="L140"><span class="lineNum"> 140</span> [<span class="tlaGBC" title="Branch 0 was taken 6375 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 6375 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 12750 : if (!IsValidDefinition(signal, dlc) ||</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 4 was not taken"> - </span><span class="tlaGBC" title="Branch 5 was taken 6375 times"> + </span>]
|
||||
<span id="L141"><span class="lineNum"> 141</span> [<span class="tlaGBC" title="Branch 0 was taken 50 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6325 times"> + </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaGBC" title="Branch 3 was taken 50 times"> + </span>]:<span class="tlaGNC"> 6375 : (signal.multiplexing.role != MultiplexRole::Unconditional && !selector.valid)) {</span></span>
|
||||
<span id="L142"><span class="lineNum"> 142</span> :<span class="tlaUNC"> 0 : return decoded;</span></span>
|
||||
<span id="L143"><span class="lineNum"> 143</span> : : }</span>
|
||||
<span id="L144"><span class="lineNum"> 144</span> [<span class="tlaGBC" title="Branch 0 was taken 29 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6346 times"> + </span>]:<span class="tlaGNC"> 6375 : if (signal.multiplexing.role == MultiplexRole::Branch) {</span></span>
|
||||
<span id="L145"><span class="lineNum"> 145</span> [<span class="tlaGBC" title="Branch 0 was taken 23 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaGBC" title="Branch 3 was taken 23 times"> + </span>]:<span class="tlaGNC"> 29 : if (selector.definition->length < 64U && signal.multiplexing.value >= (std::uint64_t(1U) << selector.definition->length)) {</span></span>
|
||||
<span id="L146"><span class="lineNum"> 146</span> :<span class="tlaUNC"> 0 : return decoded;</span></span>
|
||||
<span id="L147"><span class="lineNum"> 147</span> : : }</span>
|
||||
<span id="L148"><span class="lineNum"> 148</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 26 times"> + </span>]:<span class="tlaGNC"> 29 : if (!selector.available) {</span></span>
|
||||
<span id="L149"><span class="lineNum"> 149</span> :<span class="tlaGNC"> 3 : decoded.status = SignalDecodeStatus::SelectorUnavailable;</span></span>
|
||||
<span id="L150"><span class="lineNum"> 150</span> :<span class="tlaGNC"> 3 : return decoded;</span></span>
|
||||
<span id="L151"><span class="lineNum"> 151</span> : : }</span>
|
||||
<span id="L152"><span class="lineNum"> 152</span> [<span class="tlaGBC" title="Branch 0 was taken 13 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 13 times"> + </span>]:<span class="tlaGNC"> 26 : if (signal.multiplexing.value != selector.value) {</span></span>
|
||||
<span id="L153"><span class="lineNum"> 153</span> :<span class="tlaGNC"> 13 : decoded.status = SignalDecodeStatus::Inactive;</span></span>
|
||||
<span id="L154"><span class="lineNum"> 154</span> :<span class="tlaGNC"> 13 : return decoded;</span></span>
|
||||
<span id="L155"><span class="lineNum"> 155</span> : : }</span>
|
||||
<span id="L156"><span class="lineNum"> 156</span> : : }</span>
|
||||
<span id="L157"><span class="lineNum"> 157</span> [<span class="tlaGBC" title="Branch 0 was taken 6359 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 23 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 6336 times"> + </span>]:<span class="tlaGNC"> 6359 : if (!ExtractUnsigned(frame.data, signal, unsignedValue)) {</span></span>
|
||||
<span id="L158"><span class="lineNum"> 158</span> :<span class="tlaGNC"> 23 : decoded.status = SignalDecodeStatus::InsufficientPayload;</span></span>
|
||||
<span id="L159"><span class="lineNum"> 159</span> :<span class="tlaGNC"> 23 : return decoded;</span></span>
|
||||
<span id="L160"><span class="lineNum"> 160</span> : : }</span>
|
||||
<span id="L161"><span class="lineNum"> 161</span> : : </span>
|
||||
<span id="L162"><span class="lineNum"> 162</span> [<span class="tlaGBC" title="Branch 0 was taken 81 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6255 times"> + </span>]:<span class="tlaGNC"> 6336 : if (signal.valueType == ValueType::Signed)</span></span>
|
||||
<span id="L163"><span class="lineNum"> 163</span> [<span class="tlaGBC" title="Branch 0 was taken 81 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 81 : decoded.rawValue = SignExtend(unsignedValue, signal.length);</span></span>
|
||||
<span id="L164"><span class="lineNum"> 164</span> : : else</span>
|
||||
<span id="L165"><span class="lineNum"> 165</span> :<span class="tlaGNC"> 6255 : decoded.rawValue = unsignedValue;</span></span>
|
||||
<span id="L166"><span class="lineNum"> 166</span> : : </span>
|
||||
<span id="L167"><span class="lineNum"> 167</span> : : double numericValue;</span>
|
||||
<span id="L168"><span class="lineNum"> 168</span> [<span class="tlaGBC" title="Branch 0 was taken 81 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6255 times"> + </span>]:<span class="tlaGNC"> 6336 : if (const std::int64_t *signedValue = std::get_if<std::int64_t>(&decoded.rawValue))</span></span>
|
||||
<span id="L169"><span class="lineNum"> 169</span> :<span class="tlaGNC"> 81 : numericValue = static_cast<double>(*signedValue);</span></span>
|
||||
<span id="L170"><span class="lineNum"> 170</span> : : else</span>
|
||||
<span id="L171"><span class="lineNum"> 171</span> [<span class="tlaGBC" title="Branch 0 was taken 6255 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6255 : numericValue = static_cast<double>(std::get<std::uint64_t>(decoded.rawValue));</span></span>
|
||||
<span id="L172"><span class="lineNum"> 172</span> :<span class="tlaGNC"> 6336 : decoded.physicalValue = numericValue * signal.factor + signal.offset;</span></span>
|
||||
<span id="L173"><span class="lineNum"> 173</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6331 times"> + </span>]:<span class="tlaGNC"> 6336 : if (!std::isfinite(decoded.physicalValue)) {</span></span>
|
||||
<span id="L174"><span class="lineNum"> 174</span> :<span class="tlaGNC"> 5 : decoded.status = SignalDecodeStatus::PhysicalConversionFailed;</span></span>
|
||||
<span id="L175"><span class="lineNum"> 175</span> :<span class="tlaGNC"> 5 : return decoded;</span></span>
|
||||
<span id="L176"><span class="lineNum"> 176</span> : : }</span>
|
||||
<span id="L177"><span class="lineNum"> 177</span> :<span class="tlaGNC"> 6331 : decoded.valid = true;</span></span>
|
||||
<span id="L178"><span class="lineNum"> 178</span> :<span class="tlaGNC"> 6331 : decoded.status = SignalDecodeStatus::Valid;</span></span>
|
||||
<span id="L179"><span class="lineNum"> 179</span> : : </span>
|
||||
<span id="L180"><span class="lineNum"> 180</span> :<span class="tlaGNC"> 6331 : return decoded;</span></span>
|
||||
<span id="L181"><span class="lineNum"> 181</span> :<span class="tlaUNC"> 0 : }</span></span>
|
||||
<span id="L182"><span class="lineNum"> 182</span> : : </span>
|
||||
<span id="L183"><span class="lineNum"> 183</span> :<span class="tlaGNC"> 6380 : bool DbcDecoder::ExtractUnsigned(const std::vector<std::uint8_t> &data,</span></span>
|
||||
<span id="L184"><span class="lineNum"> 184</span> : : const DecodeSignal &signal,</span>
|
||||
<span id="L185"><span class="lineNum"> 185</span> : : std::uint64_t &value) {</span>
|
||||
<span id="L186"><span class="lineNum"> 186</span> [<span class="tlaGBC" title="Branch 0 was taken 6380 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaGBC" title="Branch 3 was taken 6380 times"> + </span>]:<span class="tlaGNC"> 6380 : if ((signal.length == 0U) || (signal.length > 64U))</span></span>
|
||||
<span id="L187"><span class="lineNum"> 187</span> :<span class="tlaUNC"> 0 : return false;</span></span>
|
||||
<span id="L188"><span class="lineNum"> 188</span> : : </span>
|
||||
<span id="L189"><span class="lineNum"> 189</span> [<span class="tlaGBC" title="Branch 0 was taken 3242 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3138 times"> + </span>]:<span class="tlaGNC"> 6380 : if (signal.byteOrder == ByteOrder::Intel)</span></span>
|
||||
<span id="L190"><span class="lineNum"> 190</span> :<span class="tlaGNC"> 3242 : return ExtractIntel(data, signal.startBit, signal.length, value);</span></span>
|
||||
<span id="L191"><span class="lineNum"> 191</span> : : </span>
|
||||
<span id="L192"><span class="lineNum"> 192</span> :<span class="tlaGNC"> 3138 : return ExtractMotorola(data, signal.startBit, signal.length, value);</span></span>
|
||||
<span id="L193"><span class="lineNum"> 193</span> : : }</span>
|
||||
<span id="L194"><span class="lineNum"> 194</span> : : </span>
|
||||
<span id="L195"><span class="lineNum"> 195</span> :<span class="tlaGNC"> 3242 : bool DbcDecoder::ExtractIntel(const std::vector<std::uint8_t> &data,</span></span>
|
||||
<span id="L196"><span class="lineNum"> 196</span> : : std::uint32_t startBit,</span>
|
||||
<span id="L197"><span class="lineNum"> 197</span> : : std::uint32_t length,</span>
|
||||
<span id="L198"><span class="lineNum"> 198</span> : : std::uint64_t &value) {</span>
|
||||
<span id="L199"><span class="lineNum"> 199</span> :<span class="tlaGNC"> 3242 : value = 0U;</span></span>
|
||||
<span id="L200"><span class="lineNum"> 200</span> : : </span>
|
||||
<span id="L201"><span class="lineNum"> 201</span> [<span class="tlaGBC" title="Branch 0 was taken 102334 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3224 times"> + </span>]:<span class="tlaGNC"> 105558 : for (std::uint32_t bitIndex = 0U; bitIndex < length; ++bitIndex) {</span></span>
|
||||
<span id="L202"><span class="lineNum"> 202</span> :<span class="tlaGNC"> 102334 : const std::uint64_t absoluteBit = std::uint64_t(startBit) + bitIndex;</span></span>
|
||||
<span id="L203"><span class="lineNum"> 203</span> :<span class="tlaGNC"> 102334 : const std::uint64_t byteIndex = absoluteBit / 8U;</span></span>
|
||||
<span id="L204"><span class="lineNum"> 204</span> :<span class="tlaGNC"> 102334 : const std::uint32_t bitInByte = absoluteBit % 8U;</span></span>
|
||||
<span id="L205"><span class="lineNum"> 205</span> : : </span>
|
||||
<span id="L206"><span class="lineNum"> 206</span> [<span class="tlaGBC" title="Branch 0 was taken 18 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 102316 times"> + </span>]:<span class="tlaGNC"> 102334 : if (byteIndex >= data.size())</span></span>
|
||||
<span id="L207"><span class="lineNum"> 207</span> :<span class="tlaGNC"> 18 : return false;</span></span>
|
||||
<span id="L208"><span class="lineNum"> 208</span> : : </span>
|
||||
<span id="L209"><span class="lineNum"> 209</span> : : const std::uint64_t bitValue =</span>
|
||||
<span id="L210"><span class="lineNum"> 210</span> :<span class="tlaGNC"> 102316 : (static_cast<std::uint64_t>((data[byteIndex] >> bitInByte) & 0x01U) << bitIndex);</span></span>
|
||||
<span id="L211"><span class="lineNum"> 211</span> : : </span>
|
||||
<span id="L212"><span class="lineNum"> 212</span> :<span class="tlaGNC"> 102316 : value |= bitValue;</span></span>
|
||||
<span id="L213"><span class="lineNum"> 213</span> : : }</span>
|
||||
<span id="L214"><span class="lineNum"> 214</span> : : </span>
|
||||
<span id="L215"><span class="lineNum"> 215</span> :<span class="tlaGNC"> 3224 : return true;</span></span>
|
||||
<span id="L216"><span class="lineNum"> 216</span> : : }</span>
|
||||
<span id="L217"><span class="lineNum"> 217</span> : : </span>
|
||||
<span id="L218"><span class="lineNum"> 218</span> :<span class="tlaGNC"> 3138 : bool DbcDecoder::ExtractMotorola(const std::vector<std::uint8_t> &data,</span></span>
|
||||
<span id="L219"><span class="lineNum"> 219</span> : : std::uint32_t startBit,</span>
|
||||
<span id="L220"><span class="lineNum"> 220</span> : : std::uint32_t length,</span>
|
||||
<span id="L221"><span class="lineNum"> 221</span> : : std::uint64_t &value) {</span>
|
||||
<span id="L222"><span class="lineNum"> 222</span> : : /*</span>
|
||||
<span id="L223"><span class="lineNum"> 223</span> : : * DBC Motorola bit numbering:</span>
|
||||
<span id="L224"><span class="lineNum"> 224</span> : : * - startBit points to the most significant bit of the signal</span>
|
||||
<span id="L225"><span class="lineNum"> 225</span> : : * - inside a byte, bit numbering goes 7..0</span>
|
||||
<span id="L226"><span class="lineNum"> 226</span> : : * - crossing byte boundary moves to the next byte, bit 7</span>
|
||||
<span id="L227"><span class="lineNum"> 227</span> : : * Example: a signal starting at 7 follows 7..0, 15..8, 23..16.</span>
|
||||
<span id="L228"><span class="lineNum"> 228</span> : : */</span>
|
||||
<span id="L229"><span class="lineNum"> 229</span> : : </span>
|
||||
<span id="L230"><span class="lineNum"> 230</span> :<span class="tlaGNC"> 3138 : value = 0U;</span></span>
|
||||
<span id="L231"><span class="lineNum"> 231</span> : : </span>
|
||||
<span id="L232"><span class="lineNum"> 232</span> :<span class="tlaGNC"> 3138 : std::size_t byteIndex = startBit / 8U;</span></span>
|
||||
<span id="L233"><span class="lineNum"> 233</span> :<span class="tlaGNC"> 3138 : std::uint32_t bitInByte = startBit % 8U;</span></span>
|
||||
<span id="L234"><span class="lineNum"> 234</span> : : </span>
|
||||
<span id="L235"><span class="lineNum"> 235</span> [<span class="tlaGBC" title="Branch 0 was taken 101601 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3131 times"> + </span>]:<span class="tlaGNC"> 104732 : for (std::uint32_t bitIndex = 0U; bitIndex < length; ++bitIndex) {</span></span>
|
||||
<span id="L236"><span class="lineNum"> 236</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 101594 times"> + </span>]:<span class="tlaGNC"> 101601 : if (byteIndex >= data.size())</span></span>
|
||||
<span id="L237"><span class="lineNum"> 237</span> :<span class="tlaGNC"> 7 : return false;</span></span>
|
||||
<span id="L238"><span class="lineNum"> 238</span> : : </span>
|
||||
<span id="L239"><span class="lineNum"> 239</span> :<span class="tlaGNC"> 101594 : value <<= 1U;</span></span>
|
||||
<span id="L240"><span class="lineNum"> 240</span> :<span class="tlaGNC"> 101594 : value |= static_cast<std::uint64_t>((data[byteIndex] >> bitInByte) & 0x01U);</span></span>
|
||||
<span id="L241"><span class="lineNum"> 241</span> : : </span>
|
||||
<span id="L242"><span class="lineNum"> 242</span> [<span class="tlaGBC" title="Branch 0 was taken 12688 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 88906 times"> + </span>]:<span class="tlaGNC"> 101594 : if (bitInByte == 0U) {</span></span>
|
||||
<span id="L243"><span class="lineNum"> 243</span> :<span class="tlaGNC"> 12688 : ++byteIndex;</span></span>
|
||||
<span id="L244"><span class="lineNum"> 244</span> :<span class="tlaGNC"> 12688 : bitInByte = 7U;</span></span>
|
||||
<span id="L245"><span class="lineNum"> 245</span> : : } else</span>
|
||||
<span id="L246"><span class="lineNum"> 246</span> :<span class="tlaGNC"> 88906 : --bitInByte;</span></span>
|
||||
<span id="L247"><span class="lineNum"> 247</span> : : }</span>
|
||||
<span id="L248"><span class="lineNum"> 248</span> : : </span>
|
||||
<span id="L249"><span class="lineNum"> 249</span> :<span class="tlaGNC"> 3131 : return true;</span></span>
|
||||
<span id="L250"><span class="lineNum"> 250</span> : : }</span>
|
||||
<span id="L251"><span class="lineNum"> 251</span> : : </span>
|
||||
<span id="L252"><span class="lineNum"> 252</span> :<span class="tlaGNC"> 81 : std::int64_t DbcDecoder::SignExtend(std::uint64_t value, std::uint32_t bitLength) {</span></span>
|
||||
<span id="L253"><span class="lineNum"> 253</span> [<span class="tlaGBC" title="Branch 0 was taken 81 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaGBC" title="Branch 3 was taken 81 times"> + </span>]:<span class="tlaGNC"> 81 : if ((bitLength == 0U) || (bitLength > 64U))</span></span>
|
||||
<span id="L254"><span class="lineNum"> 254</span> :<span class="tlaUNC"> 0 : return 0;</span></span>
|
||||
<span id="L255"><span class="lineNum"> 255</span> : : </span>
|
||||
<span id="L256"><span class="lineNum"> 256</span> :<span class="tlaGNC"> 81 : const std::uint64_t signMask = std::uint64_t(1U) << (bitLength - 1U);</span></span>
|
||||
<span id="L257"><span class="lineNum"> 257</span> :<span class="tlaGNC"> 81 : const std::uint64_t valueMask = (bitLength == 64U)</span></span>
|
||||
<span id="L258"><span class="lineNum"> 258</span> [<span class="tlaGBC" title="Branch 0 was taken 68 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 13 times"> + </span>]:<span class="tlaGNC"> 81 : ? ~std::uint64_t(0U)</span></span>
|
||||
<span id="L259"><span class="lineNum"> 259</span> :<span class="tlaGNC"> 68 : : (std::uint64_t(1U) << bitLength) - 1U;</span></span>
|
||||
<span id="L260"><span class="lineNum"> 260</span> :<span class="tlaGNC"> 81 : value &= valueMask;</span></span>
|
||||
<span id="L261"><span class="lineNum"> 261</span> : : </span>
|
||||
<span id="L262"><span class="lineNum"> 262</span> [<span class="tlaGBC" title="Branch 0 was taken 41 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 40 times"> + </span>]:<span class="tlaGNC"> 81 : if ((value & signMask) == 0U)</span></span>
|
||||
<span id="L263"><span class="lineNum"> 263</span> :<span class="tlaGNC"> 41 : return static_cast<std::int64_t>(value);</span></span>
|
||||
<span id="L264"><span class="lineNum"> 264</span> : : </span>
|
||||
<span id="L265"><span class="lineNum"> 265</span> : : // The complemented magnitude fits int64_t, including for INT64_MIN.</span>
|
||||
<span id="L266"><span class="lineNum"> 266</span> :<span class="tlaGNC"> 40 : return -1 - static_cast<std::int64_t>((~value) & valueMask);</span></span>
|
||||
<span id="L267"><span class="lineNum"> 267</span> : : }</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,117 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_decoder.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_decoder.h<span style="font-size: 80%;"> (<a href="dbc_decoder.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">75.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">3</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="dbc_decoder.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.h.gcov.html#L61">DecodedSignalValue::GetValueDescription[abi:cxx11]() const</a></td>
|
||||
|
||||
<td class="coverFnHi">79</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.h.gcov.html#L27">RawCanFrame::RawCanFrame()</a></td>
|
||||
|
||||
<td class="coverFnHi">2220</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.h.gcov.html#L65">DecodedSignalValue::DecodedSignalValue()</a></td>
|
||||
|
||||
<td class="coverFnHi">6380</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.h.gcov.html#L78">DecodedFrameValue::DecodedFrameValue()</a></td>
|
||||
|
||||
<td class="coverFnHi">6409</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,117 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_decoder.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_decoder.h<span style="font-size: 80%;"> (<a href="dbc_decoder.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">75.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">3</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="dbc_decoder.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.h.gcov.html#L78">DecodedFrameValue::DecodedFrameValue()</a></td>
|
||||
|
||||
<td class="coverFnHi">6409</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.h.gcov.html#L65">DecodedSignalValue::DecodedSignalValue()</a></td>
|
||||
|
||||
<td class="coverFnHi">6380</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.h.gcov.html#L61">DecodedSignalValue::GetValueDescription[abi:cxx11]() const</a></td>
|
||||
|
||||
<td class="coverFnHi">79</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_decoder.h.gcov.html#L27">RawCanFrame::RawCanFrame()</a></td>
|
||||
|
||||
<td class="coverFnHi">2220</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,246 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_decoder.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_decoder.h<span style="font-size: 80%;"> (source / <a href="dbc_decoder.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">75.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">3</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : * @file dbc_decoder.h</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : * @brief CAN frame decoding API and result types.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : #ifndef DBC_DECODER_H</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : #define DBC_DECODER_H</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : </span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : : #include <cstdint></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : #include <variant></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : : #include <vector></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : </span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : : #include "decode_database.h"</span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : : </span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : : /**</span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : : * @brief Raw CAN frame used for runtime or trace decoding.</span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : : */</span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : : struct RawCanFrame {</span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : : std::uint32_t canId = 0U; /**< Normalized CAN ID. */</span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : : bool isExtended = false; /**< true for extended frame. */</span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : : std::vector<std::uint8_t> data; /**< Payload bytes. */</span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : : </span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> :<span class="tlaGNC"> 2220 : RawCanFrame() = default;</span></span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : : };</span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> : : </span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : : /** @brief Outcome of signal extraction and physical conversion. */</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : : enum class SignalDecodeStatus {</span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : : InvalidDefinition,</span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : : InsufficientPayload,</span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> : : SelectorUnavailable,</span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : : Inactive,</span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> : : Valid,</span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : : PhysicalConversionFailed</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : : };</span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> : : </span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : : /** Frame summary: short payload takes precedence over individual signal errors. */</span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> : : enum class FrameDecodeStatus {</span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> : : UnknownFrame,</span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> : : InsufficientPayload,</span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : : SignalErrors,</span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : : Valid,</span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> : : AmbiguousFrame</span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> : : };</span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> : : </span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> : : /**</span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> : : * @brief One decoded signal value.</span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> : : */</span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> : : struct DecodedSignalValue {</span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> : : std::shared_ptr<const DecodeSignal> definition; /**< Owning immutable definition. */</span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> : : SignalKey key; /**< Stable application identifier. */</span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> : : RawSignalValue rawValue = std::uint64_t(0U); /**< Exact raw value for Valid or PhysicalConversionFailed. */</span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> : : double physicalValue = 0.0; /**< Conversion result, possibly NaN/Inf on failure. */</span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> : : bool valid = false; /**< true if decoding succeeded. */</span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> : : SignalDecodeStatus status = SignalDecodeStatus::InvalidDefinition; /**< Detailed signal outcome. */</span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> : : </span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> : : /** Lookup using the raw integer; nullptr for invalid or unmapped values. */</span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> :<span class="tlaGNC"> 79 : const std::string *GetValueDescription() const {</span></span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> [<span class="tlaGBC" title="Branch 0 was taken 64 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 15 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 64 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 79 : return valid && definition ? FindValueDescription(definition->valueDescriptions, rawValue) : nullptr;</span></span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> : : }</span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> : : </span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> :<span class="tlaGNC"> 6380 : DecodedSignalValue() = default;</span></span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> : : };</span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> : : </span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> : : /**</span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> : : * @brief Fully decoded frame.</span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> : : */</span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> : : struct DecodedFrameValue {</span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> : : std::shared_ptr<const DecodeFrame> definition; /**< Owning immutable definition. */</span>
|
||||
<span id="L75"><span class="lineNum"> 75</span> : : FrameKey key; /**< Matched definition key; received key if unmatched. */</span>
|
||||
<span id="L76"><span class="lineNum"> 76</span> : : std::vector<DecodedSignalValue> signals; /**< Decoded signal values. */</span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> : : bool valid = false; /**< true if frame was matched. */</span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> : : FrameDecodeStatus status = FrameDecodeStatus::UnknownFrame; /**< Inspect signals for individual failures. */</span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> : : </span>
|
||||
<span id="L80"><span class="lineNum"> 80</span> :<span class="tlaGNC"> 6409 : DecodedFrameValue() = default;</span></span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> : : };</span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> : : </span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> : : /**</span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> : : * @brief Runtime CAN decoder using prebuilt decode database.</span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> : : */</span>
|
||||
<span id="L86"><span class="lineNum"> 86</span> : : class DbcDecoder {</span>
|
||||
<span id="L87"><span class="lineNum"> 87</span> : : public:</span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> : : /**</span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> : : * @brief Find exact CAN ID first, then unique PGN among explicitly J1939 definitions.</span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> : : * @param database Runtime decode database.</span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> : : * @param canId Normalized CAN ID.</span>
|
||||
<span id="L92"><span class="lineNum"> 92</span> : : * @param isExtended true for extended frame.</span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> : : * @return Owning immutable handle, or nullptr for missing/ambiguous matches. Safe across reload.</span>
|
||||
<span id="L94"><span class="lineNum"> 94</span> : : */</span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> : : std::shared_ptr<const DecodeFrame> FindFrame(const DecodeDatabase &database,</span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> : : std::uint32_t canId,</span>
|
||||
<span id="L97"><span class="lineNum"> 97</span> : : bool isExtended) const;</span>
|
||||
<span id="L98"><span class="lineNum"> 98</span> : : </span>
|
||||
<span id="L99"><span class="lineNum"> 99</span> : : /**</span>
|
||||
<span id="L100"><span class="lineNum"> 100</span> : : * @brief Decode one raw CAN frame.</span>
|
||||
<span id="L101"><span class="lineNum"> 101</span> : : * @param database Runtime decode database.</span>
|
||||
<span id="L102"><span class="lineNum"> 102</span> : : * @param frame Raw CAN frame.</span>
|
||||
<span id="L103"><span class="lineNum"> 103</span> : : * Short payloads decode available signals; bytes beyond declared DLC are ignored.</span>
|
||||
<span id="L104"><span class="lineNum"> 104</span> : : * @return Decoded frame value.</span>
|
||||
<span id="L105"><span class="lineNum"> 105</span> : : */</span>
|
||||
<span id="L106"><span class="lineNum"> 106</span> : : DecodedFrameValue Decode(const DecodeDatabase &database,</span>
|
||||
<span id="L107"><span class="lineNum"> 107</span> : : const RawCanFrame &frame) const;</span>
|
||||
<span id="L108"><span class="lineNum"> 108</span> : : </span>
|
||||
<span id="L109"><span class="lineNum"> 109</span> : : /**</span>
|
||||
<span id="L110"><span class="lineNum"> 110</span> : : * @brief Decode selected signals in selection order using stable keys.</span>
|
||||
<span id="L111"><span class="lineNum"> 111</span> : : * An empty selection returns no signals. Multiplex selectors are read internally.</span>
|
||||
<span id="L112"><span class="lineNum"> 112</span> : : * Frame status summarizes selected signals; short payload still takes precedence.</span>
|
||||
<span id="L113"><span class="lineNum"> 113</span> : : * Unknown/ambiguous frames return before checking the selection.</span>
|
||||
<span id="L114"><span class="lineNum"> 114</span> : : * For PGN matches, selection keys must belong to the matched DBC definition.</span>
|
||||
<span id="L115"><span class="lineNum"> 115</span> : : * @throws std::invalid_argument for a foreign frame key, unknown signal, or duplicate key.</span>
|
||||
<span id="L116"><span class="lineNum"> 116</span> : : */</span>
|
||||
<span id="L117"><span class="lineNum"> 117</span> : : DecodedFrameValue Decode(const DecodeDatabase &database,</span>
|
||||
<span id="L118"><span class="lineNum"> 118</span> : : const RawCanFrame &frame,</span>
|
||||
<span id="L119"><span class="lineNum"> 119</span> : : const std::vector<SignalKey> &selection) const;</span>
|
||||
<span id="L120"><span class="lineNum"> 120</span> : : </span>
|
||||
<span id="L121"><span class="lineNum"> 121</span> : : private:</span>
|
||||
<span id="L122"><span class="lineNum"> 122</span> : : static PgnLookupResult ResolveFrame(const DecodeDatabase &database,</span>
|
||||
<span id="L123"><span class="lineNum"> 123</span> : : std::uint32_t canId, bool isExtended);</span>
|
||||
<span id="L124"><span class="lineNum"> 124</span> : : </span>
|
||||
<span id="L125"><span class="lineNum"> 125</span> : : DecodedFrameValue DecodeImpl(const DecodeDatabase &database,</span>
|
||||
<span id="L126"><span class="lineNum"> 126</span> : : const RawCanFrame &frame,</span>
|
||||
<span id="L127"><span class="lineNum"> 127</span> : : const std::vector<SignalKey> *selection) const;</span>
|
||||
<span id="L128"><span class="lineNum"> 128</span> : : </span>
|
||||
<span id="L129"><span class="lineNum"> 129</span> : : static bool IsValidDefinition(const DecodeSignal &signal, std::uint8_t dlc);</span>
|
||||
<span id="L130"><span class="lineNum"> 130</span> : : </span>
|
||||
<span id="L131"><span class="lineNum"> 131</span> : : struct SelectorState {</span>
|
||||
<span id="L132"><span class="lineNum"> 132</span> : : const DecodeSignal *definition = nullptr;</span>
|
||||
<span id="L133"><span class="lineNum"> 133</span> : : bool valid = false;</span>
|
||||
<span id="L134"><span class="lineNum"> 134</span> : : bool available = false;</span>
|
||||
<span id="L135"><span class="lineNum"> 135</span> : : std::uint64_t value = 0U;</span>
|
||||
<span id="L136"><span class="lineNum"> 136</span> : : };</span>
|
||||
<span id="L137"><span class="lineNum"> 137</span> : : </span>
|
||||
<span id="L138"><span class="lineNum"> 138</span> : : static SelectorState ReadSelector(const DecodeFrame &definition, const RawCanFrame &frame);</span>
|
||||
<span id="L139"><span class="lineNum"> 139</span> : : static DecodedSignalValue DecodeOneSignal(const DecodeSignal &signal,</span>
|
||||
<span id="L140"><span class="lineNum"> 140</span> : : std::uint8_t dlc,</span>
|
||||
<span id="L141"><span class="lineNum"> 141</span> : : const RawCanFrame &frame,</span>
|
||||
<span id="L142"><span class="lineNum"> 142</span> : : const SelectorState &selector);</span>
|
||||
<span id="L143"><span class="lineNum"> 143</span> : : </span>
|
||||
<span id="L144"><span class="lineNum"> 144</span> : : static bool ExtractUnsigned(const std::vector<std::uint8_t> &data,</span>
|
||||
<span id="L145"><span class="lineNum"> 145</span> : : const DecodeSignal &signal,</span>
|
||||
<span id="L146"><span class="lineNum"> 146</span> : : std::uint64_t &value);</span>
|
||||
<span id="L147"><span class="lineNum"> 147</span> : : </span>
|
||||
<span id="L148"><span class="lineNum"> 148</span> : : static bool ExtractIntel(const std::vector<std::uint8_t> &data,</span>
|
||||
<span id="L149"><span class="lineNum"> 149</span> : : std::uint32_t startBit,</span>
|
||||
<span id="L150"><span class="lineNum"> 150</span> : : std::uint32_t length,</span>
|
||||
<span id="L151"><span class="lineNum"> 151</span> : : std::uint64_t &value);</span>
|
||||
<span id="L152"><span class="lineNum"> 152</span> : : </span>
|
||||
<span id="L153"><span class="lineNum"> 153</span> : : static bool ExtractMotorola(const std::vector<std::uint8_t> &data,</span>
|
||||
<span id="L154"><span class="lineNum"> 154</span> : : std::uint32_t startBit,</span>
|
||||
<span id="L155"><span class="lineNum"> 155</span> : : std::uint32_t length,</span>
|
||||
<span id="L156"><span class="lineNum"> 156</span> : : std::uint64_t &value);</span>
|
||||
<span id="L157"><span class="lineNum"> 157</span> : : </span>
|
||||
<span id="L158"><span class="lineNum"> 158</span> : : static std::int64_t SignExtend(std::uint64_t value, std::uint32_t bitLength);</span>
|
||||
<span id="L159"><span class="lineNum"> 159</span> : : };</span>
|
||||
<span id="L160"><span class="lineNum"> 160</span> : : </span>
|
||||
<span id="L161"><span class="lineNum"> 161</span> : : #endif /* DBC_DECODER_H */</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_diagnostic.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_diagnostic.h<span style="font-size: 80%;"> (<a href="dbc_diagnostic.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="dbc_diagnostic.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_diagnostic.h.gcov.html#L41">DbcParseResult::HasErrors() const</a></td>
|
||||
|
||||
<td class="coverFnHi">293</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_diagnostic.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_diagnostic.h<span style="font-size: 80%;"> (<a href="dbc_diagnostic.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="dbc_diagnostic.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_diagnostic.h.gcov.html#L41">DbcParseResult::HasErrors() const</a></td>
|
||||
|
||||
<td class="coverFnHi">293</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,137 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_diagnostic.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_diagnostic.h<span style="font-size: 80%;"> (source / <a href="dbc_diagnostic.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : // SPDX-License-Identifier: MIT</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : #ifndef DBC_DIAGNOSTIC_H</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : #define DBC_DIAGNOSTIC_H</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : </span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : #include "dbc_database.h"</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : #include <cstddef></span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : #include <string></span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : #include <vector></span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : </span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : /** @brief Warning or fatal parse error. */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : enum class DbcDiagnosticSeverity {</span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : Warning,</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : Error</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : };</span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : : </span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : /** Stable categories; messages provide the details. */</span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : : enum class DbcDiagnosticCode {</span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : FileOpenError,</span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : : FileReadError,</span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : : InvalidStatement,</span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : : InvalidValueDescription,</span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : : InvalidMultiplexing,</span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : : UnsupportedStatement,</span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : : InvalidAttribute,</span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : : UnsupportedAttribute</span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : : };</span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : : </span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : : /** @brief Diagnostic message and physical source location. */</span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> : : struct DbcDiagnostic {</span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : : DbcDiagnosticSeverity severity; /**< Message severity. */</span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> : : DbcDiagnosticCode code; /**< Stable diagnostic category. */</span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : : std::string filePath; /**< Input file path. */</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : : std::size_t lineNumber; /**< One-based physical line; zero for file-level errors. */</span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : : std::string message; /**< Human-readable diagnostic details. */</span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : : };</span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> : : </span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : : /** @brief Parsed database and diagnostics; the database is empty on error. */</span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> : : struct DbcParseResult {</span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : : DbcDatabase database; /**< Parsed content, published only on success. */</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : : std::vector<DbcDiagnostic> diagnostics; /**< Warnings and the first error, if any. */</span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> : : </span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : : /** @brief Return whether any diagnostic has error severity. */</span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> :<span class="tlaGNC"> 293 : bool HasErrors() const {</span></span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> [<span class="tlaGBC" title="Branch 0 was taken 283 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 44 times"> + </span>]:<span class="tlaGNC"> 327 : for (const DbcDiagnostic &diagnostic: diagnostics) {</span></span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> [<span class="tlaGBC" title="Branch 0 was taken 249 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 34 times"> + </span>]:<span class="tlaGNC"> 283 : if (diagnostic.severity == DbcDiagnosticSeverity::Error)</span></span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> :<span class="tlaGNC"> 249 : return true;</span></span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : : }</span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> :<span class="tlaGNC"> 44 : return false;</span></span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> : : }</span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> : : };</span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> : : </span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> : : #endif /* DBC_DIAGNOSTIC_H */</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,117 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_parser.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_parser.cpp<span style="font-size: 80%;"> (<a href="dbc_parser.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">99.0 %</td>
|
||||
<td class="headerCovTableEntry">99</td>
|
||||
<td class="headerCovTableEntry">98</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">70.4 %</td>
|
||||
<td class="headerCovTableEntry">216</td>
|
||||
<td class="headerCovTableEntry">152</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="dbc_parser.cpp.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_parser.cpp.gcov.html#L21">(anonymous namespace)::ReadCommentLines(std::basic_ifstream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long&)</a></td>
|
||||
|
||||
<td class="coverFnHi">140</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_parser.cpp.gcov.html#L50">(anonymous namespace)::StatementErrorCode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">349</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_parser.cpp.gcov.html#L59">DbcParser::ParseFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">656</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_parser.cpp.gcov.html#L72">DbcParser::ParseFileWithDiagnostics(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">951</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,117 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_parser.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_parser.cpp<span style="font-size: 80%;"> (<a href="dbc_parser.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">99.0 %</td>
|
||||
<td class="headerCovTableEntry">99</td>
|
||||
<td class="headerCovTableEntry">98</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">70.4 %</td>
|
||||
<td class="headerCovTableEntry">216</td>
|
||||
<td class="headerCovTableEntry">152</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="dbc_parser.cpp.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_parser.cpp.gcov.html#L21">(anonymous namespace)::ReadCommentLines(std::basic_ifstream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long&)</a></td>
|
||||
|
||||
<td class="coverFnHi">140</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_parser.cpp.gcov.html#L50">(anonymous namespace)::StatementErrorCode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">349</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_parser.cpp.gcov.html#L59">DbcParser::ParseFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">656</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_parser.cpp.gcov.html#L72">DbcParser::ParseFileWithDiagnostics(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">951</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,261 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_parser.cpp</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_parser.cpp<span style="font-size: 80%;"> (source / <a href="dbc_parser.cpp.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">99.0 %</td>
|
||||
<td class="headerCovTableEntry">99</td>
|
||||
<td class="headerCovTableEntry">98</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">70.4 %</td>
|
||||
<td class="headerCovTableEntry">216</td>
|
||||
<td class="headerCovTableEntry">152</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : * @file dbc_parser.cpp</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : * @brief DBC file reading and diagnostic collection.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : #include "dbc_parser.h"</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : #include "dbc_statement_handler.h"</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : </span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : : #include "text_utils.h"</span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : #include <fstream></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : : #include <sstream></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : #include <stdexcept></span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : : #include <utility></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : : </span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : : namespace {</span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : : // Read through the closing unescaped quote, preserving comment whitespace.</span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> :<span class="tlaGNC"> 140 : void ReadCommentLines(std::ifstream &input, std::string &statement,</span></span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : : std::size_t &lineNumber) {</span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> :<span class="tlaGNC"> 140 : bool inQuote = false;</span></span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> :<span class="tlaGNC"> 140 : bool escaped = false;</span></span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : std::string part = statement;</span></span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : : for (;;) {</span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> [<span class="tlaGBC" title="Branch 0 was taken 3662 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 15 times"> + </span>]:<span class="tlaGNC"> 3677 : for (const char character: part) {</span></span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3657 times"> + </span>]:<span class="tlaGNC"> 3662 : if (escaped) {</span></span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> :<span class="tlaGNC"> 5 : escaped = false;</span></span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> [<span class="tlaGBC" title="Branch 0 was taken 1289 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2368 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1282 times"> + </span>]:<span class="tlaGNC"> 3657 : } else if (inQuote && character == '\\') {</span></span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> :<span class="tlaGNC"> 7 : escaped = true;</span></span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> [<span class="tlaGBC" title="Branch 0 was taken 268 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3382 times"> + </span>]:<span class="tlaGNC"> 3650 : } else if (character == '"') {</span></span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> [<span class="tlaGBC" title="Branch 0 was taken 132 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 136 times"> + </span>]:<span class="tlaGNC"> 268 : if (inQuote)</span></span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> :<span class="tlaGNC"> 132 : return;</span></span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> :<span class="tlaGNC"> 136 : inQuote = true;</span></span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> : : }</span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : : }</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> [<span class="tlaGBC" title="Branch 0 was taken 11 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 11 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 15 : if (!inQuote || !std::getline(input, part))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 11 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 8 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 7 times"> + </span>]
|
||||
<span id="L41"><span class="lineNum"> 41</span> :<span class="tlaGNC"> 8 : return;</span></span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> :<span class="tlaGNC"> 7 : ++lineNumber;</span></span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 5 times"> + </span> :<span class="tlaGNC"> 7 : if (!part.empty() && part.back() == '\r')</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 5 times"> + </span>]
|
||||
<span id="L44"><span class="lineNum"> 44</span> :<span class="tlaGNC"> 2 : part.pop_back();</span></span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 7 : statement += '\n';</span></span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 7 : statement += part;</span></span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : : // A physical newline cannot escape the next line's first character.</span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> :<span class="tlaGNC"> 7 : escaped = false;</span></span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> :<span class="tlaGNC"> 7 : }</span></span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> :<span class="tlaGNC"> 140 : }</span></span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> : : </span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> :<span class="tlaGNC"> 349 : DbcDiagnosticCode StatementErrorCode(const std::string &keyword) {</span></span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 345 times"> + </span>]:<span class="tlaGNC"> 349 : if (keyword == "SG_MUL_VAL_")</span></span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> :<span class="tlaGNC"> 4 : return DbcDiagnosticCode::UnsupportedStatement;</span></span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> [<span class="tlaGBC" title="Branch 0 was taken 25 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 320 times"> + </span>]:<span class="tlaGNC"> 345 : if (keyword == "VAL_")</span></span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> :<span class="tlaGNC"> 25 : return DbcDiagnosticCode::InvalidValueDescription;</span></span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> :<span class="tlaGNC"> 320 : return DbcDiagnosticCode::InvalidStatement;</span></span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> : : }</span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> : : }</span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> : : </span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> :<span class="tlaGNC"> 656 : DbcDatabase DbcParser::ParseFile(const std::string &filePath) const {</span></span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> [<span class="tlaGBC" title="Branch 0 was taken 656 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 656 : DbcParseResult result = ParseFileWithDiagnostics(filePath);</span></span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> [<span class="tlaGBC" title="Branch 0 was taken 545 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 117 times"> + </span>]:<span class="tlaGNC"> 662 : for (const DbcDiagnostic &diagnostic : result.diagnostics) {</span></span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> [<span class="tlaGBC" title="Branch 0 was taken 539 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6 times"> + </span>]:<span class="tlaGNC"> 545 : if (diagnostic.severity == DbcDiagnosticSeverity::Error) {</span></span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 536 times"> + </span>]:<span class="tlaGNC"> 539 : if (diagnostic.lineNumber == 0U)</span></span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 3 : throw std::runtime_error(diagnostic.message);</span></span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> [<span class="tlaGBC" title="Branch 0 was taken 536 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1072 : throw std::runtime_error(diagnostic.filePath + ":" +</span></span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> [<span class="tlaGBC" title="Branch 0 was taken 536 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 536 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 1608 : std::to_string(diagnostic.lineNumber) + ": " + diagnostic.message);</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 536 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 536 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 536 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span>]
|
||||
<span id="L69"><span class="lineNum"> 69</span> : : }</span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> : : }</span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> :<span class="tlaGNC"> 234 : return std::move(result.database);</span></span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> :<span class="tlaGNC"> 656 : }</span></span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> : : </span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> :<span class="tlaGNC"> 951 : DbcParseResult DbcParser::ParseFileWithDiagnostics(const std::string &filePath) const {</span></span>
|
||||
<span id="L75"><span class="lineNum"> 75</span> :<span class="tlaGNC"> 951 : DbcParseResult result;</span></span>
|
||||
<span id="L76"><span class="lineNum"> 76</span> [<span class="tlaGBC" title="Branch 0 was taken 951 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 951 : std::ifstream input(filePath.c_str());</span></span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 948 times"> + </span>]:<span class="tlaGNC"> 951 : if (!input.is_open()) {</span></span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> :<span class="tlaGNC"> 3 : result.diagnostics.push_back({DbcDiagnosticSeverity::Error,</span></span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> : : DbcDiagnosticCode::FileOpenError, filePath, 0U,</span>
|
||||
<span id="L80"><span class="lineNum"> 80</span> : : "Failed to open DBC file: " + filePath});</span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> :<span class="tlaGNC"> 3 : return result;</span></span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> : : }</span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> : : </span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> :<span class="tlaGNC"> 948 : DbcDatabase database;</span></span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> :<span class="tlaGNC"> 948 : DbcParseContext context{database, nullptr};</span></span>
|
||||
<span id="L86"><span class="lineNum"> 86</span> :<span class="tlaGNC"> 948 : context.enableJ1939 = options.enableJ1939;</span></span>
|
||||
<span id="L87"><span class="lineNum"> 87</span> [<span class="tlaGBC" title="Branch 0 was taken 948 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 948 : const DbcStatementDispatcher dispatcher;</span></span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> :<span class="tlaGNC"> 948 : bool inNamespace = false;</span></span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> :<span class="tlaGNC"> 948 : std::size_t lineNumber = 0U;</span></span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> :<span class="tlaGNC"> 948 : std::string line;</span></span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> [<span class="tlaGBC" title="Branch 0 was taken 3097 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 3097 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 3097 : while (std::getline(input, line)) {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2498 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 599 times"> + </span>]
|
||||
<span id="L92"><span class="lineNum"> 92</span> :<span class="tlaGNC"> 2498 : ++lineNumber;</span></span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> [<span class="tlaGBC" title="Branch 0 was taken 2162 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 336 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 19 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2143 times"> + </span> :<span class="tlaGNC"> 2498 : if (!line.empty() && line.back() == '\r')</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 19 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 2479 times"> + </span>]
|
||||
<span id="L94"><span class="lineNum"> 94</span> :<span class="tlaGNC"> 19 : line.pop_back();</span></span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> [<span class="tlaGBC" title="Branch 0 was taken 2498 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2498 : const std::string rawLine = line;</span></span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> :<span class="tlaGNC"> 2498 : const std::size_t statementLine = lineNumber;</span></span>
|
||||
<span id="L97"><span class="lineNum"> 97</span> [<span class="tlaGBC" title="Branch 0 was taken 2498 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2498 : line = dbc_detail::TrimText(line);</span></span>
|
||||
<span id="L98"><span class="lineNum"> 98</span> [<span class="tlaGBC" title="Branch 0 was taken 342 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2156 times"> + </span>]:<span class="tlaGNC"> 2498 : if (line.empty())</span></span>
|
||||
<span id="L99"><span class="lineNum"> 99</span> :<span class="tlaGNC"> 342 : continue;</span></span>
|
||||
<span id="L100"><span class="lineNum"> 100</span> : : </span>
|
||||
<span id="L101"><span class="lineNum"> 101</span> [<span class="tlaGBC" title="Branch 0 was taken 2156 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2156 : std::istringstream tokens(line);</span></span>
|
||||
<span id="L102"><span class="lineNum"> 102</span> :<span class="tlaGNC"> 2156 : std::string keyword;</span></span>
|
||||
<span id="L103"><span class="lineNum"> 103</span> :<span class="tlaGNC"> 2156 : std::string argument;</span></span>
|
||||
<span id="L104"><span class="lineNum"> 104</span> [<span class="tlaGBC" title="Branch 0 was taken 2156 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2156 : tokens >> keyword;</span></span>
|
||||
<span id="L105"><span class="lineNum"> 105</span> [<span class="tlaGBC" title="Branch 0 was taken 2156 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2156 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 2156 : const bool hasArgument = static_cast<bool>(tokens >> argument);</span></span>
|
||||
<span id="L106"><span class="lineNum"> 106</span> [<span class="tlaGBC" title="Branch 0 was taken 39 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 39 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 44 : if (inNamespace && !hasArgument && keyword != "BO_" && keyword != "SG_" &&</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 37 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 37 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 36 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 1 time"> + </span>]
|
||||
<span id="L107"><span class="lineNum"> 107</span> [<span class="tlaGBC" title="Branch 0 was taken 36 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 35 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1 time"> + </span> :<span class="tlaGNC"> 36 : keyword != "BS_" && keyword != "BS_:" &&</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 35 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 31 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 4 times"> + </span>]
|
||||
<span id="L108"><span class="lineNum"> 108</span> [<span class="tlaGBC" title="Branch 0 was taken 44 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2112 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 31 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 2200 : keyword != "BU_" && keyword != "BU_:")</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 30 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 6 was taken 30 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 29 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 10 was taken 29 times"> + </span><span class="tlaGBC" title="Branch 11 was taken 2127 times"> + </span>]
|
||||
<span id="L109"><span class="lineNum"> 109</span> :<span class="tlaGNC"> 29 : continue; // NS_ lists syntax symbols; BO_, SG_, BS_ and BU_ end the list.</span></span>
|
||||
<span id="L110"><span class="lineNum"> 110</span> [<span class="tlaGBC" title="Branch 0 was taken 2127 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2115 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 12 times"> + </span> :<span class="tlaGNC"> 2127 : inNamespace = keyword == "NS_" || keyword == "NS_:";</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2115 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 2112 times"> + </span>]
|
||||
<span id="L111"><span class="lineNum"> 111</span> : : </span>
|
||||
<span id="L112"><span class="lineNum"> 112</span> [<span class="tlaGBC" title="Branch 0 was taken 2127 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 140 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1987 times"> + </span>]:<span class="tlaGNC"> 2127 : if (keyword == "CM_") {</span></span>
|
||||
<span id="L113"><span class="lineNum"> 113</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : line = rawLine;</span></span>
|
||||
<span id="L114"><span class="lineNum"> 114</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : ReadCommentLines(input, line, lineNumber);</span></span>
|
||||
<span id="L115"><span class="lineNum"> 115</span> : : }</span>
|
||||
<span id="L116"><span class="lineNum"> 116</span> : : </span>
|
||||
<span id="L117"><span class="lineNum"> 117</span> : : try {</span>
|
||||
<span id="L118"><span class="lineNum"> 118</span> :<span class="tlaGNC"> 2127 : context.lineNumber = statementLine;</span></span>
|
||||
<span id="L119"><span class="lineNum"> 119</span> [<span class="tlaGBC" title="Branch 0 was taken 1778 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 349 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 37 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1741 times"> + </span>]:<span class="tlaGNC"> 2127 : if (!dispatcher.Dispatch(line, context)) {</span></span>
|
||||
<span id="L120"><span class="lineNum"> 120</span> :<span class="tlaGNC"> 37 : result.diagnostics.push_back({DbcDiagnosticSeverity::Warning,</span></span>
|
||||
<span id="L121"><span class="lineNum"> 121</span> : : DbcDiagnosticCode::UnsupportedStatement,</span>
|
||||
<span id="L122"><span class="lineNum"> 122</span> : : filePath, statementLine,</span>
|
||||
<span id="L123"><span class="lineNum"> 123</span> :<span class="tlaGNC"> 37 : "Unsupported statement '" + keyword +</span></span>
|
||||
<span id="L124"><span class="lineNum"> 124</span> : : "' is ignored; decoding or metadata may be incomplete."});</span>
|
||||
<span id="L125"><span class="lineNum"> 125</span> : : }</span>
|
||||
<span id="L126"><span class="lineNum"> 126</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 349 times"> + </span>]:<span class="tlaGNC"> 349 : } catch (const std::exception &error) {</span></span>
|
||||
<span id="L127"><span class="lineNum"> 127</span> :<span class="tlaGNC"> 349 : result.diagnostics.push_back({DbcDiagnosticSeverity::Error,</span></span>
|
||||
<span id="L128"><span class="lineNum"> 128</span> :<span class="tlaGNC"> 698 : StatementErrorCode(keyword), filePath,</span></span>
|
||||
<span id="L129"><span class="lineNum"> 129</span> :<span class="tlaUNC"> 0 : statementLine, error.what()});</span></span>
|
||||
<span id="L130"><span class="lineNum"> 130</span> :<span class="tlaGNC"> 349 : return result;</span></span>
|
||||
<span id="L131"><span class="lineNum"> 131</span> :<span class="tlaGNC"> 349 : }</span></span>
|
||||
<span id="L132"><span class="lineNum"> 132</span> [<span class="tlaGBC" title="Branch 0 was taken 1778 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 29 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 349 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1778 times"> + </span> :<span class="tlaGNC"> 3632 : }</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 29 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 349 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 1778 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 29 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 349 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 1778 times"> + </span><span class="tlaGBC" title="Branch 10 was taken 371 times"> + </span><span class="tlaGBC" title="Branch 11 was taken 349 times"> + </span>]
|
||||
<span id="L133"><span class="lineNum"> 133</span> : : </span>
|
||||
<span id="L134"><span class="lineNum"> 134</span> [<span class="tlaGBC" title="Branch 0 was taken 599 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 597 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2 times"> + </span> :<span class="tlaGNC"> 599 : if (input.bad() || !input.eof()) {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 597 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaUNC" title="Branch 6 was not taken"> - </span><span class="tlaGBC" title="Branch 7 was taken 597 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 2 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 597 times"> + </span>]
|
||||
<span id="L135"><span class="lineNum"> 135</span> :<span class="tlaGNC"> 2 : result.diagnostics.push_back({DbcDiagnosticSeverity::Error,</span></span>
|
||||
<span id="L136"><span class="lineNum"> 136</span> : : DbcDiagnosticCode::FileReadError, filePath, 0U,</span>
|
||||
<span id="L137"><span class="lineNum"> 137</span> : : "Failed to read DBC file: " + filePath});</span>
|
||||
<span id="L138"><span class="lineNum"> 138</span> :<span class="tlaGNC"> 2 : return result;</span></span>
|
||||
<span id="L139"><span class="lineNum"> 139</span> : : }</span>
|
||||
<span id="L140"><span class="lineNum"> 140</span> : : </span>
|
||||
<span id="L141"><span class="lineNum"> 141</span> : : try {</span>
|
||||
<span id="L142"><span class="lineNum"> 142</span> [<span class="tlaGBC" title="Branch 0 was taken 587 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 10 times"> + </span>]:<span class="tlaGNC"> 597 : context.ResolveComments(filePath);</span></span>
|
||||
<span id="L143"><span class="lineNum"> 143</span> [<span class="tlaGBC" title="Branch 0 was taken 576 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 11 times"> + </span>]:<span class="tlaGNC"> 587 : context.ResolveValueDescriptions(filePath);</span></span>
|
||||
<span id="L144"><span class="lineNum"> 144</span> [<span class="tlaGBC" title="Branch 0 was taken 549 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 27 times"> + </span>]:<span class="tlaGNC"> 576 : context.ValidateMultiplexing(filePath);</span></span>
|
||||
<span id="L145"><span class="lineNum"> 145</span> [<span class="tlaGBC" title="Branch 0 was taken 163 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 386 times"> + </span>]:<span class="tlaGNC"> 549 : context.ResolveAttributes(filePath, result.diagnostics);</span></span>
|
||||
<span id="L146"><span class="lineNum"> 146</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 434 times"> + </span>]:<span class="tlaGNC"> 434 : } catch (const DbcDiagnosticError &error) {</span></span>
|
||||
<span id="L147"><span class="lineNum"> 147</span> [<span class="tlaGBC" title="Branch 0 was taken 434 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 434 : result.diagnostics.push_back(error.diagnostic);</span></span>
|
||||
<span id="L148"><span class="lineNum"> 148</span> :<span class="tlaGNC"> 434 : return result;</span></span>
|
||||
<span id="L149"><span class="lineNum"> 149</span> [<span class="tlaGBC" title="Branch 0 was taken 434 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 434 : }</span></span>
|
||||
<span id="L150"><span class="lineNum"> 150</span> :<span class="tlaGNC"> 163 : result.database = std::move(database);</span></span>
|
||||
<span id="L151"><span class="lineNum"> 151</span> :<span class="tlaGNC"> 163 : return result;</span></span>
|
||||
<span id="L152"><span class="lineNum"> 152</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 1691 : }</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 37 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 37 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span><span class="tlaGBC" title="Branch 10 was taken 37 times"> + </span><span class="tlaUNC" title="Branch 11 was not taken"> - </span><span class="tlaGBC" title="Branch 12 was taken 37 times"> + </span><span class="tlaUNC" title="Branch 13 was not taken"> - </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 14 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 15 was not taken"> - </span><span class="tlaGBC" title="Branch 16 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 17 was not taken"> - </span><span class="tlaGBC" title="Branch 18 was taken 2 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 19 was not taken"> - </span><span class="tlaUNC" title="Branch 20 was not taken"> - </span><span class="tlaUNC" title="Branch 21 was not taken"> - </span><span class="tlaUNC" title="Branch 22 was not taken"> - </span><span class="tlaUNC" title="Branch 23 was not taken"> - </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 24 was taken 349 times"> + </span><span class="tlaUNC" title="Branch 25 was not taken"> - </span><span class="tlaGBC" title="Branch 26 was taken 349 times"> + </span><span class="tlaUNC" title="Branch 27 was not taken"> - </span><span class="tlaGBC" title="Branch 28 was taken 349 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 29 was not taken"> - </span><span class="tlaGBC" title="Branch 30 was taken 349 times"> + </span><span class="tlaUNC" title="Branch 31 was not taken"> - </span><span class="tlaUNC" title="Branch 32 was not taken"> - </span><span class="tlaUNC" title="Branch 33 was not taken"> - </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 34 was not taken"> - </span><span class="tlaUNC" title="Branch 35 was not taken"> - </span>]
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,84 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_parser.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_parser.h<span style="font-size: 80%;"> (<a href="dbc_parser.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="dbc_parser.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_parser.h.gcov.html#L42">DbcParser::DbcParser(DbcParserOptions)</a></td>
|
||||
|
||||
<td class="coverFnHi">930</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,84 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_parser.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_parser.h<span style="font-size: 80%;"> (<a href="dbc_parser.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="dbc_parser.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_parser.h.gcov.html#L42">DbcParser::DbcParser(DbcParserOptions)</a></td>
|
||||
|
||||
<td class="coverFnHi">930</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,145 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_parser.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_parser.h<span style="font-size: 80%;"> (source / <a href="dbc_parser.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : * @file dbc_parser.h</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : * @brief DBC file parser and interpretation options.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : #ifndef DBC_PARSER_H</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : #define DBC_PARSER_H</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : </span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : #include <string></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : </span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : #include "dbc_diagnostic.h"</span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : </span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : /** Explicit interpretation applied to extended frames in this file. */</span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : struct DbcParserOptions {</span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : bool enableJ1939 = false; /**< Derive J1939 PGNs from extended CAN IDs. */</span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : };</span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : </span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : /**</span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : * @brief Minimal DBC parser.</span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : *</span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : * Supports:</span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : * - BO_</span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> : * - SG_</span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : * - CM_ BO_</span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> : * - CM_ SG_</span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : * - basic M / mN multiplexing</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : * - VAL_ signal value descriptions</span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : * - BA_DEF_, BA_DEF_DEF_, BA_ typed attributes, frame format and cycle time</span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : *</span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> : * Frame/signal comments support multiline quoted text and deferred references.</span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : *</span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> : * Reports unsupported statements as warnings, except SG_MUL_VAL_ which is</span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : * an error. VERSION, NS_, BS_, BU_ and NS_ symbol declarations stay quiet.</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : */</span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> : class DbcParser {</span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : public:</span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> : /** @brief Create a parser with explicit extended-frame interpretation options. */</span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> <span class="tlaGNC"> 930 : explicit DbcParser(DbcParserOptions options = {}) : options(options) {}</span></span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> : </span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : /**</span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : * @brief Parse DBC file.</span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> : * @param filePath Path to input file.</span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> : * @return Parsed database.</span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> : * @throws std::runtime_error on file or parse errors.</span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> : * Line parse errors include the file path and one-based line number.</span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> : * Duplicate normalized CAN IDs of the same frame type and duplicate signal</span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> : * names within a frame are rejected at the repeated definition's line.</span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> : */</span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> : DbcDatabase ParseFile(const std::string &filePath) const;</span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> : </span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> : /**</span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> : * @brief Parse with warnings and a structured first error instead of throwing.</span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> : * @return Valid database with diagnostics; empty database on error.</span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> : * File errors use line zero; statement errors use physical one-based lines.</span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> : * Warnings indicate ignored syntax and possible incomplete decoding.</span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> : */</span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> : DbcParseResult ParseFileWithDiagnostics(const std::string &filePath) const;</span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> : </span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> : private:</span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> : DbcParserOptions options;</span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> : };</span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> : </span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> : #endif /* DBC_PARSER_H */</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,333 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_statement_handler.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_statement_handler.cpp<span style="font-size: 80%;"> (<a href="dbc_statement_handler.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">99.5 %</td>
|
||||
<td class="headerCovTableEntry">370</td>
|
||||
<td class="headerCovTableEntry">368</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">31</td>
|
||||
<td class="headerCovTableEntry">31</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">68.4 %</td>
|
||||
<td class="headerCovTableEntry">820</td>
|
||||
<td class="headerCovTableEntry">561</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="dbc_statement_handler.cpp.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L449">DbcUnsupportedMultiplexingHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">4</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L497">(anonymous namespace)::SignalsOverlap(SignalInfo const&, SignalInfo const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">57</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L464">(anonymous namespace)::AreMutuallyExclusive(SignalInfo const&, SignalInfo const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">58</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L115">(anonymous namespace)::FindUniqueSignal(FrameInfo&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">62</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L386">DbcHeaderHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">62</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L101">(anonymous namespace)::FindUniqueFrame(DbcDatabase&, unsigned int, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">67</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L400">DbcValueDescriptionHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">94</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L91">(anonymous namespace)::UnescapeDescription(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">96</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L71">(anonymous namespace)::ParseValueKey(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">104</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L454">(anonymous namespace)::SignalBits(SignalInfo const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">114</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L304">DbcCommentHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">149</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L470">(anonymous namespace)::ValidateBranch(SignalInfo const&, SignalInfo const*)</a></td>
|
||||
|
||||
<td class="coverFnHi">193</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L480">(anonymous namespace)::FindSelector(FrameInfo const&, std::vector<unsigned long, std::allocator<unsigned long> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">280</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L141">(anonymous namespace)::SplitReceivers(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">317</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L266">(anonymous namespace)::FindSignalByName(FrameInfo&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">364</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L53">(anonymous namespace)::ParseMultiplexingMarker(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">496</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L204">DbcSignalHandler::ParseSignalLine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">521</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L290">DbcSignalHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">526</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L510">DbcParseContext::ValidateMultiplexing(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">576</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L433">DbcParseContext::ResolveValueDescriptions(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">592</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L350">DbcParseContext::ResolveComments(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">597</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L276">DbcFrameHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">649</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L166">DbcFrameHandler::ParseFrameLine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">649</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L255">(anonymous namespace)::FindFrameById(DbcDatabase&, unsigned int, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">698</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L23">(anonymous namespace)::ParseCanId(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">784</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L155">(anonymous namespace)::NormalizeCanId(unsigned int, unsigned int&, bool&)</a></td>
|
||||
|
||||
<td class="coverFnHi">803</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L129">(anonymous namespace)::NextSignalBit(unsigned long, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">884</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L368">DbcStatementDispatcher::DbcStatementDispatcher()</a></td>
|
||||
|
||||
<td class="coverFnHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L32">(anonymous namespace)::ParsePhysicalValue(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)</a></td>
|
||||
|
||||
<td class="coverFnHi">1666</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L388">DbcStatementDispatcher::Dispatch(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">2132</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L12">(anonymous namespace)::ParseDecimal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, char const*)</a></td>
|
||||
|
||||
<td class="coverFnHi">2466</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,333 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_statement_handler.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_statement_handler.cpp<span style="font-size: 80%;"> (<a href="dbc_statement_handler.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">99.5 %</td>
|
||||
<td class="headerCovTableEntry">370</td>
|
||||
<td class="headerCovTableEntry">368</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">31</td>
|
||||
<td class="headerCovTableEntry">31</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">68.4 %</td>
|
||||
<td class="headerCovTableEntry">820</td>
|
||||
<td class="headerCovTableEntry">561</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="dbc_statement_handler.cpp.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L464">(anonymous namespace)::AreMutuallyExclusive(SignalInfo const&, SignalInfo const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">58</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L255">(anonymous namespace)::FindFrameById(DbcDatabase&, unsigned int, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">698</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L480">(anonymous namespace)::FindSelector(FrameInfo const&, std::vector<unsigned long, std::allocator<unsigned long> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">280</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L266">(anonymous namespace)::FindSignalByName(FrameInfo&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">364</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L101">(anonymous namespace)::FindUniqueFrame(DbcDatabase&, unsigned int, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">67</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L115">(anonymous namespace)::FindUniqueSignal(FrameInfo&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">62</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L129">(anonymous namespace)::NextSignalBit(unsigned long, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">884</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L155">(anonymous namespace)::NormalizeCanId(unsigned int, unsigned int&, bool&)</a></td>
|
||||
|
||||
<td class="coverFnHi">803</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L23">(anonymous namespace)::ParseCanId(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">784</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L12">(anonymous namespace)::ParseDecimal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, char const*)</a></td>
|
||||
|
||||
<td class="coverFnHi">2466</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L53">(anonymous namespace)::ParseMultiplexingMarker(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">496</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L32">(anonymous namespace)::ParsePhysicalValue(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)</a></td>
|
||||
|
||||
<td class="coverFnHi">1666</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L71">(anonymous namespace)::ParseValueKey(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">104</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L454">(anonymous namespace)::SignalBits(SignalInfo const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">114</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L497">(anonymous namespace)::SignalsOverlap(SignalInfo const&, SignalInfo const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">57</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L141">(anonymous namespace)::SplitReceivers(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">317</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L91">(anonymous namespace)::UnescapeDescription(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">96</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L470">(anonymous namespace)::ValidateBranch(SignalInfo const&, SignalInfo const*)</a></td>
|
||||
|
||||
<td class="coverFnHi">193</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L304">DbcCommentHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">149</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L276">DbcFrameHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">649</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L166">DbcFrameHandler::ParseFrameLine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">649</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L386">DbcHeaderHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">62</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L350">DbcParseContext::ResolveComments(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">597</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L433">DbcParseContext::ResolveValueDescriptions(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">592</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L510">DbcParseContext::ValidateMultiplexing(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">576</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L290">DbcSignalHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">526</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L204">DbcSignalHandler::ParseSignalLine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">521</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L368">DbcStatementDispatcher::DbcStatementDispatcher()</a></td>
|
||||
|
||||
<td class="coverFnHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L388">DbcStatementDispatcher::Dispatch(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">2132</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L449">DbcUnsupportedMultiplexingHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">4</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.cpp.gcov.html#L400">DbcValueDescriptionHandler::Handle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DbcParseContext&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">94</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,676 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_statement_handler.cpp</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_statement_handler.cpp<span style="font-size: 80%;"> (source / <a href="dbc_statement_handler.cpp.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">99.5 %</td>
|
||||
<td class="headerCovTableEntry">370</td>
|
||||
<td class="headerCovTableEntry">368</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">31</td>
|
||||
<td class="headerCovTableEntry">31</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">68.4 %</td>
|
||||
<td class="headerCovTableEntry">820</td>
|
||||
<td class="headerCovTableEntry">561</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : // SPDX-License-Identifier: MIT</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : #include "dbc_statement_handler.h"</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : #include "j1939.h"</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : #include "text_utils.h"</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : #include "signal_layout.h"</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : #include <charconv></span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : #include <cmath></span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : #include <limits></span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : #include <regex></span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : #include <sstream></span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : #include <stdexcept></span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : </span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : namespace {</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> :<span class="tlaGNC"> 2466 : std::uint32_t ParseDecimal(const std::string &text,</span></span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : : std::uint32_t maximum,</span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : const char *field) {</span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> :<span class="tlaGNC"> 2466 : std::uint32_t value = 0U;</span></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> [<span class="tlaGBC" title="Branch 0 was taken 2466 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2466 : const std::from_chars_result parsed = std::from_chars(text.data(), text.data() + text.size(), value);</span></span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> [<span class="tlaGBC" title="Branch 0 was taken 2429 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 37 times"> + </span>]:<span class="tlaGNC"> 4932 : if (text.empty() || parsed.ec != std::errc() ||</span></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> [<span class="tlaGBC" title="Branch 0 was taken 2466 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2410 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 19 times"> + </span> :<span class="tlaGNC"> 4932 : parsed.ptr != text.data() + text.size() || value > maximum)</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 2408 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 58 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 2408 times"> + </span>]
|
||||
<span id="L21"><span class="lineNum"> 21</span> [<span class="tlaGBC" title="Branch 0 was taken 58 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 58 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 174 : throw std::runtime_error(std::string("Invalid ") + field + ": " + text);</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 58 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 58 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 58 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span>]
|
||||
<span id="L22"><span class="lineNum"> 22</span> :<span class="tlaGNC"> 2408 : return value;</span></span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : : }</span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : : </span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> :<span class="tlaGNC"> 784 : std::uint32_t ParseCanId(const std::string &text) {</span></span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> :<span class="tlaGNC"> 784 : const std::uint32_t rawId = ParseDecimal(</span></span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : : text, std::numeric_limits<std::uint32_t>::max(), "CAN ID");</span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : : // Only bit 31 may accompany the actual 29-bit identifier.</span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> [<span class="tlaGBC" title="Branch 0 was taken 20 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 730 times"> + </span>]:<span class="tlaGNC"> 750 : if ((rawId & 0x60000000U) != 0U)</span></span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> [<span class="tlaGBC" title="Branch 0 was taken 20 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 20 : throw std::runtime_error("CAN ID exceeds the 29-bit identifier range.");</span></span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> :<span class="tlaGNC"> 730 : return rawId;</span></span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : : }</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : : </span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> :<span class="tlaGNC"> 1666 : double ParsePhysicalValue(const std::string &text, const char *field) {</span></span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : : static const std::regex number(</span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1664 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 1666 : R"(^[+-]?(?:[0-9]+(?:\.[0-9]*)?|\.[0-9]+)(?:[eE][+-]?[0-9]+)?$)");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaUNC" title="Branch 6 was not taken"> - </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span>]
|
||||
<span id="L37"><span class="lineNum"> 37</span> [<span class="tlaGBC" title="Branch 0 was taken 1666 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 112 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1554 times"> + </span>]:<span class="tlaGNC"> 1666 : if (!std::regex_match(text, number))</span></span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> [<span class="tlaGBC" title="Branch 0 was taken 112 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 112 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 336 : throw std::runtime_error(std::string("Invalid ") + field + ": " + text);</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 112 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 112 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 112 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span>]
|
||||
<span id="L39"><span class="lineNum"> 39</span> : : // Floating-point from_chars is locale-independent and does not accept</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : : // a leading '+', which the DBC numeric grammar permits.</span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> :<span class="tlaGNC"> 1554 : const char *begin = text.data();</span></span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> :<span class="tlaGNC"> 1554 : const char *end = begin + text.size();</span></span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> [<span class="tlaGBC" title="Branch 0 was taken 18 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1536 times"> + </span>]:<span class="tlaGNC"> 1554 : if (*begin == '+')</span></span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> :<span class="tlaGNC"> 18 : ++begin;</span></span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> :<span class="tlaGNC"> 1554 : double value = 0.0;</span></span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : : const std::from_chars_result parsed =</span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> :<span class="tlaGNC"> 1554 : std::from_chars(begin, end, value, std::chars_format::general);</span></span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> : : // Keep the existing rejection of conversion underflow into subnormal values.</span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> [<span class="tlaGBC" title="Branch 0 was taken 1530 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 24 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 1530 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 3084 : if (parsed.ec != std::errc() || parsed.ptr != end || !std::isfinite(value) ||</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 1530 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 16 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 1514 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 40 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 1514 times"> + </span>]
|
||||
<span id="L50"><span class="lineNum"> 50</span> :<span class="tlaGNC"> 1530 : std::fpclassify(value) == FP_SUBNORMAL)</span></span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> [<span class="tlaGBC" title="Branch 0 was taken 40 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 40 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 120 : throw std::runtime_error(std::string("Invalid ") + field + ": " + text);</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 40 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 40 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 40 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span>]
|
||||
<span id="L52"><span class="lineNum"> 52</span> :<span class="tlaGNC"> 1514 : return value;</span></span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> : : }</span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> : : </span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> :<span class="tlaGNC"> 496 : Multiplexing ParseMultiplexingMarker(const std::string &marker) {</span></span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> :<span class="tlaGNC"> 496 : Multiplexing result;</span></span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> [<span class="tlaGBC" title="Branch 0 was taken 496 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 34 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 462 times"> + </span>]:<span class="tlaGNC"> 496 : if (marker == "M")</span></span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> :<span class="tlaGNC"> 34 : result.role = MultiplexRole::Selector;</span></span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> [<span class="tlaGBC" title="Branch 0 was taken 38 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 424 times"> + </span>]:<span class="tlaGNC"> 462 : else if (!marker.empty()) {</span></span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 1 was taken 37 times"> + </span>]:<span class="tlaGNC"> 38 : if (marker[0] != 'm')</span></span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1 : throw std::runtime_error("Unsupported multiplexing marker.");</span></span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> [<span class="tlaGBC" title="Branch 0 was taken 37 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 37 : const std::string value = marker.substr(1U);</span></span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> : : const std::from_chars_result parsed =</span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> [<span class="tlaGBC" title="Branch 0 was taken 37 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 37 : std::from_chars(value.data(), value.data() + value.size(), result.value);</span></span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> [<span class="tlaGBC" title="Branch 0 was taken 36 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 2 was taken 33 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 3 times"> + </span> :<span class="tlaGNC"> 37 : if (value.empty() || parsed.ec != std::errc() || parsed.ptr != value.data() + value.size())</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 30 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 30 times"> + </span>]
|
||||
<span id="L66"><span class="lineNum"> 66</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 7 : throw std::runtime_error("Invalid or unsupported multiplexing marker.");</span></span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> :<span class="tlaGNC"> 30 : result.role = MultiplexRole::Branch;</span></span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> :<span class="tlaGNC"> 37 : }</span></span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> : : </span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> :<span class="tlaGNC"> 488 : return result;</span></span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> : : }</span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> : : </span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> :<span class="tlaGNC"> 104 : RawSignalValue ParseValueKey(const std::string &number) {</span></span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> :<span class="tlaGNC"> 104 : RawSignalValue key;</span></span>
|
||||
<span id="L75"><span class="lineNum"> 75</span> [<span class="tlaGBC" title="Branch 0 was taken 104 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 16 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 88 times"> + </span> :<span class="tlaGNC"> 104 : if (!number.empty() && number[0] == '-') {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 16 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 88 times"> + </span>]
|
||||
<span id="L76"><span class="lineNum"> 76</span> :<span class="tlaGNC"> 16 : std::int64_t value = 0;</span></span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> : : const std::from_chars_result parsed =</span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> [<span class="tlaGBC" title="Branch 0 was taken 16 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 16 : std::from_chars(number.data(), number.data() + number.size(), value);</span></span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> [<span class="tlaGBC" title="Branch 0 was taken 14 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 2 was not taken"> - </span><span class="tlaGBC" title="Branch 3 was taken 14 times"> + </span> :<span class="tlaGNC"> 16 : if (parsed.ec != std::errc() || parsed.ptr != number.data() + number.size())</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 14 times"> + </span>]
|
||||
<span id="L80"><span class="lineNum"> 80</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Invalid VAL_ integer: " + number);</span></span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> :<span class="tlaGNC"> 14 : key = NormalizeValueKey(RawSignalValue(value));</span></span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> : : } else {</span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> :<span class="tlaGNC"> 88 : std::uint64_t value = 0;</span></span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> : : const std::from_chars_result parsed =</span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> [<span class="tlaGBC" title="Branch 0 was taken 88 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 88 : std::from_chars(number.data(), number.data() + number.size(), value);</span></span>
|
||||
<span id="L86"><span class="lineNum"> 86</span> [<span class="tlaGBC" title="Branch 0 was taken 88 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 86 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2 times"> + </span> :<span class="tlaGNC"> 88 : if (number.empty() || parsed.ec != std::errc() || parsed.ptr != number.data() + number.size())</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 82 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 82 times"> + </span>]
|
||||
<span id="L87"><span class="lineNum"> 87</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 6 : throw std::runtime_error("Invalid VAL_ integer: " + number);</span></span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> :<span class="tlaGNC"> 82 : key = value;</span></span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> : : }</span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> :<span class="tlaGNC"> 96 : return key;</span></span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> : : }</span>
|
||||
<span id="L92"><span class="lineNum"> 92</span> : : </span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> :<span class="tlaGNC"> 96 : std::string UnescapeDescription(const std::string &quoted) {</span></span>
|
||||
<span id="L94"><span class="lineNum"> 94</span> :<span class="tlaGNC"> 96 : std::string description;</span></span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> [<span class="tlaGBC" title="Branch 0 was taken 628 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 96 times"> + </span>]:<span class="tlaGNC"> 724 : for (std::size_t i = 0; i < quoted.size(); ++i) {</span></span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 621 times"> + </span>]:<span class="tlaGNC"> 628 : if (quoted[i] == '\\')</span></span>
|
||||
<span id="L97"><span class="lineNum"> 97</span> :<span class="tlaGNC"> 7 : ++i;</span></span>
|
||||
<span id="L98"><span class="lineNum"> 98</span> [<span class="tlaGBC" title="Branch 0 was taken 628 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 628 : description += quoted[i];</span></span>
|
||||
<span id="L99"><span class="lineNum"> 99</span> : : }</span>
|
||||
<span id="L100"><span class="lineNum"> 100</span> :<span class="tlaGNC"> 96 : return description;</span></span>
|
||||
<span id="L101"><span class="lineNum"> 101</span> :<span class="tlaUNC"> 0 : }</span></span>
|
||||
<span id="L102"><span class="lineNum"> 102</span> : : </span>
|
||||
<span id="L103"><span class="lineNum"> 103</span> :<span class="tlaGNC"> 67 : FrameInfo *FindUniqueFrame(DbcDatabase &database, std::uint32_t canId, bool isExtended) {</span></span>
|
||||
<span id="L104"><span class="lineNum"> 104</span> :<span class="tlaGNC"> 67 : FrameInfo *frame = nullptr;</span></span>
|
||||
<span id="L105"><span class="lineNum"> 105</span> [<span class="tlaGBC" title="Branch 0 was taken 113 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 65 times"> + </span>]:<span class="tlaGNC"> 178 : for (FrameInfo &candidate : database.frames) {</span></span>
|
||||
<span id="L106"><span class="lineNum"> 106</span> [<span class="tlaGBC" title="Branch 0 was taken 84 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 29 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 66 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 18 times"> + </span>]:<span class="tlaGNC"> 113 : if (candidate.canId == canId && candidate.isExtended == isExtended) {</span></span>
|
||||
<span id="L107"><span class="lineNum"> 107</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 64 times"> + </span>]:<span class="tlaGNC"> 66 : if (frame)</span></span>
|
||||
<span id="L108"><span class="lineNum"> 108</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Ambiguous VAL_ frame reference.");</span></span>
|
||||
<span id="L109"><span class="lineNum"> 109</span> :<span class="tlaGNC"> 64 : frame = &candidate;</span></span>
|
||||
<span id="L110"><span class="lineNum"> 110</span> : : }</span>
|
||||
<span id="L111"><span class="lineNum"> 111</span> : : }</span>
|
||||
<span id="L112"><span class="lineNum"> 112</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 62 times"> + </span>]:<span class="tlaGNC"> 65 : if (!frame)</span></span>
|
||||
<span id="L113"><span class="lineNum"> 113</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 3 : throw std::runtime_error("Unresolved VAL_ frame reference.");</span></span>
|
||||
<span id="L114"><span class="lineNum"> 114</span> :<span class="tlaGNC"> 62 : return frame;</span></span>
|
||||
<span id="L115"><span class="lineNum"> 115</span> : : }</span>
|
||||
<span id="L116"><span class="lineNum"> 116</span> : : </span>
|
||||
<span id="L117"><span class="lineNum"> 117</span> :<span class="tlaGNC"> 62 : SignalInfo *FindUniqueSignal(FrameInfo &frame, const std::string &signalName) {</span></span>
|
||||
<span id="L118"><span class="lineNum"> 118</span> :<span class="tlaGNC"> 62 : SignalInfo *signal = nullptr;</span></span>
|
||||
<span id="L119"><span class="lineNum"> 119</span> [<span class="tlaGBC" title="Branch 0 was taken 89 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 60 times"> + </span>]:<span class="tlaGNC"> 149 : for (SignalInfo &candidate : frame.signals) {</span></span>
|
||||
<span id="L120"><span class="lineNum"> 120</span> [<span class="tlaGBC" title="Branch 0 was taken 59 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 30 times"> + </span>]:<span class="tlaGNC"> 89 : if (candidate.name == signalName) {</span></span>
|
||||
<span id="L121"><span class="lineNum"> 121</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 57 times"> + </span>]:<span class="tlaGNC"> 59 : if (signal)</span></span>
|
||||
<span id="L122"><span class="lineNum"> 122</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Ambiguous VAL_ signal reference: " + signalName);</span></span>
|
||||
<span id="L123"><span class="lineNum"> 123</span> :<span class="tlaGNC"> 57 : signal = &candidate;</span></span>
|
||||
<span id="L124"><span class="lineNum"> 124</span> : : }</span>
|
||||
<span id="L125"><span class="lineNum"> 125</span> : : }</span>
|
||||
<span id="L126"><span class="lineNum"> 126</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 55 times"> + </span>]:<span class="tlaGNC"> 60 : if (!signal)</span></span>
|
||||
<span id="L127"><span class="lineNum"> 127</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 5 : throw std::runtime_error("Unresolved VAL_ signal reference: " + signalName);</span></span>
|
||||
<span id="L128"><span class="lineNum"> 128</span> :<span class="tlaGNC"> 55 : return signal;</span></span>
|
||||
<span id="L129"><span class="lineNum"> 129</span> : : }</span>
|
||||
<span id="L130"><span class="lineNum"> 130</span> : : </span>
|
||||
<span id="L131"><span class="lineNum"> 131</span> :<span class="tlaGNC"> 884 : std::uint64_t NextSignalBit(std::uint64_t bit, bool isLittleEndian) {</span></span>
|
||||
<span id="L132"><span class="lineNum"> 132</span> [<span class="tlaGBC" title="Branch 0 was taken 724 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 160 times"> + </span>]:<span class="tlaGNC"> 884 : if (isLittleEndian)</span></span>
|
||||
<span id="L133"><span class="lineNum"> 133</span> :<span class="tlaGNC"> 724 : return bit + 1U;</span></span>
|
||||
<span id="L134"><span class="lineNum"> 134</span> : : // From bit 0, Motorola continues at bit 7 of the next byte (0 -> 15).</span>
|
||||
<span id="L135"><span class="lineNum"> 135</span> [<span class="tlaGBC" title="Branch 0 was taken 20 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 140 times"> + </span>]:<span class="tlaGNC"> 160 : return bit % 8U == 0U ? bit + 15U : bit - 1U;</span></span>
|
||||
<span id="L136"><span class="lineNum"> 136</span> : : }</span>
|
||||
<span id="L137"><span class="lineNum"> 137</span> : : </span>
|
||||
<span id="L138"><span class="lineNum"> 138</span> : : FrameInfo *FindFrameById(DbcDatabase &, std::uint32_t, bool);</span>
|
||||
<span id="L139"><span class="lineNum"> 139</span> : : SignalInfo *FindSignalByName(FrameInfo &, const std::string &);</span>
|
||||
<span id="L140"><span class="lineNum"> 140</span> : : } // namespace</span>
|
||||
<span id="L141"><span class="lineNum"> 141</span> : : </span>
|
||||
<span id="L142"><span class="lineNum"> 142</span> : : namespace {</span>
|
||||
<span id="L143"><span class="lineNum"> 143</span> :<span class="tlaGNC"> 317 : std::vector<std::string> SplitReceivers(const std::string &text) {</span></span>
|
||||
<span id="L144"><span class="lineNum"> 144</span> :<span class="tlaGNC"> 317 : std::vector<std::string> receivers;</span></span>
|
||||
<span id="L145"><span class="lineNum"> 145</span> :<span class="tlaGNC"> 317 : std::string token;</span></span>
|
||||
<span id="L146"><span class="lineNum"> 146</span> [<span class="tlaGBC" title="Branch 0 was taken 317 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 317 : std::istringstream stream(text);</span></span>
|
||||
<span id="L147"><span class="lineNum"> 147</span> : : </span>
|
||||
<span id="L148"><span class="lineNum"> 148</span> [<span class="tlaGBC" title="Branch 0 was taken 639 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 639 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 956 : while (std::getline(stream, token, ',')) {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 322 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 317 times"> + </span>]
|
||||
<span id="L149"><span class="lineNum"> 149</span> [<span class="tlaGBC" title="Branch 0 was taken 322 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 322 : token = dbc_detail::TrimText(token);</span></span>
|
||||
<span id="L150"><span class="lineNum"> 150</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 322 times"> + </span>]:<span class="tlaGNC"> 322 : if (!token.empty())</span></span>
|
||||
<span id="L151"><span class="lineNum"> 151</span> [<span class="tlaGBC" title="Branch 0 was taken 322 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 322 : receivers.push_back(token);</span></span>
|
||||
<span id="L152"><span class="lineNum"> 152</span> : : }</span>
|
||||
<span id="L153"><span class="lineNum"> 153</span> : : </span>
|
||||
<span id="L154"><span class="lineNum"> 154</span> :<span class="tlaGNC"> 317 : return receivers;</span></span>
|
||||
<span id="L155"><span class="lineNum"> 155</span> :<span class="tlaGNC"> 317 : }</span></span>
|
||||
<span id="L156"><span class="lineNum"> 156</span> : : </span>
|
||||
<span id="L157"><span class="lineNum"> 157</span> :<span class="tlaGNC"> 803 : void NormalizeCanId(std::uint32_t rawCanId, std::uint32_t &normalizedCanId, bool &isExtended) {</span></span>
|
||||
<span id="L158"><span class="lineNum"> 158</span> : : /*</span>
|
||||
<span id="L159"><span class="lineNum"> 159</span> : : * DBC commonly stores extended identifiers with bit 31 set.</span>
|
||||
<span id="L160"><span class="lineNum"> 160</span> : : * Example:</span>
|
||||
<span id="L161"><span class="lineNum"> 161</span> : : * raw id = 0x80000000 | actual_29_bit_id</span>
|
||||
<span id="L162"><span class="lineNum"> 162</span> : : */</span>
|
||||
<span id="L163"><span class="lineNum"> 163</span> [<span class="tlaGBC" title="Branch 0 was taken 724 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 79 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 23 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 701 times"> + </span>]:<span class="tlaGNC"> 803 : isExtended = (rawCanId & 0x80000000U) != 0U || rawCanId > 0x7FFU;</span></span>
|
||||
<span id="L164"><span class="lineNum"> 164</span> :<span class="tlaGNC"> 803 : normalizedCanId = rawCanId & 0x1FFFFFFFU;</span></span>
|
||||
<span id="L165"><span class="lineNum"> 165</span> :<span class="tlaGNC"> 803 : }</span></span>
|
||||
<span id="L166"><span class="lineNum"> 166</span> : : } // namespace</span>
|
||||
<span id="L167"><span class="lineNum"> 167</span> : : </span>
|
||||
<span id="L168"><span class="lineNum"> 168</span> :<span class="tlaGNC"> 649 : FrameInfo DbcFrameHandler::ParseFrameLine(const std::string &line) {</span></span>
|
||||
<span id="L169"><span class="lineNum"> 169</span> : : /*</span>
|
||||
<span id="L170"><span class="lineNum"> 170</span> : : * Example:</span>
|
||||
<span id="L171"><span class="lineNum"> 171</span> : : * BO_ 256 EngineData: 8 EEC1</span>
|
||||
<span id="L172"><span class="lineNum"> 172</span> : : */</span>
|
||||
<span id="L173"><span class="lineNum"> 173</span> : : </span>
|
||||
<span id="L174"><span class="lineNum"> 174</span> [<span class="tlaGBC" title="Branch 0 was taken 649 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 649 : std::istringstream stream(line);</span></span>
|
||||
<span id="L175"><span class="lineNum"> 175</span> :<span class="tlaGNC"> 649 : std::string keyword;</span></span>
|
||||
<span id="L176"><span class="lineNum"> 176</span> :<span class="tlaGNC"> 649 : std::string idText;</span></span>
|
||||
<span id="L177"><span class="lineNum"> 177</span> [<span class="tlaGBC" title="Branch 0 was taken 649 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 649 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 649 : if (!(stream >> keyword >> idText) || keyword != "BO_")</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 649 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 646 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 646 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span><span class="tlaUNC" title="Branch 10 was not taken"> - </span><span class="tlaGBC" title="Branch 11 was taken 646 times"> + </span><span class="tlaGBC" title="Branch 12 was taken 3 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 13 was taken 646 times"> + </span>]
|
||||
<span id="L178"><span class="lineNum"> 178</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 3 : throw std::runtime_error("Missing CAN ID in frame definition.");</span></span>
|
||||
<span id="L179"><span class="lineNum"> 179</span> : : </span>
|
||||
<span id="L180"><span class="lineNum"> 180</span> [<span class="tlaGBC" title="Branch 0 was taken 628 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 18 times"> + </span>]:<span class="tlaGNC"> 646 : const std::uint32_t rawCanId = ParseCanId(idText);</span></span>
|
||||
<span id="L181"><span class="lineNum"> 181</span> : : </span>
|
||||
<span id="L182"><span class="lineNum"> 182</span> :<span class="tlaGNC"> 628 : std::string nameText;</span></span>
|
||||
<span id="L183"><span class="lineNum"> 183</span> [<span class="tlaGBC" title="Branch 0 was taken 628 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 628 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 628 : if (!std::getline(stream, nameText, ':') || stream.eof())</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 627 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 6 was taken 627 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 1 time"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 626 times"> + </span><span class="tlaGBC" title="Branch 10 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 11 was taken 626 times"> + </span>]
|
||||
<span id="L184"><span class="lineNum"> 184</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Missing ':' in frame definition.");</span></span>
|
||||
<span id="L185"><span class="lineNum"> 185</span> [<span class="tlaGBC" title="Branch 0 was taken 626 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 626 : std::istringstream nameStream(nameText);</span></span>
|
||||
<span id="L186"><span class="lineNum"> 186</span> :<span class="tlaGNC"> 626 : FrameInfo frame;</span></span>
|
||||
<span id="L187"><span class="lineNum"> 187</span> :<span class="tlaGNC"> 626 : std::string extra;</span></span>
|
||||
<span id="L188"><span class="lineNum"> 188</span> [<span class="tlaGBC" title="Branch 0 was taken 626 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 626 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 626 : if (!(nameStream >> frame.name) || (nameStream >> extra))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 625 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 6 was taken 625 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 625 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span><span class="tlaGBC" title="Branch 10 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 11 was taken 624 times"> + </span><span class="tlaGBC" title="Branch 12 was taken 2 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 13 was taken 624 times"> + </span>]
|
||||
<span id="L189"><span class="lineNum"> 189</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Missing or invalid frame name.");</span></span>
|
||||
<span id="L190"><span class="lineNum"> 190</span> : : </span>
|
||||
<span id="L191"><span class="lineNum"> 191</span> :<span class="tlaGNC"> 624 : std::string lengthText;</span></span>
|
||||
<span id="L192"><span class="lineNum"> 192</span> [<span class="tlaGBC" title="Branch 0 was taken 624 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 624 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 624 : if (!(stream >> lengthText))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 5 was taken 623 times"> + </span>]
|
||||
<span id="L193"><span class="lineNum"> 193</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1 : throw std::runtime_error("Missing payload length in frame definition.");</span></span>
|
||||
<span id="L194"><span class="lineNum"> 194</span> [<span class="tlaGBC" title="Branch 0 was taken 617 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6 times"> + </span>]:<span class="tlaGNC"> 623 : frame.dlc = static_cast<std::uint8_t>(ParseDecimal(</span></span>
|
||||
<span id="L195"><span class="lineNum"> 195</span> :<span class="tlaGNC"> 623 : lengthText, std::numeric_limits<std::uint8_t>::max(), "payload length"));</span></span>
|
||||
<span id="L196"><span class="lineNum"> 196</span> [<span class="tlaGBC" title="Branch 0 was taken 617 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 617 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 617 : if (!(stream >> frame.transmitter))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 5 was taken 616 times"> + </span>]
|
||||
<span id="L197"><span class="lineNum"> 197</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1 : throw std::runtime_error("Missing transmitter in frame definition.");</span></span>
|
||||
<span id="L198"><span class="lineNum"> 198</span> [<span class="tlaGBC" title="Branch 0 was taken 616 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 616 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 616 : if (stream >> extra)</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 5 was taken 615 times"> + </span>]
|
||||
<span id="L199"><span class="lineNum"> 199</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1 : throw std::runtime_error("Unexpected trailing field in frame definition: " + extra);</span></span>
|
||||
<span id="L200"><span class="lineNum"> 200</span> : : </span>
|
||||
<span id="L201"><span class="lineNum"> 201</span> :<span class="tlaGNC"> 615 : NormalizeCanId(rawCanId, frame.canId, frame.isExtended);</span></span>
|
||||
<span id="L202"><span class="lineNum"> 202</span> : : </span>
|
||||
<span id="L203"><span class="lineNum"> 203</span> :<span class="tlaGNC"> 615 : return frame;</span></span>
|
||||
<span id="L204"><span class="lineNum"> 204</span> :<span class="tlaGNC"> 772 : }</span></span>
|
||||
<span id="L205"><span class="lineNum"> 205</span> : : </span>
|
||||
<span id="L206"><span class="lineNum"> 206</span> :<span class="tlaGNC"> 521 : SignalInfo DbcSignalHandler::ParseSignalLine(const std::string &line) {</span></span>
|
||||
<span id="L207"><span class="lineNum"> 207</span> : : // Match the complete statement before converting any numeric fields.</span>
|
||||
<span id="L208"><span class="lineNum"> 208</span> : : enum Field {</span>
|
||||
<span id="L209"><span class="lineNum"> 209</span> : : NameAndMarker = 1, StartBit, BitLength, ByteOrder, Signedness,</span>
|
||||
<span id="L210"><span class="lineNum"> 210</span> : : Factor, Offset, Minimum, Maximum, Unit, Receivers</span>
|
||||
<span id="L211"><span class="lineNum"> 211</span> : : };</span>
|
||||
<span id="L212"><span class="lineNum"> 212</span> : : static const std::regex syntax(</span>
|
||||
<span id="L213"><span class="lineNum"> 213</span> : : // Name and optional multiplexing marker.</span>
|
||||
<span id="L214"><span class="lineNum"> 214</span> : : R"dbc(^SG_[ \t]+([^:]+):[ \t]*)dbc"</span>
|
||||
<span id="L215"><span class="lineNum"> 215</span> : : // Bit position, length, byte order and signedness.</span>
|
||||
<span id="L216"><span class="lineNum"> 216</span> : : R"dbc(([^| \t]+)[ \t]*\|[ \t]*([^@ \t]+)[ \t]*@[ \t]*([01])([+-])[ \t]*)dbc"</span>
|
||||
<span id="L217"><span class="lineNum"> 217</span> : : // Scaling factor and offset.</span>
|
||||
<span id="L218"><span class="lineNum"> 218</span> : : R"dbc(\([ \t]*([^, \t]+)[ \t]*,[ \t]*([^ )\t]+)[ \t]*\)[ \t]*)dbc"</span>
|
||||
<span id="L219"><span class="lineNum"> 219</span> : : // Physical range.</span>
|
||||
<span id="L220"><span class="lineNum"> 220</span> : : R"dbc(\[[ \t]*([^| \t]+)[ \t]*\|[ \t]*([^\] \t]+)[ \t]*\][ \t]*)dbc"</span>
|
||||
<span id="L221"><span class="lineNum"> 221</span> : : // Unit and receivers.</span>
|
||||
<span id="L222"><span class="lineNum"> 222</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 519 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 521 : R"dbc("([^"\r\n]*)"[ \t]+([^ \t,]+(?:[ \t]*,[ \t]*[^ \t,]+)*)[ \t]*$)dbc");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaUNC" title="Branch 6 was not taken"> - </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span>]
|
||||
<span id="L223"><span class="lineNum"> 223</span> :<span class="tlaGNC"> 521 : std::smatch fields;</span></span>
|
||||
<span id="L224"><span class="lineNum"> 224</span> [<span class="tlaGBC" title="Branch 0 was taken 521 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 23 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 498 times"> + </span>]:<span class="tlaGNC"> 521 : if (!std::regex_match(line, fields, syntax))</span></span>
|
||||
<span id="L225"><span class="lineNum"> 225</span> [<span class="tlaGBC" title="Branch 0 was taken 23 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 23 : throw std::runtime_error("Malformed or unsupported SG_ signal definition.");</span></span>
|
||||
<span id="L226"><span class="lineNum"> 226</span> : : </span>
|
||||
<span id="L227"><span class="lineNum"> 227</span> :<span class="tlaGNC"> 498 : SignalInfo signal;</span></span>
|
||||
<span id="L228"><span class="lineNum"> 228</span> [<span class="tlaGBC" title="Branch 0 was taken 498 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 498 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 498 : std::istringstream nameFields(fields[NameAndMarker].str());</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 498 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L229"><span class="lineNum"> 229</span> :<span class="tlaGNC"> 498 : std::string marker;</span></span>
|
||||
<span id="L230"><span class="lineNum"> 230</span> :<span class="tlaGNC"> 498 : std::string extra;</span></span>
|
||||
<span id="L231"><span class="lineNum"> 231</span> [<span class="tlaGBC" title="Branch 0 was taken 498 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 498 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 498 : nameFields >> signal.name >> marker;</span></span>
|
||||
<span id="L232"><span class="lineNum"> 232</span> [<span class="tlaGBC" title="Branch 0 was taken 497 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 2 was taken 497 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 498 : if (signal.name.empty() || (nameFields >> extra))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 497 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 7 was taken 496 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 2 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 496 times"> + </span>]
|
||||
<span id="L233"><span class="lineNum"> 233</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Invalid signal name or multiplexing marker.");</span></span>
|
||||
<span id="L234"><span class="lineNum"> 234</span> [<span class="tlaGBC" title="Branch 0 was taken 488 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 8 times"> + </span>]:<span class="tlaGNC"> 496 : signal.multiplexing = ParseMultiplexingMarker(marker);</span></span>
|
||||
<span id="L235"><span class="lineNum"> 235</span> : : </span>
|
||||
<span id="L236"><span class="lineNum"> 236</span> [<span class="tlaGBC" title="Branch 0 was taken 488 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 488 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 495 : signal.startBit = ParseDecimal(fields[StartBit].str(),</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 481 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 7 times"> + </span>]
|
||||
<span id="L237"><span class="lineNum"> 237</span> : : std::numeric_limits<std::uint32_t>::max(), "signal start bit");</span>
|
||||
<span id="L238"><span class="lineNum"> 238</span> [<span class="tlaGBC" title="Branch 0 was taken 481 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 481 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 489 : signal.length = ParseDecimal(fields[BitLength].str(), 64U, "signal length");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 473 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 8 times"> + </span>]
|
||||
<span id="L239"><span class="lineNum"> 239</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 1 was taken 472 times"> + </span>]:<span class="tlaGNC"> 473 : if (signal.length == 0U)</span></span>
|
||||
<span id="L240"><span class="lineNum"> 240</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1 : throw std::runtime_error("Signal length must be within 1..64 bits.");</span></span>
|
||||
<span id="L241"><span class="lineNum"> 241</span> [<span class="tlaGBC" title="Branch 0 was taken 472 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 472 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 472 : signal.isLittleEndian = fields[ByteOrder].str() == "1";</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 472 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L242"><span class="lineNum"> 242</span> [<span class="tlaGBC" title="Branch 0 was taken 472 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 472 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 472 : signal.isSigned = fields[Signedness].str() == "-";</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 472 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L243"><span class="lineNum"> 243</span> : : </span>
|
||||
<span id="L244"><span class="lineNum"> 244</span> [<span class="tlaGBC" title="Branch 0 was taken 472 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 472 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 504 : signal.factor = ParsePhysicalValue(fields[Factor].str(), "signal factor");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 440 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 32 times"> + </span>]
|
||||
<span id="L245"><span class="lineNum"> 245</span> [<span class="tlaGBC" title="Branch 0 was taken 440 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 440 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 484 : signal.offset = ParsePhysicalValue(fields[Offset].str(), "signal offset");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 396 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 44 times"> + </span>]
|
||||
<span id="L246"><span class="lineNum"> 246</span> [<span class="tlaGBC" title="Branch 0 was taken 396 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 396 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 434 : signal.minimum = ParsePhysicalValue(fields[Minimum].str(), "signal minimum");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 358 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 38 times"> + </span>]
|
||||
<span id="L247"><span class="lineNum"> 247</span> [<span class="tlaGBC" title="Branch 0 was taken 358 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 358 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 396 : signal.maximum = ParsePhysicalValue(fields[Maximum].str(), "signal maximum");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 320 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 38 times"> + </span>]
|
||||
<span id="L248"><span class="lineNum"> 248</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 317 times"> + </span>]:<span class="tlaGNC"> 320 : if (signal.minimum > signal.maximum)</span></span>
|
||||
<span id="L249"><span class="lineNum"> 249</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 3 : throw std::runtime_error("Signal minimum exceeds maximum.");</span></span>
|
||||
<span id="L250"><span class="lineNum"> 250</span> [<span class="tlaGBC" title="Branch 0 was taken 317 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 317 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 317 : signal.unit = fields[Unit].str();</span></span>
|
||||
<span id="L251"><span class="lineNum"> 251</span> [<span class="tlaGBC" title="Branch 0 was taken 317 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 317 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 317 : signal.receivers = SplitReceivers(fields[Receivers].str());</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 317 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L252"><span class="lineNum"> 252</span> :<span class="tlaGNC"> 317 : return signal;</span></span>
|
||||
<span id="L253"><span class="lineNum"> 253</span> :<span class="tlaGNC"> 1245 : }</span></span>
|
||||
<span id="L254"><span class="lineNum"> 254</span> : : </span>
|
||||
<span id="L255"><span class="lineNum"> 255</span> : : </span>
|
||||
<span id="L256"><span class="lineNum"> 256</span> : : namespace {</span>
|
||||
<span id="L257"><span class="lineNum"> 257</span> :<span class="tlaGNC"> 698 : FrameInfo *FindFrameById(DbcDatabase &database,</span></span>
|
||||
<span id="L258"><span class="lineNum"> 258</span> : : std::uint32_t canId,</span>
|
||||
<span id="L259"><span class="lineNum"> 259</span> : : bool isExtended) {</span>
|
||||
<span id="L260"><span class="lineNum"> 260</span> [<span class="tlaGBC" title="Branch 0 was taken 144 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 613 times"> + </span>]:<span class="tlaGNC"> 757 : for (FrameInfo &frame : database.frames) {</span></span>
|
||||
<span id="L261"><span class="lineNum"> 261</span> [<span class="tlaGBC" title="Branch 0 was taken 109 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 35 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 85 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 24 times"> + </span>]:<span class="tlaGNC"> 144 : if (frame.canId == canId && frame.isExtended == isExtended)</span></span>
|
||||
<span id="L262"><span class="lineNum"> 262</span> :<span class="tlaGNC"> 85 : return &frame;</span></span>
|
||||
<span id="L263"><span class="lineNum"> 263</span> : : }</span>
|
||||
<span id="L264"><span class="lineNum"> 264</span> : : </span>
|
||||
<span id="L265"><span class="lineNum"> 265</span> :<span class="tlaGNC"> 613 : return nullptr;</span></span>
|
||||
<span id="L266"><span class="lineNum"> 266</span> : : }</span>
|
||||
<span id="L267"><span class="lineNum"> 267</span> : : </span>
|
||||
<span id="L268"><span class="lineNum"> 268</span> :<span class="tlaGNC"> 364 : SignalInfo *FindSignalByName(FrameInfo &frame, const std::string &signalName) {</span></span>
|
||||
<span id="L269"><span class="lineNum"> 269</span> [<span class="tlaGBC" title="Branch 0 was taken 126 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 315 times"> + </span>]:<span class="tlaGNC"> 441 : for (SignalInfo &signal : frame.signals) {</span></span>
|
||||
<span id="L270"><span class="lineNum"> 270</span> [<span class="tlaGBC" title="Branch 0 was taken 49 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 77 times"> + </span>]:<span class="tlaGNC"> 126 : if (signal.name == signalName)</span></span>
|
||||
<span id="L271"><span class="lineNum"> 271</span> :<span class="tlaGNC"> 49 : return &signal;</span></span>
|
||||
<span id="L272"><span class="lineNum"> 272</span> : : }</span>
|
||||
<span id="L273"><span class="lineNum"> 273</span> : : </span>
|
||||
<span id="L274"><span class="lineNum"> 274</span> :<span class="tlaGNC"> 315 : return nullptr;</span></span>
|
||||
<span id="L275"><span class="lineNum"> 275</span> : : }</span>
|
||||
<span id="L276"><span class="lineNum"> 276</span> : : }// namespace</span>
|
||||
<span id="L277"><span class="lineNum"> 277</span> : : </span>
|
||||
<span id="L278"><span class="lineNum"> 278</span> :<span class="tlaGNC"> 649 : void DbcFrameHandler::Handle(const std::string &line, DbcParseContext &context) const {</span></span>
|
||||
<span id="L279"><span class="lineNum"> 279</span> [<span class="tlaGBC" title="Branch 0 was taken 615 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 34 times"> + </span>]:<span class="tlaGNC"> 649 : FrameInfo frame = ParseFrameLine(line);</span></span>
|
||||
<span id="L280"><span class="lineNum"> 280</span> [<span class="tlaGBC" title="Branch 0 was taken 31 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 584 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 27 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 4 times"> + </span>]:<span class="tlaGNC"> 615 : if (context.enableJ1939 && frame.isExtended) {</span></span>
|
||||
<span id="L281"><span class="lineNum"> 281</span> :<span class="tlaGNC"> 27 : frame.hasPgn = true;</span></span>
|
||||
<span id="L282"><span class="lineNum"> 282</span> :<span class="tlaGNC"> 27 : frame.pgn = ExtractJ1939Pgn(frame.canId);</span></span>
|
||||
<span id="L283"><span class="lineNum"> 283</span> : : }</span>
|
||||
<span id="L284"><span class="lineNum"> 284</span> [<span class="tlaGBC" title="Branch 0 was taken 8 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 607 times"> + </span>]:<span class="tlaGNC"> 615 : if (FindFrameById(context.database, frame.canId, frame.isExtended) != nullptr)</span></span>
|
||||
<span id="L285"><span class="lineNum"> 285</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 16 : throw std::runtime_error("Duplicate " + std::string(frame.isExtended ? "extended" : "standard") +</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L286"><span class="lineNum"> 286</span> [<span class="tlaGBC" title="Branch 0 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 24 : " frame CAN ID: " + std::to_string(frame.canId));</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L287"><span class="lineNum"> 287</span> [<span class="tlaGBC" title="Branch 0 was taken 607 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 607 : context.database.frames.push_back(std::move(frame));</span></span>
|
||||
<span id="L288"><span class="lineNum"> 288</span> :<span class="tlaGNC"> 607 : context.currentFrame = &context.database.frames.back();</span></span>
|
||||
<span id="L289"><span class="lineNum"> 289</span> [<span class="tlaGBC" title="Branch 0 was taken 607 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 607 : context.signalLines.emplace_back();</span></span>
|
||||
<span id="L290"><span class="lineNum"> 290</span> :<span class="tlaGNC"> 615 : }</span></span>
|
||||
<span id="L291"><span class="lineNum"> 291</span> : : </span>
|
||||
<span id="L292"><span class="lineNum"> 292</span> :<span class="tlaGNC"> 526 : void DbcSignalHandler::Handle(const std::string &line, DbcParseContext &context) const {</span></span>
|
||||
<span id="L293"><span class="lineNum"> 293</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 521 times"> + </span>]:<span class="tlaGNC"> 526 : if (context.currentFrame == nullptr)</span></span>
|
||||
<span id="L294"><span class="lineNum"> 294</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 5 : throw std::runtime_error("Signal found before any frame definition.");</span></span>
|
||||
<span id="L295"><span class="lineNum"> 295</span> [<span class="tlaGBC" title="Branch 0 was taken 317 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 204 times"> + </span>]:<span class="tlaGNC"> 521 : SignalInfo signal = ParseSignalLine(line);</span></span>
|
||||
<span id="L296"><span class="lineNum"> 296</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 311 times"> + </span>]:<span class="tlaGNC"> 317 : if (FindSignalByName(*context.currentFrame, signal.name) != nullptr)</span></span>
|
||||
<span id="L297"><span class="lineNum"> 297</span> :<span class="tlaGNC"> 6 : throw std::runtime_error("Duplicate signal name '" + signal.name +</span></span>
|
||||
<span id="L298"><span class="lineNum"> 298</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 12 : "' in frame '" + context.currentFrame->name + "'.");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 6 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span>]
|
||||
<span id="L299"><span class="lineNum"> 299</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 304 times"> + </span>]:<span class="tlaGNC"> 311 : if (!IsValidSignalLayout(signal.startBit, signal.length, signal.isLittleEndian,</span></span>
|
||||
<span id="L300"><span class="lineNum"> 300</span> :<span class="tlaGNC"> 311 : context.currentFrame->dlc))</span></span>
|
||||
<span id="L301"><span class="lineNum"> 301</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 7 : throw std::runtime_error("Signal exceeds the frame payload length.");</span></span>
|
||||
<span id="L302"><span class="lineNum"> 302</span> [<span class="tlaGBC" title="Branch 0 was taken 304 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 304 : context.currentFrame->signals.push_back(std::move(signal));</span></span>
|
||||
<span id="L303"><span class="lineNum"> 303</span> [<span class="tlaGBC" title="Branch 0 was taken 304 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 304 : context.signalLines.back().push_back(context.lineNumber);</span></span>
|
||||
<span id="L304"><span class="lineNum"> 304</span> :<span class="tlaGNC"> 317 : }</span></span>
|
||||
<span id="L305"><span class="lineNum"> 305</span> : : </span>
|
||||
<span id="L306"><span class="lineNum"> 306</span> :<span class="tlaGNC"> 149 : void DbcCommentHandler::Handle(const std::string &line, DbcParseContext &context) const {</span></span>
|
||||
<span id="L307"><span class="lineNum"> 307</span> [<span class="tlaGBC" title="Branch 0 was taken 149 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 149 : std::istringstream stream(line);</span></span>
|
||||
<span id="L308"><span class="lineNum"> 308</span> :<span class="tlaGNC"> 149 : std::string keyword;</span></span>
|
||||
<span id="L309"><span class="lineNum"> 309</span> :<span class="tlaGNC"> 149 : std::string target;</span></span>
|
||||
<span id="L310"><span class="lineNum"> 310</span> [<span class="tlaGBC" title="Branch 0 was taken 149 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 149 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 149 : stream >> keyword >> target;</span></span>
|
||||
<span id="L311"><span class="lineNum"> 311</span> [<span class="tlaGBC" title="Branch 0 was taken 149 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 145 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 4 times"> + </span> :<span class="tlaGNC"> 149 : if (keyword != "CM_" || (target != "BO_" && target != "SG_"))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 145 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 78 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 67 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 78 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span><span class="tlaGBC" title="Branch 10 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 11 was taken 73 times"> + </span><span class="tlaGBC" title="Branch 12 was taken 9 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 13 was taken 140 times"> + </span>]
|
||||
<span id="L312"><span class="lineNum"> 312</span> :<span class="tlaGNC"> 9 : return;</span></span>
|
||||
<span id="L313"><span class="lineNum"> 313</span> : : </span>
|
||||
<span id="L314"><span class="lineNum"> 314</span> :<span class="tlaGNC"> 140 : PendingComment pending;</span></span>
|
||||
<span id="L315"><span class="lineNum"> 315</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 140 : pending.isSignal = target == "SG_";</span></span>
|
||||
<span id="L316"><span class="lineNum"> 316</span> :<span class="tlaGNC"> 140 : pending.lineNumber = context.lineNumber;</span></span>
|
||||
<span id="L317"><span class="lineNum"> 317</span> :<span class="tlaGNC"> 140 : std::string idText;</span></span>
|
||||
<span id="L318"><span class="lineNum"> 318</span> [<span class="tlaGBC" title="Branch 0 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 140 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 140 : if (!(stream >> idText))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 138 times"> + </span>]
|
||||
<span id="L319"><span class="lineNum"> 319</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Missing CAN ID in CM_ statement.");</span></span>
|
||||
<span id="L320"><span class="lineNum"> 320</span> [<span class="tlaGBC" title="Branch 0 was taken 102 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 36 times"> + </span>]:<span class="tlaGNC"> 138 : NormalizeCanId(ParseCanId(idText), pending.canId, pending.isExtended);</span></span>
|
||||
<span id="L321"><span class="lineNum"> 321</span> [<span class="tlaGBC" title="Branch 0 was taken 55 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 47 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 55 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 157 : if (pending.isSignal && (!(stream >> pending.signalName) ||</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 55 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 55 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 2 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 53 times"> + </span><span class="tlaGBC" title="Branch 10 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 11 was taken 100 times"> + </span>]
|
||||
<span id="L322"><span class="lineNum"> 322</span> :<span class="tlaGNC"> 55 : pending.signalName.find_first_of("\";") != std::string::npos))</span></span>
|
||||
<span id="L323"><span class="lineNum"> 323</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Missing or invalid signal name in CM_ statement.");</span></span>
|
||||
<span id="L324"><span class="lineNum"> 324</span> : : </span>
|
||||
<span id="L325"><span class="lineNum"> 325</span> [<span class="tlaGBC" title="Branch 0 was taken 100 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 100 : stream >> std::ws;</span></span>
|
||||
<span id="L326"><span class="lineNum"> 326</span> [<span class="tlaGBC" title="Branch 0 was taken 100 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 96 times"> + </span>]:<span class="tlaGNC"> 100 : if (stream.get() != '"')</span></span>
|
||||
<span id="L327"><span class="lineNum"> 327</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::runtime_error("Missing opening quote in CM_ statement.");</span></span>
|
||||
<span id="L328"><span class="lineNum"> 328</span> :<span class="tlaGNC"> 96 : bool closed = false;</span></span>
|
||||
<span id="L329"><span class="lineNum"> 329</span> : : char character;</span>
|
||||
<span id="L330"><span class="lineNum"> 330</span> [<span class="tlaGBC" title="Branch 0 was taken 1096 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 1096 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 1096 : while (stream.get(character)) {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 1094 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 2 times"> + </span>]
|
||||
<span id="L331"><span class="lineNum"> 331</span> [<span class="tlaGBC" title="Branch 0 was taken 90 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1004 times"> + </span>]:<span class="tlaGNC"> 1094 : if (character == '"') {</span></span>
|
||||
<span id="L332"><span class="lineNum"> 332</span> :<span class="tlaGNC"> 90 : closed = true;</span></span>
|
||||
<span id="L333"><span class="lineNum"> 333</span> :<span class="tlaGNC"> 90 : break;</span></span>
|
||||
<span id="L334"><span class="lineNum"> 334</span> : : }</span>
|
||||
<span id="L335"><span class="lineNum"> 335</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 997 times"> + </span>]:<span class="tlaGNC"> 1004 : if (character == '\\') {</span></span>
|
||||
<span id="L336"><span class="lineNum"> 336</span> [<span class="tlaGBC" title="Branch 0 was taken 7 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 7 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 7 : if (!stream.get(character) || (character != '"' && character != '\\'))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 8 was taken 2 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 10 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 11 was taken 3 times"> + </span>]
|
||||
<span id="L337"><span class="lineNum"> 337</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::runtime_error("Invalid escape in CM_ statement.");</span></span>
|
||||
<span id="L338"><span class="lineNum"> 338</span> : : }</span>
|
||||
<span id="L339"><span class="lineNum"> 339</span> [<span class="tlaGBC" title="Branch 0 was taken 1000 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1000 : pending.comment += character;</span></span>
|
||||
<span id="L340"><span class="lineNum"> 340</span> : : }</span>
|
||||
<span id="L341"><span class="lineNum"> 341</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 90 times"> + </span>]:<span class="tlaGNC"> 92 : if (!closed)</span></span>
|
||||
<span id="L342"><span class="lineNum"> 342</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Unterminated CM_ comment.");</span></span>
|
||||
<span id="L343"><span class="lineNum"> 343</span> [<span class="tlaGBC" title="Branch 0 was taken 90 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 90 : stream >> std::ws;</span></span>
|
||||
<span id="L344"><span class="lineNum"> 344</span> [<span class="tlaGBC" title="Branch 0 was taken 90 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 86 times"> + </span>]:<span class="tlaGNC"> 90 : if (stream.get() != ';')</span></span>
|
||||
<span id="L345"><span class="lineNum"> 345</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::runtime_error("Missing semicolon in CM_ statement.");</span></span>
|
||||
<span id="L346"><span class="lineNum"> 346</span> [<span class="tlaGBC" title="Branch 0 was taken 86 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 86 : stream >> std::ws;</span></span>
|
||||
<span id="L347"><span class="lineNum"> 347</span> [<span class="tlaGBC" title="Branch 0 was taken 86 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 84 times"> + </span>]:<span class="tlaGNC"> 86 : if (!stream.eof())</span></span>
|
||||
<span id="L348"><span class="lineNum"> 348</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Unexpected trailing text in CM_ statement.");</span></span>
|
||||
<span id="L349"><span class="lineNum"> 349</span> [<span class="tlaGBC" title="Branch 0 was taken 84 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 84 : context.pendingComments.push_back(std::move(pending));</span></span>
|
||||
<span id="L350"><span class="lineNum"> 350</span> [<span class="tlaGBC" title="Branch 0 was taken 84 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 9 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 84 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 9 times"> + </span> :<span class="tlaGNC"> 391 : }</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 84 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 9 times"> + </span>]
|
||||
<span id="L351"><span class="lineNum"> 351</span> : : </span>
|
||||
<span id="L352"><span class="lineNum"> 352</span> :<span class="tlaGNC"> 597 : void DbcParseContext::ResolveComments(const std::string &filePath) {</span></span>
|
||||
<span id="L353"><span class="lineNum"> 353</span> [<span class="tlaGBC" title="Branch 0 was taken 83 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 587 times"> + </span>]:<span class="tlaGNC"> 670 : for (const PendingComment &pending: pendingComments) {</span></span>
|
||||
<span id="L354"><span class="lineNum"> 354</span> :<span class="tlaGNC"> 83 : FrameInfo *frame = FindFrameById(database, pending.canId, pending.isExtended);</span></span>
|
||||
<span id="L355"><span class="lineNum"> 355</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 77 times"> + </span>]:<span class="tlaGNC"> 83 : if (!frame)</span></span>
|
||||
<span id="L356"><span class="lineNum"> 356</span> : : throw DbcDiagnosticError(DbcDiagnosticCode::InvalidStatement, filePath,</span>
|
||||
<span id="L357"><span class="lineNum"> 357</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 18 : pending.lineNumber, "Unresolved CM_ frame reference.");</span></span>
|
||||
<span id="L358"><span class="lineNum"> 358</span> [<span class="tlaGBC" title="Branch 0 was taken 47 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 30 times"> + </span>]:<span class="tlaGNC"> 77 : if (pending.isSignal) {</span></span>
|
||||
<span id="L359"><span class="lineNum"> 359</span> :<span class="tlaGNC"> 47 : SignalInfo *signal = FindSignalByName(*frame, pending.signalName);</span></span>
|
||||
<span id="L360"><span class="lineNum"> 360</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 43 times"> + </span>]:<span class="tlaGNC"> 47 : if (!signal)</span></span>
|
||||
<span id="L361"><span class="lineNum"> 361</span> : : throw DbcDiagnosticError(DbcDiagnosticCode::InvalidStatement, filePath,</span>
|
||||
<span id="L362"><span class="lineNum"> 362</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 4 : pending.lineNumber, "Unresolved CM_ signal reference: " + pending.signalName);</span></span>
|
||||
<span id="L363"><span class="lineNum"> 363</span> [<span class="tlaGBC" title="Branch 0 was taken 43 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 43 : signal->comment = pending.comment;</span></span>
|
||||
<span id="L364"><span class="lineNum"> 364</span> : : } else {</span>
|
||||
<span id="L365"><span class="lineNum"> 365</span> [<span class="tlaGBC" title="Branch 0 was taken 30 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 30 : frame->comment = pending.comment;</span></span>
|
||||
<span id="L366"><span class="lineNum"> 366</span> : : }</span>
|
||||
<span id="L367"><span class="lineNum"> 367</span> : : }</span>
|
||||
<span id="L368"><span class="lineNum"> 368</span> :<span class="tlaGNC"> 587 : }</span></span>
|
||||
<span id="L369"><span class="lineNum"> 369</span> : : </span>
|
||||
<span id="L370"><span class="lineNum"> 370</span> :<span class="tlaGNC"> 949 : DbcStatementDispatcher::DbcStatementDispatcher() {</span></span>
|
||||
<span id="L371"><span class="lineNum"> 371</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcHeaderHandler>("VERSION");</span></span>
|
||||
<span id="L372"><span class="lineNum"> 372</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcHeaderHandler>("NS_");</span></span>
|
||||
<span id="L373"><span class="lineNum"> 373</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcHeaderHandler>("NS_:");</span></span>
|
||||
<span id="L374"><span class="lineNum"> 374</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcHeaderHandler>("BS_");</span></span>
|
||||
<span id="L375"><span class="lineNum"> 375</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcHeaderHandler>("BS_:");</span></span>
|
||||
<span id="L376"><span class="lineNum"> 376</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcHeaderHandler>("BU_");</span></span>
|
||||
<span id="L377"><span class="lineNum"> 377</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcHeaderHandler>("BU_:");</span></span>
|
||||
<span id="L378"><span class="lineNum"> 378</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcUnsupportedMultiplexingHandler>("SG_MUL_VAL_");</span></span>
|
||||
<span id="L379"><span class="lineNum"> 379</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcFrameHandler>("BO_");</span></span>
|
||||
<span id="L380"><span class="lineNum"> 380</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcSignalHandler>("SG_");</span></span>
|
||||
<span id="L381"><span class="lineNum"> 381</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcCommentHandler>("CM_");</span></span>
|
||||
<span id="L382"><span class="lineNum"> 382</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcValueDescriptionHandler>("VAL_");</span></span>
|
||||
<span id="L383"><span class="lineNum"> 383</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcAttributeHandler>("BA_DEF_");</span></span>
|
||||
<span id="L384"><span class="lineNum"> 384</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 1898 : RegisterType<DbcAttributeHandler>("BA_DEF_DEF_");</span></span>
|
||||
<span id="L385"><span class="lineNum"> 385</span> [<span class="tlaGBC" title="Branch 0 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 949 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 949 : RegisterType<DbcAttributeHandler>("BA_");</span></span>
|
||||
<span id="L386"><span class="lineNum"> 386</span> :<span class="tlaGNC"> 949 : }</span></span>
|
||||
<span id="L387"><span class="lineNum"> 387</span> : : </span>
|
||||
<span id="L388"><span class="lineNum"> 388</span> :<span class="tlaGNC"> 62 : void DbcHeaderHandler::Handle(const std::string &, DbcParseContext &) const {}</span></span>
|
||||
<span id="L389"><span class="lineNum"> 389</span> : : </span>
|
||||
<span id="L390"><span class="lineNum"> 390</span> :<span class="tlaGNC"> 2132 : bool DbcStatementDispatcher::Dispatch(const std::string &line,</span></span>
|
||||
<span id="L391"><span class="lineNum"> 391</span> : : DbcParseContext &context) const {</span>
|
||||
<span id="L392"><span class="lineNum"> 392</span> [<span class="tlaGBC" title="Branch 0 was taken 2132 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2132 : std::istringstream stream(line);</span></span>
|
||||
<span id="L393"><span class="lineNum"> 393</span> :<span class="tlaGNC"> 2132 : std::string keyword;</span></span>
|
||||
<span id="L394"><span class="lineNum"> 394</span> [<span class="tlaGBC" title="Branch 0 was taken 2132 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2132 : stream >> keyword;</span></span>
|
||||
<span id="L395"><span class="lineNum"> 395</span> [<span class="tlaGBC" title="Branch 0 was taken 2132 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2132 : const HandlerMap::const_iterator handler = m_handlers.find(keyword);</span></span>
|
||||
<span id="L396"><span class="lineNum"> 396</span> [<span class="tlaGBC" title="Branch 0 was taken 40 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2092 times"> + </span>]:<span class="tlaGNC"> 2132 : if (handler == m_handlers.end())</span></span>
|
||||
<span id="L397"><span class="lineNum"> 397</span> :<span class="tlaGNC"> 40 : return false;</span></span>
|
||||
<span id="L398"><span class="lineNum"> 398</span> [<span class="tlaGBC" title="Branch 0 was taken 1743 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 349 times"> + </span>]:<span class="tlaGNC"> 2092 : handler->second->Handle(line, context);</span></span>
|
||||
<span id="L399"><span class="lineNum"> 399</span> :<span class="tlaGNC"> 1743 : return true;</span></span>
|
||||
<span id="L400"><span class="lineNum"> 400</span> :<span class="tlaGNC"> 2481 : }</span></span>
|
||||
<span id="L401"><span class="lineNum"> 401</span> : : </span>
|
||||
<span id="L402"><span class="lineNum"> 402</span> :<span class="tlaGNC"> 94 : void DbcValueDescriptionHandler::Handle(const std::string &line, DbcParseContext &context) const {</span></span>
|
||||
<span id="L403"><span class="lineNum"> 403</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 92 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 94 : static const std::regex header(R"(^VAL_[ \t]+([^ \t]+)[ \t]+([^ \t;]+)[ \t]+(.*)$)");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaUNC" title="Branch 6 was not taken"> - </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span>]
|
||||
<span id="L404"><span class="lineNum"> 404</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 92 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 94 : static const std::regex pair(R"dbc(^([^ \t]+)[ \t]+"((?:[^"\\]|\\["\\])*)")dbc");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaUNC" title="Branch 6 was not taken"> - </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span>]
|
||||
<span id="L405"><span class="lineNum"> 405</span> :<span class="tlaGNC"> 94 : std::smatch fields;</span></span>
|
||||
<span id="L406"><span class="lineNum"> 406</span> [<span class="tlaGBC" title="Branch 0 was taken 94 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 90 times"> + </span>]:<span class="tlaGNC"> 94 : if (!std::regex_match(line, fields, header))</span></span>
|
||||
<span id="L407"><span class="lineNum"> 407</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::runtime_error("Malformed or unsupported VAL_ statement.");</span></span>
|
||||
<span id="L408"><span class="lineNum"> 408</span> [<span class="tlaGBC" title="Branch 0 was taken 90 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 90 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 93 : const std::uint32_t rawId = ParseDecimal(fields[1].str(), std::numeric_limits<std::uint32_t>::max(), "VAL_ CAN ID");</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 87 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 3 times"> + </span>]
|
||||
<span id="L409"><span class="lineNum"> 409</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 1 was taken 86 times"> + </span>]:<span class="tlaGNC"> 87 : if ((rawId & 0x60000000U) != 0U)</span></span>
|
||||
<span id="L410"><span class="lineNum"> 410</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1 : throw std::runtime_error("VAL_ CAN ID exceeds the 29-bit identifier range.");</span></span>
|
||||
<span id="L411"><span class="lineNum"> 411</span> :<span class="tlaGNC"> 86 : PendingValueDescriptions pending;</span></span>
|
||||
<span id="L412"><span class="lineNum"> 412</span> :<span class="tlaGNC"> 86 : NormalizeCanId(rawId, pending.canId, pending.isExtended);</span></span>
|
||||
<span id="L413"><span class="lineNum"> 413</span> [<span class="tlaGBC" title="Branch 0 was taken 86 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 86 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 86 : pending.signalName = fields[2].str();</span></span>
|
||||
<span id="L414"><span class="lineNum"> 414</span> :<span class="tlaGNC"> 86 : pending.lineNumber = context.lineNumber;</span></span>
|
||||
<span id="L415"><span class="lineNum"> 415</span> [<span class="tlaGBC" title="Branch 0 was taken 86 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 86 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 86 : std::string rest = fields[3].str();</span></span>
|
||||
<span id="L416"><span class="lineNum"> 416</span> [<span class="tlaGBC" title="Branch 0 was taken 179 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 109 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 70 times"> + </span>]:<span class="tlaGNC"> 179 : while (rest != ";") {</span></span>
|
||||
<span id="L417"><span class="lineNum"> 417</span> [<span class="tlaGBC" title="Branch 0 was taken 109 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 104 times"> + </span>]:<span class="tlaGNC"> 109 : if (!std::regex_search(rest, fields, pair))</span></span>
|
||||
<span id="L418"><span class="lineNum"> 418</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 5 : throw std::runtime_error("Malformed VAL_ value/description pair or missing semicolon.");</span></span>
|
||||
<span id="L419"><span class="lineNum"> 419</span> [<span class="tlaGBC" title="Branch 0 was taken 104 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 104 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 104 : const std::string number = fields[1].str();</span></span>
|
||||
<span id="L420"><span class="lineNum"> 420</span> [<span class="tlaGBC" title="Branch 0 was taken 96 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 8 times"> + </span>]:<span class="tlaGNC"> 104 : const RawSignalValue key = ParseValueKey(number);</span></span>
|
||||
<span id="L421"><span class="lineNum"> 421</span> [<span class="tlaGBC" title="Branch 0 was taken 96 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 96 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 96 : const std::string description = UnescapeDescription(fields[2].str());</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 96 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span>]
|
||||
<span id="L422"><span class="lineNum"> 422</span> [<span class="tlaGBC" title="Branch 0 was taken 96 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 94 times"> + </span>]:<span class="tlaGNC"> 96 : if (!pending.descriptions.emplace(key, description).second)</span></span>
|
||||
<span id="L423"><span class="lineNum"> 423</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::runtime_error("Duplicate VAL_ value key: " + number);</span></span>
|
||||
<span id="L424"><span class="lineNum"> 424</span> [<span class="tlaGBC" title="Branch 0 was taken 94 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 94 : const std::size_t consumed = static_cast<std::size_t>(fields.length());</span></span>
|
||||
<span id="L425"><span class="lineNum"> 425</span> [<span class="tlaGBC" title="Branch 0 was taken 94 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 94 : rest.erase(0, consumed);</span></span>
|
||||
<span id="L426"><span class="lineNum"> 426</span> [<span class="tlaGBC" title="Branch 0 was taken 93 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 2 was taken 93 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 94 : if (!rest.empty() && rest[0] != ';' && rest[0] != ' ' && rest[0] != '\t')</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 23 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 70 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 23 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaGBC" title="Branch 8 was taken 2 times"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 9 was taken 21 times"> + </span><span class="tlaGBC" title="Branch 10 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 11 was not taken"> - </span><span class="tlaGBC" title="Branch 12 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 13 was taken 1 time"> + </span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 14 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 15 was taken 93 times"> + </span>]
|
||||
<span id="L427"><span class="lineNum"> 427</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1 : throw std::runtime_error("Missing whitespace between VAL_ pairs.");</span></span>
|
||||
<span id="L428"><span class="lineNum"> 428</span> [<span class="tlaGBC" title="Branch 0 was taken 93 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 93 : rest = dbc_detail::TrimText(rest);</span></span>
|
||||
<span id="L429"><span class="lineNum"> 429</span> :<span class="tlaGNC"> 107 : }</span></span>
|
||||
<span id="L430"><span class="lineNum"> 430</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 1 was taken 69 times"> + </span>]:<span class="tlaGNC"> 70 : if (pending.descriptions.empty())</span></span>
|
||||
<span id="L431"><span class="lineNum"> 431</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 1 : throw std::runtime_error("VAL_ requires at least one value/description pair.");</span></span>
|
||||
<span id="L432"><span class="lineNum"> 432</span> [<span class="tlaGBC" title="Branch 0 was taken 69 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 69 : context.pendingValues.push_back(std::move(pending));</span></span>
|
||||
<span id="L433"><span class="lineNum"> 433</span> :<span class="tlaGNC"> 128 : }</span></span>
|
||||
<span id="L434"><span class="lineNum"> 434</span> : : </span>
|
||||
<span id="L435"><span class="lineNum"> 435</span> :<span class="tlaGNC"> 592 : void DbcParseContext::ResolveValueDescriptions(const std::string &filePath) {</span></span>
|
||||
<span id="L436"><span class="lineNum"> 436</span> [<span class="tlaGBC" title="Branch 0 was taken 67 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 577 times"> + </span>]:<span class="tlaGNC"> 644 : for (const PendingValueDescriptions &pending: pendingValues) {</span></span>
|
||||
<span id="L437"><span class="lineNum"> 437</span> : : try {</span>
|
||||
<span id="L438"><span class="lineNum"> 438</span> [<span class="tlaGBC" title="Branch 0 was taken 62 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 5 times"> + </span>]:<span class="tlaGNC"> 67 : FrameInfo *frame = FindUniqueFrame(database, pending.canId, pending.isExtended);</span></span>
|
||||
<span id="L439"><span class="lineNum"> 439</span> [<span class="tlaGBC" title="Branch 0 was taken 55 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 7 times"> + </span>]:<span class="tlaGNC"> 62 : SignalInfo *signal = FindUniqueSignal(*frame, pending.signalName);</span></span>
|
||||
<span id="L440"><span class="lineNum"> 440</span> [<span class="tlaGBC" title="Branch 0 was taken 75 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 52 times"> + </span>]:<span class="tlaGNC"> 127 : for (const ValueDescriptions::value_type &entry: pending.descriptions) {</span></span>
|
||||
<span id="L441"><span class="lineNum"> 441</span> [<span class="tlaGBC" title="Branch 0 was taken 75 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 72 times"> + </span>]:<span class="tlaGNC"> 75 : if (!signal->valueDescriptions.insert(entry).second)</span></span>
|
||||
<span id="L442"><span class="lineNum"> 442</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 3 : throw std::runtime_error("Duplicate VAL_ value key for signal: " + pending.signalName);</span></span>
|
||||
<span id="L443"><span class="lineNum"> 443</span> : : }</span>
|
||||
<span id="L444"><span class="lineNum"> 444</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 15 times"> + </span>]:<span class="tlaGNC"> 15 : } catch (const std::exception &error) {</span></span>
|
||||
<span id="L445"><span class="lineNum"> 445</span> : : throw DbcDiagnosticError(DbcDiagnosticCode::InvalidValueDescription,</span>
|
||||
<span id="L446"><span class="lineNum"> 446</span> [<span class="tlaGBC" title="Branch 0 was taken 15 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 15 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 45 : filePath, pending.lineNumber, error.what());</span></span>
|
||||
<span id="L447"><span class="lineNum"> 447</span> :<span class="tlaGNC"> 15 : }</span></span>
|
||||
<span id="L448"><span class="lineNum"> 448</span> : : }</span>
|
||||
<span id="L449"><span class="lineNum"> 449</span> :<span class="tlaGNC"> 577 : }</span></span>
|
||||
<span id="L450"><span class="lineNum"> 450</span> : : </span>
|
||||
<span id="L451"><span class="lineNum"> 451</span> :<span class="tlaGNC"> 4 : void DbcUnsupportedMultiplexingHandler::Handle(const std::string &, DbcParseContext &) const {</span></span>
|
||||
<span id="L452"><span class="lineNum"> 452</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::runtime_error("Extended and nested multiplexing are unsupported.");</span></span>
|
||||
<span id="L453"><span class="lineNum"> 453</span> : : }</span>
|
||||
<span id="L454"><span class="lineNum"> 454</span> : : </span>
|
||||
<span id="L455"><span class="lineNum"> 455</span> : : namespace {</span>
|
||||
<span id="L456"><span class="lineNum"> 456</span> :<span class="tlaGNC"> 114 : std::vector<std::uint64_t> SignalBits(const SignalInfo &signal) {</span></span>
|
||||
<span id="L457"><span class="lineNum"> 457</span> :<span class="tlaGNC"> 114 : std::vector<std::uint64_t> bits;</span></span>
|
||||
<span id="L458"><span class="lineNum"> 458</span> :<span class="tlaGNC"> 114 : std::uint64_t bit = signal.startBit;</span></span>
|
||||
<span id="L459"><span class="lineNum"> 459</span> [<span class="tlaGBC" title="Branch 0 was taken 884 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 114 times"> + </span>]:<span class="tlaGNC"> 998 : for (std::uint32_t index = 0U; index < signal.length; ++index) {</span></span>
|
||||
<span id="L460"><span class="lineNum"> 460</span> [<span class="tlaGBC" title="Branch 0 was taken 884 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 884 : bits.push_back(bit);</span></span>
|
||||
<span id="L461"><span class="lineNum"> 461</span> :<span class="tlaGNC"> 884 : bit = NextSignalBit(bit, signal.isLittleEndian);</span></span>
|
||||
<span id="L462"><span class="lineNum"> 462</span> : : }</span>
|
||||
<span id="L463"><span class="lineNum"> 463</span> :<span class="tlaGNC"> 114 : return bits;</span></span>
|
||||
<span id="L464"><span class="lineNum"> 464</span> :<span class="tlaUNC"> 0 : }</span></span>
|
||||
<span id="L465"><span class="lineNum"> 465</span> : : </span>
|
||||
<span id="L466"><span class="lineNum"> 466</span> :<span class="tlaGNC"> 58 : bool AreMutuallyExclusive(const SignalInfo &first, const SignalInfo &second) {</span></span>
|
||||
<span id="L467"><span class="lineNum"> 467</span> :<span class="tlaGNC"> 79 : return first.multiplexing.role == MultiplexRole::Branch &&</span></span>
|
||||
<span id="L468"><span class="lineNum"> 468</span> [<span class="tlaGBC" title="Branch 0 was taken 21 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 37 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 17 times"> + </span>]:<span class="tlaGNC"> 62 : second.multiplexing.role == MultiplexRole::Branch &&</span></span>
|
||||
<span id="L469"><span class="lineNum"> 469</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 1 was taken 3 times"> + </span>]:<span class="tlaGNC"> 62 : first.multiplexing.value != second.multiplexing.value;</span></span>
|
||||
<span id="L470"><span class="lineNum"> 470</span> : : }</span>
|
||||
<span id="L471"><span class="lineNum"> 471</span> : : </span>
|
||||
<span id="L472"><span class="lineNum"> 472</span> :<span class="tlaGNC"> 193 : std::string ValidateBranch(const SignalInfo &signal, const SignalInfo *selector) {</span></span>
|
||||
<span id="L473"><span class="lineNum"> 473</span> [<span class="tlaGBC" title="Branch 0 was taken 164 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 29 times"> + </span>]:<span class="tlaGNC"> 193 : if (signal.multiplexing.role != MultiplexRole::Branch)</span></span>
|
||||
<span id="L474"><span class="lineNum"> 474</span> :<span class="tlaGNC"> 164 : return {};</span></span>
|
||||
<span id="L475"><span class="lineNum"> 475</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 25 times"> + </span>]:<span class="tlaGNC"> 29 : if (selector == nullptr)</span></span>
|
||||
<span id="L476"><span class="lineNum"> 476</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 8 : return "Multiplexed branch has no selector.";</span></span>
|
||||
<span id="L477"><span class="lineNum"> 477</span> [<span class="tlaGBC" title="Branch 0 was taken 24 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 2 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 19 times"> + </span>]:<span class="tlaGNC"> 25 : if (selector->length < 64U && signal.multiplexing.value >= (std::uint64_t(1U) << selector->length))</span></span>
|
||||
<span id="L478"><span class="lineNum"> 478</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 10 : return "Branch value exceeds selector raw range.";</span></span>
|
||||
<span id="L479"><span class="lineNum"> 479</span> :<span class="tlaGNC"> 20 : return {};</span></span>
|
||||
<span id="L480"><span class="lineNum"> 480</span> : : }</span>
|
||||
<span id="L481"><span class="lineNum"> 481</span> : : </span>
|
||||
<span id="L482"><span class="lineNum"> 482</span> :<span class="tlaGNC"> 280 : const SignalInfo *FindSelector(const FrameInfo &frame,</span></span>
|
||||
<span id="L483"><span class="lineNum"> 483</span> : : const std::vector<std::size_t> &lines,</span>
|
||||
<span id="L484"><span class="lineNum"> 484</span> : : const std::string &filePath) {</span>
|
||||
<span id="L485"><span class="lineNum"> 485</span> :<span class="tlaGNC"> 280 : const SignalInfo *selector = nullptr;</span></span>
|
||||
<span id="L486"><span class="lineNum"> 486</span> [<span class="tlaGBC" title="Branch 0 was taken 207 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 272 times"> + </span>]:<span class="tlaGNC"> 479 : for (std::size_t index = 0U; index < frame.signals.size(); ++index) {</span></span>
|
||||
<span id="L487"><span class="lineNum"> 487</span> :<span class="tlaGNC"> 207 : const SignalInfo &signal = frame.signals[index];</span></span>
|
||||
<span id="L488"><span class="lineNum"> 488</span> [<span class="tlaGBC" title="Branch 0 was taken 173 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 34 times"> + </span>]:<span class="tlaGNC"> 207 : if (signal.multiplexing.role != MultiplexRole::Selector)</span></span>
|
||||
<span id="L489"><span class="lineNum"> 489</span> :<span class="tlaGNC"> 173 : continue;</span></span>
|
||||
<span id="L490"><span class="lineNum"> 490</span> [<span class="tlaGBC" title="Branch 0 was taken 30 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 26 times"> + </span>]:<span class="tlaGNC"> 34 : if (selector != nullptr || signal.isSigned)</span></span>
|
||||
<span id="L491"><span class="lineNum"> 491</span> : : throw DbcDiagnosticError(DbcDiagnosticCode::InvalidMultiplexing,</span>
|
||||
<span id="L492"><span class="lineNum"> 492</span> :<span class="tlaGNC"> 8 : filePath, lines[index],</span></span>
|
||||
<span id="L493"><span class="lineNum"> 493</span> [<span class="tlaGBC" title="Branch 0 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 32 : "Multiplexing requires one unsigned selector per frame.");</span></span>
|
||||
<span id="L494"><span class="lineNum"> 494</span> :<span class="tlaGNC"> 26 : selector = &signal;</span></span>
|
||||
<span id="L495"><span class="lineNum"> 495</span> : : }</span>
|
||||
<span id="L496"><span class="lineNum"> 496</span> :<span class="tlaGNC"> 272 : return selector;</span></span>
|
||||
<span id="L497"><span class="lineNum"> 497</span> : : }</span>
|
||||
<span id="L498"><span class="lineNum"> 498</span> : : </span>
|
||||
<span id="L499"><span class="lineNum"> 499</span> :<span class="tlaGNC"> 57 : bool SignalsOverlap(const SignalInfo &first, const SignalInfo &second) {</span></span>
|
||||
<span id="L500"><span class="lineNum"> 500</span> [<span class="tlaGBC" title="Branch 0 was taken 57 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 57 : const std::vector<std::uint64_t> firstBits = SignalBits(first);</span></span>
|
||||
<span id="L501"><span class="lineNum"> 501</span> [<span class="tlaGBC" title="Branch 0 was taken 57 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 57 : const std::vector<std::uint64_t> secondBits = SignalBits(second);</span></span>
|
||||
<span id="L502"><span class="lineNum"> 502</span> [<span class="tlaGBC" title="Branch 0 was taken 442 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 47 times"> + </span>]:<span class="tlaGNC"> 489 : for (const std::uint64_t firstBit : firstBits) {</span></span>
|
||||
<span id="L503"><span class="lineNum"> 503</span> [<span class="tlaGBC" title="Branch 0 was taken 2948 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 432 times"> + </span>]:<span class="tlaGNC"> 3380 : for (const std::uint64_t secondBit : secondBits) {</span></span>
|
||||
<span id="L504"><span class="lineNum"> 504</span> [<span class="tlaGBC" title="Branch 0 was taken 10 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2938 times"> + </span>]:<span class="tlaGNC"> 2948 : if (firstBit == secondBit)</span></span>
|
||||
<span id="L505"><span class="lineNum"> 505</span> :<span class="tlaGNC"> 10 : return true;</span></span>
|
||||
<span id="L506"><span class="lineNum"> 506</span> : : }</span>
|
||||
<span id="L507"><span class="lineNum"> 507</span> : : }</span>
|
||||
<span id="L508"><span class="lineNum"> 508</span> :<span class="tlaGNC"> 47 : return false;</span></span>
|
||||
<span id="L509"><span class="lineNum"> 509</span> :<span class="tlaGNC"> 57 : }</span></span>
|
||||
<span id="L510"><span class="lineNum"> 510</span> : : }</span>
|
||||
<span id="L511"><span class="lineNum"> 511</span> : : </span>
|
||||
<span id="L512"><span class="lineNum"> 512</span> :<span class="tlaGNC"> 576 : void DbcParseContext::ValidateMultiplexing(const std::string &filePath) const {</span></span>
|
||||
<span id="L513"><span class="lineNum"> 513</span> [<span class="tlaGBC" title="Branch 0 was taken 280 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 549 times"> + </span>]:<span class="tlaGNC"> 829 : for (std::size_t frameIndex = 0U; frameIndex < database.frames.size(); ++frameIndex) {</span></span>
|
||||
<span id="L514"><span class="lineNum"> 514</span> :<span class="tlaGNC"> 280 : const FrameInfo &frame = database.frames[frameIndex];</span></span>
|
||||
<span id="L515"><span class="lineNum"> 515</span> :<span class="tlaGNC"> 280 : const SignalInfo *selector = FindSelector(frame, signalLines[frameIndex], filePath);</span></span>
|
||||
<span id="L516"><span class="lineNum"> 516</span> [<span class="tlaGBC" title="Branch 0 was taken 193 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 253 times"> + </span>]:<span class="tlaGNC"> 446 : for (std::size_t index = 0U; index < frame.signals.size(); ++index) {</span></span>
|
||||
<span id="L517"><span class="lineNum"> 517</span> :<span class="tlaGNC"> 193 : const SignalInfo &signal = frame.signals[index];</span></span>
|
||||
<span id="L518"><span class="lineNum"> 518</span> [<span class="tlaGBC" title="Branch 0 was taken 193 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 193 : std::string error = ValidateBranch(signal, selector);</span></span>
|
||||
<span id="L519"><span class="lineNum"> 519</span> [<span class="tlaGBC" title="Branch 0 was taken 61 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 190 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 58 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 3 times"> + </span> :<span class="tlaGNC"> 251 : for (std::size_t previous = 0U; previous < index && error.empty(); ++previous) {</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 58 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 193 times"> + </span>]
|
||||
<span id="L520"><span class="lineNum"> 520</span> :<span class="tlaGNC"> 58 : const SignalInfo &other = frame.signals[previous];</span></span>
|
||||
<span id="L521"><span class="lineNum"> 521</span> [<span class="tlaGBC" title="Branch 0 was taken 57 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 2 was taken 57 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 58 : if (!AreMutuallyExclusive(signal, other) && SignalsOverlap(signal, other))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 10 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 47 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 10 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 48 times"> + </span>]
|
||||
<span id="L522"><span class="lineNum"> 522</span> [<span class="tlaGBC" title="Branch 0 was taken 10 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 10 : error = "Signals overlap without mutually exclusive multiplexing conditions.";</span></span>
|
||||
<span id="L523"><span class="lineNum"> 523</span> : : }</span>
|
||||
<span id="L524"><span class="lineNum"> 524</span> [<span class="tlaGBC" title="Branch 0 was taken 19 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 174 times"> + </span>]:<span class="tlaGNC"> 193 : if (!error.empty())</span></span>
|
||||
<span id="L525"><span class="lineNum"> 525</span> : : throw DbcDiagnosticError(DbcDiagnosticCode::InvalidMultiplexing,</span>
|
||||
<span id="L526"><span class="lineNum"> 526</span> [<span class="tlaGBC" title="Branch 0 was taken 19 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 19 : filePath, signalLines[frameIndex][index], error);</span></span>
|
||||
<span id="L527"><span class="lineNum"> 527</span> :<span class="tlaGNC"> 193 : }</span></span>
|
||||
<span id="L528"><span class="lineNum"> 528</span> : : }</span>
|
||||
<span id="L529"><span class="lineNum"> 529</span> :<span class="tlaGNC"> 549 : }</span></span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,173 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_statement_handler.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_statement_handler.h<span style="font-size: 80%;"> (<a href="dbc_statement_handler.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">45.5 %</td>
|
||||
<td class="headerCovTableEntry">22</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="dbc_statement_handler.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.h.gcov.html#L33">DbcDiagnosticError::DbcDiagnosticError(DbcDiagnosticCode, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">438</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<CountingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">14236</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<CountingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcCommentHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcFrameHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcSignalHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcUnsupportedMultiplexingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcValueDescriptionHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcAttributeHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">2847</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcHeaderHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">6643</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.h.gcov.html#L74">DbcStatementHandler::~DbcStatementHandler()</a></td>
|
||||
|
||||
<td class="coverFnHi">14250</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,173 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_statement_handler.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_statement_handler.h<span style="font-size: 80%;"> (<a href="dbc_statement_handler.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">45.5 %</td>
|
||||
<td class="headerCovTableEntry">22</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="dbc_statement_handler.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.h.gcov.html#L33">DbcDiagnosticError::DbcDiagnosticError(DbcDiagnosticCode, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">438</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.h.gcov.html#L74">DbcStatementHandler::~DbcStatementHandler()</a></td>
|
||||
|
||||
<td class="coverFnHi">14250</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<CountingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">14236</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<CountingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcAttributeHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">2847</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcCommentHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcFrameHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcHeaderHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">6643</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcSignalHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcUnsupportedMultiplexingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="dbc_statement_handler.h.gcov.html#L135">void DbcStatementDispatcher::RegisterType<DbcValueDescriptionHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,239 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_statement_handler.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_statement_handler.h<span style="font-size: 80%;"> (source / <a href="dbc_statement_handler.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">45.5 %</td>
|
||||
<td class="headerCovTableEntry">22</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : // SPDX-License-Identifier: MIT</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : #ifndef DBC_STATEMENT_HANDLER_H</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : #define DBC_STATEMENT_HANDLER_H</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : </span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : #include "dbc_database.h"</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : #include "dbc_diagnostic.h"</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : #include "typefactory.h"</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : #include <stdexcept></span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : #include <string></span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : #include <unordered_map></span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : /** @brief Deferred raw value descriptions and their target. */</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : struct PendingValueDescriptions {</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : std::uint32_t canId; /**< Normalized target frame identifier. */</span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : : bool isExtended; /**< Target frame type. */</span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : std::string signalName; /**< Target signal name. */</span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : : ValueDescriptions descriptions; /**< Raw integer descriptions to merge. */</span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : std::size_t lineNumber; /**< One-based physical statement line. */</span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : : };</span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : : </span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : : /** @brief Deferred frame or signal comment and its source location. */</span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : : struct PendingComment {</span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : : std::uint32_t canId; /**< Normalized target frame identifier. */</span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : : bool isExtended; /**< Target frame type. */</span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : : bool isSignal; /**< Whether the target is a signal rather than a frame. */</span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : : std::string signalName; /**< Target signal name. */</span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : : std::string comment; /**< Unescaped comment text. */</span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : : std::size_t lineNumber; /**< One-based physical statement line. */</span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> : : };</span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : : </span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> : : /** Carries deferred validation locations without parsing exception text. */</span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : : class DbcDiagnosticError : public std::runtime_error {</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : : public:</span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : : /** @brief Create an exception with a structured source diagnostic. */</span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> :<span class="tlaGNC"> 438 : DbcDiagnosticError(DbcDiagnosticCode code, const std::string &filePath,</span></span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> : : std::size_t lineNumber, const std::string &message)</span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> [<span class="tlaGBC" title="Branch 0 was taken 438 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 438 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 876 : : std::runtime_error(filePath + ":" + std::to_string(lineNumber) + ": " + message),</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 438 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 438 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span>]
|
||||
<span id="L38"><span class="lineNum"> 38</span> [<span class="tlaGBC" title="Branch 0 was taken 438 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 438 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span> :<span class="tlaGNC"> 1314 : diagnostic{DbcDiagnosticSeverity::Error, code, filePath, lineNumber, message} {}</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 438 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 438 times"> + </span><span class="tlaUNC" title="Branch 7 was not taken"> - </span><span class="tlaUNC" title="Branch 8 was not taken"> - </span>
|
||||
<span class="lineNum"> </span> <span class="tlaUNC" title="Branch 9 was not taken"> - </span>]
|
||||
<span id="L39"><span class="lineNum"> 39</span> : : </span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : : DbcDiagnostic diagnostic; /**< Structured error accompanying the exception message. */</span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> : : };</span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : : </span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> : : /** @brief Attribute statement retained for ordered resolution. */</span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> : : struct PendingAttribute {</span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> : : std::string statement; /**< Complete attribute statement. */</span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : : std::size_t lineNumber; /**< One-based physical statement line. */</span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : : };</span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> : : </span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> : : /** Mutable state belonging to one file parse. Handlers do not retain it. */</span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> : : struct DbcParseContext {</span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> : : DbcDatabase &database; /**< Parsed metadata under construction. */</span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> : : FrameInfo *currentFrame = nullptr; /**< Current frame for following signal definitions. */</span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> : : bool enableJ1939 = false; /**< Explicit interpretation option for extended frames. */</span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> : : std::size_t lineNumber = 0U; /**< Physical line of the current statement. */</span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> : : std::vector<PendingValueDescriptions> pendingValues = {}; /**< Unresolved raw value descriptions. */</span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> : : </span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> : : std::vector<std::vector<std::size_t>> signalLines = {}; /**< Signal definition lines grouped by frame. */</span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> : : /** @brief Validate selectors, branch ranges, and signal overlap. */</span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> : : void ValidateMultiplexing(const std::string &filePath) const;</span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> : : </span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> : : std::vector<PendingComment> pendingComments = {}; /**< Unresolved comments in source order. */</span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> : : /** @brief Resolve deferred comments after all definitions are known. */</span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> : : void ResolveComments(const std::string &filePath);</span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> : : </span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> : : std::vector<PendingAttribute> pendingAttributes = {}; /**< Unresolved attributes in source order. */</span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> : : /** @brief Resolve definitions, defaults, then assignments; append format warnings. */</span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> : : void ResolveAttributes(const std::string &filePath, std::vector<DbcDiagnostic> &diagnostics);</span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> : : </span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> : : /** @brief Resolve deferred raw descriptions against unique targets. */</span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> : : void ResolveValueDescriptions(const std::string &filePath);</span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> : : };</span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> : : </span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> : : /** @brief Interface for processing a registered DBC statement. */</span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> : : class DbcStatementHandler {</span>
|
||||
<span id="L75"><span class="lineNum"> 75</span> : : public:</span>
|
||||
<span id="L76"><span class="lineNum"> 76</span> :<span class="tlaGNC"> 14250 : virtual ~DbcStatementHandler() = default;</span></span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> : : /** @brief Process a trimmed statement using state belonging to this parse. */</span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> : : virtual void Handle(const std::string &line, DbcParseContext &context) const = 0;</span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> : : };</span>
|
||||
<span id="L80"><span class="lineNum"> 80</span> : : </span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> : : /** @brief Parse and append frame definitions. */</span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> : : class DbcFrameHandler : public DbcStatementHandler {</span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> : : public:</span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> : : void Handle(const std::string &line, DbcParseContext &context) const override;</span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> : : </span>
|
||||
<span id="L86"><span class="lineNum"> 86</span> : : private:</span>
|
||||
<span id="L87"><span class="lineNum"> 87</span> : : static FrameInfo ParseFrameLine(const std::string &line);</span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> : : };</span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> : : </span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> : : /** @brief Parse and append signals to the current frame. */</span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> : : class DbcSignalHandler : public DbcStatementHandler {</span>
|
||||
<span id="L92"><span class="lineNum"> 92</span> : : public:</span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> : : void Handle(const std::string &line, DbcParseContext &context) const override;</span>
|
||||
<span id="L94"><span class="lineNum"> 94</span> : : </span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> : : private:</span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> : : static SignalInfo ParseSignalLine(const std::string &line);</span>
|
||||
<span id="L97"><span class="lineNum"> 97</span> : : };</span>
|
||||
<span id="L98"><span class="lineNum"> 98</span> : : </span>
|
||||
<span id="L99"><span class="lineNum"> 99</span> : : /** @brief Defer frame and signal comments for target resolution. */</span>
|
||||
<span id="L100"><span class="lineNum"> 100</span> : : class DbcCommentHandler : public DbcStatementHandler {</span>
|
||||
<span id="L101"><span class="lineNum"> 101</span> : : public:</span>
|
||||
<span id="L102"><span class="lineNum"> 102</span> : : void Handle(const std::string &line, DbcParseContext &context) const override;</span>
|
||||
<span id="L103"><span class="lineNum"> 103</span> : : };</span>
|
||||
<span id="L104"><span class="lineNum"> 104</span> : : </span>
|
||||
<span id="L105"><span class="lineNum"> 105</span> : : /** @brief Defer typed attribute statements for resolution. */</span>
|
||||
<span id="L106"><span class="lineNum"> 106</span> : : class DbcAttributeHandler : public DbcStatementHandler {</span>
|
||||
<span id="L107"><span class="lineNum"> 107</span> : : public:</span>
|
||||
<span id="L108"><span class="lineNum"> 108</span> : : void Handle(const std::string &line, DbcParseContext &context) const override;</span>
|
||||
<span id="L109"><span class="lineNum"> 109</span> : : };</span>
|
||||
<span id="L110"><span class="lineNum"> 110</span> : : </span>
|
||||
<span id="L111"><span class="lineNum"> 111</span> : : /** @brief Defer raw value descriptions for target resolution. */</span>
|
||||
<span id="L112"><span class="lineNum"> 112</span> : : class DbcValueDescriptionHandler : public DbcStatementHandler {</span>
|
||||
<span id="L113"><span class="lineNum"> 113</span> : : public:</span>
|
||||
<span id="L114"><span class="lineNum"> 114</span> : : void Handle(const std::string &line, DbcParseContext &context) const override;</span>
|
||||
<span id="L115"><span class="lineNum"> 115</span> : : };</span>
|
||||
<span id="L116"><span class="lineNum"> 116</span> : : </span>
|
||||
<span id="L117"><span class="lineNum"> 117</span> : : /** @brief Reject unsupported extended multiplexing statements. */</span>
|
||||
<span id="L118"><span class="lineNum"> 118</span> : : class DbcUnsupportedMultiplexingHandler : public DbcStatementHandler {</span>
|
||||
<span id="L119"><span class="lineNum"> 119</span> : : public:</span>
|
||||
<span id="L120"><span class="lineNum"> 120</span> : : void Handle(const std::string &line, DbcParseContext &context) const override;</span>
|
||||
<span id="L121"><span class="lineNum"> 121</span> : : };</span>
|
||||
<span id="L122"><span class="lineNum"> 122</span> : : </span>
|
||||
<span id="L123"><span class="lineNum"> 123</span> : : /** Common header metadata does not change the supported decode definitions. */</span>
|
||||
<span id="L124"><span class="lineNum"> 124</span> : : class DbcHeaderHandler : public DbcStatementHandler {</span>
|
||||
<span id="L125"><span class="lineNum"> 125</span> : : public:</span>
|
||||
<span id="L126"><span class="lineNum"> 126</span> : : void Handle(const std::string &line, DbcParseContext &context) const override;</span>
|
||||
<span id="L127"><span class="lineNum"> 127</span> : : };</span>
|
||||
<span id="L128"><span class="lineNum"> 128</span> : : </span>
|
||||
<span id="L129"><span class="lineNum"> 129</span> : : /** Exact-key dispatch to handlers created once per registration via TypeFactory. */</span>
|
||||
<span id="L130"><span class="lineNum"> 130</span> : : class DbcStatementDispatcher {</span>
|
||||
<span id="L131"><span class="lineNum"> 131</span> : : public:</span>
|
||||
<span id="L132"><span class="lineNum"> 132</span> : : /** @brief Register supported statement handlers through TypeFactory. */</span>
|
||||
<span id="L133"><span class="lineNum"> 133</span> : : DbcStatementDispatcher();</span>
|
||||
<span id="L134"><span class="lineNum"> 134</span> : : </span>
|
||||
<span id="L135"><span class="lineNum"> 135</span> : : /** @brief Register or replace a handler and create its reusable instance. */</span>
|
||||
<span id="L136"><span class="lineNum"> 136</span> : : template<class Handler></span>
|
||||
<span id="L137"><span class="lineNum"> 137</span> :<span class="tlaGNC"> 14236 : void RegisterType(const std::string &keyword) {</span></span>
|
||||
<span id="L138"><span class="lineNum"> 138</span> :<span class="tlaGNC"> 14236 : m_factory.registerType<Handler>(keyword);</span></span>
|
||||
<span id="L139"><span class="lineNum"> 139</span> [<span class="tlaGBC" title="Branch 0 was taken 14236 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 14236 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 14236 : m_handlers.insert_or_assign(keyword, m_factory.create(keyword));</span></span>
|
||||
<span id="L140"><span class="lineNum"> 140</span> :<span class="tlaGNC"> 14236 : }</span></span>
|
||||
<span id="L141"><span class="lineNum"> 141</span> : : </span>
|
||||
<span id="L142"><span class="lineNum"> 142</span> : : /** Returns false for an unregistered keyword; input must be trimmed. */</span>
|
||||
<span id="L143"><span class="lineNum"> 143</span> : : bool Dispatch(const std::string &line, DbcParseContext &context) const;</span>
|
||||
<span id="L144"><span class="lineNum"> 144</span> : : </span>
|
||||
<span id="L145"><span class="lineNum"> 145</span> : : private:</span>
|
||||
<span id="L146"><span class="lineNum"> 146</span> : : using HandlerMap = std::unordered_map<std::string, std::shared_ptr<DbcStatementHandler>>;</span>
|
||||
<span id="L147"><span class="lineNum"> 147</span> : : TypeFactory<std::string, DbcStatementHandler> m_factory;</span>
|
||||
<span id="L148"><span class="lineNum"> 148</span> : : HandlerMap m_handlers;</span>
|
||||
<span id="L149"><span class="lineNum"> 149</span> : : };</span>
|
||||
<span id="L150"><span class="lineNum"> 150</span> : : </span>
|
||||
<span id="L151"><span class="lineNum"> 151</span> : : #endif /* DBC_STATEMENT_HANDLER_H */</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_tree_builder.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_tree_builder.cpp<span style="font-size: 80%;"> (<a href="dbc_tree_builder.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">91.7 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">11</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">66.7 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="dbc_tree_builder.cpp.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_tree_builder.cpp.gcov.html#L12">DbcTreeBuilder::Build(DbcDatabase const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">22</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_tree_builder.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_tree_builder.cpp<span style="font-size: 80%;"> (<a href="dbc_tree_builder.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">91.7 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">11</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">66.7 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="dbc_tree_builder.cpp.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dbc_tree_builder.cpp.gcov.html#L12">DbcTreeBuilder::Build(DbcDatabase const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">22</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,114 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/dbc_tree_builder.cpp</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - dbc_tree_builder.cpp<span style="font-size: 80%;"> (source / <a href="dbc_tree_builder.cpp.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">91.7 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">11</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">66.7 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : * @file dbc_tree_builder.cpp</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : * @brief Construction of frame and signal metadata trees.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : #include "dbc_tree_builder.h"</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : </span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> :<span class="tlaGNC"> 22 : std::unique_ptr<TreeNode> DbcTreeBuilder::Build(const DbcDatabase &database) const {</span></span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> :<span class="tlaGNC"> 22 : std::unique_ptr<TreeNode> root = std::make_unique<TreeNode>();</span></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : </span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> [<span class="tlaGBC" title="Branch 0 was taken 31 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 22 times"> + </span>]:<span class="tlaGNC"> 53 : for (const FrameInfo &frame : database.frames) {</span></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> [<span class="tlaGBC" title="Branch 0 was taken 31 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 31 : std::unique_ptr<TreeNode> frameNode = std::make_unique<TreeNode>(frame);</span></span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : : </span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> [<span class="tlaGBC" title="Branch 0 was taken 44 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 31 times"> + </span>]:<span class="tlaGNC"> 75 : for (const SignalInfo &signal : frame.signals) {</span></span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> [<span class="tlaGBC" title="Branch 0 was taken 44 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 44 : std::unique_ptr<TreeNode> signalNode = std::make_unique<TreeNode>(signal);</span></span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> [<span class="tlaGBC" title="Branch 0 was taken 44 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 44 : frameNode->AddChild(std::move(signalNode));</span></span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> :<span class="tlaGNC"> 44 : }</span></span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : : </span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> [<span class="tlaGBC" title="Branch 0 was taken 31 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 31 : root->AddChild(std::move(frameNode));</span></span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> :<span class="tlaGNC"> 31 : }</span></span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : : </span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> :<span class="tlaGNC"> 22 : return root;</span></span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> :<span class="tlaUNC"> 0 : }</span></span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,165 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/decode_database.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - decode_database.cpp<span style="font-size: 80%;"> (<a href="decode_database.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">99.1 %</td>
|
||||
<td class="headerCovTableEntry">110</td>
|
||||
<td class="headerCovTableEntry">109</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">80.2 %</td>
|
||||
<td class="headerCovTableEntry">182</td>
|
||||
<td class="headerCovTableEntry">146</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="decode_database.cpp.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L144">DecodeDatabase::FindSignal(SignalKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">53</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L46">(anonymous namespace)::AreMutuallyExclusive(DecodeSignal const&, DecodeSignal const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">71</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L113">DecodeDatabase::GetFrames() const</a></td>
|
||||
|
||||
<td class="coverFnHi">76</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L128">DecodeDatabase::FindFrameByPgn(unsigned int) const</a></td>
|
||||
|
||||
<td class="coverFnHi">116</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L33">(anonymous namespace)::GetSignalBits(DecodeSignal const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">2364</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L109">DecodeDatabase::DecodeDatabase(std::vector<DecodeFrame, std::allocator<DecodeFrame> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">2394</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L91">DecodeDatabase::Storage::Storage(std::vector<DecodeFrame, std::allocator<DecodeFrame> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">2394</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L52">(anonymous namespace)::ValidateFrame(DecodeFrame const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">2447</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L15">(anonymous namespace)::ValidateSignal(DecodeSignal const&, unsigned char)</a></td>
|
||||
|
||||
<td class="coverFnHi">2476</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L118">DecodeDatabase::FindFrame(FrameKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">6555</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,165 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/decode_database.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - decode_database.cpp<span style="font-size: 80%;"> (<a href="decode_database.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">99.1 %</td>
|
||||
<td class="headerCovTableEntry">110</td>
|
||||
<td class="headerCovTableEntry">109</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">80.2 %</td>
|
||||
<td class="headerCovTableEntry">182</td>
|
||||
<td class="headerCovTableEntry">146</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="decode_database.cpp.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L46">(anonymous namespace)::AreMutuallyExclusive(DecodeSignal const&, DecodeSignal const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">71</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L33">(anonymous namespace)::GetSignalBits(DecodeSignal const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">2364</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L52">(anonymous namespace)::ValidateFrame(DecodeFrame const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">2447</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L15">(anonymous namespace)::ValidateSignal(DecodeSignal const&, unsigned char)</a></td>
|
||||
|
||||
<td class="coverFnHi">2476</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L109">DecodeDatabase::DecodeDatabase(std::vector<DecodeFrame, std::allocator<DecodeFrame> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">2394</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L118">DecodeDatabase::FindFrame(FrameKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">6555</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L128">DecodeDatabase::FindFrameByPgn(unsigned int) const</a></td>
|
||||
|
||||
<td class="coverFnHi">116</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L144">DecodeDatabase::FindSignal(SignalKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">53</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L113">DecodeDatabase::GetFrames() const</a></td>
|
||||
|
||||
<td class="coverFnHi">76</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.cpp.gcov.html#L91">DecodeDatabase::Storage::Storage(std::vector<DecodeFrame, std::allocator<DecodeFrame> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">2394</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,243 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/decode_database.cpp</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - decode_database.cpp<span style="font-size: 80%;"> (source / <a href="decode_database.cpp.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">99.1 %</td>
|
||||
<td class="headerCovTableEntry">110</td>
|
||||
<td class="headerCovTableEntry">109</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">80.2 %</td>
|
||||
<td class="headerCovTableEntry">182</td>
|
||||
<td class="headerCovTableEntry">146</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : // SPDX-License-Identifier: MIT</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : // Copyright (c) 2026 Dim Himro</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : </span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : #include "decode_database.h"</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : #include "j1939.h"</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : #include "signal_layout.h"</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : #include <bitset></span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : #include <cmath></span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : #include <limits></span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : #include <stdexcept></span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : #include <unordered_set></span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : </span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : namespace {</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : constexpr std::size_t MaximumPayloadBits = std::numeric_limits<std::uint8_t>::max() * 8U;</span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : : using SignalBits = std::bitset<MaximumPayloadBits>;</span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : </span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> :<span class="tlaGNC"> 2476 : void ValidateSignal(const DecodeSignal &signal, std::uint8_t dlc) {</span></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> [<span class="tlaGBC" title="Branch 0 was taken 1133 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1343 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1130 times"> + </span>]:<span class="tlaGNC"> 2476 : if (signal.byteOrder != ByteOrder::Intel && signal.byteOrder != ByteOrder::Motorola)</span></span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 3 : throw std::invalid_argument("Invalid signal byte order: " + signal.name);</span></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> [<span class="tlaGBC" title="Branch 0 was taken 93 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2380 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 90 times"> + </span>]:<span class="tlaGNC"> 2473 : if (signal.valueType != ValueType::Unsigned && signal.valueType != ValueType::Signed)</span></span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 3 : throw std::invalid_argument("Invalid signal value type: " + signal.name);</span></span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> [<span class="tlaGBC" title="Branch 0 was taken 75 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2395 times"> + </span>]:<span class="tlaGNC"> 2470 : if (signal.multiplexing.role != MultiplexRole::Unconditional &&</span></span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> [<span class="tlaGBC" title="Branch 0 was taken 38 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 37 times"> + </span>]:<span class="tlaGNC"> 75 : signal.multiplexing.role != MultiplexRole::Selector &&</span></span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 34 times"> + </span>]:<span class="tlaGNC"> 38 : signal.multiplexing.role != MultiplexRole::Branch)</span></span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::invalid_argument("Invalid multiplexing role: " + signal.name);</span></span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> [<span class="tlaGBC" title="Branch 0 was taken 36 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2430 times"> + </span>]:<span class="tlaGNC"> 2466 : if (!IsValidSignalLayout(signal.startBit, signal.length,</span></span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> :<span class="tlaGNC"> 2466 : signal.byteOrder == ByteOrder::Intel, dlc))</span></span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> [<span class="tlaGBC" title="Branch 0 was taken 36 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 36 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 36 : throw std::invalid_argument("Invalid signal length or payload position: " + signal.name);</span></span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> [<span class="tlaGBC" title="Branch 0 was taken 2405 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 12 times"> + </span>]:<span class="tlaGNC"> 4847 : if (!std::isfinite(signal.factor) || !std::isfinite(signal.offset) ||</span></span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> [<span class="tlaGBC" title="Branch 0 was taken 2417 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 13 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 2399 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 6 times"> + </span> :<span class="tlaGNC"> 7240 : !std::isfinite(signal.minimum) || !std::isfinite(signal.maximum) ||</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2393 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 39 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 2391 times"> + </span>]
|
||||
<span id="L31"><span class="lineNum"> 31</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2391 times"> + </span>]:<span class="tlaGNC"> 2393 : signal.minimum > signal.maximum)</span></span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> [<span class="tlaGBC" title="Branch 0 was taken 39 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 39 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 39 : throw std::invalid_argument("Invalid signal numeric parameters: " + signal.name);</span></span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> :<span class="tlaGNC"> 2391 : }</span></span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : : </span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> :<span class="tlaGNC"> 2364 : SignalBits GetSignalBits(const DecodeSignal &signal) {</span></span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> :<span class="tlaGNC"> 2364 : SignalBits bits;</span></span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> :<span class="tlaGNC"> 2364 : const bool littleEndian = signal.byteOrder == ByteOrder::Intel;</span></span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> :<span class="tlaGNC"> 2364 : const std::uint64_t start = SignalStartCoordinate(signal.startBit, littleEndian);</span></span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> [<span class="tlaGBC" title="Branch 0 was taken 73229 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2364 times"> + </span>]:<span class="tlaGNC"> 75593 : for (std::uint32_t index = 0U; index < signal.length; ++index) {</span></span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> :<span class="tlaGNC"> 73229 : const std::uint64_t coordinate = start + index;</span></span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> [<span class="tlaGBC" title="Branch 0 was taken 37131 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 36098 times"> + </span>]:<span class="tlaGNC"> 73229 : const std::uint64_t bit = littleEndian ? coordinate</span></span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> :<span class="tlaGNC"> 36098 : : coordinate / 8U * 8U + 7U - coordinate % 8U;</span></span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> :<span class="tlaGNC"> 73229 : bits.set(static_cast<std::size_t>(bit));</span></span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> : : }</span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> :<span class="tlaGNC"> 2364 : return bits;</span></span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : : }</span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : : </span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> :<span class="tlaGNC"> 71 : bool AreMutuallyExclusive(const DecodeSignal &first, const DecodeSignal &second) {</span></span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> :<span class="tlaGNC"> 96 : return first.multiplexing.role == MultiplexRole::Branch &&</span></span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> [<span class="tlaGBC" title="Branch 0 was taken 25 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 46 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 19 times"> + </span>]:<span class="tlaGNC"> 77 : second.multiplexing.role == MultiplexRole::Branch &&</span></span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3 times"> + </span>]:<span class="tlaGNC"> 77 : first.multiplexing.value != second.multiplexing.value;</span></span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> : : }</span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> : : </span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> :<span class="tlaGNC"> 2447 : void ValidateFrame(const DecodeFrame &frame) {</span></span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> [<span class="tlaGBC" title="Branch 0 was taken 72 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2375 times"> + </span>]:<span class="tlaGNC"> 2447 : const std::uint32_t maximumId = frame.isExtended ? 0x1FFFFFFFU : 0x7FFU;</span></span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> [<span class="tlaGBC" title="Branch 0 was taken 9 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2438 times"> + </span>]:<span class="tlaGNC"> 2447 : if (frame.canId > maximumId)</span></span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> [<span class="tlaGBC" title="Branch 0 was taken 9 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 9 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 9 : throw std::invalid_argument("Invalid normalized CAN ID: " + std::to_string(frame.canId));</span></span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> : : </span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> [<span class="tlaGBC" title="Branch 0 was taken 24 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2414 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 23 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1 time"> + </span> :<span class="tlaGNC"> 2438 : if (frame.hasPgn && (!frame.isExtended || frame.pgn != ExtractJ1939Pgn(frame.canId)))</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 21 times"> + </span><span class="tlaGBC" title="Branch 6 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 2435 times"> + </span>]
|
||||
<span id="L60"><span class="lineNum"> 60</span> [<span class="tlaGBC" title="Branch 0 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 3 : throw std::invalid_argument("Invalid J1939 PGN metadata: " + frame.name);</span></span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> : : </span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> :<span class="tlaGNC"> 2435 : std::unordered_set<std::string> names;</span></span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> :<span class="tlaGNC"> 2435 : const DecodeSignal *selector = nullptr;</span></span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> [<span class="tlaGBC" title="Branch 0 was taken 2480 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2340 times"> + </span>]:<span class="tlaGNC"> 4820 : for (const DecodeSignal &signal: frame.signals) {</span></span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> [<span class="tlaGBC" title="Branch 0 was taken 2480 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2476 times"> + </span>]:<span class="tlaGNC"> 2480 : if (!names.insert(signal.name).second)</span></span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 4 : throw std::invalid_argument("Duplicate runtime signal key: " + signal.name);</span></span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> [<span class="tlaGBC" title="Branch 0 was taken 2391 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 85 times"> + </span>]:<span class="tlaGNC"> 2476 : ValidateSignal(signal, frame.dlc);</span></span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> [<span class="tlaGBC" title="Branch 0 was taken 35 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2356 times"> + </span>]:<span class="tlaGNC"> 2391 : if (signal.multiplexing.role == MultiplexRole::Selector) {</span></span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> [<span class="tlaGBC" title="Branch 0 was taken 32 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 29 times"> + </span>]:<span class="tlaGNC"> 35 : if (selector != nullptr || signal.valueType != ValueType::Unsigned)</span></span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6 : throw std::invalid_argument("Multiplexing requires one unsigned selector per frame");</span></span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> :<span class="tlaGNC"> 29 : selector = &signal;</span></span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> : : }</span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> : : }</span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> : : </span>
|
||||
<span id="L75"><span class="lineNum"> 75</span> :<span class="tlaGNC"> 2340 : std::vector<SignalBits> layouts;</span></span>
|
||||
<span id="L76"><span class="lineNum"> 76</span> [<span class="tlaGBC" title="Branch 0 was taken 2340 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2340 : layouts.reserve(frame.signals.size());</span></span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> [<span class="tlaGBC" title="Branch 0 was taken 2372 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2324 times"> + </span>]:<span class="tlaGNC"> 4696 : for (std::size_t index = 0U; index < frame.signals.size(); ++index) {</span></span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> :<span class="tlaGNC"> 2372 : const DecodeSignal &signal = frame.signals[index];</span></span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> [<span class="tlaGBC" title="Branch 0 was taken 32 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2340 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 27 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 5 times"> + </span>]:<span class="tlaGNC"> 2372 : if (signal.multiplexing.role == MultiplexRole::Branch &&</span></span>
|
||||
<span id="L80"><span class="lineNum"> 80</span> :<span class="tlaGNC"> 27 : (selector == nullptr ||</span></span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> [<span class="tlaGBC" title="Branch 0 was taken 22 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 19 times"> + </span>]:<span class="tlaGNC"> 27 : (selector->length < 64U && signal.multiplexing.value >= (std::uint64_t(1U) << selector->length))))</span></span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> [<span class="tlaGBC" title="Branch 0 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 8 : throw std::invalid_argument("Missing selector or branch value outside selector range: " + signal.name);</span></span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> [<span class="tlaGBC" title="Branch 0 was taken 2364 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2364 : const SignalBits bits = GetSignalBits(signal);</span></span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> [<span class="tlaGBC" title="Branch 0 was taken 71 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2356 times"> + </span>]:<span class="tlaGNC"> 2427 : for (std::size_t previous = 0U; previous < index; ++previous) {</span></span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> [<span class="tlaGBC" title="Branch 0 was taken 68 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 8 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 60 times"> + </span> :<span class="tlaGNC"> 71 : if (!AreMutuallyExclusive(signal, frame.signals[previous]) && (bits & layouts[previous]).any())</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 8 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 63 times"> + </span>]
|
||||
<span id="L86"><span class="lineNum"> 86</span> [<span class="tlaGBC" title="Branch 0 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 8 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 8 : throw std::invalid_argument("Overlapping signals: " + signal.name);</span></span>
|
||||
<span id="L87"><span class="lineNum"> 87</span> : : }</span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> [<span class="tlaGBC" title="Branch 0 was taken 2356 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2356 : layouts.push_back(bits);</span></span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> : : }</span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> :<span class="tlaGNC"> 2451 : }</span></span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> : : }// namespace</span>
|
||||
<span id="L92"><span class="lineNum"> 92</span> : : </span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> :<span class="tlaGNC"> 2394 : DecodeDatabase::Storage::Storage(const std::vector<DecodeFrame> &definitions)</span></span>
|
||||
<span id="L94"><span class="lineNum"> 94</span> :<span class="tlaGNC"> 2394 : : frames(definitions) {</span></span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> : : // Validate the complete snapshot before creating its lookup index.</span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> :<span class="tlaGNC"> 2394 : std::unordered_set<FrameKey, FrameKeyHasher> keys;</span></span>
|
||||
<span id="L97"><span class="lineNum"> 97</span> [<span class="tlaGBC" title="Branch 0 was taken 2394 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2394 : keys.reserve(frames.size());</span></span>
|
||||
<span id="L98"><span class="lineNum"> 98</span> [<span class="tlaGBC" title="Branch 0 was taken 2447 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2266 times"> + </span>]:<span class="tlaGNC"> 4713 : for (const DecodeFrame &frame: frames) {</span></span>
|
||||
<span id="L99"><span class="lineNum"> 99</span> [<span class="tlaGBC" title="Branch 0 was taken 2324 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 123 times"> + </span>]:<span class="tlaGNC"> 2447 : ValidateFrame(frame);</span></span>
|
||||
<span id="L100"><span class="lineNum"> 100</span> [<span class="tlaGBC" title="Branch 0 was taken 2324 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2319 times"> + </span>]:<span class="tlaGNC"> 2324 : if (!keys.insert(frame.GetKey()).second)</span></span>
|
||||
<span id="L101"><span class="lineNum"> 101</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 5 : throw std::invalid_argument("Duplicate runtime frame key");</span></span>
|
||||
<span id="L102"><span class="lineNum"> 102</span> : : }</span>
|
||||
<span id="L103"><span class="lineNum"> 103</span> [<span class="tlaGBC" title="Branch 0 was taken 2266 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2266 : frameIndexByKey.reserve(frames.size());</span></span>
|
||||
<span id="L104"><span class="lineNum"> 104</span> [<span class="tlaGBC" title="Branch 0 was taken 2314 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2266 times"> + </span>]:<span class="tlaGNC"> 4580 : for (std::size_t index = 0U; index < frames.size(); ++index) {</span></span>
|
||||
<span id="L105"><span class="lineNum"> 105</span> [<span class="tlaGBC" title="Branch 0 was taken 2314 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2314 : frameIndexByKey.emplace(frames[index].GetKey(), index);</span></span>
|
||||
<span id="L106"><span class="lineNum"> 106</span> [<span class="tlaGBC" title="Branch 0 was taken 21 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2293 times"> + </span>]:<span class="tlaGNC"> 2314 : if (frames[index].hasPgn)</span></span>
|
||||
<span id="L107"><span class="lineNum"> 107</span> [<span class="tlaGBC" title="Branch 0 was taken 21 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 21 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 21 : frameIndicesByPgn[frames[index].pgn].push_back(index);</span></span>
|
||||
<span id="L108"><span class="lineNum"> 108</span> : : }</span>
|
||||
<span id="L109"><span class="lineNum"> 109</span> :<span class="tlaGNC"> 2778 : }</span></span>
|
||||
<span id="L110"><span class="lineNum"> 110</span> : : </span>
|
||||
<span id="L111"><span class="lineNum"> 111</span> :<span class="tlaGNC"> 2394 : DecodeDatabase::DecodeDatabase(const std::vector<DecodeFrame> &frames)</span></span>
|
||||
<span id="L112"><span class="lineNum"> 112</span> :<span class="tlaGNC"> 2394 : : storage(std::make_shared<const Storage>(frames)) {</span></span>
|
||||
<span id="L113"><span class="lineNum"> 113</span> :<span class="tlaGNC"> 2266 : }</span></span>
|
||||
<span id="L114"><span class="lineNum"> 114</span> : : </span>
|
||||
<span id="L115"><span class="lineNum"> 115</span> :<span class="tlaGNC"> 76 : const std::vector<DecodeFrame> &DecodeDatabase::GetFrames() const {</span></span>
|
||||
<span id="L116"><span class="lineNum"> 116</span> [<span class="tlaGBC" title="Branch 0 was taken 1 time"> + </span><span class="tlaGBC" title="Branch 1 was taken 75 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 1 time"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 76 : static const std::vector<DecodeFrame> empty;</span></span>
|
||||
<span id="L117"><span class="lineNum"> 117</span> [<span class="tlaGBC" title="Branch 0 was taken 74 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span>]:<span class="tlaGNC"> 76 : return storage ? storage->frames : empty;</span></span>
|
||||
<span id="L118"><span class="lineNum"> 118</span> : : }</span>
|
||||
<span id="L119"><span class="lineNum"> 119</span> : : </span>
|
||||
<span id="L120"><span class="lineNum"> 120</span> :<span class="tlaGNC"> 6555 : std::shared_ptr<const DecodeFrame> DecodeDatabase::FindFrame(const FrameKey &key) const {</span></span>
|
||||
<span id="L121"><span class="lineNum"> 121</span> [<span class="tlaGBC" title="Branch 0 was taken 16 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6539 times"> + </span>]:<span class="tlaGNC"> 6555 : if (!storage)</span></span>
|
||||
<span id="L122"><span class="lineNum"> 122</span> :<span class="tlaGNC"> 16 : return nullptr;</span></span>
|
||||
<span id="L123"><span class="lineNum"> 123</span> : : const std::unordered_map<FrameKey, std::size_t, FrameKeyHasher>::const_iterator it =</span>
|
||||
<span id="L124"><span class="lineNum"> 124</span> [<span class="tlaGBC" title="Branch 0 was taken 6539 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 6539 : storage->frameIndexByKey.find(key);</span></span>
|
||||
<span id="L125"><span class="lineNum"> 125</span> [<span class="tlaGBC" title="Branch 0 was taken 115 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 6424 times"> + </span>]:<span class="tlaGNC"> 6539 : if (it == storage->frameIndexByKey.end())</span></span>
|
||||
<span id="L126"><span class="lineNum"> 126</span> :<span class="tlaGNC"> 115 : return nullptr;</span></span>
|
||||
<span id="L127"><span class="lineNum"> 127</span> :<span class="tlaGNC"> 6424 : return std::shared_ptr<const DecodeFrame>(storage, &storage->frames[it->second]);</span></span>
|
||||
<span id="L128"><span class="lineNum"> 128</span> : : }</span>
|
||||
<span id="L129"><span class="lineNum"> 129</span> : : </span>
|
||||
<span id="L130"><span class="lineNum"> 130</span> :<span class="tlaGNC"> 116 : PgnLookupResult DecodeDatabase::FindFrameByPgn(std::uint32_t pgn) const {</span></span>
|
||||
<span id="L131"><span class="lineNum"> 131</span> :<span class="tlaGNC"> 116 : PgnLookupResult result;</span></span>
|
||||
<span id="L132"><span class="lineNum"> 132</span> [<span class="tlaGBC" title="Branch 0 was taken 24 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 92 times"> + </span>]:<span class="tlaGNC"> 116 : if (!storage)</span></span>
|
||||
<span id="L133"><span class="lineNum"> 133</span> :<span class="tlaGNC"> 24 : return result;</span></span>
|
||||
<span id="L134"><span class="lineNum"> 134</span> : : const std::unordered_map<std::uint32_t, std::vector<std::size_t>>::const_iterator it =</span>
|
||||
<span id="L135"><span class="lineNum"> 135</span> [<span class="tlaGBC" title="Branch 0 was taken 92 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 92 : storage->frameIndicesByPgn.find(pgn);</span></span>
|
||||
<span id="L136"><span class="lineNum"> 136</span> [<span class="tlaGBC" title="Branch 0 was taken 47 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 45 times"> + </span>]:<span class="tlaGNC"> 92 : if (it == storage->frameIndicesByPgn.end())</span></span>
|
||||
<span id="L137"><span class="lineNum"> 137</span> :<span class="tlaGNC"> 47 : return result;</span></span>
|
||||
<span id="L138"><span class="lineNum"> 138</span> [<span class="tlaGBC" title="Branch 0 was taken 16 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 29 times"> + </span>]:<span class="tlaGNC"> 45 : if (it->second.size() != 1U) {</span></span>
|
||||
<span id="L139"><span class="lineNum"> 139</span> :<span class="tlaGNC"> 16 : result.ambiguous = true;</span></span>
|
||||
<span id="L140"><span class="lineNum"> 140</span> :<span class="tlaGNC"> 16 : return result;</span></span>
|
||||
<span id="L141"><span class="lineNum"> 141</span> : : }</span>
|
||||
<span id="L142"><span class="lineNum"> 142</span> :<span class="tlaGNC"> 29 : result.definition = std::shared_ptr<const DecodeFrame>(storage, &storage->frames[it->second[0]]);</span></span>
|
||||
<span id="L143"><span class="lineNum"> 143</span> :<span class="tlaGNC"> 29 : return result;</span></span>
|
||||
<span id="L144"><span class="lineNum"> 144</span> :<span class="tlaUNC"> 0 : }</span></span>
|
||||
<span id="L145"><span class="lineNum"> 145</span> : : </span>
|
||||
<span id="L146"><span class="lineNum"> 146</span> :<span class="tlaGNC"> 53 : std::shared_ptr<const DecodeSignal> DecodeDatabase::FindSignal(const SignalKey &key) const {</span></span>
|
||||
<span id="L147"><span class="lineNum"> 147</span> [<span class="tlaGBC" title="Branch 0 was taken 53 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 53 : const std::shared_ptr<const DecodeFrame> frame = FindFrame(key.frame);</span></span>
|
||||
<span id="L148"><span class="lineNum"> 148</span> [<span class="tlaGBC" title="Branch 0 was taken 10 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 43 times"> + </span>]:<span class="tlaGNC"> 53 : if (!frame)</span></span>
|
||||
<span id="L149"><span class="lineNum"> 149</span> :<span class="tlaGNC"> 10 : return nullptr;</span></span>
|
||||
<span id="L150"><span class="lineNum"> 150</span> [<span class="tlaGBC" title="Branch 0 was taken 48 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 5 times"> + </span>]:<span class="tlaGNC"> 53 : for (const DecodeSignal &signal: frame->signals) {</span></span>
|
||||
<span id="L151"><span class="lineNum"> 151</span> [<span class="tlaGBC" title="Branch 0 was taken 38 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 10 times"> + </span>]:<span class="tlaGNC"> 48 : if (signal.name == key.name)</span></span>
|
||||
<span id="L152"><span class="lineNum"> 152</span> :<span class="tlaGNC"> 38 : return std::shared_ptr<const DecodeSignal>(frame, &signal);</span></span>
|
||||
<span id="L153"><span class="lineNum"> 153</span> : : }</span>
|
||||
<span id="L154"><span class="lineNum"> 154</span> :<span class="tlaGNC"> 5 : return nullptr;</span></span>
|
||||
<span id="L155"><span class="lineNum"> 155</span> :<span class="tlaGNC"> 53 : }</span></span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,108 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/decode_database.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - decode_database.h<span style="font-size: 80%;"> (<a href="decode_database.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="decode_database.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.h.gcov.html#L101">DecodeDatabase::DecodeDatabase()</a></td>
|
||||
|
||||
<td class="coverFnHi">21</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.h.gcov.html#L81">DecodeFrame::DecodeFrame()</a></td>
|
||||
|
||||
<td class="coverFnHi">2400</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.h.gcov.html#L60">DecodeSignal::DecodeSignal()</a></td>
|
||||
|
||||
<td class="coverFnHi">2438</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.h.gcov.html#L84">DecodeFrame::GetKey() const</a></td>
|
||||
|
||||
<td class="coverFnHi">11038</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,108 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/decode_database.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - decode_database.h<span style="font-size: 80%;"> (<a href="decode_database.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="decode_database.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.h.gcov.html#L101">DecodeDatabase::DecodeDatabase()</a></td>
|
||||
|
||||
<td class="coverFnHi">21</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.h.gcov.html#L81">DecodeFrame::DecodeFrame()</a></td>
|
||||
|
||||
<td class="coverFnHi">2400</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.h.gcov.html#L84">DecodeFrame::GetKey() const</a></td>
|
||||
|
||||
<td class="coverFnHi">11038</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="decode_database.h.gcov.html#L60">DecodeSignal::DecodeSignal()</a></td>
|
||||
|
||||
<td class="coverFnHi">2438</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,209 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/decode_database.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - decode_database.h<span style="font-size: 80%;"> (source / <a href="decode_database.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : * @file decode_database.h</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : * @brief Runtime definitions and immutable indexed database.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : #ifndef DECODE_DATABASE_H</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : #define DECODE_DATABASE_H</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : </span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : #include "attributes.h"</span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : #include "definition_key.h"</span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : #include "multiplexing.h"</span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : #include "value_descriptions.h"</span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : #include <cstdint></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : #include <memory></span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : #include <string></span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : #include <unordered_map></span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : #include <vector></span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : </span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : /**</span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : * @brief Signal byte order used for runtime decoding.</span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : */</span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : enum class ByteOrder {</span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> : Intel,</span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : Motorola</span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> : };</span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : </span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : /**</span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : * @brief Signal numeric type.</span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : */</span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> : enum class ValueType {</span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : Unsigned,</span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> : Signed</span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : };</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : </span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> : /**</span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : * @brief Runtime-ready signal definition.</span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> : */</span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> : struct DecodeSignal {</span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> : Multiplexing multiplexing; /**< Selector role and branch value. */</span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : std::string name; /**< Signal name. */</span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : std::uint32_t startBit = 0U; /**< DBC start bit. */</span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> : std::uint32_t length = 0U; /**< Signal length in bits. */</span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> : ByteOrder byteOrder = ByteOrder::Intel; /**< Intel or Motorola. */</span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> : ValueType valueType = ValueType::Unsigned; /**< Signed or unsigned. */</span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> : double factor = 1.0; /**< Scaling factor. */</span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> : double offset = 0.0; /**< Physical offset. */</span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> : double minimum = 0.0; /**< Minimum physical value. */</span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> : double maximum = 0.0; /**< Maximum physical value. */</span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> : std::string unit; /**< Physical unit. */</span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> : std::vector<std::string> receivers; /**< Receivers. */</span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> : ValueDescriptions valueDescriptions; /**< Raw integer state descriptions. */</span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> : std::string comment; /**< Comment. */</span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> : </span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> : AttributeMap attributes; /**< Effective attributes after defaults and overrides. */</span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> : </span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> <span class="tlaGNC"> 2438 : DecodeSignal() = default;</span></span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> : };</span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> : </span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> : /**</span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> : * @brief Runtime-ready frame definition.</span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> : */</span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> : struct DecodeFrame {</span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> : std::string name; /**< Frame name. */</span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> : std::uint32_t canId = 0U; /**< Normalized CAN ID. */</span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> : bool isExtended = false; /**< true for extended frame. */</span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> : std::uint8_t dlc = 0U; /**< Payload length. */</span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> : std::uint32_t pgn = 0U; /**< PGN if available. */</span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> : bool hasPgn = false; /**< Explicit J1939 opt-in; pgn must match canId. */</span>
|
||||
<span id="L75"><span class="lineNum"> 75</span> : std::string transmitter; /**< Transmitter ECU. */</span>
|
||||
<span id="L76"><span class="lineNum"> 76</span> : std::string comment; /**< Frame comment. */</span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> : std::vector<DecodeSignal> signals; /**< Signal definitions. */</span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> : </span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> : AttributeMap attributes; /**< Effective attributes after defaults and overrides. */</span>
|
||||
<span id="L80"><span class="lineNum"> 80</span> : std::optional<std::string> frameFormat; /**< VFrameFormat label, when declared. */</span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> : std::optional<std::uint32_t> cycleTimeMs; /**< GenMsgCycleTime in milliseconds, when declared. */</span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> : </span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> <span class="tlaGNC"> 2400 : DecodeFrame() = default;</span></span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> : </span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> : /** @brief Return the stable normalized frame identifier. */</span>
|
||||
<span id="L86"><span class="lineNum"> 86</span> <span class="tlaGNC"> 11038 : FrameKey GetKey() const {</span></span>
|
||||
<span id="L87"><span class="lineNum"> 87</span> <span class="tlaGNC"> 11038 : return FrameKey(canId, isExtended);</span></span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> : }</span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> : };</span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> : </span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> : /** A PGN lookup rejects multiple definitions rather than choosing by order. */</span>
|
||||
<span id="L92"><span class="lineNum"> 92</span> : struct PgnLookupResult {</span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> : std::shared_ptr<const DecodeFrame> definition; /**< Owning matched definition; empty if missing or ambiguous. */</span>
|
||||
<span id="L94"><span class="lineNum"> 94</span> : bool ambiguous = false; /**< True when multiple definitions share the requested PGN. */</span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> : };</span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> : </span>
|
||||
<span id="L97"><span class="lineNum"> 97</span> : /**</span>
|
||||
<span id="L98"><span class="lineNum"> 98</span> : * @brief Immutable runtime snapshot. Copies share storage; reload replaces a snapshot.</span>
|
||||
<span id="L99"><span class="lineNum"> 99</span> : * Owning lookup handles and decoded results keep old definitions alive.</span>
|
||||
<span id="L100"><span class="lineNum"> 100</span> : */</span>
|
||||
<span id="L101"><span class="lineNum"> 101</span> : class DecodeDatabase {</span>
|
||||
<span id="L102"><span class="lineNum"> 102</span> : public:</span>
|
||||
<span id="L103"><span class="lineNum"> 103</span> <span class="tlaGNC"> 21 : DecodeDatabase() = default;</span></span>
|
||||
<span id="L104"><span class="lineNum"> 104</span> : /**</span>
|
||||
<span id="L105"><span class="lineNum"> 105</span> : * Copy and validate definitions before building the frame index.</span>
|
||||
<span id="L106"><span class="lineNum"> 106</span> : * Input aliases cannot modify the snapshot, even for rvalue input.</span>
|
||||
<span id="L107"><span class="lineNum"> 107</span> : * @throws std::invalid_argument for invalid metadata or duplicate keys.</span>
|
||||
<span id="L108"><span class="lineNum"> 108</span> : */</span>
|
||||
<span id="L109"><span class="lineNum"> 109</span> : explicit DecodeDatabase(const std::vector<DecodeFrame> &frames);</span>
|
||||
<span id="L110"><span class="lineNum"> 110</span> : </span>
|
||||
<span id="L111"><span class="lineNum"> 111</span> : /** Borrowed view, valid while this snapshot remains alive and unchanged. */</span>
|
||||
<span id="L112"><span class="lineNum"> 112</span> : const std::vector<DecodeFrame> &GetFrames() const;</span>
|
||||
<span id="L113"><span class="lineNum"> 113</span> : /** Owning handles retain the entire snapshot across reload or destruction. */</span>
|
||||
<span id="L114"><span class="lineNum"> 114</span> : std::shared_ptr<const DecodeFrame> FindFrame(const FrameKey &key) const;</span>
|
||||
<span id="L115"><span class="lineNum"> 115</span> : /** Only explicitly marked hasPgn frames participate; ambiguous results have no definition. */</span>
|
||||
<span id="L116"><span class="lineNum"> 116</span> : PgnLookupResult FindFrameByPgn(std::uint32_t pgn) const;</span>
|
||||
<span id="L117"><span class="lineNum"> 117</span> : /** @brief Return an owning signal handle, or an empty handle for a missing key. */</span>
|
||||
<span id="L118"><span class="lineNum"> 118</span> : std::shared_ptr<const DecodeSignal> FindSignal(const SignalKey &key) const;</span>
|
||||
<span id="L119"><span class="lineNum"> 119</span> : </span>
|
||||
<span id="L120"><span class="lineNum"> 120</span> : private:</span>
|
||||
<span id="L121"><span class="lineNum"> 121</span> : struct Storage {</span>
|
||||
<span id="L122"><span class="lineNum"> 122</span> : std::vector<DecodeFrame> frames;</span>
|
||||
<span id="L123"><span class="lineNum"> 123</span> : std::unordered_map<FrameKey, std::size_t, FrameKeyHasher> frameIndexByKey;</span>
|
||||
<span id="L124"><span class="lineNum"> 124</span> : </span>
|
||||
<span id="L125"><span class="lineNum"> 125</span> : std::unordered_map<std::uint32_t, std::vector<std::size_t>> frameIndicesByPgn;</span>
|
||||
<span id="L126"><span class="lineNum"> 126</span> : </span>
|
||||
<span id="L127"><span class="lineNum"> 127</span> : explicit Storage(const std::vector<DecodeFrame> &definitions);</span>
|
||||
<span id="L128"><span class="lineNum"> 128</span> : };</span>
|
||||
<span id="L129"><span class="lineNum"> 129</span> : </span>
|
||||
<span id="L130"><span class="lineNum"> 130</span> : std::shared_ptr<const Storage> storage;</span>
|
||||
<span id="L131"><span class="lineNum"> 131</span> : };</span>
|
||||
<span id="L132"><span class="lineNum"> 132</span> : </span>
|
||||
<span id="L133"><span class="lineNum"> 133</span> : #endif /* DECODE_DATABASE_H */</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,149 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/definition_key.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - definition_key.h<span style="font-size: 80%;"> (<a href="definition_key.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">18</td>
|
||||
<td class="headerCovTableEntry">18</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">70.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">7</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="definition_key.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L62">SignalKeyHasher::operator()(SignalKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">9</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L54">SignalKey::operator==(SignalKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">22</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L47">SignalKey::SignalKey()</a></td>
|
||||
|
||||
<td class="coverFnHi">6380</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L49">SignalKey::SignalKey(FrameKey, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)</a></td>
|
||||
|
||||
<td class="coverFnHi">6454</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L25">FrameKey::operator==(FrameKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">6502</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L35">FrameKeyHasher::operator()(FrameKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">11161</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L17">FrameKey::FrameKey()</a></td>
|
||||
|
||||
<td class="coverFnHi">12789</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L20">FrameKey::FrameKey(unsigned int, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">23974</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,149 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/definition_key.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - definition_key.h<span style="font-size: 80%;"> (<a href="definition_key.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">18</td>
|
||||
<td class="headerCovTableEntry">18</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">70.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">7</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="definition_key.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L17">FrameKey::FrameKey()</a></td>
|
||||
|
||||
<td class="coverFnHi">12789</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L20">FrameKey::FrameKey(unsigned int, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">23974</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L25">FrameKey::operator==(FrameKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">6502</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L35">FrameKeyHasher::operator()(FrameKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">11161</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L47">SignalKey::SignalKey()</a></td>
|
||||
|
||||
<td class="coverFnHi">6380</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L49">SignalKey::SignalKey(FrameKey, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)</a></td>
|
||||
|
||||
<td class="coverFnHi">6454</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L54">SignalKey::operator==(SignalKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">22</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="definition_key.h.gcov.html#L62">SignalKeyHasher::operator()(SignalKey const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">9</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,154 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/definition_key.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - definition_key.h<span style="font-size: 80%;"> (source / <a href="definition_key.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">18</td>
|
||||
<td class="headerCovTableEntry">18</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">70.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">7</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : // SPDX-License-Identifier: MIT</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : // Copyright (c) 2026 Dim Himro</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : </span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : #ifndef DEFINITION_KEY_H</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : #define DEFINITION_KEY_H</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : </span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : #include <cstdint></span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : #include <functional></span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : #include <string></span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : #include <utility></span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : /**</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : * @brief Stable frame identifier: normalized CAN ID and frame type.</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : */</span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : : struct FrameKey {</span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : std::uint32_t canId = 0U; /**< Normalized CAN identifier. */</span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : : bool isExtended = false; /**< True for extended CAN frames. */</span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : </span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> :<span class="tlaGNC"> 12789 : FrameKey() = default;</span></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : : </span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : : /** @brief Create a key from a normalized identifier and frame type. */</span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> :<span class="tlaGNC"> 23974 : FrameKey(std::uint32_t id, bool extended)</span></span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> :<span class="tlaGNC"> 23974 : : canId(id), isExtended(extended) {</span></span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> :<span class="tlaGNC"> 23974 : }</span></span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : : </span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : : /** @brief Compare all logical identity fields. */</span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> :<span class="tlaGNC"> 6502 : bool operator==(const FrameKey &other) const {</span></span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> [<span class="tlaGBC" title="Branch 0 was taken 6498 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 6498 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 6502 : return (canId == other.canId) && (isExtended == other.isExtended);</span></span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> : : }</span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : : };</span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> : : </span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : : /**</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : : * @brief Hasher for frame key.</span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : : */</span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : : struct FrameKeyHasher {</span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> : : /** @brief Hash the logical identity fields. */</span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> :<span class="tlaGNC"> 11161 : std::size_t operator()(const FrameKey &key) const {</span></span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> :<span class="tlaGNC"> 11161 : const std::size_t a = static_cast<std::size_t>(key.canId);</span></span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> [<span class="tlaGBC" title="Branch 0 was taken 273 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 10888 times"> + </span>]:<span class="tlaGNC"> 11161 : const std::size_t b = key.isExtended ? 1U : 0U;</span></span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> :<span class="tlaGNC"> 11161 : return (a * 1315423911U) ^ b;</span></span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> : : }</span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : : };</span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> : : </span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> : : /** Stable signal identifier within one logical DBC database. */</span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> : : struct SignalKey {</span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : : FrameKey frame; /**< Owning frame identity. */</span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : : std::string name; /**< Signal name within the frame. */</span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> : : </span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> :<span class="tlaGNC"> 6380 : SignalKey() = default;</span></span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> : : /** @brief Create a signal key from its frame identity and name. */</span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> :<span class="tlaGNC"> 6454 : SignalKey(FrameKey frameKey, std::string signalName)</span></span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> :<span class="tlaGNC"> 6454 : : frame(frameKey), name(std::move(signalName)) {</span></span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> :<span class="tlaGNC"> 6454 : }</span></span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> : : </span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> : : /** @brief Compare all logical identity fields. */</span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> :<span class="tlaGNC"> 22 : bool operator==(const SignalKey &other) const {</span></span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> [<span class="tlaGBC" title="Branch 0 was taken 22 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span><span class="tlaGBC" title="Branch 2 was taken 22 times"> + </span><span class="tlaUNC" title="Branch 3 was not taken"> - </span>]:<span class="tlaGNC"> 22 : return frame == other.frame && name == other.name;</span></span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> : : }</span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> : : };</span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> : : </span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> : : /** @brief Hasher for stable signal keys. */</span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> : : struct SignalKeyHasher {</span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> : : /** @brief Hash the logical identity fields. */</span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> :<span class="tlaGNC"> 9 : std::size_t operator()(const SignalKey &key) const {</span></span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> :<span class="tlaGNC"> 9 : return FrameKeyHasher()(key.frame) ^ (std::hash<std::string>()(key.name) << 1U);</span></span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> : : }</span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> : : };</span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> : : </span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> : : #endif /* DEFINITION_KEY_H */</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,84 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/frame_info.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - frame_info.h<span style="font-size: 80%;"> (<a href="frame_info.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="frame_info.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="frame_info.h.gcov.html#L39">FrameInfo::FrameInfo()</a></td>
|
||||
|
||||
<td class="coverFnHi">716</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,84 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/frame_info.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - frame_info.h<span style="font-size: 80%;"> (<a href="frame_info.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="frame_info.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="frame_info.h.gcov.html#L39">FrameInfo::FrameInfo()</a></td>
|
||||
|
||||
<td class="coverFnHi">716</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,120 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/frame_info.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - frame_info.h<span style="font-size: 80%;"> (source / <a href="frame_info.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : * @file frame_info.h</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : * @brief Parsed CAN frame metadata.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : #ifndef FRAME_INFO_H</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : #define FRAME_INFO_H</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : </span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : #include "attributes.h"</span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : #include <cstdint></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : #include <string></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : #include <vector></span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : </span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : #include "signal_info.h"</span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : </span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : /**</span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : * @brief Describes one CAN frame from a DBC file.</span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : */</span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : struct FrameInfo {</span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : std::string name; /**< Frame name. */</span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : std::uint32_t canId = 0U; /**< Normalized CAN identifier. */</span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : bool isExtended = false; /**< true for extended frame. */</span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> : std::uint32_t pgn = 0U; /**< J1939 PGN if applicable. */</span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : bool hasPgn = false; /**< Explicit J1939 opt-in; pgn is derived from canId. */</span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> : std::uint8_t dlc = 0U; /**< Frame payload length. */</span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : std::string transmitter; /**< Transmitter ECU name. */</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : std::string comment; /**< Optional frame comment. */</span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : std::vector<SignalInfo> signals; /**< Signals contained in the frame. */</span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : </span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> : std::optional<std::string> frameFormat; /**< VFrameFormat label, when declared. */ /**< VFrameFormat enum label. */</span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : std::optional<std::uint32_t> cycleTimeMs; /**< GenMsgCycleTime in milliseconds, when declared. */ /**< GenMsgCycleTime; zero means unspecified. */</span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> : </span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : AttributeMap attributes; /**< Effective attributes after defaults and overrides. */ /**< Effective values, including defaults. */</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : </span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> <span class="tlaGNC"> 716 : FrameInfo() = default;</span></span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : };</span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> : </span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> : #endif /* FRAME_INFO_H */</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,439 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - core</td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">98.6 %</td>
|
||||
<td class="headerCovTableEntry">1185</td>
|
||||
<td class="headerCovTableEntry">1168</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">71.6 %</td>
|
||||
<td class="headerCovTableEntry">2152</td>
|
||||
<td class="headerCovTableEntry">1540</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table width="80%" cellpadding=1 cellspacing=1 border=0>
|
||||
|
||||
<tr>
|
||||
<td width="40%"><br></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="tableHead" rowspan=2>File <span title="Click to sort table by file name" class="tableHeadSort"><a href="index.html"><img src="../updown.png" width=10 height=14 alt="Sort by file name" title="Click to sort table by file name" border=0></a></span></td>
|
||||
<td class="tableHead" colspan=4>Line Coverage <span title="Click to sort table by line coverage" class="tableHeadSort"><a href="index-sort-l.html"><img src="../updown.png" width=10 height=14 alt="Sort by line coverage" title="Click to sort table by line coverage" border=0></a></span></td>
|
||||
<td class="tableHead" colspan=3>Branch Coverage <span title="Click to sort table by branch coverage" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by branch coverage" title="Click to sort table by branch coverage" border=0></span></td>
|
||||
<td class="tableHead" colspan=3>Function Coverage <span title="Click to sort table by function coverage" class="tableHeadSort"><a href="index-sort-f.html"><img src="../updown.png" width=10 height=14 alt="Sort by function coverage" title="Click to sort table by function coverage" border=0></a></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableHead" colspan=2> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
<td class="tableHead"> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
<td class="tableHead"> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_parser.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_parser.h">dbc_parser.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="decode_database.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/decode_database.h">decode_database.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="frame_info.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/frame_info.h">frame_info.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="signal_info.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/signal_info.h">signal_info.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="tree_node.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/tree_node.h">tree_node.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_statement_handler.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h">dbc_statement_handler.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerLo">45.5 %</td>
|
||||
<td class="coverNumDflt">22</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="typefactory.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/typefactory.h">typefactory.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverPerLo">50.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">27</td>
|
||||
<td class="coverNumDflt">27</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decode_builder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decode_builder.cpp">dbc_decode_builder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverPerLo">62.5 %</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverNumDflt">25</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_tree_builder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_tree_builder.cpp">dbc_tree_builder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=92 height=10 alt="91.7%"><img src="../snow.png" width=8 height=10 alt="91.7%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">91.7 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">11</td>
|
||||
<td class="coverPerLo">66.7 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_statement_handler.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.cpp">dbc_statement_handler.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.5%"><img src="../snow.png" width=1 height=10 alt="99.5%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.5 %</td>
|
||||
<td class="coverNumDflt">370</td>
|
||||
<td class="coverNumDflt">368</td>
|
||||
<td class="coverPerLo">68.4 %</td>
|
||||
<td class="coverNumDflt">820</td>
|
||||
<td class="coverNumDflt">561</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">31</td>
|
||||
<td class="coverNumDflt">31</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="definition_key.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/definition_key.h">definition_key.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">18</td>
|
||||
<td class="coverNumDflt">18</td>
|
||||
<td class="coverPerLo">70.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">7</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_parser.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_parser.cpp">dbc_parser.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.0%"><img src="../snow.png" width=1 height=10 alt="99.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.0 %</td>
|
||||
<td class="coverNumDflt">99</td>
|
||||
<td class="coverNumDflt">98</td>
|
||||
<td class="coverPerLo">70.4 %</td>
|
||||
<td class="coverNumDflt">216</td>
|
||||
<td class="coverNumDflt">152</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decoder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decoder.cpp">dbc_decoder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=95 height=10 alt="94.9%"><img src="../snow.png" width=5 height=10 alt="94.9%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">94.9 %</td>
|
||||
<td class="coverNumDflt">156</td>
|
||||
<td class="coverNumDflt">148</td>
|
||||
<td class="coverPerLo">72.8 %</td>
|
||||
<td class="coverNumDflt">158</td>
|
||||
<td class="coverNumDflt">115</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_attributes.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_attributes.cpp">dbc_attributes.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="98.8%"><img src="../snow.png" width=1 height=10 alt="98.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">98.8 %</td>
|
||||
<td class="coverNumDflt">260</td>
|
||||
<td class="coverNumDflt">257</td>
|
||||
<td class="coverPerLo">73.5 %</td>
|
||||
<td class="coverNumDflt">604</td>
|
||||
<td class="coverNumDflt">444</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">20</td>
|
||||
<td class="coverNumDflt">20</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decoder.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decoder.h">dbc_decoder.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerMed">75.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">3</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="tree_node.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/tree_node.cpp">tree_node.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=98 height=10 alt="98.1%"><img src="../snow.png" width=2 height=10 alt="98.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">98.1 %</td>
|
||||
<td class="coverNumDflt">53</td>
|
||||
<td class="coverNumDflt">52</td>
|
||||
<td class="coverPerMed">76.2 %</td>
|
||||
<td class="coverNumDflt">42</td>
|
||||
<td class="coverNumDflt">32</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">15</td>
|
||||
<td class="coverNumDflt">15</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="decode_database.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/decode_database.cpp">decode_database.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.1%"><img src="../snow.png" width=1 height=10 alt="99.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.1 %</td>
|
||||
<td class="coverNumDflt">110</td>
|
||||
<td class="coverNumDflt">109</td>
|
||||
<td class="coverPerMed">80.2 %</td>
|
||||
<td class="coverNumDflt">182</td>
|
||||
<td class="coverNumDflt">146</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="value_descriptions.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/value_descriptions.h">value_descriptions.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerMed">87.5 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">7</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="j1939.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/j1939.h">j1939.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_diagnostic.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_diagnostic.h">dbc_diagnostic.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="signal_layout.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/signal_layout.h">signal_layout.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">6</td>
|
||||
<td class="coverNumDflt">6</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="text_utils.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/text_utils.h">text_utils.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,439 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - core</td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">98.6 %</td>
|
||||
<td class="headerCovTableEntry">1185</td>
|
||||
<td class="headerCovTableEntry">1168</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">71.6 %</td>
|
||||
<td class="headerCovTableEntry">2152</td>
|
||||
<td class="headerCovTableEntry">1540</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table width="80%" cellpadding=1 cellspacing=1 border=0>
|
||||
|
||||
<tr>
|
||||
<td width="40%"><br></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="tableHead" rowspan=2>File <span title="Click to sort table by file name" class="tableHeadSort"><a href="index.html"><img src="../updown.png" width=10 height=14 alt="Sort by file name" title="Click to sort table by file name" border=0></a></span></td>
|
||||
<td class="tableHead" colspan=4>Line Coverage <span title="Click to sort table by line coverage" class="tableHeadSort"><a href="index-sort-l.html"><img src="../updown.png" width=10 height=14 alt="Sort by line coverage" title="Click to sort table by line coverage" border=0></a></span></td>
|
||||
<td class="tableHead" colspan=3>Branch Coverage <span title="Click to sort table by branch coverage" class="tableHeadSort"><a href="index-sort-b.html"><img src="../updown.png" width=10 height=14 alt="Sort by branch coverage" title="Click to sort table by branch coverage" border=0></a></span></td>
|
||||
<td class="tableHead" colspan=3>Function Coverage <span title="Click to sort table by function coverage" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function coverage" title="Click to sort table by function coverage" border=0></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableHead" colspan=2> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
<td class="tableHead"> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
<td class="tableHead"> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decode_builder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decode_builder.cpp">dbc_decode_builder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverPerLo">62.5 %</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverNumDflt">25</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_diagnostic.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_diagnostic.h">dbc_diagnostic.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_parser.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_parser.h">dbc_parser.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_tree_builder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_tree_builder.cpp">dbc_tree_builder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=92 height=10 alt="91.7%"><img src="../snow.png" width=8 height=10 alt="91.7%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">91.7 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">11</td>
|
||||
<td class="coverPerLo">66.7 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="frame_info.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/frame_info.h">frame_info.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="j1939.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/j1939.h">j1939.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="signal_info.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/signal_info.h">signal_info.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="text_utils.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/text_utils.h">text_utils.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="tree_node.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/tree_node.h">tree_node.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="signal_layout.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/signal_layout.h">signal_layout.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">6</td>
|
||||
<td class="coverNumDflt">6</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="value_descriptions.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/value_descriptions.h">value_descriptions.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerMed">87.5 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">7</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decoder.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decoder.h">dbc_decoder.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerMed">75.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">3</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_parser.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_parser.cpp">dbc_parser.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.0%"><img src="../snow.png" width=1 height=10 alt="99.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.0 %</td>
|
||||
<td class="coverNumDflt">99</td>
|
||||
<td class="coverNumDflt">98</td>
|
||||
<td class="coverPerLo">70.4 %</td>
|
||||
<td class="coverNumDflt">216</td>
|
||||
<td class="coverNumDflt">152</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="decode_database.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/decode_database.h">decode_database.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="definition_key.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/definition_key.h">definition_key.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">18</td>
|
||||
<td class="coverNumDflt">18</td>
|
||||
<td class="coverPerLo">70.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">7</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_statement_handler.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h">dbc_statement_handler.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerLo">45.5 %</td>
|
||||
<td class="coverNumDflt">22</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="decode_database.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/decode_database.cpp">decode_database.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.1%"><img src="../snow.png" width=1 height=10 alt="99.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.1 %</td>
|
||||
<td class="coverNumDflt">110</td>
|
||||
<td class="coverNumDflt">109</td>
|
||||
<td class="coverPerMed">80.2 %</td>
|
||||
<td class="coverNumDflt">182</td>
|
||||
<td class="coverNumDflt">146</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decoder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decoder.cpp">dbc_decoder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=95 height=10 alt="94.9%"><img src="../snow.png" width=5 height=10 alt="94.9%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">94.9 %</td>
|
||||
<td class="coverNumDflt">156</td>
|
||||
<td class="coverNumDflt">148</td>
|
||||
<td class="coverPerLo">72.8 %</td>
|
||||
<td class="coverNumDflt">158</td>
|
||||
<td class="coverNumDflt">115</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="tree_node.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/tree_node.cpp">tree_node.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=98 height=10 alt="98.1%"><img src="../snow.png" width=2 height=10 alt="98.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">98.1 %</td>
|
||||
<td class="coverNumDflt">53</td>
|
||||
<td class="coverNumDflt">52</td>
|
||||
<td class="coverPerMed">76.2 %</td>
|
||||
<td class="coverNumDflt">42</td>
|
||||
<td class="coverNumDflt">32</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">15</td>
|
||||
<td class="coverNumDflt">15</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_attributes.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_attributes.cpp">dbc_attributes.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="98.8%"><img src="../snow.png" width=1 height=10 alt="98.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">98.8 %</td>
|
||||
<td class="coverNumDflt">260</td>
|
||||
<td class="coverNumDflt">257</td>
|
||||
<td class="coverPerLo">73.5 %</td>
|
||||
<td class="coverNumDflt">604</td>
|
||||
<td class="coverNumDflt">444</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">20</td>
|
||||
<td class="coverNumDflt">20</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="typefactory.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/typefactory.h">typefactory.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverPerLo">50.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">27</td>
|
||||
<td class="coverNumDflt">27</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_statement_handler.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.cpp">dbc_statement_handler.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.5%"><img src="../snow.png" width=1 height=10 alt="99.5%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.5 %</td>
|
||||
<td class="coverNumDflt">370</td>
|
||||
<td class="coverNumDflt">368</td>
|
||||
<td class="coverPerLo">68.4 %</td>
|
||||
<td class="coverNumDflt">820</td>
|
||||
<td class="coverNumDflt">561</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">31</td>
|
||||
<td class="coverNumDflt">31</td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,439 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - core</td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">98.6 %</td>
|
||||
<td class="headerCovTableEntry">1185</td>
|
||||
<td class="headerCovTableEntry">1168</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">71.6 %</td>
|
||||
<td class="headerCovTableEntry">2152</td>
|
||||
<td class="headerCovTableEntry">1540</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table width="80%" cellpadding=1 cellspacing=1 border=0>
|
||||
|
||||
<tr>
|
||||
<td width="40%"><br></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="tableHead" rowspan=2>File <span title="Click to sort table by file name" class="tableHeadSort"><a href="index.html"><img src="../updown.png" width=10 height=14 alt="Sort by file name" title="Click to sort table by file name" border=0></a></span></td>
|
||||
<td class="tableHead" colspan=4>Line Coverage <span title="Click to sort table by line coverage" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by line coverage" title="Click to sort table by line coverage" border=0></span></td>
|
||||
<td class="tableHead" colspan=3>Branch Coverage <span title="Click to sort table by branch coverage" class="tableHeadSort"><a href="index-sort-b.html"><img src="../updown.png" width=10 height=14 alt="Sort by branch coverage" title="Click to sort table by branch coverage" border=0></a></span></td>
|
||||
<td class="tableHead" colspan=3>Function Coverage <span title="Click to sort table by function coverage" class="tableHeadSort"><a href="index-sort-f.html"><img src="../updown.png" width=10 height=14 alt="Sort by function coverage" title="Click to sort table by function coverage" border=0></a></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableHead" colspan=2> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
<td class="tableHead"> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
<td class="tableHead"> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_tree_builder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_tree_builder.cpp">dbc_tree_builder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=92 height=10 alt="91.7%"><img src="../snow.png" width=8 height=10 alt="91.7%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">91.7 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">11</td>
|
||||
<td class="coverPerLo">66.7 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decoder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decoder.cpp">dbc_decoder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=95 height=10 alt="94.9%"><img src="../snow.png" width=5 height=10 alt="94.9%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">94.9 %</td>
|
||||
<td class="coverNumDflt">156</td>
|
||||
<td class="coverNumDflt">148</td>
|
||||
<td class="coverPerLo">72.8 %</td>
|
||||
<td class="coverNumDflt">158</td>
|
||||
<td class="coverNumDflt">115</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="tree_node.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/tree_node.cpp">tree_node.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=98 height=10 alt="98.1%"><img src="../snow.png" width=2 height=10 alt="98.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">98.1 %</td>
|
||||
<td class="coverNumDflt">53</td>
|
||||
<td class="coverNumDflt">52</td>
|
||||
<td class="coverPerMed">76.2 %</td>
|
||||
<td class="coverNumDflt">42</td>
|
||||
<td class="coverNumDflt">32</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">15</td>
|
||||
<td class="coverNumDflt">15</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_attributes.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_attributes.cpp">dbc_attributes.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="98.8%"><img src="../snow.png" width=1 height=10 alt="98.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">98.8 %</td>
|
||||
<td class="coverNumDflt">260</td>
|
||||
<td class="coverNumDflt">257</td>
|
||||
<td class="coverPerLo">73.5 %</td>
|
||||
<td class="coverNumDflt">604</td>
|
||||
<td class="coverNumDflt">444</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">20</td>
|
||||
<td class="coverNumDflt">20</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_parser.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_parser.cpp">dbc_parser.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.0%"><img src="../snow.png" width=1 height=10 alt="99.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.0 %</td>
|
||||
<td class="coverNumDflt">99</td>
|
||||
<td class="coverNumDflt">98</td>
|
||||
<td class="coverPerLo">70.4 %</td>
|
||||
<td class="coverNumDflt">216</td>
|
||||
<td class="coverNumDflt">152</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="decode_database.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/decode_database.cpp">decode_database.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.1%"><img src="../snow.png" width=1 height=10 alt="99.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.1 %</td>
|
||||
<td class="coverNumDflt">110</td>
|
||||
<td class="coverNumDflt">109</td>
|
||||
<td class="coverPerMed">80.2 %</td>
|
||||
<td class="coverNumDflt">182</td>
|
||||
<td class="coverNumDflt">146</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_statement_handler.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.cpp">dbc_statement_handler.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.5%"><img src="../snow.png" width=1 height=10 alt="99.5%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.5 %</td>
|
||||
<td class="coverNumDflt">370</td>
|
||||
<td class="coverNumDflt">368</td>
|
||||
<td class="coverPerLo">68.4 %</td>
|
||||
<td class="coverNumDflt">820</td>
|
||||
<td class="coverNumDflt">561</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">31</td>
|
||||
<td class="coverNumDflt">31</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_parser.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_parser.h">dbc_parser.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="frame_info.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/frame_info.h">frame_info.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="signal_info.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/signal_info.h">signal_info.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="tree_node.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/tree_node.h">tree_node.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="j1939.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/j1939.h">j1939.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decoder.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decoder.h">dbc_decoder.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerMed">75.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">3</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_diagnostic.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_diagnostic.h">dbc_diagnostic.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="decode_database.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/decode_database.h">decode_database.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="signal_layout.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/signal_layout.h">signal_layout.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">6</td>
|
||||
<td class="coverNumDflt">6</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_statement_handler.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h">dbc_statement_handler.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerLo">45.5 %</td>
|
||||
<td class="coverNumDflt">22</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="value_descriptions.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/value_descriptions.h">value_descriptions.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerMed">87.5 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">7</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="text_utils.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/text_utils.h">text_utils.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="typefactory.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/typefactory.h">typefactory.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverPerLo">50.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">27</td>
|
||||
<td class="coverNumDflt">27</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="definition_key.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/definition_key.h">definition_key.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">18</td>
|
||||
<td class="coverNumDflt">18</td>
|
||||
<td class="coverPerLo">70.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">7</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decode_builder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decode_builder.cpp">dbc_decode_builder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverPerLo">62.5 %</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverNumDflt">25</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,439 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - core</td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">98.6 %</td>
|
||||
<td class="headerCovTableEntry">1185</td>
|
||||
<td class="headerCovTableEntry">1168</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
<td class="headerCovTableEntry">158</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">71.6 %</td>
|
||||
<td class="headerCovTableEntry">2152</td>
|
||||
<td class="headerCovTableEntry">1540</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table width="80%" cellpadding=1 cellspacing=1 border=0>
|
||||
|
||||
<tr>
|
||||
<td width="40%"><br></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
<td width="6%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="tableHead" rowspan=2>File <span title="Click to sort table by file name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by file name" title="Click to sort table by file name" border=0></span></td>
|
||||
<td class="tableHead" colspan=4>Line Coverage <span title="Click to sort table by line coverage" class="tableHeadSort"><a href="index-sort-l.html"><img src="../updown.png" width=10 height=14 alt="Sort by line coverage" title="Click to sort table by line coverage" border=0></a></span></td>
|
||||
<td class="tableHead" colspan=3>Branch Coverage <span title="Click to sort table by branch coverage" class="tableHeadSort"><a href="index-sort-b.html"><img src="../updown.png" width=10 height=14 alt="Sort by branch coverage" title="Click to sort table by branch coverage" border=0></a></span></td>
|
||||
<td class="tableHead" colspan=3>Function Coverage <span title="Click to sort table by function coverage" class="tableHeadSort"><a href="index-sort-f.html"><img src="../updown.png" width=10 height=14 alt="Sort by function coverage" title="Click to sort table by function coverage" border=0></a></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableHead" colspan=2> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
<td class="tableHead"> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
<td class="tableHead"> Rate</td>
|
||||
<td class="tableHead"> Total</td>
|
||||
<td class="tableHead"> Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_attributes.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_attributes.cpp">dbc_attributes.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="98.8%"><img src="../snow.png" width=1 height=10 alt="98.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">98.8 %</td>
|
||||
<td class="coverNumDflt">260</td>
|
||||
<td class="coverNumDflt">257</td>
|
||||
<td class="coverPerLo">73.5 %</td>
|
||||
<td class="coverNumDflt">604</td>
|
||||
<td class="coverNumDflt">444</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">20</td>
|
||||
<td class="coverNumDflt">20</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decode_builder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decode_builder.cpp">dbc_decode_builder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverPerLo">62.5 %</td>
|
||||
<td class="coverNumDflt">40</td>
|
||||
<td class="coverNumDflt">25</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decoder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decoder.cpp">dbc_decoder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=95 height=10 alt="94.9%"><img src="../snow.png" width=5 height=10 alt="94.9%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">94.9 %</td>
|
||||
<td class="coverNumDflt">156</td>
|
||||
<td class="coverNumDflt">148</td>
|
||||
<td class="coverPerLo">72.8 %</td>
|
||||
<td class="coverNumDflt">158</td>
|
||||
<td class="coverNumDflt">115</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_decoder.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decoder.h">dbc_decoder.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerMed">75.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">3</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_diagnostic.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_diagnostic.h">dbc_diagnostic.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_parser.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_parser.cpp">dbc_parser.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.0%"><img src="../snow.png" width=1 height=10 alt="99.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.0 %</td>
|
||||
<td class="coverNumDflt">99</td>
|
||||
<td class="coverNumDflt">98</td>
|
||||
<td class="coverPerLo">70.4 %</td>
|
||||
<td class="coverNumDflt">216</td>
|
||||
<td class="coverNumDflt">152</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_parser.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_parser.h">dbc_parser.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_statement_handler.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.cpp">dbc_statement_handler.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.5%"><img src="../snow.png" width=1 height=10 alt="99.5%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.5 %</td>
|
||||
<td class="coverNumDflt">370</td>
|
||||
<td class="coverNumDflt">368</td>
|
||||
<td class="coverPerLo">68.4 %</td>
|
||||
<td class="coverNumDflt">820</td>
|
||||
<td class="coverNumDflt">561</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">31</td>
|
||||
<td class="coverNumDflt">31</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_statement_handler.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h">dbc_statement_handler.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerLo">45.5 %</td>
|
||||
<td class="coverNumDflt">22</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dbc_tree_builder.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_tree_builder.cpp">dbc_tree_builder.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=92 height=10 alt="91.7%"><img src="../snow.png" width=8 height=10 alt="91.7%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">91.7 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">11</td>
|
||||
<td class="coverPerLo">66.7 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="decode_database.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/decode_database.cpp">decode_database.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.1%"><img src="../snow.png" width=1 height=10 alt="99.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.1 %</td>
|
||||
<td class="coverNumDflt">110</td>
|
||||
<td class="coverNumDflt">109</td>
|
||||
<td class="coverPerMed">80.2 %</td>
|
||||
<td class="coverNumDflt">182</td>
|
||||
<td class="coverNumDflt">146</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="decode_database.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/decode_database.h">decode_database.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverNumDflt">5</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="definition_key.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/definition_key.h">definition_key.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">18</td>
|
||||
<td class="coverNumDflt">18</td>
|
||||
<td class="coverPerLo">70.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">7</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="frame_info.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/frame_info.h">frame_info.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="j1939.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/j1939.h">j1939.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="signal_info.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/signal_info.h">signal_info.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="signal_layout.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/signal_layout.h">signal_layout.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">6</td>
|
||||
<td class="coverNumDflt">6</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="text_utils.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/text_utils.h">text_utils.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverNumDflt">10</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="tree_node.cpp.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/tree_node.cpp">tree_node.cpp</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=98 height=10 alt="98.1%"><img src="../snow.png" width=2 height=10 alt="98.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">98.1 %</td>
|
||||
<td class="coverNumDflt">53</td>
|
||||
<td class="coverNumDflt">52</td>
|
||||
<td class="coverPerMed">76.2 %</td>
|
||||
<td class="coverNumDflt">42</td>
|
||||
<td class="coverNumDflt">32</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">15</td>
|
||||
<td class="coverNumDflt">15</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="tree_node.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/tree_node.h">tree_node.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverNumDflt"></td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
<td class="coverNumDflt">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="typefactory.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/typefactory.h">typefactory.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverNumDflt">12</td>
|
||||
<td class="coverPerLo">50.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">4</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">27</td>
|
||||
<td class="coverNumDflt">27</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="value_descriptions.h.gcov.html" title="Click to go to file /home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/value_descriptions.h">value_descriptions.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverPerMed">87.5 %</td>
|
||||
<td class="coverNumDflt">8</td>
|
||||
<td class="coverNumDflt">7</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
<td class="coverNumDflt">2</td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/j1939.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - j1939.h<span style="font-size: 80%;"> (<a href="j1939.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="j1939.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="j1939.h.gcov.html#L9">ExtractJ1939Pgn(unsigned int)</a></td>
|
||||
|
||||
<td class="coverFnHi">130</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/j1939.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - j1939.h<span style="font-size: 80%;"> (<a href="j1939.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="j1939.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="j1939.h.gcov.html#L9">ExtractJ1939Pgn(unsigned int)</a></td>
|
||||
|
||||
<td class="coverFnHi">130</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,102 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/j1939.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - j1939.h<span style="font-size: 80%;"> (source / <a href="j1939.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : // SPDX-License-Identifier: MIT</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : #ifndef J1939_H</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : #define J1939_H</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : </span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : #include <cstdint></span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : </span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : /** Extract an 18-bit PGN from a normalized 29-bit ID explicitly interpreted as J1939.</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : * Priority and source address are excluded. PDU1 also excludes destination address.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : * Both data-page bits are retained; this does not validate the J1939 protocol.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> :<span class="tlaGNC"> 130 : inline std::uint32_t ExtractJ1939Pgn(std::uint32_t canId) {</span></span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> :<span class="tlaGNC"> 130 : const std::uint32_t pf = (canId >> 16U) & 0xFFU;</span></span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> :<span class="tlaGNC"> 130 : const std::uint32_t pgn = (canId >> 8U) & 0x3FFFFU;</span></span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> [<span class="tlaGBC" title="Branch 0 was taken 78 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 52 times"> + </span>]:<span class="tlaGNC"> 130 : return pf < 240U ? pgn & 0x3FF00U : pgn;</span></span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : : }</span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : : </span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : : #endif /* J1939_H */</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,84 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/signal_info.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - signal_info.h<span style="font-size: 80%;"> (<a href="signal_info.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="signal_info.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="signal_info.h.gcov.html#L41">SignalInfo::SignalInfo()</a></td>
|
||||
|
||||
<td class="coverFnHi">592</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,84 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/signal_info.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - signal_info.h<span style="font-size: 80%;"> (<a href="signal_info.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="signal_info.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="signal_info.h.gcov.html#L41">SignalInfo::SignalInfo()</a></td>
|
||||
|
||||
<td class="coverFnHi">592</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,122 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/signal_info.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - signal_info.h<span style="font-size: 80%;"> (source / <a href="signal_info.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : * @file signal_info.h</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : * @brief Parsed CAN signal metadata.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : #ifndef SIGNAL_INFO_H</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : #define SIGNAL_INFO_H</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : </span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : #include "attributes.h"</span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : #include "multiplexing.h"</span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : #include "value_descriptions.h"</span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : #include <cstdint></span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : #include <string></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : #include <vector></span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : </span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : /**</span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : * @brief Describes one signal inside a DBC frame.</span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : */</span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : struct SignalInfo {</span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : Multiplexing multiplexing; /**< Selector role and branch value. */</span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : std::string name; /**< Signal name. */</span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : std::uint32_t startBit = 0U; /**< Start bit in DBC notation. */</span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> : std::uint32_t length = 0U; /**< Signal length in bits. */</span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : bool isLittleEndian = true; /**< true for Intel, false for Motorola. */</span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> : bool isSigned = false; /**< true if signal is signed. */</span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : double factor = 1.0; /**< Scaling factor. */</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : double offset = 0.0; /**< Physical offset. */</span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : double minimum = 0.0; /**< Minimum physical value. */</span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : double maximum = 0.0; /**< Maximum physical value. */</span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> : std::string unit; /**< Physical unit. */</span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : std::vector<std::string> receivers; /**< Signal receivers. */</span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> : ValueDescriptions valueDescriptions; /**< Raw integer state descriptions. */</span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : std::string comment; /**< Optional signal comment. */</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : </span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> : AttributeMap attributes; /**< Effective attributes after defaults and overrides. */ /**< Effective values, including defaults. */</span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : </span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> <span class="tlaGNC"> 592 : SignalInfo() = default;</span></span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> : };</span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> : </span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : #endif /* SIGNAL_INFO_H */</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,101 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/signal_layout.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - signal_layout.h<span style="font-size: 80%;"> (<a href="signal_layout.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">6</td>
|
||||
<td class="headerCovTableEntry">6</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="signal_layout.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="signal_layout.h.gcov.html#L6">SignalStartCoordinate(unsigned int, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">352521</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="signal_layout.h.gcov.html#L11">IsValidSignalLayout(unsigned int, unsigned int, bool, unsigned char)</a></td>
|
||||
|
||||
<td class="coverFnHi">360851</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,101 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/signal_layout.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - signal_layout.h<span style="font-size: 80%;"> (<a href="signal_layout.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">6</td>
|
||||
<td class="headerCovTableEntry">6</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="signal_layout.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="signal_layout.h.gcov.html#L11">IsValidSignalLayout(unsigned int, unsigned int, bool, unsigned char)</a></td>
|
||||
|
||||
<td class="coverFnHi">360851</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="signal_layout.h.gcov.html#L6">SignalStartCoordinate(unsigned int, bool)</a></td>
|
||||
|
||||
<td class="coverFnHi">352521</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,104 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/signal_layout.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - signal_layout.h<span style="font-size: 80%;"> (source / <a href="signal_layout.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">6</td>
|
||||
<td class="headerCovTableEntry">6</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : // SPDX-License-Identifier: MIT</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : #ifndef SIGNAL_LAYOUT_H</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : #define SIGNAL_LAYOUT_H</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : </span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : #include <cstdint></span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : </span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : /** Linear coordinate in the signal's bit order, widened before arithmetic. */</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> :<span class="tlaGNC"> 352521 : inline std::uint64_t SignalStartCoordinate(std::uint32_t startBit, bool littleEndian) {</span></span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> [<span class="tlaGBC" title="Branch 0 was taken 176628 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 175893 times"> + </span>]:<span class="tlaGNC"> 352521 : return littleEndian ? std::uint64_t(startBit)</span></span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> :<span class="tlaGNC"> 352521 : : std::uint64_t(startBit / 8U) * 8U + 7U - startBit % 8U;</span></span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : }</span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : </span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> :<span class="tlaGNC"> 360851 : inline bool IsValidSignalLayout(std::uint32_t startBit, std::uint32_t length,</span></span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : bool littleEndian, std::uint8_t dlc) {</span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> [<span class="tlaGBC" title="Branch 0 was taken 355515 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 5336 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 350157 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 5358 times"> + </span>]:<span class="tlaGNC"> 711008 : return length >= 1U && length <= 64U &&</span></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> [<span class="tlaGBC" title="Branch 0 was taken 331954 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 18203 times"> + </span>]:<span class="tlaGNC"> 711008 : SignalStartCoordinate(startBit, littleEndian) + length <= std::uint64_t(dlc) * 8U;</span></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : : }</span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : </span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : : #endif</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/text_utils.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - text_utils.h<span style="font-size: 80%;"> (<a href="text_utils.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="text_utils.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="text_utils.h.gcov.html#L6">dbc_detail::TrimText(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">2913</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/text_utils.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - text_utils.h<span style="font-size: 80%;"> (<a href="text_utils.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="text_utils.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="text_utils.h.gcov.html#L6">dbc_detail::TrimText(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">2913</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,108 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/text_utils.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - text_utils.h<span style="font-size: 80%;"> (source / <a href="text_utils.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : #ifndef DBC_TEXT_UTILS_H</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : #define DBC_TEXT_UTILS_H</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : </span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : #include <cctype></span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : #include <string></span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : </span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : namespace dbc_detail {</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> :<span class="tlaGNC"> 2913 : inline std::string TrimText(const std::string &text) {</span></span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> :<span class="tlaGNC"> 2913 : std::string::size_type begin = 0U;</span></span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> [<span class="tlaGBC" title="Branch 0 was taken 2692 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 343 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 122 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2913 times"> + </span>]:<span class="tlaGNC"> 5727 : while ((begin < text.size()) &&</span></span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> [<span class="tlaGBC" title="Branch 0 was taken 122 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2570 times"> + </span>]:<span class="tlaGNC"> 2692 : std::isspace(static_cast<unsigned char>(text[begin])))</span></span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> :<span class="tlaGNC"> 122 : ++begin;</span></span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : </span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> :<span class="tlaGNC"> 2913 : std::string::size_type end = text.size();</span></span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> [<span class="tlaGBC" title="Branch 0 was taken 2574 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 343 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2913 times"> + </span>]:<span class="tlaGNC"> 5491 : while ((end > begin) &&</span></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> [<span class="tlaGBC" title="Branch 0 was taken 4 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2570 times"> + </span>]:<span class="tlaGNC"> 2574 : std::isspace(static_cast<unsigned char>(text[end - 1U])))</span></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> :<span class="tlaGNC"> 4 : --end;</span></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : </span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> :<span class="tlaGNC"> 2913 : return text.substr(begin, end - begin);</span></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : : }</span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : : }</span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : : </span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : : #endif</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,205 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/tree_node.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - tree_node.cpp<span style="font-size: 80%;"> (<a href="tree_node.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">98.1 %</td>
|
||||
<td class="headerCovTableEntry">53</td>
|
||||
<td class="headerCovTableEntry">52</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">15</td>
|
||||
<td class="headerCovTableEntry">15</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">76.2 %</td>
|
||||
<td class="headerCovTableEntry">42</td>
|
||||
<td class="headerCovTableEntry">32</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="tree_node.cpp.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L89">TreeNode::GetSignalKey() const</a></td>
|
||||
|
||||
<td class="coverFnHi">9</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L13">TreeNode::TreeNode()</a></td>
|
||||
|
||||
<td class="coverFnHi">22</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L81">TreeNode::GetFrameKey() const</a></td>
|
||||
|
||||
<td class="coverFnHi">23</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L61">TreeNode::GetName[abi:cxx11]() const</a></td>
|
||||
|
||||
<td class="coverFnHi">29</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L57">TreeNode::GetType() const</a></td>
|
||||
|
||||
<td class="coverFnHi">44</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L50">TreeNode::GetChild(unsigned long)</a></td>
|
||||
|
||||
<td class="coverFnHi">91</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L17">TreeNode::TreeNode(FrameInfo const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">97</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L21">TreeNode::TreeNode(SignalInfo const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">110</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L25">TreeNode::AddChild(std::unique_ptr<TreeNode, std::default_delete<TreeNode> >&&)</a></td>
|
||||
|
||||
<td class="coverFnHi">206</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L65">TreeNode::GetFrame() const</a></td>
|
||||
|
||||
<td class="coverFnHi">274</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L69">TreeNode::GetSignal() const</a></td>
|
||||
|
||||
<td class="coverFnHi">281</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L77">TreeNode::GetRow() const</a></td>
|
||||
|
||||
<td class="coverFnHi">1547</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L73">TreeNode::GetParent() const</a></td>
|
||||
|
||||
<td class="coverFnHi">1875</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L39">TreeNode::GetChildCount() const</a></td>
|
||||
|
||||
<td class="coverFnHi">2120</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L43">TreeNode::GetChild(unsigned long) const</a></td>
|
||||
|
||||
<td class="coverFnHi">3430</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,205 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/tree_node.cpp - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - tree_node.cpp<span style="font-size: 80%;"> (<a href="tree_node.cpp.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">98.1 %</td>
|
||||
<td class="headerCovTableEntry">53</td>
|
||||
<td class="headerCovTableEntry">52</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">15</td>
|
||||
<td class="headerCovTableEntry">15</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">76.2 %</td>
|
||||
<td class="headerCovTableEntry">42</td>
|
||||
<td class="headerCovTableEntry">32</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="tree_node.cpp.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L25">TreeNode::AddChild(std::unique_ptr<TreeNode, std::default_delete<TreeNode> >&&)</a></td>
|
||||
|
||||
<td class="coverFnHi">206</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L50">TreeNode::GetChild(unsigned long)</a></td>
|
||||
|
||||
<td class="coverFnHi">91</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L43">TreeNode::GetChild(unsigned long) const</a></td>
|
||||
|
||||
<td class="coverFnHi">3430</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L39">TreeNode::GetChildCount() const</a></td>
|
||||
|
||||
<td class="coverFnHi">2120</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L65">TreeNode::GetFrame() const</a></td>
|
||||
|
||||
<td class="coverFnHi">274</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L81">TreeNode::GetFrameKey() const</a></td>
|
||||
|
||||
<td class="coverFnHi">23</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L61">TreeNode::GetName[abi:cxx11]() const</a></td>
|
||||
|
||||
<td class="coverFnHi">29</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L73">TreeNode::GetParent() const</a></td>
|
||||
|
||||
<td class="coverFnHi">1875</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L77">TreeNode::GetRow() const</a></td>
|
||||
|
||||
<td class="coverFnHi">1547</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L69">TreeNode::GetSignal() const</a></td>
|
||||
|
||||
<td class="coverFnHi">281</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L89">TreeNode::GetSignalKey() const</a></td>
|
||||
|
||||
<td class="coverFnHi">9</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L57">TreeNode::GetType() const</a></td>
|
||||
|
||||
<td class="coverFnHi">44</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L13">TreeNode::TreeNode()</a></td>
|
||||
|
||||
<td class="coverFnHi">22</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L17">TreeNode::TreeNode(FrameInfo const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">97</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.cpp.gcov.html#L21">TreeNode::TreeNode(SignalInfo const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">110</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,183 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/tree_node.cpp</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - tree_node.cpp<span style="font-size: 80%;"> (source / <a href="tree_node.cpp.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">98.1 %</td>
|
||||
<td class="headerCovTableEntry">53</td>
|
||||
<td class="headerCovTableEntry">52</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">15</td>
|
||||
<td class="headerCovTableEntry">15</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryMed">76.2 %</td>
|
||||
<td class="headerCovTableEntry">42</td>
|
||||
<td class="headerCovTableEntry">32</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Branch data Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : : * @file tree_node.cpp</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : : * @brief Tree node ownership and navigation.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : : #include "tree_node.h"</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : : #include <stdexcept></span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : : </span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> :<span class="tlaGNC"> 22 : TreeNode::TreeNode()</span></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> [<span class="tlaGBC" title="Branch 0 was taken 22 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 66 : : m_type(NodeType::Root), m_name("dbc") {</span></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> :<span class="tlaGNC"> 22 : }</span></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : : </span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> :<span class="tlaGNC"> 97 : TreeNode::TreeNode(const FrameInfo &frame)</span></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> [<span class="tlaGBC" title="Branch 0 was taken 97 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 97 : : m_type(NodeType::Frame), m_name(frame.name), m_frame(std::make_unique<FrameInfo>(frame)) {</span></span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> :<span class="tlaGNC"> 97 : }</span></span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : : </span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> :<span class="tlaGNC"> 110 : TreeNode::TreeNode(const SignalInfo &signal)</span></span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> [<span class="tlaGBC" title="Branch 0 was taken 110 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 110 : : m_type(NodeType::Signal), m_name(signal.name), m_signal(std::make_unique<SignalInfo>(signal)) {</span></span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> :<span class="tlaGNC"> 110 : }</span></span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : : </span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> :<span class="tlaGNC"> 206 : void TreeNode::AddChild(std::unique_ptr<TreeNode> &&child) {</span></span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> [<span class="tlaGBC" title="Branch 0 was taken 205 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 1 time"> + </span>]:<span class="tlaGNC"> 206 : if (child) {</span></span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> [<span class="tlaGBC" title="Branch 0 was taken 271 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 203 times"> + </span>]:<span class="tlaGNC"> 474 : for (const TreeNode *ancestor = this; ancestor; ancestor = ancestor->m_parent) {</span></span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 269 times"> + </span>]:<span class="tlaGNC"> 271 : if (ancestor == child.get())</span></span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 2 : throw std::invalid_argument("Cannot insert a node into its own subtree");</span></span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : : }</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> [<span class="tlaUNC" title="Branch 0 was not taken"> - </span><span class="tlaGBC" title="Branch 1 was taken 203 times"> + </span>]:<span class="tlaGNC"> 203 : if (child->m_parent)</span></span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> [<span class="tlaUNC" title="Branch 0 was not executed"> # </span><span class="tlaUNC" title="Branch 1 was not executed"> # </span>]:<span class="tlaUNC"> 0 : throw std::invalid_argument("Child is already attached");</span></span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> :<span class="tlaGNC"> 203 : m_children.push_back(std::move(child));</span></span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> :<span class="tlaGNC"> 203 : m_children.back()->m_parent = this;</span></span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> :<span class="tlaGNC"> 203 : m_children.back()->m_row = m_children.size() - 1U;</span></span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> : : }</span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> :<span class="tlaGNC"> 204 : }</span></span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : : </span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> :<span class="tlaGNC"> 2120 : std::size_t TreeNode::GetChildCount() const {</span></span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> :<span class="tlaGNC"> 2120 : return m_children.size();</span></span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> : : }</span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> : : </span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> :<span class="tlaGNC"> 3430 : const TreeNode *TreeNode::GetChild(std::size_t index) const {</span></span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> [<span class="tlaGBC" title="Branch 0 was taken 1107 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2323 times"> + </span>]:<span class="tlaGNC"> 3430 : if (index >= m_children.size())</span></span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> :<span class="tlaGNC"> 1107 : return nullptr;</span></span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> : : </span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> :<span class="tlaGNC"> 2323 : return m_children[index].get();</span></span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> : : }</span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> : : </span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> :<span class="tlaGNC"> 91 : TreeNode *TreeNode::GetChild(std::size_t index) {</span></span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> [<span class="tlaGBC" title="Branch 0 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 89 times"> + </span>]:<span class="tlaGNC"> 91 : if (index >= m_children.size())</span></span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> :<span class="tlaGNC"> 2 : return nullptr;</span></span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> : : </span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> :<span class="tlaGNC"> 89 : return m_children[index].get();</span></span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> : : }</span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> : : </span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> :<span class="tlaGNC"> 44 : NodeType TreeNode::GetType() const {</span></span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> :<span class="tlaGNC"> 44 : return m_type;</span></span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> : : }</span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> : : </span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> :<span class="tlaGNC"> 29 : const std::string &TreeNode::GetName() const {</span></span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> :<span class="tlaGNC"> 29 : return m_name;</span></span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> : : }</span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> : : </span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> :<span class="tlaGNC"> 274 : const FrameInfo *TreeNode::GetFrame() const {</span></span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> :<span class="tlaGNC"> 274 : return m_frame.get();</span></span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> : : }</span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> : : </span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> :<span class="tlaGNC"> 281 : const SignalInfo *TreeNode::GetSignal() const {</span></span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> :<span class="tlaGNC"> 281 : return m_signal.get();</span></span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> : : }</span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> : : </span>
|
||||
<span id="L75"><span class="lineNum"> 75</span> :<span class="tlaGNC"> 1875 : const TreeNode *TreeNode::GetParent() const {</span></span>
|
||||
<span id="L76"><span class="lineNum"> 76</span> :<span class="tlaGNC"> 1875 : return m_parent;</span></span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> : : }</span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> : : </span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> :<span class="tlaGNC"> 1547 : std::size_t TreeNode::GetRow() const {</span></span>
|
||||
<span id="L80"><span class="lineNum"> 80</span> :<span class="tlaGNC"> 1547 : return m_row;</span></span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> : : }</span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> : : </span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> :<span class="tlaGNC"> 23 : std::optional<FrameKey> TreeNode::GetFrameKey() const {</span></span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> [<span class="tlaGBC" title="Branch 0 was taken 13 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 10 times"> + </span>]:<span class="tlaGNC"> 23 : if (m_frame)</span></span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> :<span class="tlaGNC"> 13 : return FrameKey(m_frame->canId, m_frame->isExtended);</span></span>
|
||||
<span id="L86"><span class="lineNum"> 86</span> [<span class="tlaGBC" title="Branch 0 was taken 8 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 2 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 2 times"> + </span> :<span class="tlaGNC"> 10 : if (m_signal && m_parent && m_parent->GetType() == NodeType::Frame)</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 6 times"> + </span><span class="tlaUNC" title="Branch 5 was not taken"> - </span><span class="tlaGBC" title="Branch 6 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 7 was taken 4 times"> + </span>]
|
||||
<span id="L87"><span class="lineNum"> 87</span> :<span class="tlaGNC"> 6 : return m_parent->GetFrameKey();</span></span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> :<span class="tlaGNC"> 4 : return std::nullopt;</span></span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> : : }</span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> : : </span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> :<span class="tlaGNC"> 9 : std::optional<SignalKey> TreeNode::GetSignalKey() const {</span></span>
|
||||
<span id="L92"><span class="lineNum"> 92</span> [<span class="tlaGBC" title="Branch 0 was taken 9 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 9 : const std::optional<FrameKey> frame = GetFrameKey();</span></span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> [<span class="tlaGBC" title="Branch 0 was taken 6 times"> + </span><span class="tlaGBC" title="Branch 1 was taken 3 times"> + </span><span class="tlaGBC" title="Branch 2 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 3 was taken 1 time"> + </span> :<span class="tlaGNC"> 9 : if (m_signal && frame)</span></span>
|
||||
<span class="lineNum"> </span> <span class="tlaGBC" title="Branch 4 was taken 5 times"> + </span><span class="tlaGBC" title="Branch 5 was taken 4 times"> + </span>]
|
||||
<span id="L94"><span class="lineNum"> 94</span> [<span class="tlaGBC" title="Branch 0 was taken 5 times"> + </span><span class="tlaUNC" title="Branch 1 was not taken"> - </span>]:<span class="tlaGNC"> 5 : return SignalKey(*frame, m_signal->name);</span></span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> :<span class="tlaGNC"> 4 : return std::nullopt;</span></span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> : : }</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,84 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/tree_node.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - tree_node.h<span style="font-size: 80%;"> (<a href="tree_node.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="tree_node.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.h.gcov.html#L54">TreeNode::~TreeNode()</a></td>
|
||||
|
||||
<td class="coverFnHi">229</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,84 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/tree_node.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - tree_node.h<span style="font-size: 80%;"> (<a href="tree_node.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><a href="tree_node.h.func-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></a></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="tree_node.h.gcov.html#L54">TreeNode::~TreeNode()</a></td>
|
||||
|
||||
<td class="coverFnHi">229</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,217 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/tree_node.h</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - tree_node.h<span style="font-size: 80%;"> (source / <a href="tree_node.h.func-c.html" title="Click to go to function table">functions</a>)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<table cellpadding=0 cellspacing=0 border=0>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="sourceHeading"> Line data Source code</pre>
|
||||
<pre class="source">
|
||||
<span id="L1"><span class="lineNum"> 1</span> : /**</span>
|
||||
<span id="L2"><span class="lineNum"> 2</span> : * @file tree_node.h</span>
|
||||
<span id="L3"><span class="lineNum"> 3</span> : * @brief Qt-independent metadata tree nodes.</span>
|
||||
<span id="L4"><span class="lineNum"> 4</span> : *</span>
|
||||
<span id="L5"><span class="lineNum"> 5</span> : * Created: 2026-03-13</span>
|
||||
<span id="L6"><span class="lineNum"> 6</span> : * Author: Deeaitch (Dim. Himro)</span>
|
||||
<span id="L7"><span class="lineNum"> 7</span> : *</span>
|
||||
<span id="L8"><span class="lineNum"> 8</span> : * Licensed under the MIT License.</span>
|
||||
<span id="L9"><span class="lineNum"> 9</span> : * See LICENSE file in the project root for full license text.</span>
|
||||
<span id="L10"><span class="lineNum"> 10</span> : */</span>
|
||||
<span id="L11"><span class="lineNum"> 11</span> : </span>
|
||||
<span id="L12"><span class="lineNum"> 12</span> : #ifndef TREE_NODE_H</span>
|
||||
<span id="L13"><span class="lineNum"> 13</span> : #define TREE_NODE_H</span>
|
||||
<span id="L14"><span class="lineNum"> 14</span> : </span>
|
||||
<span id="L15"><span class="lineNum"> 15</span> : #include <cstddef></span>
|
||||
<span id="L16"><span class="lineNum"> 16</span> : #include <memory></span>
|
||||
<span id="L17"><span class="lineNum"> 17</span> : #include <optional></span>
|
||||
<span id="L18"><span class="lineNum"> 18</span> : #include <string></span>
|
||||
<span id="L19"><span class="lineNum"> 19</span> : #include <vector></span>
|
||||
<span id="L20"><span class="lineNum"> 20</span> : </span>
|
||||
<span id="L21"><span class="lineNum"> 21</span> : #include "definition_key.h"</span>
|
||||
<span id="L22"><span class="lineNum"> 22</span> : #include "frame_info.h"</span>
|
||||
<span id="L23"><span class="lineNum"> 23</span> : #include "signal_info.h"</span>
|
||||
<span id="L24"><span class="lineNum"> 24</span> : </span>
|
||||
<span id="L25"><span class="lineNum"> 25</span> : /**</span>
|
||||
<span id="L26"><span class="lineNum"> 26</span> : * @brief Type of a tree node.</span>
|
||||
<span id="L27"><span class="lineNum"> 27</span> : */</span>
|
||||
<span id="L28"><span class="lineNum"> 28</span> : enum class NodeType {</span>
|
||||
<span id="L29"><span class="lineNum"> 29</span> : Root,</span>
|
||||
<span id="L30"><span class="lineNum"> 30</span> : Frame,</span>
|
||||
<span id="L31"><span class="lineNum"> 31</span> : Signal</span>
|
||||
<span id="L32"><span class="lineNum"> 32</span> : };</span>
|
||||
<span id="L33"><span class="lineNum"> 33</span> : </span>
|
||||
<span id="L34"><span class="lineNum"> 34</span> : /**</span>
|
||||
<span id="L35"><span class="lineNum"> 35</span> : * @brief Tree node for later use in model/view or other hierarchy consumers.</span>
|
||||
<span id="L36"><span class="lineNum"> 36</span> : */</span>
|
||||
<span id="L37"><span class="lineNum"> 37</span> : class TreeNode {</span>
|
||||
<span id="L38"><span class="lineNum"> 38</span> : public:</span>
|
||||
<span id="L39"><span class="lineNum"> 39</span> : /**</span>
|
||||
<span id="L40"><span class="lineNum"> 40</span> : * @brief Create root node.</span>
|
||||
<span id="L41"><span class="lineNum"> 41</span> : */</span>
|
||||
<span id="L42"><span class="lineNum"> 42</span> : TreeNode();</span>
|
||||
<span id="L43"><span class="lineNum"> 43</span> : </span>
|
||||
<span id="L44"><span class="lineNum"> 44</span> : /**</span>
|
||||
<span id="L45"><span class="lineNum"> 45</span> : * @brief Create frame node.</span>
|
||||
<span id="L46"><span class="lineNum"> 46</span> : * @param frame Frame payload.</span>
|
||||
<span id="L47"><span class="lineNum"> 47</span> : */</span>
|
||||
<span id="L48"><span class="lineNum"> 48</span> : explicit TreeNode(const FrameInfo &frame);</span>
|
||||
<span id="L49"><span class="lineNum"> 49</span> : </span>
|
||||
<span id="L50"><span class="lineNum"> 50</span> : /**</span>
|
||||
<span id="L51"><span class="lineNum"> 51</span> : * @brief Create signal node.</span>
|
||||
<span id="L52"><span class="lineNum"> 52</span> : * @param signal Signal payload.</span>
|
||||
<span id="L53"><span class="lineNum"> 53</span> : */</span>
|
||||
<span id="L54"><span class="lineNum"> 54</span> : explicit TreeNode(const SignalInfo &signal);</span>
|
||||
<span id="L55"><span class="lineNum"> 55</span> : </span>
|
||||
<span id="L56"><span class="lineNum"> 56</span> <span class="tlaGNC"> 229 : ~TreeNode() = default;</span></span>
|
||||
<span id="L57"><span class="lineNum"> 57</span> : </span>
|
||||
<span id="L58"><span class="lineNum"> 58</span> : TreeNode(const TreeNode &) = delete;</span>
|
||||
<span id="L59"><span class="lineNum"> 59</span> : TreeNode &operator=(const TreeNode &) = delete;</span>
|
||||
<span id="L60"><span class="lineNum"> 60</span> : </span>
|
||||
<span id="L61"><span class="lineNum"> 61</span> : // Node addresses are stable. Transfer unique_ptr ownership instead of nodes.</span>
|
||||
<span id="L62"><span class="lineNum"> 62</span> : TreeNode(TreeNode &&) = delete;</span>
|
||||
<span id="L63"><span class="lineNum"> 63</span> : TreeNode &operator=(TreeNode &&) = delete;</span>
|
||||
<span id="L64"><span class="lineNum"> 64</span> : </span>
|
||||
<span id="L65"><span class="lineNum"> 65</span> : /**</span>
|
||||
<span id="L66"><span class="lineNum"> 66</span> : * @brief Add child node.</span>
|
||||
<span id="L67"><span class="lineNum"> 67</span> : * @param child Child node to add.</span>
|
||||
<span id="L68"><span class="lineNum"> 68</span> : * A null child is ignored. Existing children keep their addresses and rows.</span>
|
||||
<span id="L69"><span class="lineNum"> 69</span> : * Ownership must be exclusive; attached nodes cannot be reparented.</span>
|
||||
<span id="L70"><span class="lineNum"> 70</span> : * @throws std::invalid_argument for self/ancestor insertion or an attached child.</span>
|
||||
<span id="L71"><span class="lineNum"> 71</span> : * Rejected ownership remains with the caller.</span>
|
||||
<span id="L72"><span class="lineNum"> 72</span> : */</span>
|
||||
<span id="L73"><span class="lineNum"> 73</span> : void AddChild(std::unique_ptr<TreeNode> &&child);</span>
|
||||
<span id="L74"><span class="lineNum"> 74</span> : </span>
|
||||
<span id="L75"><span class="lineNum"> 75</span> : /** Non-owning parent; nullptr for a detached node or the root. */</span>
|
||||
<span id="L76"><span class="lineNum"> 76</span> : const TreeNode *GetParent() const;</span>
|
||||
<span id="L77"><span class="lineNum"> 77</span> : </span>
|
||||
<span id="L78"><span class="lineNum"> 78</span> : /** Zero-based sibling position; zero for a detached node or the root. */</span>
|
||||
<span id="L79"><span class="lineNum"> 79</span> : std::size_t GetRow() const;</span>
|
||||
<span id="L80"><span class="lineNum"> 80</span> : </span>
|
||||
<span id="L81"><span class="lineNum"> 81</span> : /** Frame identity for frame nodes and signals attached to a frame; otherwise empty. */</span>
|
||||
<span id="L82"><span class="lineNum"> 82</span> : std::optional<FrameKey> GetFrameKey() const;</span>
|
||||
<span id="L83"><span class="lineNum"> 83</span> : </span>
|
||||
<span id="L84"><span class="lineNum"> 84</span> : /** Signal identity (owning frame key and name); empty for other/detached nodes. */</span>
|
||||
<span id="L85"><span class="lineNum"> 85</span> : std::optional<SignalKey> GetSignalKey() const;</span>
|
||||
<span id="L86"><span class="lineNum"> 86</span> : </span>
|
||||
<span id="L87"><span class="lineNum"> 87</span> : /**</span>
|
||||
<span id="L88"><span class="lineNum"> 88</span> : * @brief Get child count.</span>
|
||||
<span id="L89"><span class="lineNum"> 89</span> : * @return Number of children.</span>
|
||||
<span id="L90"><span class="lineNum"> 90</span> : */</span>
|
||||
<span id="L91"><span class="lineNum"> 91</span> : std::size_t GetChildCount() const;</span>
|
||||
<span id="L92"><span class="lineNum"> 92</span> : </span>
|
||||
<span id="L93"><span class="lineNum"> 93</span> : /**</span>
|
||||
<span id="L94"><span class="lineNum"> 94</span> : * @brief Get child by index.</span>
|
||||
<span id="L95"><span class="lineNum"> 95</span> : * @param index Child index.</span>
|
||||
<span id="L96"><span class="lineNum"> 96</span> : * @return Child pointer or nullptr if index is invalid.</span>
|
||||
<span id="L97"><span class="lineNum"> 97</span> : */</span>
|
||||
<span id="L98"><span class="lineNum"> 98</span> : const TreeNode *GetChild(std::size_t index) const;</span>
|
||||
<span id="L99"><span class="lineNum"> 99</span> : </span>
|
||||
<span id="L100"><span class="lineNum"> 100</span> : /**</span>
|
||||
<span id="L101"><span class="lineNum"> 101</span> : * @brief Get mutable child by index.</span>
|
||||
<span id="L102"><span class="lineNum"> 102</span> : * @param index Child index.</span>
|
||||
<span id="L103"><span class="lineNum"> 103</span> : * @return Child pointer or nullptr if index is invalid.</span>
|
||||
<span id="L104"><span class="lineNum"> 104</span> : */</span>
|
||||
<span id="L105"><span class="lineNum"> 105</span> : TreeNode *GetChild(std::size_t index);</span>
|
||||
<span id="L106"><span class="lineNum"> 106</span> : </span>
|
||||
<span id="L107"><span class="lineNum"> 107</span> : /**</span>
|
||||
<span id="L108"><span class="lineNum"> 108</span> : * @brief Get node type.</span>
|
||||
<span id="L109"><span class="lineNum"> 109</span> : * @return Node type.</span>
|
||||
<span id="L110"><span class="lineNum"> 110</span> : */</span>
|
||||
<span id="L111"><span class="lineNum"> 111</span> : NodeType GetType() const;</span>
|
||||
<span id="L112"><span class="lineNum"> 112</span> : </span>
|
||||
<span id="L113"><span class="lineNum"> 113</span> : /**</span>
|
||||
<span id="L114"><span class="lineNum"> 114</span> : * @brief Get display name.</span>
|
||||
<span id="L115"><span class="lineNum"> 115</span> : * @return Node name.</span>
|
||||
<span id="L116"><span class="lineNum"> 116</span> : */</span>
|
||||
<span id="L117"><span class="lineNum"> 117</span> : const std::string &GetName() const;</span>
|
||||
<span id="L118"><span class="lineNum"> 118</span> : </span>
|
||||
<span id="L119"><span class="lineNum"> 119</span> : /**</span>
|
||||
<span id="L120"><span class="lineNum"> 120</span> : * @brief Get frame payload if node is frame.</span>
|
||||
<span id="L121"><span class="lineNum"> 121</span> : * @return Pointer to frame info or nullptr.</span>
|
||||
<span id="L122"><span class="lineNum"> 122</span> : */</span>
|
||||
<span id="L123"><span class="lineNum"> 123</span> : const FrameInfo *GetFrame() const;</span>
|
||||
<span id="L124"><span class="lineNum"> 124</span> : </span>
|
||||
<span id="L125"><span class="lineNum"> 125</span> : /**</span>
|
||||
<span id="L126"><span class="lineNum"> 126</span> : * @brief Get signal payload if node is signal.</span>
|
||||
<span id="L127"><span class="lineNum"> 127</span> : * @return Pointer to signal info or nullptr.</span>
|
||||
<span id="L128"><span class="lineNum"> 128</span> : */</span>
|
||||
<span id="L129"><span class="lineNum"> 129</span> : const SignalInfo *GetSignal() const;</span>
|
||||
<span id="L130"><span class="lineNum"> 130</span> : </span>
|
||||
<span id="L131"><span class="lineNum"> 131</span> : private:</span>
|
||||
<span id="L132"><span class="lineNum"> 132</span> : TreeNode *m_parent = nullptr;</span>
|
||||
<span id="L133"><span class="lineNum"> 133</span> : std::size_t m_row = 0U;</span>
|
||||
<span id="L134"><span class="lineNum"> 134</span> : NodeType m_type;</span>
|
||||
<span id="L135"><span class="lineNum"> 135</span> : std::string m_name;</span>
|
||||
<span id="L136"><span class="lineNum"> 136</span> : std::vector<std::unique_ptr<TreeNode>> m_children;</span>
|
||||
<span id="L137"><span class="lineNum"> 137</span> : std::unique_ptr<FrameInfo> m_frame;</span>
|
||||
<span id="L138"><span class="lineNum"> 138</span> : std::unique_ptr<SignalInfo> m_signal;</span>
|
||||
<span id="L139"><span class="lineNum"> 139</span> : };</span>
|
||||
<span id="L140"><span class="lineNum"> 140</span> : </span>
|
||||
<span id="L141"><span class="lineNum"> 141</span> : #endif /* TREE_NODE_H */</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,341 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>LCOV - coverage.info - core/typefactory.h - functions</title>
|
||||
<link rel="stylesheet" type="text/css" href="../gcov.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="title">LCOV - code coverage report</td></tr>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding=1 border=0 width="100%">
|
||||
<tr>
|
||||
<td width="10%" class="headerItem">Current view:</td>
|
||||
<td width="10%" class="headerValue"><a href="../index.html" title="Click to go to top-level">top level</a> - <a href="index.html" title="Click to go to directory core">core</a> - typefactory.h<span style="font-size: 80%;"> (<a href="typefactory.h.gcov.html" title="Click to go to source detail">source</a> / functions)</span></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%"></td>
|
||||
<td width="5%" class="headerCovTableHead">Coverage</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Covered + Uncovered code">Total</td>
|
||||
<td width="5%" class="headerCovTableHead" title="Exercised code only">Hit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test:</td>
|
||||
<td class="headerValue">coverage.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Test Date:</td>
|
||||
<td class="headerValue">2026-10-20 13:34:58</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntry">27</td>
|
||||
<td class="headerCovTableEntry">27</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="headerItem">Branches:</td>
|
||||
<td class="headerCovTableEntryLo">50.0 %</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
<table cellpadding=1 cellspacing=1 border=0>
|
||||
<tr><td><br></td></tr>
|
||||
<tr>
|
||||
<td class="tableHead">Function Name <span title="Click to sort table by function name" class="tableHeadSort"><a href="typefactory.h.func.html"><img src="../updown.png" width=10 height=14 alt="Sort by function name" title="Click to sort table by function name" border=0></a></span></td>
|
||||
|
||||
<td class="tableHead">Hit count <span title="Click to sort table by function hit count" class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function hit count" title="Click to sort table by function hit count" border=0></span></td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="typefactory.h.gcov.html#L104">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::contains(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">2</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="typefactory.h.gcov.html#L64">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::TypeFactory()</a></td>
|
||||
|
||||
<td class="coverFnHi">950</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L64">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::TypeFactory()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L64">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::TypeFactory()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<CountingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnHi">14238</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::registerType<(anonymous namespace)::FactoryFirst>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::registerType<(anonymous namespace)::FactorySecond>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<CountingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcCommentHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcFrameHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcSignalHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcUnsupportedMultiplexingHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcValueDescriptionHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcAttributeHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">2847</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L76">void TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::registerType<DbcHeaderHandler>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">6643</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="typefactory.h.gcov.html#L97">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::create(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">14239</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L97">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::create(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<int, std::default_delete<int> >) const</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">3</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L97">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::create(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">14236</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<CountingHandler>()</a></td>
|
||||
|
||||
<td class="coverFnHi">14240</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<(anonymous namespace)::FactoryBase> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::instantiate<(anonymous namespace)::FactorySecond>(std::unique_ptr<int, std::default_delete<int> >)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<CountingHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">1</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<(anonymous namespace)::FactoryBase> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::instantiate<(anonymous namespace)::FactoryFirst>(std::unique_ptr<int, std::default_delete<int> >)</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">3</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcCommentHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcFrameHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcSignalHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcUnsupportedMultiplexingHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcValueDescriptionHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">949</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcAttributeHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">2847</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L114">std::shared_ptr<DbcStatementHandler> TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::instantiate<DbcHeaderHandler>()</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">6643</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="typefactory.h.gcov.html#L89">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::creator(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnHi">14241</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L89">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, (anonymous namespace)::FactoryBase, std::unique_ptr<int, std::default_delete<int> > >::creator(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">5</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFnAlias"><a href="typefactory.h.gcov.html#L89">TypeFactory<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, DbcStatementHandler>::creator(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const</a></td>
|
||||
|
||||
<td class="coverFnAliasHi">14236</td>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
<table width="100%" border=0 cellspacing=0 cellpadding=0>
|
||||
<tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Loaded 100 of 766 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user