Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a202ba12ba | ||
|
|
4ae4e527b8 | ||
|
|
d87c100398 | ||
|
|
0b05152bcf | ||
|
|
6d6ace4315 | ||
|
|
c3d3bd51fb | ||
|
|
7022c84941 | ||
|
|
0708316a37 | ||
|
|
51fcdb88ac | ||
|
|
bce707daf6 | ||
|
|
a6016248f8 | ||
|
|
ef8e21db2e | ||
|
|
21d6f12163 | ||
|
|
1d56a37090 | ||
|
|
344beaf58c | ||
|
|
8bf5dcff30 | ||
|
|
3dd9230fca | ||
|
|
a0938cb29c | ||
|
|
a533d9aa00 | ||
|
|
e5d818d9b2 | ||
|
|
65142fdfe3 | ||
|
|
f17ddb6aad | ||
|
|
0067cb4ddd | ||
|
|
03dc8f2a13 | ||
|
|
6cd99768ae | ||
|
|
1163277b17 | ||
|
|
b91cf4aae5 | ||
|
|
8d82b13dad | ||
|
|
88b5883dda | ||
|
|
3bd9339baf | ||
|
|
69074e3321 | ||
|
|
2c057b631d |
No files matched your search
@@ -0,0 +1,65 @@
|
||||
BasedOnStyle: LLVM
|
||||
AccessModifierOffset: -4
|
||||
AlignAfterOpenBracket: Align
|
||||
AlignConsecutiveAssignments: None
|
||||
AlignOperands: Align
|
||||
AllowAllArgumentsOnNextLine: false
|
||||
AllowAllConstructorInitializersOnNextLine: false
|
||||
AllowAllParametersOfDeclarationOnNextLine: false
|
||||
AllowShortBlocksOnASingleLine: Always
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: All
|
||||
AllowShortIfStatementsOnASingleLine: Always
|
||||
AllowShortLambdasOnASingleLine: All
|
||||
AllowShortLoopsOnASingleLine: true
|
||||
AlwaysBreakAfterReturnType: None
|
||||
AlwaysBreakTemplateDeclarations: Yes
|
||||
BreakBeforeBraces: Custom
|
||||
BraceWrapping:
|
||||
AfterCaseLabel: false
|
||||
AfterClass: false
|
||||
AfterControlStatement: Never
|
||||
AfterEnum: false
|
||||
AfterFunction: false
|
||||
AfterNamespace: false
|
||||
AfterUnion: false
|
||||
BeforeCatch: false
|
||||
BeforeElse: false
|
||||
IndentBraces: false
|
||||
SplitEmptyFunction: false
|
||||
SplitEmptyRecord: true
|
||||
BreakBeforeBinaryOperators: None
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakConstructorInitializers: BeforeColon
|
||||
BreakInheritanceList: BeforeColon
|
||||
ColumnLimit: 0
|
||||
CompactNamespaces: false
|
||||
ContinuationIndentWidth: 8
|
||||
IndentCaseLabels: true
|
||||
IndentPPDirectives: None
|
||||
IndentWidth: 4
|
||||
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||
MaxEmptyLinesToKeep: 2
|
||||
NamespaceIndentation: All
|
||||
ObjCSpaceAfterProperty: false
|
||||
ObjCSpaceBeforeProtocolList: true
|
||||
PointerAlignment: Right
|
||||
ReflowComments: false
|
||||
SpaceAfterCStyleCast: true
|
||||
SpaceAfterLogicalNot: false
|
||||
SpaceAfterTemplateKeyword: false
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpaceBeforeCpp11BracedList: false
|
||||
SpaceBeforeCtorInitializerColon: true
|
||||
SpaceBeforeInheritanceColon: true
|
||||
SpaceBeforeParens: ControlStatements
|
||||
SpaceBeforeRangeBasedForLoopColon: false
|
||||
SpaceInEmptyParentheses: false
|
||||
SpacesBeforeTrailingComments: 0
|
||||
SpacesInAngles: false
|
||||
SpacesInCStyleCastParentheses: false
|
||||
SpacesInContainerLiterals: false
|
||||
SpacesInParentheses: false
|
||||
SpacesInSquareBrackets: false
|
||||
TabWidth: 4
|
||||
UseTab: Never
|
||||
@@ -1 +1,4 @@
|
||||
*.user
|
||||
.project_rules
|
||||
AGENTS.md
|
||||
build
|
||||
@@ -0,0 +1,288 @@
|
||||
# Changelog
|
||||
|
||||
This changelog summarizes release and development history. Entries are listed
|
||||
newest first. Historical dates follow the commit author dates. `v1.0` is the
|
||||
existing Git tag; subsequent changes are listed as unreleased.
|
||||
|
||||
## Unreleased
|
||||
|
||||
### 2026-10-14
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Issue #19: parse signal factor, offset, minimum, and maximum independently of
|
||||
C/C++ application locales with `std::from_chars`, retaining signed decimals,
|
||||
scientific notation, complete-token validation, and range/finite checks.
|
||||
- Added custom C++ and named C comma-decimal locale regressions for valid physical
|
||||
values and invalid syntax, grouping, overflow/underflow, and reversed ranges.
|
||||
Documented portable test coverage and Linux locale generation. Verified with
|
||||
`qmake6`, `make -j4`, and `LOCPATH=/tmp/dbc-issue19-locales make check`: all six
|
||||
suites passed without skips. The named C locale regression fails with the old
|
||||
`std::stod` converter.
|
||||
|
||||
- Issue #18: frame/signal comments share frame-definition CAN ID validation and
|
||||
resolve after definitions are read. Support tabs, escaped quotes/backslashes,
|
||||
and multiline text while preserving whitespace and starting source locations.
|
||||
- Report malformed comments and missing references as `InvalidStatement` errors;
|
||||
keep statement-order overwrites, including empty comments. Added regression
|
||||
coverage and updated parser/test documentation. Verified with `qmake6`,
|
||||
`make -j4`, and `make check`: all six regression suites passed.
|
||||
|
||||
#### Changed
|
||||
|
||||
- Validate duplicate frame keys before building the runtime lookup index, alongside
|
||||
CAN IDs, signal layouts, numeric parameters, and multiplexing metadata.
|
||||
|
||||
#### Added
|
||||
|
||||
- Root `AGENTS.md` with project coding rules, build/test commands, and
|
||||
documentation requirements, based on the existing `.project_rules`.
|
||||
- End-to-end DBC fixture tests for parsed metadata, runtime frame/signal lookup,
|
||||
raw and physical decoding, value descriptions, and tree nodes. Both builders
|
||||
preserve supported metadata across same-numeric standard/extended IDs, comments,
|
||||
empty databases, and database replacement.
|
||||
|
||||
- Exhaustive layout checks for both byte orders at representative payload sizes
|
||||
(0, 1, 8, 64, and 255 bytes), including invalid lengths and uint32 overflow inputs.
|
||||
- Regression coverage for builder input mutation/destruction and failed replacement
|
||||
with duplicate frame or signal keys, preserving existing lookups.
|
||||
|
||||
### 2026-10-13
|
||||
|
||||
#### Added
|
||||
|
||||
- Issue #16: construction-time validation for both manual runtime definitions and
|
||||
`DbcDecodeBuilder` input: normalized CAN IDs, duplicate keys, signal lengths and
|
||||
positions, enums, finite numeric parameters, ordered ranges, selectors, branch
|
||||
ranges, and overlaps.
|
||||
- Regression tests for both construction paths, numeric and bit boundaries,
|
||||
mixed byte orders, exclusive overlaps, mutable input aliases, and failed reloads.
|
||||
|
||||
- `FrameDecodeStatus` distinguishes unknown frames, insufficient payloads,
|
||||
signal errors, and successful decoding; frame `valid` still means matched.
|
||||
- `SignalDecodeStatus::PhysicalConversionFailed` reports NaN/Inf results,
|
||||
retaining exact raw values and the non-finite physical result.
|
||||
- Regression tests for payload-length policy, partial results, invalid runtime
|
||||
metadata, physical overflow/non-finite parameters, and raw branch selection
|
||||
when selector physical conversion fails.
|
||||
|
||||
#### Changed
|
||||
|
||||
- Runtime construction rejects invalid definitions with `std::invalid_argument`
|
||||
before publishing a snapshot. Decoder tests now expect construction failures
|
||||
for malformed definitions; finite arithmetic overflow remains a decode status.
|
||||
- Shared overflow-safe layout validation across parsing, construction, and
|
||||
decoding. Intel extraction also widens bit coordinates before arithmetic.
|
||||
- `DecodeDatabase` now accepts definitions by const reference and copies them,
|
||||
even for rvalues, preventing retained
|
||||
mutable aliases from modifying the frozen snapshot or invalidating its index.
|
||||
|
||||
- Short payloads decode available signals without padding; longer payloads
|
||||
ignore bytes beyond the declared DLC. Short frame status takes precedence
|
||||
over signal errors, with per-signal causes retained in definition order.
|
||||
- Runtime signal validation checks enum values and bit layouts against declared
|
||||
DLC using overflow-safe coordinates. Extra bytes cannot rescue invalid layouts.
|
||||
- Documented frame/signal status meanings, value availability, and payload policy.
|
||||
|
||||
### 2026-10-11
|
||||
|
||||
#### Added
|
||||
|
||||
- Stable application identifiers: `FrameKey` (normalized CAN ID and frame type)
|
||||
and `SignalKey` (frame key and signal name), with equality and hashers.
|
||||
- Runtime `FindSignal`, frame `GetKey`, and keys on decoded frame/signal results.
|
||||
- Reload/lifetime tests for retained frames and independent signals, lookup
|
||||
handles, copies/moves, snapshot release, stable keys, removed/renamed definitions,
|
||||
failed/empty reloads, duplicate keys, and insufficient payloads.
|
||||
|
||||
- `ParseFileWithDiagnostics` and `DbcParseResult` with severity, stable error
|
||||
code, supplied file path, physical line number, and message for each diagnostic.
|
||||
- Warnings for unregistered statements, including floating-point signal types,
|
||||
attributes, signal type references, environment variables, and vendor extensions.
|
||||
- Quiet common DBC header handlers registered through TypeFactory; `NS_` symbol
|
||||
declarations do not produce unsupported-statement warnings.
|
||||
- Regression tests for warning locations, header handling, immediate/deferred
|
||||
errors, file errors, empty results on failure, and legacy exception compatibility.
|
||||
|
||||
#### Changed
|
||||
|
||||
- **API change:** `DecodeDatabase` is an immutable shared snapshot. Use
|
||||
`GetFrames()` for reads or construct a new snapshot from a vector; its frame
|
||||
index is private and built automatically, with duplicate-key validation.
|
||||
- **API change:** decoded `definition` fields and `DbcDecoder::FindFrame` return
|
||||
`shared_ptr<const ...>` ownership. Stored results retain old definitions across
|
||||
reload/clear/destruction, including separately copied signals and `VAL_` strings.
|
||||
Decoding shares metadata without per-result definition copies.
|
||||
- Documented borrowed views, owning handles, snapshot retention, identifier scope,
|
||||
reload behavior, application migration, and synchronization requirements.
|
||||
|
||||
- Kept `ParseFile` compatible while sharing parsing with the diagnostic API.
|
||||
Parsing stops at the first error and never returns a partial database.
|
||||
- Deferred value-description and multiplexing errors carry structured source
|
||||
locations without extracting them from exception messages.
|
||||
- Documented supported syntax, warning behavior, diagnostic codes, and limitations.
|
||||
- Audited diagnostic coverage and added unsupported-statement variants, namespace
|
||||
termination, formatting/path handling, first-error stopping, deferred diagnostic
|
||||
order, duplicate/overlap errors, and supported decoding preservation tests.
|
||||
Linux file-read errors and legacy file-error messages are checked explicitly.
|
||||
|
||||
### 2026-10-07
|
||||
|
||||
#### Added
|
||||
|
||||
- Added regression coverage for signed bit-length boundaries, deterministic
|
||||
Intel/Motorola extraction, lookup failures, runtime validation, PGN, comments,
|
||||
file formatting, metadata copying/lifetime, and TypeFactory behavior.
|
||||
- Added direct-handler and resolver tests for unsupported comments and ambiguous
|
||||
`VAL_` references in manually constructed databases.
|
||||
- Documented GCC/gcov/LCOV instrumentation, Qt Creator setup, and HTML reports.
|
||||
Coverage after the added tests: 98.4% of lines and 71.4% of branches with
|
||||
GCC 14.2 and Qt 6.8.2, including the standalone tree test.
|
||||
- Added a reusable post-build coverage report script and step-by-step Qt Creator
|
||||
configurations for model tests, strict warning checks, coverage, core-only,
|
||||
standalone tree tests, and the demo. Machine-specific `.user` settings stay
|
||||
outside version control.
|
||||
- Basic `M` / `mN` multiplexing metadata in parsed, tree, and runtime definitions.
|
||||
- Deferred selector and overlap validation with source locations: one unsigned
|
||||
selector, representable branch values, and overlaps only between exclusive branches.
|
||||
- Selector-first decoding using exact raw values, preserving definition order and
|
||||
unconditional signals. Explicit statuses distinguish inactive branches, missing
|
||||
selector data, insufficient payloads, and malformed runtime metadata.
|
||||
- Registered `SG_MUL_VAL_` rejection through TypeFactory; extended and nested
|
||||
multiplexing remain unsupported. Added parser/decoder regression coverage and
|
||||
documented supported syntax and consumer behavior.
|
||||
|
||||
#### Changed
|
||||
|
||||
- Qt-dependent targets now require the installed Qt 6.8.2 through a shared qmake
|
||||
version check; removed Qt 5 compatibility instructions. Core remains Qt-free.
|
||||
- Used explicit local types in the additional coverage and model tests. Functions
|
||||
retain explicit return types, and runtime handler selection uses TypeFactory
|
||||
without lambdas or extra factory layers for concrete objects.
|
||||
- Coverage documentation now describes the selected open GCC/LCOV toolchain.
|
||||
- Overlapping unconditional signals are now rejected during parsing.
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Linked QtGui only in the optional model tests and used QGuiApplication with an
|
||||
offscreen default, resolving the QAbstractItemModelTester invalid QPixmap
|
||||
metatype warning without adding QtGui to the adapter library.
|
||||
- Accepted tabs after `CM_` by using the comment parser's keyword extraction
|
||||
instead of requiring a literal-space prefix.
|
||||
- Removed test compiler warnings by using `QVERIFY_THROWS_EXCEPTION` and
|
||||
explicitly discarding `nodiscard` return values in exception checks.
|
||||
- Reject duplicate frames by normalized CAN ID and frame type, including
|
||||
equivalent extended ID encodings, and duplicate signal names within a frame.
|
||||
Errors report the file path and line of the repeated definition. Standard and
|
||||
extended frames may share a numeric ID; separate frames may reuse signal names.
|
||||
Added regression coverage and updated parser documentation.
|
||||
|
||||
### 2026-10-06
|
||||
|
||||
#### Added
|
||||
|
||||
- Added non-owning TreeNode parent navigation and stable sibling positions;
|
||||
disabled node moves to preserve links while retaining unique_ptr ownership.
|
||||
- Added optional read-only Qt Core DbcTreeModel with documented columns and
|
||||
metadata roles, exact VAL_ entries, exclusive tree ownership, and reset-based
|
||||
reload/clear support. Core remains independent of Qt.
|
||||
- Added QAbstractItemModelTester coverage, navigation/metadata/reset tests,
|
||||
a standalone Qt-free tree test, and adapter build and usage documentation.
|
||||
|
||||
- Added `VAL_` signal value descriptions through the statement dispatcher and
|
||||
factory, with complete syntax validation, exact signed/unsigned 64-bit keys,
|
||||
deferred reference resolution, duplicate detection, and source error locations.
|
||||
Distinct keys from multiple statements merge; standard and extended frames
|
||||
remain distinct under existing CAN ID normalization.
|
||||
- Preserved descriptions in parsed metadata, runtime decode definitions, and UI
|
||||
tree metadata. Added `DecodedSignalValue::GetValueDescription()` and
|
||||
`FindValueDescription()` for raw integer lookup before physical scaling.
|
||||
Unknown values retain normal numeric decoding.
|
||||
- Added regression coverage for syntax, quoting, whitespace, integer boundaries,
|
||||
declaration order, invalid references, duplicates, scaling, and both builders;
|
||||
documented syntax, lookup behavior, and limitations in README.
|
||||
|
||||
### 2026-10-05
|
||||
|
||||
#### Changed
|
||||
|
||||
- Split the qmake project into a reusable static library in `core/`, a demo in
|
||||
`examples/`, and a combined regression test executable in `tests/`. Added
|
||||
shared `.pri` files and updated build instructions. (`f17ddb6`, #11)
|
||||
- Added `.clang-format` and applied consistent formatting to the source code
|
||||
and tests. (`b91cf4a`, #7)
|
||||
- Replaced lambdas with explicit functions and simpler code in statement
|
||||
handlers, the decoder, the demo, and regression tests. (`03dc8f2`)
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Added complete validation of `SG_` signal statements, including syntax,
|
||||
receivers, numeric fields, lengths of 1–64 bits, physical ranges, and signal
|
||||
bounds within the declared frame payload for Intel and Motorola bit order.
|
||||
Invalid definitions report the file path and line number. Multiplexing
|
||||
markers are explicitly rejected. Added regression tests and documentation.
|
||||
(`8d82b13`, #6)
|
||||
|
||||
#### Documentation and maintenance
|
||||
|
||||
- Regenerated Doxygen documentation after code changes and the project
|
||||
restructuring. (`6cd9976`, `0067cb4`, `f17ddb6`)
|
||||
- Removed the temporary signal-validation issue document. (`1163277`)
|
||||
|
||||
### 2026-10-01
|
||||
|
||||
#### Changed
|
||||
|
||||
- Moved DBC statement parsing into `TypeFactory`-registered handlers for
|
||||
`BO_`, `SG_`, and `CM_`, with a shared parse context and keyword dispatcher.
|
||||
Added tests for dispatch and handler replacement, and documented how to
|
||||
register additional handlers. (`88b5883`, #4)
|
||||
- **API change:** `DecodedSignalValue::rawValue` now uses
|
||||
`std::variant<std::int64_t, std::uint64_t>` instead of `int64_t`. Consumers
|
||||
must handle the appropriate variant alternative. Physical values remain
|
||||
`double` and may lose precision for large integers. (`69074e3`, #2)
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Corrected Motorola signal extraction within bytes and across byte
|
||||
boundaries using DBC sawtooth bit numbering. Added decoder regression
|
||||
tests and build instructions; introduced the `TypeFactory` utility.
|
||||
(`2c057b6`)
|
||||
- Preserved the full unsigned 64-bit raw-value range, including values above
|
||||
`INT64_MAX`, and updated physical conversion and demo output. Added tests
|
||||
for signed and unsigned boundaries and numeric output. (`69074e3`, #2)
|
||||
- Validated `BO_` frame syntax, CAN identifiers, payload lengths, numeric
|
||||
overflow, and unexpected trailing fields. Parsing errors now include the
|
||||
file path and physical line number. Added parser regression tests.
|
||||
(`3bd9339`, #3)
|
||||
|
||||
## v1.0 — 2026-06-14
|
||||
|
||||
Tag `v1.0` points to `38ce043` and includes the initial implementation below.
|
||||
|
||||
### Documentation
|
||||
|
||||
- Added source-file headers with author information and MIT license
|
||||
references. (`e2ffa97`)
|
||||
- Added and subsequently simplified the Doxygen configuration.
|
||||
(`e2c07dd`, `4c8af9f`)
|
||||
- Generated API documentation and refreshed the generated documentation.
|
||||
(`dfec39d`, `38ce043`)
|
||||
|
||||
### Initial implementation — 2026-03-13
|
||||
|
||||
#### Added
|
||||
|
||||
- Initialized the repository with a README and MIT license. (`4270459`)
|
||||
- Added the DBC parser, frame and signal metadata, a tree representation and
|
||||
builder, a demonstration program, and a qmake project. (`2a90b2d`)
|
||||
- Added runtime decoding through `DbcDecodeBuilder`, `DecodeDatabase`, and
|
||||
`DbcDecoder`, including CAN-frame lookup, Intel and Motorola extraction,
|
||||
signed and unsigned signals, and factor/offset conversion. Updated parser
|
||||
metadata and the demo to support decoding. (`a53a5df`)
|
||||
|
||||
#### Documentation and maintenance
|
||||
|
||||
- Added `.gitignore` and expanded the README with architecture, data
|
||||
structures, parsing behavior, decoding examples, and usage documentation.
|
||||
(`efc57d6`, `f2aa10c`, `cb20f5f`, `f0e7065`)
|
||||
@@ -0,0 +1,8 @@
|
||||
INCLUDEPATH += $$PWD
|
||||
DEPENDPATH += $$PWD
|
||||
# Consumers can override this when building separately from the root project.
|
||||
isEmpty(DBC_CORE_BUILD_DIR): DBC_CORE_BUILD_DIR = $$clean_path($$OUT_PWD/../core)
|
||||
LIBS += -L$$DBC_CORE_BUILD_DIR -ldbc_core
|
||||
win32-msvc*: DBC_CORE_LIBRARY = $$DBC_CORE_BUILD_DIR/dbc_core.lib
|
||||
else: DBC_CORE_LIBRARY = $$DBC_CORE_BUILD_DIR/libdbc_core.a
|
||||
PRE_TARGETDEPS += $$DBC_CORE_LIBRARY
|
||||
@@ -0,0 +1,6 @@
|
||||
TEMPLATE = lib
|
||||
TARGET = dbc_core
|
||||
CONFIG += staticlib c++17
|
||||
CONFIG -= qt
|
||||
include(core_files.pri)
|
||||
CONFIG -= debug_and_release debug_and_release_target
|
||||
@@ -0,0 +1,27 @@
|
||||
SOURCES += \
|
||||
$$PWD/decode_database.cpp \
|
||||
$$PWD/dbc_decode_builder.cpp \
|
||||
$$PWD/dbc_decoder.cpp \
|
||||
$$PWD/dbc_parser.cpp \
|
||||
$$PWD/dbc_statement_handler.cpp \
|
||||
$$PWD/dbc_tree_builder.cpp \
|
||||
$$PWD/tree_node.cpp
|
||||
|
||||
HEADERS += \
|
||||
$$PWD/signal_layout.h \
|
||||
$$PWD/definition_key.h \
|
||||
$$PWD/dbc_diagnostic.h \
|
||||
$$PWD/multiplexing.h \
|
||||
$$PWD/dbc_database.h \
|
||||
$$PWD/dbc_decode_builder.h \
|
||||
$$PWD/dbc_decoder.h \
|
||||
$$PWD/dbc_parser.h \
|
||||
$$PWD/dbc_statement_handler.h \
|
||||
$$PWD/dbc_tree_builder.h \
|
||||
$$PWD/decode_database.h \
|
||||
$$PWD/frame_info.h \
|
||||
$$PWD/signal_info.h \
|
||||
$$PWD/value_descriptions.h \
|
||||
$$PWD/tree_node.h \
|
||||
$$PWD/text_utils.h \
|
||||
$$PWD/typefactory.h
|
||||
@@ -20,7 +20,7 @@
|
||||
* @brief Parsed DBC content stored in a simple internal form.
|
||||
*/
|
||||
struct DbcDatabase {
|
||||
std::vector<FrameInfo> frames; /**< All frames found in the DBC file. */
|
||||
std::vector<FrameInfo> frames; /**< All frames found in the DBC file. */
|
||||
};
|
||||
|
||||
#endif /* DBC_DATABASE_H */
|
||||
@@ -0,0 +1,57 @@
|
||||
/**
|
||||
* @file dbc_decode_builder.cpp
|
||||
* @brief
|
||||
*
|
||||
* Created: 2026-03-13
|
||||
* Author: Deeaitch (Dim. Himro)
|
||||
*
|
||||
* Licensed under the MIT License.
|
||||
* See LICENSE file in the project root for full license text.
|
||||
*/
|
||||
|
||||
#include "dbc_decode_builder.h"
|
||||
#include <utility>
|
||||
|
||||
DecodeDatabase DbcDecodeBuilder::Build(const DbcDatabase &source) const {
|
||||
std::vector<DecodeFrame> frames;
|
||||
frames.reserve(source.frames.size());
|
||||
|
||||
for (const FrameInfo &sourceFrame: source.frames) {
|
||||
DecodeFrame targetFrame;
|
||||
|
||||
targetFrame.name = sourceFrame.name;
|
||||
targetFrame.canId = sourceFrame.canId;
|
||||
targetFrame.isExtended = sourceFrame.isExtended;
|
||||
targetFrame.dlc = sourceFrame.dlc;
|
||||
targetFrame.pgn = sourceFrame.pgn;
|
||||
targetFrame.hasPgn = sourceFrame.hasPgn;
|
||||
targetFrame.transmitter = sourceFrame.transmitter;
|
||||
targetFrame.comment = sourceFrame.comment;
|
||||
|
||||
targetFrame.signals.reserve(sourceFrame.signals.size());
|
||||
for (const SignalInfo &sourceSignal: sourceFrame.signals) {
|
||||
DecodeSignal targetSignal;
|
||||
|
||||
targetSignal.multiplexing = sourceSignal.multiplexing;
|
||||
targetSignal.name = sourceSignal.name;
|
||||
targetSignal.startBit = sourceSignal.startBit;
|
||||
targetSignal.length = sourceSignal.length;
|
||||
targetSignal.byteOrder = sourceSignal.isLittleEndian ? ByteOrder::Intel : ByteOrder::Motorola;
|
||||
targetSignal.valueType = sourceSignal.isSigned ? ValueType::Signed : ValueType::Unsigned;
|
||||
targetSignal.factor = sourceSignal.factor;
|
||||
targetSignal.offset = sourceSignal.offset;
|
||||
targetSignal.minimum = sourceSignal.minimum;
|
||||
targetSignal.maximum = sourceSignal.maximum;
|
||||
targetSignal.unit = sourceSignal.unit;
|
||||
targetSignal.receivers = sourceSignal.receivers;
|
||||
targetSignal.comment = sourceSignal.comment;
|
||||
targetSignal.valueDescriptions = sourceSignal.valueDescriptions;
|
||||
|
||||
targetFrame.signals.push_back(std::move(targetSignal));
|
||||
}
|
||||
|
||||
frames.push_back(std::move(targetFrame));
|
||||
}
|
||||
|
||||
return DecodeDatabase(frames);
|
||||
}
|
||||
@@ -19,13 +19,14 @@
|
||||
* @brief Converts parsed DBC data into runtime decode database.
|
||||
*/
|
||||
class DbcDecodeBuilder {
|
||||
public:
|
||||
public:
|
||||
/**
|
||||
* @brief Build runtime decode database.
|
||||
* @param source Parsed DBC database.
|
||||
* @return Runtime-ready decode database.
|
||||
* @return Immutable runtime snapshot independent of source lifetime.
|
||||
* @throws std::invalid_argument for invalid metadata or duplicate keys.
|
||||
*/
|
||||
DecodeDatabase Build (const DbcDatabase &source) const;
|
||||
DecodeDatabase Build(const DbcDatabase &source) const;
|
||||
};
|
||||
|
||||
#endif /* DBC_DECODE_BUILDER_H */
|
||||
@@ -0,0 +1,220 @@
|
||||
/**
|
||||
* @file dbc_decoder.cpp
|
||||
* @brief
|
||||
*
|
||||
* Created: 2026-03-13
|
||||
* Author: Deeaitch (Dim. Himro)
|
||||
*
|
||||
* Licensed under the MIT License.
|
||||
* See LICENSE file in the project root for full license text.
|
||||
*/
|
||||
|
||||
#include "dbc_decoder.h"
|
||||
#include "signal_layout.h"
|
||||
#include <cmath>
|
||||
#include <utility>
|
||||
|
||||
std::shared_ptr<const DecodeFrame> DbcDecoder::FindFrame(const DecodeDatabase &database,
|
||||
std::uint32_t canId,
|
||||
bool isExtended) const {
|
||||
return database.FindFrame(FrameKey(canId, isExtended));
|
||||
}
|
||||
|
||||
DecodedFrameValue DbcDecoder::Decode(const DecodeDatabase &database,
|
||||
const RawCanFrame &frame) const {
|
||||
DecodedFrameValue result;
|
||||
result.key = FrameKey(frame.canId, frame.isExtended);
|
||||
const std::shared_ptr<const DecodeFrame> definition = FindFrame(database, frame.canId, frame.isExtended);
|
||||
|
||||
if (definition == nullptr)
|
||||
return result;
|
||||
|
||||
result.definition = definition;
|
||||
result.valid = true;
|
||||
result.status = frame.data.size() < definition->dlc
|
||||
? FrameDecodeStatus::InsufficientPayload
|
||||
: FrameDecodeStatus::Valid;
|
||||
|
||||
const SelectorState selector = ReadSelector(*definition, frame);
|
||||
result.signals.reserve(definition->signals.size());
|
||||
for (const DecodeSignal &signal: definition->signals) {
|
||||
DecodedSignalValue decoded = DecodeOneSignal(signal, definition->dlc, frame, selector);
|
||||
if (!decoded.valid && decoded.status != SignalDecodeStatus::Inactive &&
|
||||
result.status == FrameDecodeStatus::Valid)
|
||||
result.status = FrameDecodeStatus::SignalErrors;
|
||||
decoded.definition = std::shared_ptr<const DecodeSignal>(definition, &signal);
|
||||
decoded.key = SignalKey(result.key, signal.name);
|
||||
result.signals.push_back(std::move(decoded));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
bool DbcDecoder::IsValidDefinition(const DecodeSignal &signal, std::uint8_t dlc) {
|
||||
if (signal.length == 0U || signal.length > 64U ||
|
||||
(signal.byteOrder != ByteOrder::Intel && signal.byteOrder != ByteOrder::Motorola) ||
|
||||
(signal.valueType != ValueType::Unsigned && signal.valueType != ValueType::Signed) ||
|
||||
(signal.multiplexing.role != MultiplexRole::Unconditional &&
|
||||
signal.multiplexing.role != MultiplexRole::Selector &&
|
||||
signal.multiplexing.role != MultiplexRole::Branch))
|
||||
return false;
|
||||
|
||||
return IsValidSignalLayout(signal.startBit, signal.length,
|
||||
signal.byteOrder == ByteOrder::Intel, dlc);
|
||||
}
|
||||
|
||||
DbcDecoder::SelectorState DbcDecoder::ReadSelector(const DecodeFrame &definition,
|
||||
const RawCanFrame &frame) {
|
||||
SelectorState selector;
|
||||
std::size_t count = 0U;
|
||||
for (const DecodeSignal &signal: definition.signals) {
|
||||
if (signal.multiplexing.role == MultiplexRole::Selector) {
|
||||
selector.definition = &signal;
|
||||
++count;
|
||||
}
|
||||
}
|
||||
if (count != 1U)
|
||||
return selector;
|
||||
|
||||
const DecodeSignal &signal = *selector.definition;
|
||||
selector.valid = signal.valueType == ValueType::Unsigned &&
|
||||
IsValidDefinition(signal, definition.dlc);
|
||||
selector.available = selector.valid && ExtractUnsigned(frame.data, signal, selector.value);
|
||||
return selector;
|
||||
}
|
||||
|
||||
DecodedSignalValue DbcDecoder::DecodeOneSignal(const DecodeSignal &signal,
|
||||
std::uint8_t dlc,
|
||||
const RawCanFrame &frame,
|
||||
const SelectorState &selector) {
|
||||
DecodedSignalValue decoded;
|
||||
std::uint64_t unsignedValue = 0U;
|
||||
|
||||
if (!IsValidDefinition(signal, dlc) ||
|
||||
(signal.multiplexing.role != MultiplexRole::Unconditional && !selector.valid)) {
|
||||
return decoded;
|
||||
}
|
||||
if (signal.multiplexing.role == MultiplexRole::Branch) {
|
||||
if (selector.definition->length < 64U && signal.multiplexing.value >= (std::uint64_t(1U) << selector.definition->length)) {
|
||||
return decoded;
|
||||
}
|
||||
if (!selector.available) {
|
||||
decoded.status = SignalDecodeStatus::SelectorUnavailable;
|
||||
return decoded;
|
||||
}
|
||||
if (signal.multiplexing.value != selector.value) {
|
||||
decoded.status = SignalDecodeStatus::Inactive;
|
||||
return decoded;
|
||||
}
|
||||
}
|
||||
if (!ExtractUnsigned(frame.data, signal, unsignedValue)) {
|
||||
decoded.status = SignalDecodeStatus::InsufficientPayload;
|
||||
return decoded;
|
||||
}
|
||||
|
||||
if (signal.valueType == ValueType::Signed)
|
||||
decoded.rawValue = SignExtend(unsignedValue, signal.length);
|
||||
else
|
||||
decoded.rawValue = unsignedValue;
|
||||
|
||||
double numericValue;
|
||||
if (const std::int64_t *signedValue = std::get_if<std::int64_t>(&decoded.rawValue))
|
||||
numericValue = static_cast<double>(*signedValue);
|
||||
else
|
||||
numericValue = static_cast<double>(std::get<std::uint64_t>(decoded.rawValue));
|
||||
decoded.physicalValue = numericValue * signal.factor + signal.offset;
|
||||
if (!std::isfinite(decoded.physicalValue)) {
|
||||
decoded.status = SignalDecodeStatus::PhysicalConversionFailed;
|
||||
return decoded;
|
||||
}
|
||||
decoded.valid = true;
|
||||
decoded.status = SignalDecodeStatus::Valid;
|
||||
|
||||
return decoded;
|
||||
}
|
||||
|
||||
bool DbcDecoder::ExtractUnsigned(const std::vector<std::uint8_t> &data,
|
||||
const DecodeSignal &signal,
|
||||
std::uint64_t &value) {
|
||||
if ((signal.length == 0U) || (signal.length > 64U))
|
||||
return false;
|
||||
|
||||
if (signal.byteOrder == ByteOrder::Intel)
|
||||
return ExtractIntel(data, signal.startBit, signal.length, value);
|
||||
|
||||
return ExtractMotorola(data, signal.startBit, signal.length, value);
|
||||
}
|
||||
|
||||
bool DbcDecoder::ExtractIntel(const std::vector<std::uint8_t> &data,
|
||||
std::uint32_t startBit,
|
||||
std::uint32_t length,
|
||||
std::uint64_t &value) {
|
||||
value = 0U;
|
||||
|
||||
for (std::uint32_t bitIndex = 0U; bitIndex < length; ++bitIndex) {
|
||||
const std::uint64_t absoluteBit = std::uint64_t(startBit) + bitIndex;
|
||||
const std::uint64_t byteIndex = absoluteBit / 8U;
|
||||
const std::uint32_t bitInByte = absoluteBit % 8U;
|
||||
|
||||
if (byteIndex >= data.size())
|
||||
return false;
|
||||
|
||||
const std::uint64_t bitValue =
|
||||
(static_cast<std::uint64_t>((data[byteIndex] >> bitInByte) & 0x01U) << bitIndex);
|
||||
|
||||
value |= bitValue;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool DbcDecoder::ExtractMotorola(const std::vector<std::uint8_t> &data,
|
||||
std::uint32_t startBit,
|
||||
std::uint32_t length,
|
||||
std::uint64_t &value) {
|
||||
/*
|
||||
* DBC Motorola bit numbering:
|
||||
* - startBit points to the most significant bit of the signal
|
||||
* - inside a byte, bit numbering goes 7..0
|
||||
* - crossing byte boundary moves to the next byte, bit 7
|
||||
* Example: a signal starting at 7 follows 7..0, 15..8, 23..16.
|
||||
*/
|
||||
|
||||
value = 0U;
|
||||
|
||||
std::size_t byteIndex = startBit / 8U;
|
||||
std::uint32_t bitInByte = startBit % 8U;
|
||||
|
||||
for (std::uint32_t bitIndex = 0U; bitIndex < length; ++bitIndex) {
|
||||
if (byteIndex >= data.size())
|
||||
return false;
|
||||
|
||||
value <<= 1U;
|
||||
value |= static_cast<std::uint64_t>((data[byteIndex] >> bitInByte) & 0x01U);
|
||||
|
||||
if (bitInByte == 0U) {
|
||||
++byteIndex;
|
||||
bitInByte = 7U;
|
||||
} else
|
||||
--bitInByte;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
std::int64_t DbcDecoder::SignExtend(std::uint64_t value, std::uint32_t bitLength) {
|
||||
if ((bitLength == 0U) || (bitLength > 64U))
|
||||
return 0;
|
||||
|
||||
const std::uint64_t signMask = std::uint64_t(1U) << (bitLength - 1U);
|
||||
const std::uint64_t valueMask = (bitLength == 64U)
|
||||
? ~std::uint64_t(0U)
|
||||
: (std::uint64_t(1U) << bitLength) - 1U;
|
||||
value &= valueMask;
|
||||
|
||||
if ((value & signMask) == 0U)
|
||||
return static_cast<std::int64_t>(value);
|
||||
|
||||
// The complemented magnitude fits int64_t, including for INT64_MIN.
|
||||
return -1 - static_cast<std::int64_t>((~value) & valueMask);
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
/**
|
||||
* @file dbc_decoder.h
|
||||
* @brief
|
||||
*
|
||||
* Created: 2026-03-13
|
||||
* Author: Deeaitch (Dim. Himro)
|
||||
*
|
||||
* Licensed under the MIT License.
|
||||
* See LICENSE file in the project root for full license text.
|
||||
*/
|
||||
|
||||
#ifndef DBC_DECODER_H
|
||||
#define DBC_DECODER_H
|
||||
|
||||
#include <cstdint>
|
||||
#include <variant>
|
||||
#include <vector>
|
||||
|
||||
#include "decode_database.h"
|
||||
|
||||
/**
|
||||
* @brief Raw CAN frame used for runtime or trace decoding.
|
||||
*/
|
||||
struct RawCanFrame {
|
||||
std::uint32_t canId = 0U; /**< Normalized CAN ID. */
|
||||
bool isExtended = false; /**< true for extended frame. */
|
||||
std::vector<std::uint8_t> data; /**< Payload bytes. */
|
||||
|
||||
RawCanFrame() = default;
|
||||
};
|
||||
|
||||
enum class SignalDecodeStatus {
|
||||
InvalidDefinition,
|
||||
InsufficientPayload,
|
||||
SelectorUnavailable,
|
||||
Inactive,
|
||||
Valid,
|
||||
PhysicalConversionFailed
|
||||
};
|
||||
|
||||
/** Frame summary: short payload takes precedence over individual signal errors. */
|
||||
enum class FrameDecodeStatus {
|
||||
UnknownFrame,
|
||||
InsufficientPayload,
|
||||
SignalErrors,
|
||||
Valid
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief One decoded signal value.
|
||||
*/
|
||||
struct DecodedSignalValue {
|
||||
std::shared_ptr<const DecodeSignal> definition; /**< Owning immutable definition. */
|
||||
SignalKey key; /**< Stable application identifier. */
|
||||
RawSignalValue rawValue = std::uint64_t(0U); /**< Exact raw value for Valid or PhysicalConversionFailed. */
|
||||
double physicalValue = 0.0; /**< Conversion result, possibly NaN/Inf on failure. */
|
||||
bool valid = false; /**< true if decoding succeeded. */
|
||||
SignalDecodeStatus status = SignalDecodeStatus::InvalidDefinition;
|
||||
|
||||
/** Lookup using the raw integer; nullptr for invalid or unmapped values. */
|
||||
const std::string *GetValueDescription() const {
|
||||
return valid && definition ? FindValueDescription(definition->valueDescriptions, rawValue) : nullptr;
|
||||
}
|
||||
|
||||
DecodedSignalValue() = default;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Fully decoded frame.
|
||||
*/
|
||||
struct DecodedFrameValue {
|
||||
std::shared_ptr<const DecodeFrame> definition; /**< Owning immutable definition. */
|
||||
FrameKey key; /**< Stable application identifier. */
|
||||
std::vector<DecodedSignalValue> signals; /**< Decoded signal values. */
|
||||
bool valid = false; /**< true if frame was matched. */
|
||||
FrameDecodeStatus status = FrameDecodeStatus::UnknownFrame; /**< Inspect signals for individual failures. */
|
||||
|
||||
DecodedFrameValue() = default;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Runtime CAN decoder using prebuilt decode database.
|
||||
*/
|
||||
class DbcDecoder {
|
||||
public:
|
||||
/**
|
||||
* @brief Find frame definition by CAN ID.
|
||||
* @param database Runtime decode database.
|
||||
* @param canId Normalized CAN ID.
|
||||
* @param isExtended true for extended frame.
|
||||
* @return Owning immutable frame handle or nullptr. Safe across reload.
|
||||
*/
|
||||
std::shared_ptr<const DecodeFrame> FindFrame(const DecodeDatabase &database,
|
||||
std::uint32_t canId,
|
||||
bool isExtended) const;
|
||||
|
||||
/**
|
||||
* @brief Decode one raw CAN frame.
|
||||
* @param database Runtime decode database.
|
||||
* @param frame Raw CAN frame.
|
||||
* Short payloads decode available signals; bytes beyond declared DLC are ignored.
|
||||
* @return Decoded frame value.
|
||||
*/
|
||||
DecodedFrameValue Decode(const DecodeDatabase &database,
|
||||
const RawCanFrame &frame) const;
|
||||
|
||||
private:
|
||||
static bool IsValidDefinition(const DecodeSignal &signal, std::uint8_t dlc);
|
||||
|
||||
struct SelectorState {
|
||||
const DecodeSignal *definition = nullptr;
|
||||
bool valid = false;
|
||||
bool available = false;
|
||||
std::uint64_t value = 0U;
|
||||
};
|
||||
|
||||
static SelectorState ReadSelector(const DecodeFrame &definition, const RawCanFrame &frame);
|
||||
static DecodedSignalValue DecodeOneSignal(const DecodeSignal &signal,
|
||||
std::uint8_t dlc,
|
||||
const RawCanFrame &frame,
|
||||
const SelectorState &selector);
|
||||
|
||||
static bool ExtractUnsigned(const std::vector<std::uint8_t> &data,
|
||||
const DecodeSignal &signal,
|
||||
std::uint64_t &value);
|
||||
|
||||
static bool ExtractIntel(const std::vector<std::uint8_t> &data,
|
||||
std::uint32_t startBit,
|
||||
std::uint32_t length,
|
||||
std::uint64_t &value);
|
||||
|
||||
static bool ExtractMotorola(const std::vector<std::uint8_t> &data,
|
||||
std::uint32_t startBit,
|
||||
std::uint32_t length,
|
||||
std::uint64_t &value);
|
||||
|
||||
static std::int64_t SignExtend(std::uint64_t value, std::uint32_t bitLength);
|
||||
};
|
||||
|
||||
#endif /* DBC_DECODER_H */
|
||||
@@ -0,0 +1,46 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
#ifndef DBC_DIAGNOSTIC_H
|
||||
#define DBC_DIAGNOSTIC_H
|
||||
|
||||
#include "dbc_database.h"
|
||||
#include <cstddef>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
enum class DbcDiagnosticSeverity {
|
||||
Warning,
|
||||
Error
|
||||
};
|
||||
|
||||
/** Stable categories; messages provide the details. */
|
||||
enum class DbcDiagnosticCode {
|
||||
FileOpenError,
|
||||
FileReadError,
|
||||
InvalidStatement,
|
||||
InvalidValueDescription,
|
||||
InvalidMultiplexing,
|
||||
UnsupportedStatement
|
||||
};
|
||||
|
||||
struct DbcDiagnostic {
|
||||
DbcDiagnosticSeverity severity;
|
||||
DbcDiagnosticCode code;
|
||||
std::string filePath;
|
||||
std::size_t lineNumber; // One-based physical line; zero for file-level errors.
|
||||
std::string message;
|
||||
};
|
||||
|
||||
struct DbcParseResult {
|
||||
DbcDatabase database;
|
||||
std::vector<DbcDiagnostic> diagnostics;
|
||||
|
||||
bool HasErrors() const {
|
||||
for (const DbcDiagnostic &diagnostic : diagnostics) {
|
||||
if (diagnostic.severity == DbcDiagnosticSeverity::Error)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
#endif /* DBC_DIAGNOSTIC_H */
|
||||
@@ -0,0 +1,150 @@
|
||||
/**
|
||||
* @file dbc_parser.cpp
|
||||
* @brief
|
||||
*
|
||||
* Created: 2026-03-13
|
||||
* Author: Deeaitch (Dim. Himro)
|
||||
*
|
||||
* Licensed under the MIT License.
|
||||
* See LICENSE file in the project root for full license text.
|
||||
*/
|
||||
|
||||
#include "dbc_parser.h"
|
||||
#include "dbc_statement_handler.h"
|
||||
|
||||
#include "text_utils.h"
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <stdexcept>
|
||||
#include <utility>
|
||||
|
||||
namespace {
|
||||
// Read through the closing unescaped quote, preserving comment whitespace.
|
||||
void ReadCommentLines(std::ifstream &input, std::string &statement,
|
||||
std::size_t &lineNumber) {
|
||||
bool inQuote = false;
|
||||
bool escaped = false;
|
||||
std::string part = statement;
|
||||
for (;;) {
|
||||
for (const char character: part) {
|
||||
if (escaped) {
|
||||
escaped = false;
|
||||
} else if (inQuote && character == '\\') {
|
||||
escaped = true;
|
||||
} else if (character == '"') {
|
||||
if (inQuote)
|
||||
return;
|
||||
inQuote = true;
|
||||
}
|
||||
}
|
||||
if (!inQuote || !std::getline(input, part))
|
||||
return;
|
||||
++lineNumber;
|
||||
if (!part.empty() && part.back() == '\r')
|
||||
part.pop_back();
|
||||
statement += '\n';
|
||||
statement += part;
|
||||
// A physical newline cannot escape the next line's first character.
|
||||
escaped = false;
|
||||
}
|
||||
}
|
||||
|
||||
DbcDiagnosticCode StatementErrorCode(const std::string &keyword) {
|
||||
if (keyword == "SG_MUL_VAL_")
|
||||
return DbcDiagnosticCode::UnsupportedStatement;
|
||||
if (keyword == "VAL_")
|
||||
return DbcDiagnosticCode::InvalidValueDescription;
|
||||
return DbcDiagnosticCode::InvalidStatement;
|
||||
}
|
||||
}
|
||||
|
||||
DbcDatabase DbcParser::ParseFile(const std::string &filePath) const {
|
||||
DbcParseResult result = ParseFileWithDiagnostics(filePath);
|
||||
for (const DbcDiagnostic &diagnostic : result.diagnostics) {
|
||||
if (diagnostic.severity == DbcDiagnosticSeverity::Error) {
|
||||
if (diagnostic.lineNumber == 0U)
|
||||
throw std::runtime_error(diagnostic.message);
|
||||
throw std::runtime_error(diagnostic.filePath + ":" +
|
||||
std::to_string(diagnostic.lineNumber) + ": " + diagnostic.message);
|
||||
}
|
||||
}
|
||||
return std::move(result.database);
|
||||
}
|
||||
|
||||
DbcParseResult DbcParser::ParseFileWithDiagnostics(const std::string &filePath) const {
|
||||
DbcParseResult result;
|
||||
std::ifstream input(filePath.c_str());
|
||||
if (!input.is_open()) {
|
||||
result.diagnostics.push_back({DbcDiagnosticSeverity::Error,
|
||||
DbcDiagnosticCode::FileOpenError, filePath, 0U,
|
||||
"Failed to open DBC file: " + filePath});
|
||||
return result;
|
||||
}
|
||||
|
||||
DbcDatabase database;
|
||||
DbcParseContext context{database, nullptr};
|
||||
const DbcStatementDispatcher dispatcher;
|
||||
bool inNamespace = false;
|
||||
std::size_t lineNumber = 0U;
|
||||
std::string line;
|
||||
while (std::getline(input, line)) {
|
||||
++lineNumber;
|
||||
if (!line.empty() && line.back() == '\r')
|
||||
line.pop_back();
|
||||
const std::string rawLine = line;
|
||||
const std::size_t statementLine = lineNumber;
|
||||
line = dbc_detail::TrimText(line);
|
||||
if (line.empty())
|
||||
continue;
|
||||
|
||||
std::istringstream tokens(line);
|
||||
std::string keyword;
|
||||
std::string argument;
|
||||
tokens >> keyword;
|
||||
const bool hasArgument = static_cast<bool>(tokens >> argument);
|
||||
if (inNamespace && !hasArgument && keyword != "BO_" && keyword != "SG_" &&
|
||||
keyword != "BS_" && keyword != "BS_:" &&
|
||||
keyword != "BU_" && keyword != "BU_:")
|
||||
continue; // NS_ lists syntax symbols; BO_, SG_, BS_ and BU_ end the list.
|
||||
inNamespace = keyword == "NS_" || keyword == "NS_:";
|
||||
|
||||
if (keyword == "CM_") {
|
||||
line = rawLine;
|
||||
ReadCommentLines(input, line, lineNumber);
|
||||
}
|
||||
|
||||
try {
|
||||
context.lineNumber = statementLine;
|
||||
if (!dispatcher.Dispatch(line, context)) {
|
||||
result.diagnostics.push_back({DbcDiagnosticSeverity::Warning,
|
||||
DbcDiagnosticCode::UnsupportedStatement,
|
||||
filePath, statementLine,
|
||||
"Unsupported statement '" + keyword +
|
||||
"' is ignored; decoding or metadata may be incomplete."});
|
||||
}
|
||||
} catch (const std::exception &error) {
|
||||
result.diagnostics.push_back({DbcDiagnosticSeverity::Error,
|
||||
StatementErrorCode(keyword), filePath,
|
||||
statementLine, error.what()});
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
if (input.bad() || !input.eof()) {
|
||||
result.diagnostics.push_back({DbcDiagnosticSeverity::Error,
|
||||
DbcDiagnosticCode::FileReadError, filePath, 0U,
|
||||
"Failed to read DBC file: " + filePath});
|
||||
return result;
|
||||
}
|
||||
|
||||
try {
|
||||
context.ResolveComments(filePath);
|
||||
context.ResolveValueDescriptions(filePath);
|
||||
context.ValidateMultiplexing(filePath);
|
||||
} catch (const DbcDiagnosticError &error) {
|
||||
result.diagnostics.push_back(error.diagnostic);
|
||||
return result;
|
||||
}
|
||||
result.database = std::move(database);
|
||||
return result;
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
/**
|
||||
* @file dbc_parser.h
|
||||
* @brief
|
||||
*
|
||||
* Created: 2026-03-13
|
||||
* Author: Deeaitch (Dim. Himro)
|
||||
*
|
||||
* Licensed under the MIT License.
|
||||
* See LICENSE file in the project root for full license text.
|
||||
*/
|
||||
|
||||
#ifndef DBC_PARSER_H
|
||||
#define DBC_PARSER_H
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "dbc_diagnostic.h"
|
||||
|
||||
/**
|
||||
* @brief Minimal DBC parser.
|
||||
*
|
||||
* Supports:
|
||||
* - BO_
|
||||
* - SG_
|
||||
* - CM_ BO_
|
||||
* - CM_ SG_
|
||||
* - basic M / mN multiplexing
|
||||
* - VAL_ signal value descriptions
|
||||
*
|
||||
* Frame/signal comments support multiline quoted text and deferred references.
|
||||
*
|
||||
* Reports unsupported statements as warnings, except SG_MUL_VAL_ which is
|
||||
* an error. VERSION, NS_, BS_, BU_ and NS_ symbol declarations stay quiet.
|
||||
*/
|
||||
class DbcParser {
|
||||
public:
|
||||
/**
|
||||
* @brief Parse DBC file.
|
||||
* @param filePath Path to input file.
|
||||
* @return Parsed database.
|
||||
* @throws std::runtime_error on file or parse errors.
|
||||
* Line parse errors include the file path and one-based line number.
|
||||
* Duplicate normalized CAN IDs of the same frame type and duplicate signal
|
||||
* names within a frame are rejected at the repeated definition's line.
|
||||
*/
|
||||
DbcDatabase ParseFile(const std::string &filePath) const;
|
||||
|
||||
/**
|
||||
* @brief Parse with warnings and a structured first error instead of throwing.
|
||||
* @return Valid database with diagnostics; empty database on error.
|
||||
* File errors use line zero; statement errors use physical one-based lines.
|
||||
* Warnings indicate ignored syntax and possible incomplete decoding.
|
||||
*/
|
||||
DbcParseResult ParseFileWithDiagnostics(const std::string &filePath) const;
|
||||
|
||||
};
|
||||
|
||||
#endif /* DBC_PARSER_H */
|
||||
@@ -0,0 +1,552 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
#include "dbc_statement_handler.h"
|
||||
#include "text_utils.h"
|
||||
#include "signal_layout.h"
|
||||
#include <charconv>
|
||||
#include <cmath>
|
||||
#include <limits>
|
||||
#include <regex>
|
||||
#include <sstream>
|
||||
#include <stdexcept>
|
||||
|
||||
namespace {
|
||||
std::uint32_t ParseDecimal(const std::string &text,
|
||||
std::uint32_t maximum,
|
||||
const char *field) {
|
||||
std::uint32_t value = 0U;
|
||||
const std::from_chars_result parsed = std::from_chars(text.data(), text.data() + text.size(), value);
|
||||
if (text.empty() || parsed.ec != std::errc() ||
|
||||
parsed.ptr != text.data() + text.size() || value > maximum)
|
||||
throw std::runtime_error(std::string("Invalid ") + field + ": " + text);
|
||||
return value;
|
||||
}
|
||||
|
||||
std::uint32_t ParseCanId(const std::string &text) {
|
||||
const std::uint32_t rawId = ParseDecimal(
|
||||
text, std::numeric_limits<std::uint32_t>::max(), "CAN ID");
|
||||
// Only bit 31 may accompany the actual 29-bit identifier.
|
||||
if ((rawId & 0x60000000U) != 0U)
|
||||
throw std::runtime_error("CAN ID exceeds the 29-bit identifier range.");
|
||||
return rawId;
|
||||
}
|
||||
|
||||
double ParsePhysicalValue(const std::string &text, const char *field) {
|
||||
static const std::regex number(
|
||||
R"(^[+-]?(?:[0-9]+(?:\.[0-9]*)?|\.[0-9]+)(?:[eE][+-]?[0-9]+)?$)");
|
||||
if (!std::regex_match(text, number))
|
||||
throw std::runtime_error(std::string("Invalid ") + field + ": " + text);
|
||||
// Floating-point from_chars is locale-independent and does not accept
|
||||
// a leading '+', which the DBC numeric grammar permits.
|
||||
const char *begin = text.data();
|
||||
const char *end = begin + text.size();
|
||||
if (*begin == '+')
|
||||
++begin;
|
||||
double value = 0.0;
|
||||
const std::from_chars_result parsed =
|
||||
std::from_chars(begin, end, value, std::chars_format::general);
|
||||
// Keep the existing rejection of conversion underflow into subnormal values.
|
||||
if (parsed.ec != std::errc() || parsed.ptr != end || !std::isfinite(value) ||
|
||||
std::fpclassify(value) == FP_SUBNORMAL)
|
||||
throw std::runtime_error(std::string("Invalid ") + field + ": " + text);
|
||||
return value;
|
||||
}
|
||||
|
||||
Multiplexing ParseMultiplexingMarker(const std::string &marker) {
|
||||
Multiplexing result;
|
||||
if (marker == "M")
|
||||
result.role = MultiplexRole::Selector;
|
||||
else if (!marker.empty()) {
|
||||
if (marker[0] != 'm')
|
||||
throw std::runtime_error("Unsupported multiplexing marker.");
|
||||
const std::string value = marker.substr(1U);
|
||||
const std::from_chars_result parsed =
|
||||
std::from_chars(value.data(), value.data() + value.size(), result.value);
|
||||
if (value.empty() || parsed.ec != std::errc() || parsed.ptr != value.data() + value.size())
|
||||
throw std::runtime_error("Invalid or unsupported multiplexing marker.");
|
||||
result.role = MultiplexRole::Branch;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
RawSignalValue ParseValueKey(const std::string &number) {
|
||||
RawSignalValue key;
|
||||
if (!number.empty() && number[0] == '-') {
|
||||
std::int64_t value = 0;
|
||||
const std::from_chars_result parsed =
|
||||
std::from_chars(number.data(), number.data() + number.size(), value);
|
||||
if (parsed.ec != std::errc() || parsed.ptr != number.data() + number.size())
|
||||
throw std::runtime_error("Invalid VAL_ integer: " + number);
|
||||
key = NormalizeValueKey(RawSignalValue(value));
|
||||
} else {
|
||||
std::uint64_t value = 0;
|
||||
const std::from_chars_result parsed =
|
||||
std::from_chars(number.data(), number.data() + number.size(), value);
|
||||
if (number.empty() || parsed.ec != std::errc() || parsed.ptr != number.data() + number.size())
|
||||
throw std::runtime_error("Invalid VAL_ integer: " + number);
|
||||
key = value;
|
||||
}
|
||||
return key;
|
||||
}
|
||||
|
||||
std::string UnescapeDescription(const std::string "ed) {
|
||||
std::string description;
|
||||
for (std::size_t i = 0; i < quoted.size(); ++i) {
|
||||
if (quoted[i] == '\\')
|
||||
++i;
|
||||
description += quoted[i];
|
||||
}
|
||||
return description;
|
||||
}
|
||||
|
||||
FrameInfo *FindUniqueFrame(DbcDatabase &database, std::uint32_t canId, bool isExtended) {
|
||||
FrameInfo *frame = nullptr;
|
||||
for (FrameInfo &candidate : database.frames) {
|
||||
if (candidate.canId == canId && candidate.isExtended == isExtended) {
|
||||
if (frame)
|
||||
throw std::runtime_error("Ambiguous VAL_ frame reference.");
|
||||
frame = &candidate;
|
||||
}
|
||||
}
|
||||
if (!frame)
|
||||
throw std::runtime_error("Unresolved VAL_ frame reference.");
|
||||
return frame;
|
||||
}
|
||||
|
||||
SignalInfo *FindUniqueSignal(FrameInfo &frame, const std::string &signalName) {
|
||||
SignalInfo *signal = nullptr;
|
||||
for (SignalInfo &candidate : frame.signals) {
|
||||
if (candidate.name == signalName) {
|
||||
if (signal)
|
||||
throw std::runtime_error("Ambiguous VAL_ signal reference: " + signalName);
|
||||
signal = &candidate;
|
||||
}
|
||||
}
|
||||
if (!signal)
|
||||
throw std::runtime_error("Unresolved VAL_ signal reference: " + signalName);
|
||||
return signal;
|
||||
}
|
||||
|
||||
std::uint64_t NextSignalBit(std::uint64_t bit, bool isLittleEndian) {
|
||||
if (isLittleEndian)
|
||||
return bit + 1U;
|
||||
// From bit 0, Motorola continues at bit 7 of the next byte (0 -> 15).
|
||||
return bit % 8U == 0U ? bit + 15U : bit - 1U;
|
||||
}
|
||||
|
||||
FrameInfo *FindFrameById(DbcDatabase &, std::uint32_t, bool);
|
||||
SignalInfo *FindSignalByName(FrameInfo &, const std::string &);
|
||||
} // namespace
|
||||
|
||||
namespace {
|
||||
std::vector<std::string> SplitReceivers(const std::string &text) {
|
||||
std::vector<std::string> receivers;
|
||||
std::string token;
|
||||
std::istringstream stream(text);
|
||||
|
||||
while (std::getline(stream, token, ',')) {
|
||||
token = dbc_detail::TrimText(token);
|
||||
if (!token.empty())
|
||||
receivers.push_back(token);
|
||||
}
|
||||
|
||||
return receivers;
|
||||
}
|
||||
|
||||
void NormalizeCanId(std::uint32_t rawCanId, std::uint32_t &normalizedCanId, bool &isExtended) {
|
||||
/*
|
||||
* DBC commonly stores extended identifiers with bit 31 set.
|
||||
* Example:
|
||||
* raw id = 0x80000000 | actual_29_bit_id
|
||||
*/
|
||||
if ((rawCanId & 0x80000000U) != 0U) {
|
||||
isExtended = true;
|
||||
normalizedCanId = (rawCanId & 0x1FFFFFFFU);
|
||||
} else {
|
||||
isExtended = (rawCanId > 0x7FFU);
|
||||
normalizedCanId = rawCanId;
|
||||
}
|
||||
}
|
||||
|
||||
std::uint32_t TryExtractPgn(std::uint32_t canId, bool isExtended, bool &hasPgn) {
|
||||
hasPgn = false;
|
||||
|
||||
if (!isExtended)
|
||||
return 0U;
|
||||
|
||||
if ((canId & 0x1FFFFFFFU) != canId)
|
||||
return 0U;
|
||||
|
||||
const std::uint32_t pf = (canId >> 16U) & 0xFFU;
|
||||
const std::uint32_t ps = (canId >> 8U) & 0xFFU;
|
||||
const std::uint32_t dp = (canId >> 24U) & 0x01U;
|
||||
|
||||
std::uint32_t pgn = 0U;
|
||||
|
||||
if (pf < 240U)
|
||||
pgn = (dp << 16U) | (pf << 8U);
|
||||
else
|
||||
pgn = (dp << 16U) | (pf << 8U) | ps;
|
||||
|
||||
hasPgn = true;
|
||||
return pgn;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
FrameInfo DbcFrameHandler::ParseFrameLine(const std::string &line) {
|
||||
/*
|
||||
* Example:
|
||||
* BO_ 256 EngineData: 8 EEC1
|
||||
*/
|
||||
|
||||
std::istringstream stream(line);
|
||||
std::string keyword;
|
||||
std::string idText;
|
||||
if (!(stream >> keyword >> idText) || keyword != "BO_")
|
||||
throw std::runtime_error("Missing CAN ID in frame definition.");
|
||||
|
||||
const std::uint32_t rawCanId = ParseCanId(idText);
|
||||
|
||||
std::string nameText;
|
||||
if (!std::getline(stream, nameText, ':') || stream.eof())
|
||||
throw std::runtime_error("Missing ':' in frame definition.");
|
||||
std::istringstream nameStream(nameText);
|
||||
FrameInfo frame;
|
||||
std::string extra;
|
||||
if (!(nameStream >> frame.name) || (nameStream >> extra))
|
||||
throw std::runtime_error("Missing or invalid frame name.");
|
||||
|
||||
std::string lengthText;
|
||||
if (!(stream >> lengthText))
|
||||
throw std::runtime_error("Missing payload length in frame definition.");
|
||||
frame.dlc = static_cast<std::uint8_t>(ParseDecimal(
|
||||
lengthText, std::numeric_limits<std::uint8_t>::max(), "payload length"));
|
||||
if (!(stream >> frame.transmitter))
|
||||
throw std::runtime_error("Missing transmitter in frame definition.");
|
||||
if (stream >> extra)
|
||||
throw std::runtime_error("Unexpected trailing field in frame definition: " + extra);
|
||||
|
||||
NormalizeCanId(rawCanId, frame.canId, frame.isExtended);
|
||||
frame.pgn = TryExtractPgn(frame.canId, frame.isExtended, frame.hasPgn);
|
||||
|
||||
return frame;
|
||||
}
|
||||
|
||||
SignalInfo DbcSignalHandler::ParseSignalLine(const std::string &line) {
|
||||
// Match the complete statement before converting any numeric fields.
|
||||
enum Field {
|
||||
NameAndMarker = 1, StartBit, BitLength, ByteOrder, Signedness,
|
||||
Factor, Offset, Minimum, Maximum, Unit, Receivers
|
||||
};
|
||||
static const std::regex syntax(
|
||||
// Name and optional multiplexing marker.
|
||||
R"dbc(^SG_[ \t]+([^:]+):[ \t]*)dbc"
|
||||
// Bit position, length, byte order and signedness.
|
||||
R"dbc(([^| \t]+)[ \t]*\|[ \t]*([^@ \t]+)[ \t]*@[ \t]*([01])([+-])[ \t]*)dbc"
|
||||
// Scaling factor and offset.
|
||||
R"dbc(\([ \t]*([^, \t]+)[ \t]*,[ \t]*([^ )\t]+)[ \t]*\)[ \t]*)dbc"
|
||||
// Physical range.
|
||||
R"dbc(\[[ \t]*([^| \t]+)[ \t]*\|[ \t]*([^\] \t]+)[ \t]*\][ \t]*)dbc"
|
||||
// Unit and receivers.
|
||||
R"dbc("([^"\r\n]*)"[ \t]+([^ \t,]+(?:[ \t]*,[ \t]*[^ \t,]+)*)[ \t]*$)dbc");
|
||||
std::smatch fields;
|
||||
if (!std::regex_match(line, fields, syntax))
|
||||
throw std::runtime_error("Malformed or unsupported SG_ signal definition.");
|
||||
|
||||
SignalInfo signal;
|
||||
std::istringstream nameFields(fields[NameAndMarker].str());
|
||||
std::string marker;
|
||||
std::string extra;
|
||||
nameFields >> signal.name >> marker;
|
||||
if (signal.name.empty() || (nameFields >> extra))
|
||||
throw std::runtime_error("Invalid signal name or multiplexing marker.");
|
||||
signal.multiplexing = ParseMultiplexingMarker(marker);
|
||||
|
||||
signal.startBit = ParseDecimal(fields[StartBit].str(),
|
||||
std::numeric_limits<std::uint32_t>::max(), "signal start bit");
|
||||
signal.length = ParseDecimal(fields[BitLength].str(), 64U, "signal length");
|
||||
if (signal.length == 0U)
|
||||
throw std::runtime_error("Signal length must be within 1..64 bits.");
|
||||
signal.isLittleEndian = fields[ByteOrder].str() == "1";
|
||||
signal.isSigned = fields[Signedness].str() == "-";
|
||||
|
||||
signal.factor = ParsePhysicalValue(fields[Factor].str(), "signal factor");
|
||||
signal.offset = ParsePhysicalValue(fields[Offset].str(), "signal offset");
|
||||
signal.minimum = ParsePhysicalValue(fields[Minimum].str(), "signal minimum");
|
||||
signal.maximum = ParsePhysicalValue(fields[Maximum].str(), "signal maximum");
|
||||
if (signal.minimum > signal.maximum)
|
||||
throw std::runtime_error("Signal minimum exceeds maximum.");
|
||||
signal.unit = fields[Unit].str();
|
||||
signal.receivers = SplitReceivers(fields[Receivers].str());
|
||||
return signal;
|
||||
}
|
||||
|
||||
|
||||
namespace {
|
||||
FrameInfo *FindFrameById(DbcDatabase &database,
|
||||
std::uint32_t canId,
|
||||
bool isExtended) {
|
||||
for (FrameInfo &frame : database.frames) {
|
||||
if (frame.canId == canId && frame.isExtended == isExtended)
|
||||
return &frame;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
SignalInfo *FindSignalByName(FrameInfo &frame, const std::string &signalName) {
|
||||
for (SignalInfo &signal : frame.signals) {
|
||||
if (signal.name == signalName)
|
||||
return &signal;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
}// namespace
|
||||
|
||||
void DbcFrameHandler::Handle(const std::string &line, DbcParseContext &context) const {
|
||||
FrameInfo frame = ParseFrameLine(line);
|
||||
if (FindFrameById(context.database, frame.canId, frame.isExtended) != nullptr)
|
||||
throw std::runtime_error("Duplicate " + std::string(frame.isExtended ? "extended" : "standard") +
|
||||
" frame CAN ID: " + std::to_string(frame.canId));
|
||||
context.database.frames.push_back(std::move(frame));
|
||||
context.currentFrame = &context.database.frames.back();
|
||||
context.signalLines.emplace_back();
|
||||
}
|
||||
|
||||
void DbcSignalHandler::Handle(const std::string &line, DbcParseContext &context) const {
|
||||
if (context.currentFrame == nullptr)
|
||||
throw std::runtime_error("Signal found before any frame definition.");
|
||||
SignalInfo signal = ParseSignalLine(line);
|
||||
if (FindSignalByName(*context.currentFrame, signal.name) != nullptr)
|
||||
throw std::runtime_error("Duplicate signal name '" + signal.name +
|
||||
"' in frame '" + context.currentFrame->name + "'.");
|
||||
if (!IsValidSignalLayout(signal.startBit, signal.length, signal.isLittleEndian,
|
||||
context.currentFrame->dlc))
|
||||
throw std::runtime_error("Signal exceeds the frame payload length.");
|
||||
context.currentFrame->signals.push_back(std::move(signal));
|
||||
context.signalLines.back().push_back(context.lineNumber);
|
||||
}
|
||||
|
||||
void DbcCommentHandler::Handle(const std::string &line, DbcParseContext &context) const {
|
||||
std::istringstream stream(line);
|
||||
std::string keyword;
|
||||
std::string target;
|
||||
stream >> keyword >> target;
|
||||
if (keyword != "CM_" || (target != "BO_" && target != "SG_"))
|
||||
return;
|
||||
|
||||
PendingComment pending;
|
||||
pending.isSignal = target == "SG_";
|
||||
pending.lineNumber = context.lineNumber;
|
||||
std::string idText;
|
||||
if (!(stream >> idText))
|
||||
throw std::runtime_error("Missing CAN ID in CM_ statement.");
|
||||
NormalizeCanId(ParseCanId(idText), pending.canId, pending.isExtended);
|
||||
if (pending.isSignal && (!(stream >> pending.signalName) ||
|
||||
pending.signalName.find_first_of("\";") != std::string::npos))
|
||||
throw std::runtime_error("Missing or invalid signal name in CM_ statement.");
|
||||
|
||||
stream >> std::ws;
|
||||
if (stream.get() != '"')
|
||||
throw std::runtime_error("Missing opening quote in CM_ statement.");
|
||||
bool closed = false;
|
||||
char character;
|
||||
while (stream.get(character)) {
|
||||
if (character == '"') {
|
||||
closed = true;
|
||||
break;
|
||||
}
|
||||
if (character == '\\') {
|
||||
if (!stream.get(character) || (character != '"' && character != '\\'))
|
||||
throw std::runtime_error("Invalid escape in CM_ statement.");
|
||||
}
|
||||
pending.comment += character;
|
||||
}
|
||||
if (!closed)
|
||||
throw std::runtime_error("Unterminated CM_ comment.");
|
||||
stream >> std::ws;
|
||||
if (stream.get() != ';')
|
||||
throw std::runtime_error("Missing semicolon in CM_ statement.");
|
||||
stream >> std::ws;
|
||||
if (!stream.eof())
|
||||
throw std::runtime_error("Unexpected trailing text in CM_ statement.");
|
||||
context.pendingComments.push_back(std::move(pending));
|
||||
}
|
||||
|
||||
void DbcParseContext::ResolveComments(const std::string &filePath) {
|
||||
for (const PendingComment &pending: pendingComments) {
|
||||
FrameInfo *frame = FindFrameById(database, pending.canId, pending.isExtended);
|
||||
if (!frame)
|
||||
throw DbcDiagnosticError(DbcDiagnosticCode::InvalidStatement, filePath,
|
||||
pending.lineNumber, "Unresolved CM_ frame reference.");
|
||||
if (pending.isSignal) {
|
||||
SignalInfo *signal = FindSignalByName(*frame, pending.signalName);
|
||||
if (!signal)
|
||||
throw DbcDiagnosticError(DbcDiagnosticCode::InvalidStatement, filePath,
|
||||
pending.lineNumber, "Unresolved CM_ signal reference: " + pending.signalName);
|
||||
signal->comment = pending.comment;
|
||||
} else {
|
||||
frame->comment = pending.comment;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DbcStatementDispatcher::DbcStatementDispatcher() {
|
||||
RegisterType<DbcHeaderHandler>("VERSION");
|
||||
RegisterType<DbcHeaderHandler>("NS_");
|
||||
RegisterType<DbcHeaderHandler>("NS_:");
|
||||
RegisterType<DbcHeaderHandler>("BS_");
|
||||
RegisterType<DbcHeaderHandler>("BS_:");
|
||||
RegisterType<DbcHeaderHandler>("BU_");
|
||||
RegisterType<DbcHeaderHandler>("BU_:");
|
||||
RegisterType<DbcUnsupportedMultiplexingHandler>("SG_MUL_VAL_");
|
||||
RegisterType<DbcFrameHandler>("BO_");
|
||||
RegisterType<DbcSignalHandler>("SG_");
|
||||
RegisterType<DbcCommentHandler>("CM_");
|
||||
RegisterType<DbcValueDescriptionHandler>("VAL_");
|
||||
}
|
||||
|
||||
void DbcHeaderHandler::Handle(const std::string &, DbcParseContext &) const {}
|
||||
|
||||
bool DbcStatementDispatcher::Dispatch(const std::string &line,
|
||||
DbcParseContext &context) const {
|
||||
std::istringstream stream(line);
|
||||
std::string keyword;
|
||||
stream >> keyword;
|
||||
const HandlerMap::const_iterator handler = m_handlers.find(keyword);
|
||||
if (handler == m_handlers.end())
|
||||
return false;
|
||||
handler->second->Handle(line, context);
|
||||
return true;
|
||||
}
|
||||
|
||||
void DbcValueDescriptionHandler::Handle(const std::string &line, DbcParseContext &context) const {
|
||||
static const std::regex header(R"(^VAL_[ \t]+([^ \t]+)[ \t]+([^ \t;]+)[ \t]+(.*)$)");
|
||||
static const std::regex pair(R"dbc(^([^ \t]+)[ \t]+"((?:[^"\\]|\\["\\])*)")dbc");
|
||||
std::smatch fields;
|
||||
if (!std::regex_match(line, fields, header))
|
||||
throw std::runtime_error("Malformed or unsupported VAL_ statement.");
|
||||
const std::uint32_t rawId = ParseDecimal(fields[1].str(), std::numeric_limits<std::uint32_t>::max(), "VAL_ CAN ID");
|
||||
if ((rawId & 0x60000000U) != 0U)
|
||||
throw std::runtime_error("VAL_ CAN ID exceeds the 29-bit identifier range.");
|
||||
PendingValueDescriptions pending;
|
||||
NormalizeCanId(rawId, pending.canId, pending.isExtended);
|
||||
pending.signalName = fields[2].str();
|
||||
pending.lineNumber = context.lineNumber;
|
||||
std::string rest = fields[3].str();
|
||||
while (rest != ";") {
|
||||
if (!std::regex_search(rest, fields, pair))
|
||||
throw std::runtime_error("Malformed VAL_ value/description pair or missing semicolon.");
|
||||
const std::string number = fields[1].str();
|
||||
const RawSignalValue key = ParseValueKey(number);
|
||||
const std::string description = UnescapeDescription(fields[2].str());
|
||||
if (!pending.descriptions.emplace(key, description).second)
|
||||
throw std::runtime_error("Duplicate VAL_ value key: " + number);
|
||||
const std::size_t consumed = static_cast<std::size_t>(fields.length());
|
||||
rest.erase(0, consumed);
|
||||
if (!rest.empty() && rest[0] != ';' && rest[0] != ' ' && rest[0] != '\t')
|
||||
throw std::runtime_error("Missing whitespace between VAL_ pairs.");
|
||||
rest = dbc_detail::TrimText(rest);
|
||||
}
|
||||
if (pending.descriptions.empty())
|
||||
throw std::runtime_error("VAL_ requires at least one value/description pair.");
|
||||
context.pendingValues.push_back(std::move(pending));
|
||||
}
|
||||
|
||||
void DbcParseContext::ResolveValueDescriptions(const std::string &filePath) {
|
||||
for (const PendingValueDescriptions &pending: pendingValues) {
|
||||
try {
|
||||
FrameInfo *frame = FindUniqueFrame(database, pending.canId, pending.isExtended);
|
||||
SignalInfo *signal = FindUniqueSignal(*frame, pending.signalName);
|
||||
for (const ValueDescriptions::value_type &entry: pending.descriptions) {
|
||||
if (!signal->valueDescriptions.insert(entry).second)
|
||||
throw std::runtime_error("Duplicate VAL_ value key for signal: " + pending.signalName);
|
||||
}
|
||||
} catch (const std::exception &error) {
|
||||
throw DbcDiagnosticError(DbcDiagnosticCode::InvalidValueDescription,
|
||||
filePath, pending.lineNumber, error.what());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DbcUnsupportedMultiplexingHandler::Handle(const std::string &, DbcParseContext &) const {
|
||||
throw std::runtime_error("Extended and nested multiplexing are unsupported.");
|
||||
}
|
||||
|
||||
namespace {
|
||||
std::vector<std::uint64_t> SignalBits(const SignalInfo &signal) {
|
||||
std::vector<std::uint64_t> bits;
|
||||
std::uint64_t bit = signal.startBit;
|
||||
for (std::uint32_t index = 0U; index < signal.length; ++index) {
|
||||
bits.push_back(bit);
|
||||
bit = NextSignalBit(bit, signal.isLittleEndian);
|
||||
}
|
||||
return bits;
|
||||
}
|
||||
|
||||
bool AreMutuallyExclusive(const SignalInfo &first, const SignalInfo &second) {
|
||||
return first.multiplexing.role == MultiplexRole::Branch &&
|
||||
second.multiplexing.role == MultiplexRole::Branch &&
|
||||
first.multiplexing.value != second.multiplexing.value;
|
||||
}
|
||||
|
||||
std::string ValidateBranch(const SignalInfo &signal, const SignalInfo *selector) {
|
||||
if (signal.multiplexing.role != MultiplexRole::Branch)
|
||||
return {};
|
||||
if (selector == nullptr)
|
||||
return "Multiplexed branch has no selector.";
|
||||
if (selector->length < 64U && signal.multiplexing.value >= (std::uint64_t(1U) << selector->length))
|
||||
return "Branch value exceeds selector raw range.";
|
||||
return {};
|
||||
}
|
||||
|
||||
const SignalInfo *FindSelector(const FrameInfo &frame,
|
||||
const std::vector<std::size_t> &lines,
|
||||
const std::string &filePath) {
|
||||
const SignalInfo *selector = nullptr;
|
||||
for (std::size_t index = 0U; index < frame.signals.size(); ++index) {
|
||||
const SignalInfo &signal = frame.signals[index];
|
||||
if (signal.multiplexing.role != MultiplexRole::Selector)
|
||||
continue;
|
||||
if (selector != nullptr || signal.isSigned)
|
||||
throw DbcDiagnosticError(DbcDiagnosticCode::InvalidMultiplexing,
|
||||
filePath, lines[index],
|
||||
"Multiplexing requires one unsigned selector per frame.");
|
||||
selector = &signal;
|
||||
}
|
||||
return selector;
|
||||
}
|
||||
|
||||
bool SignalsOverlap(const SignalInfo &first, const SignalInfo &second) {
|
||||
const std::vector<std::uint64_t> firstBits = SignalBits(first);
|
||||
const std::vector<std::uint64_t> secondBits = SignalBits(second);
|
||||
for (const std::uint64_t firstBit : firstBits) {
|
||||
for (const std::uint64_t secondBit : secondBits) {
|
||||
if (firstBit == secondBit)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void DbcParseContext::ValidateMultiplexing(const std::string &filePath) const {
|
||||
for (std::size_t frameIndex = 0U; frameIndex < database.frames.size(); ++frameIndex) {
|
||||
const FrameInfo &frame = database.frames[frameIndex];
|
||||
const SignalInfo *selector = FindSelector(frame, signalLines[frameIndex], filePath);
|
||||
for (std::size_t index = 0U; index < frame.signals.size(); ++index) {
|
||||
const SignalInfo &signal = frame.signals[index];
|
||||
std::string error = ValidateBranch(signal, selector);
|
||||
for (std::size_t previous = 0U; previous < index && error.empty(); ++previous) {
|
||||
const SignalInfo &other = frame.signals[previous];
|
||||
if (!AreMutuallyExclusive(signal, other) && SignalsOverlap(signal, other))
|
||||
error = "Signals overlap without mutually exclusive multiplexing conditions.";
|
||||
}
|
||||
if (!error.empty())
|
||||
throw DbcDiagnosticError(DbcDiagnosticCode::InvalidMultiplexing,
|
||||
filePath, signalLines[frameIndex][index], error);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
#ifndef DBC_STATEMENT_HANDLER_H
|
||||
#define DBC_STATEMENT_HANDLER_H
|
||||
|
||||
#include "dbc_database.h"
|
||||
#include "dbc_diagnostic.h"
|
||||
#include "typefactory.h"
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
|
||||
struct PendingValueDescriptions {
|
||||
std::uint32_t canId;
|
||||
bool isExtended;
|
||||
std::string signalName;
|
||||
ValueDescriptions descriptions;
|
||||
std::size_t lineNumber;
|
||||
};
|
||||
|
||||
struct PendingComment {
|
||||
std::uint32_t canId;
|
||||
bool isExtended;
|
||||
bool isSignal;
|
||||
std::string signalName;
|
||||
std::string comment;
|
||||
std::size_t lineNumber;
|
||||
};
|
||||
|
||||
/** Carries deferred validation locations without parsing exception text. */
|
||||
class DbcDiagnosticError : public std::runtime_error {
|
||||
public:
|
||||
DbcDiagnosticError(DbcDiagnosticCode code, const std::string &filePath,
|
||||
std::size_t lineNumber, const std::string &message)
|
||||
: std::runtime_error(filePath + ":" + std::to_string(lineNumber) + ": " + message),
|
||||
diagnostic{DbcDiagnosticSeverity::Error, code, filePath, lineNumber, message} {}
|
||||
|
||||
DbcDiagnostic diagnostic;
|
||||
};
|
||||
|
||||
/** Mutable state belonging to one file parse. Handlers do not retain it. */
|
||||
struct DbcParseContext {
|
||||
DbcDatabase &database;
|
||||
FrameInfo *currentFrame = nullptr;
|
||||
std::size_t lineNumber = 0U;
|
||||
std::vector<PendingValueDescriptions> pendingValues = {};
|
||||
|
||||
std::vector<std::vector<std::size_t>> signalLines = {};
|
||||
void ValidateMultiplexing(const std::string &filePath) const;
|
||||
|
||||
std::vector<PendingComment> pendingComments = {};
|
||||
void ResolveComments(const std::string &filePath);
|
||||
|
||||
void ResolveValueDescriptions(const std::string &filePath);
|
||||
};
|
||||
|
||||
class DbcStatementHandler {
|
||||
public:
|
||||
virtual ~DbcStatementHandler() = default;
|
||||
virtual void Handle(const std::string &line, DbcParseContext &context) const = 0;
|
||||
};
|
||||
|
||||
class DbcFrameHandler : public DbcStatementHandler {
|
||||
public:
|
||||
void Handle(const std::string &line, DbcParseContext &context) const override;
|
||||
|
||||
private:
|
||||
static FrameInfo ParseFrameLine(const std::string &line);
|
||||
};
|
||||
|
||||
class DbcSignalHandler : public DbcStatementHandler {
|
||||
public:
|
||||
void Handle(const std::string &line, DbcParseContext &context) const override;
|
||||
|
||||
private:
|
||||
static SignalInfo ParseSignalLine(const std::string &line);
|
||||
};
|
||||
|
||||
class DbcCommentHandler : public DbcStatementHandler {
|
||||
public:
|
||||
void Handle(const std::string &line, DbcParseContext &context) const override;
|
||||
|
||||
};
|
||||
|
||||
class DbcValueDescriptionHandler : public DbcStatementHandler {
|
||||
public:
|
||||
void Handle(const std::string &line, DbcParseContext &context) const override;
|
||||
};
|
||||
|
||||
class DbcUnsupportedMultiplexingHandler : public DbcStatementHandler {
|
||||
public:
|
||||
void Handle(const std::string &line, DbcParseContext &context) const override;
|
||||
};
|
||||
|
||||
/** Common header metadata does not change the supported decode definitions. */
|
||||
class DbcHeaderHandler : public DbcStatementHandler {
|
||||
public:
|
||||
void Handle(const std::string &line, DbcParseContext &context) const override;
|
||||
};
|
||||
|
||||
/** Exact-key dispatch to handlers created once per registration via TypeFactory. */
|
||||
class DbcStatementDispatcher {
|
||||
public:
|
||||
DbcStatementDispatcher();
|
||||
|
||||
template<class Handler>
|
||||
void RegisterType(const std::string &keyword) {
|
||||
m_factory.registerType<Handler>(keyword);
|
||||
m_handlers.insert_or_assign(keyword, m_factory.create(keyword));
|
||||
}
|
||||
|
||||
/** Returns false for an unregistered keyword; input must be trimmed. */
|
||||
bool Dispatch(const std::string &line, DbcParseContext &context) const;
|
||||
|
||||
private:
|
||||
using HandlerMap = std::unordered_map<std::string, std::shared_ptr<DbcStatementHandler>>;
|
||||
TypeFactory<std::string, DbcStatementHandler> m_factory;
|
||||
HandlerMap m_handlers;
|
||||
};
|
||||
|
||||
#endif /* DBC_STATEMENT_HANDLER_H */
|
||||
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* @file dbc_tree_builder.cpp
|
||||
* @brief
|
||||
*
|
||||
* Created: 2026-03-13
|
||||
* Author: Deeaitch (Dim. Himro)
|
||||
*
|
||||
* Licensed under the MIT License.
|
||||
* See LICENSE file in the project root for full license text.
|
||||
*/
|
||||
|
||||
#include "dbc_tree_builder.h"
|
||||
|
||||
std::unique_ptr<TreeNode> DbcTreeBuilder::Build(const DbcDatabase &database) const {
|
||||
std::unique_ptr<TreeNode> root = std::make_unique<TreeNode>();
|
||||
|
||||
for (const FrameInfo &frame : database.frames) {
|
||||
std::unique_ptr<TreeNode> frameNode = std::make_unique<TreeNode>(frame);
|
||||
|
||||
for (const SignalInfo &signal : frame.signals) {
|
||||
std::unique_ptr<TreeNode> signalNode = std::make_unique<TreeNode>(signal);
|
||||
frameNode->AddChild(std::move(signalNode));
|
||||
}
|
||||
|
||||
root->AddChild(std::move(frameNode));
|
||||
}
|
||||
|
||||
return root;
|
||||
}
|
||||
@@ -21,13 +21,13 @@
|
||||
* @brief Builds a simple tree from parsed DBC database.
|
||||
*/
|
||||
class DbcTreeBuilder {
|
||||
public:
|
||||
public:
|
||||
/**
|
||||
* @brief Build tree representation of parsed DBC data.
|
||||
* @param database Parsed database.
|
||||
* @return Root node of the tree.
|
||||
*/
|
||||
std::unique_ptr<TreeNode> Build (const DbcDatabase &database) const;
|
||||
std::unique_ptr<TreeNode> Build(const DbcDatabase &database) const;
|
||||
};
|
||||
|
||||
#endif /* DBC_TREE_BUILDER_H */
|
||||
@@ -0,0 +1,133 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2026 Dim Himro
|
||||
|
||||
#include "decode_database.h"
|
||||
#include "signal_layout.h"
|
||||
#include <bitset>
|
||||
#include <cmath>
|
||||
#include <limits>
|
||||
#include <stdexcept>
|
||||
#include <unordered_set>
|
||||
|
||||
namespace {
|
||||
constexpr std::size_t MaximumPayloadBits = std::numeric_limits<std::uint8_t>::max() * 8U;
|
||||
using SignalBits = std::bitset<MaximumPayloadBits>;
|
||||
|
||||
void ValidateSignal(const DecodeSignal &signal, std::uint8_t dlc) {
|
||||
if (signal.byteOrder != ByteOrder::Intel && signal.byteOrder != ByteOrder::Motorola)
|
||||
throw std::invalid_argument("Invalid signal byte order: " + signal.name);
|
||||
if (signal.valueType != ValueType::Unsigned && signal.valueType != ValueType::Signed)
|
||||
throw std::invalid_argument("Invalid signal value type: " + signal.name);
|
||||
if (signal.multiplexing.role != MultiplexRole::Unconditional &&
|
||||
signal.multiplexing.role != MultiplexRole::Selector &&
|
||||
signal.multiplexing.role != MultiplexRole::Branch)
|
||||
throw std::invalid_argument("Invalid multiplexing role: " + signal.name);
|
||||
if (!IsValidSignalLayout(signal.startBit, signal.length,
|
||||
signal.byteOrder == ByteOrder::Intel, dlc))
|
||||
throw std::invalid_argument("Invalid signal length or payload position: " + signal.name);
|
||||
if (!std::isfinite(signal.factor) || !std::isfinite(signal.offset) ||
|
||||
!std::isfinite(signal.minimum) || !std::isfinite(signal.maximum) ||
|
||||
signal.minimum > signal.maximum)
|
||||
throw std::invalid_argument("Invalid signal numeric parameters: " + signal.name);
|
||||
}
|
||||
|
||||
SignalBits GetSignalBits(const DecodeSignal &signal) {
|
||||
SignalBits bits;
|
||||
const bool littleEndian = signal.byteOrder == ByteOrder::Intel;
|
||||
const std::uint64_t start = SignalStartCoordinate(signal.startBit, littleEndian);
|
||||
for (std::uint32_t index = 0U; index < signal.length; ++index) {
|
||||
const std::uint64_t coordinate = start + index;
|
||||
const std::uint64_t bit = littleEndian ? coordinate
|
||||
: coordinate / 8U * 8U + 7U - coordinate % 8U;
|
||||
bits.set(static_cast<std::size_t>(bit));
|
||||
}
|
||||
return bits;
|
||||
}
|
||||
|
||||
bool AreMutuallyExclusive(const DecodeSignal &first, const DecodeSignal &second) {
|
||||
return first.multiplexing.role == MultiplexRole::Branch &&
|
||||
second.multiplexing.role == MultiplexRole::Branch &&
|
||||
first.multiplexing.value != second.multiplexing.value;
|
||||
}
|
||||
|
||||
void ValidateFrame(const DecodeFrame &frame) {
|
||||
const std::uint32_t maximumId = frame.isExtended ? 0x1FFFFFFFU : 0x7FFU;
|
||||
if (frame.canId > maximumId)
|
||||
throw std::invalid_argument("Invalid normalized CAN ID: " + std::to_string(frame.canId));
|
||||
|
||||
std::unordered_set<std::string> names;
|
||||
const DecodeSignal *selector = nullptr;
|
||||
for (const DecodeSignal &signal: frame.signals) {
|
||||
if (!names.insert(signal.name).second)
|
||||
throw std::invalid_argument("Duplicate runtime signal key: " + signal.name);
|
||||
ValidateSignal(signal, frame.dlc);
|
||||
if (signal.multiplexing.role == MultiplexRole::Selector) {
|
||||
if (selector != nullptr || signal.valueType != ValueType::Unsigned)
|
||||
throw std::invalid_argument("Multiplexing requires one unsigned selector per frame");
|
||||
selector = &signal;
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<SignalBits> layouts;
|
||||
layouts.reserve(frame.signals.size());
|
||||
for (std::size_t index = 0U; index < frame.signals.size(); ++index) {
|
||||
const DecodeSignal &signal = frame.signals[index];
|
||||
if (signal.multiplexing.role == MultiplexRole::Branch &&
|
||||
(selector == nullptr ||
|
||||
(selector->length < 64U && signal.multiplexing.value >= (std::uint64_t(1U) << selector->length))))
|
||||
throw std::invalid_argument("Missing selector or branch value outside selector range: " + signal.name);
|
||||
const SignalBits bits = GetSignalBits(signal);
|
||||
for (std::size_t previous = 0U; previous < index; ++previous) {
|
||||
if (!AreMutuallyExclusive(signal, frame.signals[previous]) && (bits & layouts[previous]).any())
|
||||
throw std::invalid_argument("Overlapping signals: " + signal.name);
|
||||
}
|
||||
layouts.push_back(bits);
|
||||
}
|
||||
}
|
||||
}// namespace
|
||||
|
||||
DecodeDatabase::Storage::Storage(const std::vector<DecodeFrame> &definitions)
|
||||
: frames(definitions) {
|
||||
// Validate the complete snapshot before creating its lookup index.
|
||||
std::unordered_set<FrameKey, FrameKeyHasher> keys;
|
||||
keys.reserve(frames.size());
|
||||
for (const DecodeFrame &frame: frames) {
|
||||
ValidateFrame(frame);
|
||||
if (!keys.insert(frame.GetKey()).second)
|
||||
throw std::invalid_argument("Duplicate runtime frame key");
|
||||
}
|
||||
frameIndexByKey.reserve(frames.size());
|
||||
for (std::size_t index = 0U; index < frames.size(); ++index) {
|
||||
frameIndexByKey.emplace(frames[index].GetKey(), index);
|
||||
}
|
||||
}
|
||||
|
||||
DecodeDatabase::DecodeDatabase(const std::vector<DecodeFrame> &frames)
|
||||
: storage(std::make_shared<const Storage>(frames)) {
|
||||
}
|
||||
|
||||
const std::vector<DecodeFrame> &DecodeDatabase::GetFrames() const {
|
||||
static const std::vector<DecodeFrame> empty;
|
||||
return storage ? storage->frames : empty;
|
||||
}
|
||||
|
||||
std::shared_ptr<const DecodeFrame> DecodeDatabase::FindFrame(const FrameKey &key) const {
|
||||
if (!storage)
|
||||
return nullptr;
|
||||
const std::unordered_map<FrameKey, std::size_t, FrameKeyHasher>::const_iterator it =
|
||||
storage->frameIndexByKey.find(key);
|
||||
if (it == storage->frameIndexByKey.end())
|
||||
return nullptr;
|
||||
return std::shared_ptr<const DecodeFrame>(storage, &storage->frames[it->second]);
|
||||
}
|
||||
|
||||
std::shared_ptr<const DecodeSignal> DecodeDatabase::FindSignal(const SignalKey &key) const {
|
||||
const std::shared_ptr<const DecodeFrame> frame = FindFrame(key.frame);
|
||||
if (!frame)
|
||||
return nullptr;
|
||||
for (const DecodeSignal &signal: frame->signals) {
|
||||
if (signal.name == key.name)
|
||||
return std::shared_ptr<const DecodeSignal>(frame, &signal);
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
@@ -0,0 +1,114 @@
|
||||
/**
|
||||
* @file decode_database.h
|
||||
* @brief
|
||||
*
|
||||
* Created: 2026-03-13
|
||||
* Author: Deeaitch (Dim. Himro)
|
||||
*
|
||||
* Licensed under the MIT License.
|
||||
* See LICENSE file in the project root for full license text.
|
||||
*/
|
||||
|
||||
#ifndef DECODE_DATABASE_H
|
||||
#define DECODE_DATABASE_H
|
||||
|
||||
#include "definition_key.h"
|
||||
#include "multiplexing.h"
|
||||
#include "value_descriptions.h"
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
||||
/**
|
||||
* @brief Signal byte order used for runtime decoding.
|
||||
*/
|
||||
enum class ByteOrder {
|
||||
Intel,
|
||||
Motorola
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Signal numeric type.
|
||||
*/
|
||||
enum class ValueType {
|
||||
Unsigned,
|
||||
Signed
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Runtime-ready signal definition.
|
||||
*/
|
||||
struct DecodeSignal {
|
||||
Multiplexing multiplexing;
|
||||
std::string name; /**< Signal name. */
|
||||
std::uint32_t startBit = 0U; /**< DBC start bit. */
|
||||
std::uint32_t length = 0U; /**< Signal length in bits. */
|
||||
ByteOrder byteOrder = ByteOrder::Intel; /**< Intel or Motorola. */
|
||||
ValueType valueType = ValueType::Unsigned; /**< Signed or unsigned. */
|
||||
double factor = 1.0; /**< Scaling factor. */
|
||||
double offset = 0.0; /**< Physical offset. */
|
||||
double minimum = 0.0; /**< Minimum physical value. */
|
||||
double maximum = 0.0; /**< Maximum physical value. */
|
||||
std::string unit; /**< Physical unit. */
|
||||
std::vector<std::string> receivers; /**< Receivers. */
|
||||
ValueDescriptions valueDescriptions; /**< Raw integer state descriptions. */
|
||||
std::string comment; /**< Comment. */
|
||||
|
||||
DecodeSignal() = default;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Runtime-ready frame definition.
|
||||
*/
|
||||
struct DecodeFrame {
|
||||
std::string name; /**< Frame name. */
|
||||
std::uint32_t canId = 0U; /**< Normalized CAN ID. */
|
||||
bool isExtended = false; /**< true for extended frame. */
|
||||
std::uint8_t dlc = 0U; /**< Payload length. */
|
||||
std::uint32_t pgn = 0U; /**< PGN if available. */
|
||||
bool hasPgn = false; /**< true if PGN is valid. */
|
||||
std::string transmitter; /**< Transmitter ECU. */
|
||||
std::string comment; /**< Frame comment. */
|
||||
std::vector<DecodeSignal> signals; /**< Signal definitions. */
|
||||
|
||||
DecodeFrame() = default;
|
||||
|
||||
FrameKey GetKey() const {
|
||||
return FrameKey(canId, isExtended);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Immutable runtime snapshot. Copies share storage; reload replaces a snapshot.
|
||||
* Owning lookup handles and decoded results keep old definitions alive.
|
||||
*/
|
||||
class DecodeDatabase {
|
||||
public:
|
||||
DecodeDatabase() = default;
|
||||
/**
|
||||
* Copy and validate definitions before building the frame index.
|
||||
* Input aliases cannot modify the snapshot, even for rvalue input.
|
||||
* @throws std::invalid_argument for invalid metadata or duplicate keys.
|
||||
*/
|
||||
explicit DecodeDatabase(const std::vector<DecodeFrame> &frames);
|
||||
|
||||
/** Borrowed view, valid while this snapshot remains alive and unchanged. */
|
||||
const std::vector<DecodeFrame> &GetFrames() const;
|
||||
/** Owning handles retain the entire snapshot across reload or destruction. */
|
||||
std::shared_ptr<const DecodeFrame> FindFrame(const FrameKey &key) const;
|
||||
std::shared_ptr<const DecodeSignal> FindSignal(const SignalKey &key) const;
|
||||
|
||||
private:
|
||||
struct Storage {
|
||||
std::vector<DecodeFrame> frames;
|
||||
std::unordered_map<FrameKey, std::size_t, FrameKeyHasher> frameIndexByKey;
|
||||
|
||||
explicit Storage(const std::vector<DecodeFrame> &definitions);
|
||||
};
|
||||
|
||||
std::shared_ptr<const Storage> storage;
|
||||
};
|
||||
|
||||
#endif /* DECODE_DATABASE_H */
|
||||
@@ -0,0 +1,62 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2026 Dim Himro
|
||||
|
||||
#ifndef DEFINITION_KEY_H
|
||||
#define DEFINITION_KEY_H
|
||||
|
||||
#include <cstdint>
|
||||
#include <functional>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
/**
|
||||
* @brief Stable frame identifier: normalized CAN ID and frame type.
|
||||
*/
|
||||
struct FrameKey {
|
||||
std::uint32_t canId = 0U;
|
||||
bool isExtended = false;
|
||||
|
||||
FrameKey() = default;
|
||||
|
||||
FrameKey(std::uint32_t id, bool extended)
|
||||
: canId(id), isExtended(extended) {
|
||||
}
|
||||
|
||||
bool operator==(const FrameKey &other) const {
|
||||
return (canId == other.canId) && (isExtended == other.isExtended);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Hasher for frame key.
|
||||
*/
|
||||
struct FrameKeyHasher {
|
||||
std::size_t operator()(const FrameKey &key) const {
|
||||
const std::size_t a = static_cast<std::size_t>(key.canId);
|
||||
const std::size_t b = key.isExtended ? 1U : 0U;
|
||||
return (a * 1315423911U) ^ b;
|
||||
}
|
||||
};
|
||||
|
||||
/** Stable signal identifier within one logical DBC database. */
|
||||
struct SignalKey {
|
||||
FrameKey frame;
|
||||
std::string name;
|
||||
|
||||
SignalKey() = default;
|
||||
SignalKey(FrameKey frameKey, std::string signalName)
|
||||
: frame(frameKey), name(std::move(signalName)) {
|
||||
}
|
||||
|
||||
bool operator==(const SignalKey &other) const {
|
||||
return frame == other.frame && name == other.name;
|
||||
}
|
||||
};
|
||||
|
||||
struct SignalKeyHasher {
|
||||
std::size_t operator()(const SignalKey &key) const {
|
||||
return FrameKeyHasher()(key.frame) ^ (std::hash<std::string>()(key.name) << 1U);
|
||||
}
|
||||
};
|
||||
|
||||
#endif /* DEFINITION_KEY_H */
|
||||
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
* @file frame_info.h
|
||||
* @brief
|
||||
*
|
||||
* Created: 2026-03-13
|
||||
* Author: Deeaitch (Dim. Himro)
|
||||
*
|
||||
* Licensed under the MIT License.
|
||||
* See LICENSE file in the project root for full license text.
|
||||
*/
|
||||
|
||||
#ifndef FRAME_INFO_H
|
||||
#define FRAME_INFO_H
|
||||
|
||||
#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "signal_info.h"
|
||||
|
||||
/**
|
||||
* @brief Describes one CAN frame from a DBC file.
|
||||
*/
|
||||
struct FrameInfo {
|
||||
std::string name; /**< Frame name. */
|
||||
std::uint32_t canId = 0U; /**< Normalized CAN identifier. */
|
||||
bool isExtended = false; /**< true for extended frame. */
|
||||
std::uint32_t pgn = 0U; /**< J1939 PGN if applicable. */
|
||||
bool hasPgn = false; /**< true if PGN was derived. */
|
||||
std::uint8_t dlc = 0U; /**< Frame payload length. */
|
||||
std::string transmitter; /**< Transmitter ECU name. */
|
||||
std::string comment; /**< Optional frame comment. */
|
||||
std::vector<SignalInfo> signals; /**< Signals contained in the frame. */
|
||||
|
||||
FrameInfo() = default;
|
||||
};
|
||||
|
||||
#endif /* FRAME_INFO_H */
|
||||
@@ -0,0 +1,19 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
#ifndef MULTIPLEXING_H
|
||||
#define MULTIPLEXING_H
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
enum class MultiplexRole {
|
||||
Unconditional,
|
||||
Selector,
|
||||
Branch
|
||||
};
|
||||
|
||||
/** Basic multiplexing: one unsigned selector per frame, one raw value per branch. */
|
||||
struct Multiplexing {
|
||||
MultiplexRole role = MultiplexRole::Unconditional;
|
||||
std::uint64_t value = 0U;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,43 @@
|
||||
/**
|
||||
* @file signal_info.h
|
||||
* @brief
|
||||
*
|
||||
* Created: 2026-03-13
|
||||
* Author: Deeaitch (Dim. Himro)
|
||||
*
|
||||
* Licensed under the MIT License.
|
||||
* See LICENSE file in the project root for full license text.
|
||||
*/
|
||||
|
||||
#ifndef SIGNAL_INFO_H
|
||||
#define SIGNAL_INFO_H
|
||||
|
||||
#include "value_descriptions.h"
|
||||
#include "multiplexing.h"
|
||||
#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/**
|
||||
* @brief Describes one signal inside a DBC frame.
|
||||
*/
|
||||
struct SignalInfo {
|
||||
Multiplexing multiplexing;
|
||||
std::string name; /**< Signal name. */
|
||||
std::uint32_t startBit = 0U; /**< Start bit in DBC notation. */
|
||||
std::uint32_t length = 0U; /**< Signal length in bits. */
|
||||
bool isLittleEndian = true; /**< true for Intel, false for Motorola. */
|
||||
bool isSigned = false; /**< true if signal is signed. */
|
||||
double factor = 1.0; /**< Scaling factor. */
|
||||
double offset = 0.0; /**< Physical offset. */
|
||||
double minimum = 0.0; /**< Minimum physical value. */
|
||||
double maximum = 0.0; /**< Maximum physical value. */
|
||||
std::string unit; /**< Physical unit. */
|
||||
std::vector<std::string> receivers; /**< Signal receivers. */
|
||||
ValueDescriptions valueDescriptions; /**< Raw integer state descriptions. */
|
||||
std::string comment; /**< Optional signal comment. */
|
||||
|
||||
SignalInfo() = default;
|
||||
};
|
||||
|
||||
#endif /* SIGNAL_INFO_H */
|
||||
@@ -0,0 +1,19 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
#ifndef SIGNAL_LAYOUT_H
|
||||
#define SIGNAL_LAYOUT_H
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
/** Linear coordinate in the signal's bit order, widened before arithmetic. */
|
||||
inline std::uint64_t SignalStartCoordinate(std::uint32_t startBit, bool littleEndian) {
|
||||
return littleEndian ? std::uint64_t(startBit)
|
||||
: std::uint64_t(startBit / 8U) * 8U + 7U - startBit % 8U;
|
||||
}
|
||||
|
||||
inline bool IsValidSignalLayout(std::uint32_t startBit, std::uint32_t length,
|
||||
bool littleEndian, std::uint8_t dlc) {
|
||||
return length >= 1U && length <= 64U &&
|
||||
SignalStartCoordinate(startBit, littleEndian) + length <= std::uint64_t(dlc) * 8U;
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,23 @@
|
||||
#ifndef DBC_TEXT_UTILS_H
|
||||
#define DBC_TEXT_UTILS_H
|
||||
|
||||
#include <cctype>
|
||||
#include <string>
|
||||
|
||||
namespace dbc_detail {
|
||||
inline std::string TrimText(const std::string &text) {
|
||||
std::string::size_type begin = 0U;
|
||||
while ((begin < text.size()) &&
|
||||
std::isspace(static_cast<unsigned char>(text[begin])))
|
||||
++begin;
|
||||
|
||||
std::string::size_type end = text.size();
|
||||
while ((end > begin) &&
|
||||
std::isspace(static_cast<unsigned char>(text[end - 1U])))
|
||||
--end;
|
||||
|
||||
return text.substr(begin, end - begin);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,74 @@
|
||||
/**
|
||||
* @file tree_node.cpp
|
||||
* @brief
|
||||
*
|
||||
* Created: 2026-03-13
|
||||
* Author: Deeaitch (Dim. Himro)
|
||||
*
|
||||
* Licensed under the MIT License.
|
||||
* See LICENSE file in the project root for full license text.
|
||||
*/
|
||||
|
||||
#include "tree_node.h"
|
||||
|
||||
TreeNode::TreeNode()
|
||||
: m_type(NodeType::Root), m_name("dbc") {
|
||||
}
|
||||
|
||||
TreeNode::TreeNode(const FrameInfo &frame)
|
||||
: m_type(NodeType::Frame), m_name(frame.name), m_frame(std::make_unique<FrameInfo>(frame)) {
|
||||
}
|
||||
|
||||
TreeNode::TreeNode(const SignalInfo &signal)
|
||||
: m_type(NodeType::Signal), m_name(signal.name), m_signal(std::make_unique<SignalInfo>(signal)) {
|
||||
}
|
||||
|
||||
void TreeNode::AddChild(std::unique_ptr<TreeNode> child) {
|
||||
if (child) {
|
||||
m_children.push_back(std::move(child));
|
||||
m_children.back()->m_parent = this;
|
||||
m_children.back()->m_row = m_children.size() - 1U;
|
||||
}
|
||||
}
|
||||
|
||||
std::size_t TreeNode::GetChildCount() const {
|
||||
return m_children.size();
|
||||
}
|
||||
|
||||
const TreeNode *TreeNode::GetChild(std::size_t index) const {
|
||||
if (index >= m_children.size())
|
||||
return nullptr;
|
||||
|
||||
return m_children[index].get();
|
||||
}
|
||||
|
||||
TreeNode *TreeNode::GetChild(std::size_t index) {
|
||||
if (index >= m_children.size())
|
||||
return nullptr;
|
||||
|
||||
return m_children[index].get();
|
||||
}
|
||||
|
||||
NodeType TreeNode::GetType() const {
|
||||
return m_type;
|
||||
}
|
||||
|
||||
const std::string &TreeNode::GetName() const {
|
||||
return m_name;
|
||||
}
|
||||
|
||||
const FrameInfo *TreeNode::GetFrame() const {
|
||||
return m_frame.get();
|
||||
}
|
||||
|
||||
const SignalInfo *TreeNode::GetSignal() const {
|
||||
return m_signal.get();
|
||||
}
|
||||
|
||||
const TreeNode *TreeNode::GetParent() const {
|
||||
return m_parent;
|
||||
}
|
||||
|
||||
std::size_t TreeNode::GetRow() const {
|
||||
return m_row;
|
||||
}
|
||||
@@ -12,10 +12,10 @@
|
||||
#ifndef TREE_NODE_H
|
||||
#define TREE_NODE_H
|
||||
|
||||
#include <cstddef>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <memory>
|
||||
#include <cstddef>
|
||||
|
||||
#include "frame_info.h"
|
||||
#include "signal_info.h"
|
||||
@@ -24,16 +24,16 @@
|
||||
* @brief Type of a tree node.
|
||||
*/
|
||||
enum class NodeType {
|
||||
Root,
|
||||
Frame,
|
||||
Signal
|
||||
Root,
|
||||
Frame,
|
||||
Signal
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Tree node for later use in model/view or other hierarchy consumers.
|
||||
*/
|
||||
class TreeNode {
|
||||
public:
|
||||
public:
|
||||
/**
|
||||
* @brief Create root node.
|
||||
*/
|
||||
@@ -43,27 +43,33 @@ class TreeNode {
|
||||
* @brief Create frame node.
|
||||
* @param frame Frame payload.
|
||||
*/
|
||||
explicit TreeNode (const FrameInfo &frame);
|
||||
explicit TreeNode(const FrameInfo &frame);
|
||||
|
||||
/**
|
||||
* @brief Create signal node.
|
||||
* @param signal Signal payload.
|
||||
*/
|
||||
explicit TreeNode (const SignalInfo &signal);
|
||||
explicit TreeNode(const SignalInfo &signal);
|
||||
|
||||
~TreeNode() = default;
|
||||
|
||||
TreeNode (const TreeNode &) = delete;
|
||||
TreeNode &operator= (const TreeNode &) = delete;
|
||||
TreeNode(const TreeNode &) = delete;
|
||||
TreeNode &operator=(const TreeNode &) = delete;
|
||||
|
||||
TreeNode (TreeNode &&) = default;
|
||||
TreeNode &operator= (TreeNode &&) = default;
|
||||
TreeNode(TreeNode &&) = delete;
|
||||
TreeNode &operator=(TreeNode &&) = delete;
|
||||
|
||||
/**
|
||||
* @brief Add child node.
|
||||
* @param child Child node to add.
|
||||
*/
|
||||
void AddChild (std::unique_ptr<TreeNode> child);
|
||||
void AddChild(std::unique_ptr<TreeNode> child);
|
||||
|
||||
/** Non-owning parent; nullptr for a detached node or the root. */
|
||||
const TreeNode *GetParent() const;
|
||||
|
||||
/** Zero-based sibling position; zero for a detached node or the root. */
|
||||
std::size_t GetRow() const;
|
||||
|
||||
/**
|
||||
* @brief Get child count.
|
||||
@@ -76,14 +82,14 @@ class TreeNode {
|
||||
* @param index Child index.
|
||||
* @return Child pointer or nullptr if index is invalid.
|
||||
*/
|
||||
const TreeNode *GetChild (std::size_t index) const;
|
||||
const TreeNode *GetChild(std::size_t index) const;
|
||||
|
||||
/**
|
||||
* @brief Get mutable child by index.
|
||||
* @param index Child index.
|
||||
* @return Child pointer or nullptr if index is invalid.
|
||||
*/
|
||||
TreeNode *GetChild (std::size_t index);
|
||||
TreeNode *GetChild(std::size_t index);
|
||||
|
||||
/**
|
||||
* @brief Get node type.
|
||||
@@ -109,10 +115,12 @@ class TreeNode {
|
||||
*/
|
||||
const SignalInfo *GetSignal() const;
|
||||
|
||||
private:
|
||||
private:
|
||||
TreeNode *m_parent = nullptr;
|
||||
std::size_t m_row = 0U;
|
||||
NodeType m_type;
|
||||
std::string m_name;
|
||||
std::vector<std::unique_ptr<TreeNode> > m_children;
|
||||
std::vector<std::unique_ptr<TreeNode>> m_children;
|
||||
std::unique_ptr<FrameInfo> m_frame;
|
||||
std::unique_ptr<SignalInfo> m_signal;
|
||||
};
|
||||
@@ -0,0 +1,118 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2026 Dim Himro
|
||||
|
||||
#ifndef TYPEFACTORY_H
|
||||
#define TYPEFACTORY_H
|
||||
|
||||
#include <memory>
|
||||
#include <type_traits>
|
||||
#include <unordered_map>
|
||||
#include <utility>// std::move
|
||||
|
||||
/**
|
||||
* @brief Registry-based factory for creating objects by runtime identifier.
|
||||
*
|
||||
* Allows registering derived types and instantiating them using a ClassId key.
|
||||
*
|
||||
* Notes:
|
||||
* - Not thread-safe. Register types during initialization phase only.
|
||||
* - Re-registering the same id overwrites the previous entry ("last wins").
|
||||
* - ClassId must be hashable (std::hash<ClassId> specialization must exist).
|
||||
*
|
||||
* @tparam ClassId -Unique class identifier type (e.g. std::string, int, enum).
|
||||
* @tparam BaseClass -Base type for all created objects.
|
||||
* @tparam Arg - Constructor arguments forwarded to registered derived types (by value).
|
||||
*
|
||||
* Usage example:
|
||||
* @code
|
||||
* #include <string>
|
||||
*
|
||||
* struct Base {
|
||||
* virtual ~Base() = default;
|
||||
* virtual int get() = 0;
|
||||
* };
|
||||
*
|
||||
* struct Derived1 : Base {
|
||||
* explicit Derived1(int start) : m_start(start) {}
|
||||
* int get() override { return m_start + 1; }
|
||||
* int m_start = 0;
|
||||
* };
|
||||
*
|
||||
* struct Derived2 : Base {
|
||||
* explicit Derived2(int start) : m_start(start) {}
|
||||
* int get() override { return m_start + 2; }
|
||||
* int m_start = 0;
|
||||
* };
|
||||
*
|
||||
* TypeFactory<std::string, Base, int> factory;
|
||||
* factory.registerType<Derived1>("one");
|
||||
* factory.registerType<Derived2>("two");
|
||||
*
|
||||
* std::shared_ptr<Base> a = factory.create("one", 10);
|
||||
* std::shared_ptr<Base> b = factory.creator("two")(10); // advanced API: get creator function
|
||||
*
|
||||
* (void)a->get();
|
||||
* (void)b->get();
|
||||
* @endcode
|
||||
*/
|
||||
template<class ClassId, class BaseClass, class... Args>
|
||||
class TypeFactory {
|
||||
public:
|
||||
using BasePtr = std::shared_ptr<BaseClass>;
|
||||
using CreatorFn = BasePtr (*)(Args...);
|
||||
|
||||
TypeFactory() = default;
|
||||
|
||||
/**
|
||||
* @brief Registers a Derived type under the given id.
|
||||
*
|
||||
* Requirements (checked at compile-time):
|
||||
* - Derived must inherit from BaseClass
|
||||
* - Derived must be constructible from Args...
|
||||
*
|
||||
* Re-registering the same id overwrites the previous entry ("last wins").
|
||||
*/
|
||||
template<class Derived>
|
||||
void registerType(const ClassId &id) {
|
||||
static_assert(std::is_base_of_v<BaseClass, Derived>,
|
||||
"Derived must inherit from BaseClass");
|
||||
static_assert(std::is_constructible_v<Derived, Args...>,
|
||||
"Derived must be constructible from Args...");
|
||||
|
||||
classes.insert_or_assign(id, &instantiate<Derived>);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns creator function for the given id.
|
||||
* @throws std::out_of_range when id is not registered.
|
||||
*/
|
||||
[[nodiscard]] CreatorFn creator(const ClassId &id) const {
|
||||
return classes.at(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Creates an instance for the given id using provided arguments.
|
||||
* @throws std::out_of_range when id is not registered.
|
||||
*/
|
||||
[[nodiscard]] BasePtr create(const ClassId &id, Args... args) const {
|
||||
return creator(id)(std::move(args)...);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Checks whether an id is registered.
|
||||
*/
|
||||
[[nodiscard]] bool contains(const ClassId &id) const {
|
||||
return classes.find(id) != classes.end();
|
||||
}
|
||||
|
||||
protected:
|
||||
// Protected by design: derived factories may extend/inspect the registry.
|
||||
std::unordered_map<ClassId, CreatorFn> classes;
|
||||
|
||||
private:
|
||||
template<class Derived>
|
||||
static BasePtr instantiate(Args... args) {
|
||||
return std::make_shared<Derived>(std::move(args)...);
|
||||
}
|
||||
};
|
||||
#endif// TYPEFACTORY_H
|
||||
@@ -0,0 +1,30 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
#ifndef VALUE_DESCRIPTIONS_H
|
||||
#define VALUE_DESCRIPTIONS_H
|
||||
|
||||
#include <cstdint>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <variant>
|
||||
|
||||
using RawSignalValue = std::variant<std::int64_t, std::uint64_t>;
|
||||
|
||||
/** Canonical keys: negative int64_t, nonnegative uint64_t. */
|
||||
inline RawSignalValue NormalizeValueKey(const RawSignalValue &value) {
|
||||
if (const std::int64_t *number = std::get_if<std::int64_t>(&value)) {
|
||||
if (*number >= 0)
|
||||
return static_cast<std::uint64_t>(*number);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
using ValueDescriptions = std::map<RawSignalValue, std::string>;
|
||||
|
||||
/** Returns a borrowed string, or nullptr; never converts integers to double. */
|
||||
inline const std::string *FindValueDescription(const ValueDescriptions &descriptions,
|
||||
const RawSignalValue &rawValue) {
|
||||
const ValueDescriptions::const_iterator found = descriptions.find(NormalizeValueKey(rawValue));
|
||||
return found == descriptions.end() ? nullptr : &found->second;
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -1,23 +1,12 @@
|
||||
TEMPLATE = app
|
||||
CONFIG += console c++17
|
||||
CONFIG -= app_bundle
|
||||
CONFIG -= qt
|
||||
|
||||
SOURCES += \
|
||||
dbc_decode_builder.cpp \
|
||||
dbc_decoder.cpp \
|
||||
dbc_parser.cpp \
|
||||
dbc_tree_builder.cpp \
|
||||
main.cpp \
|
||||
tree_node.cpp
|
||||
|
||||
HEADERS += \
|
||||
dbc_database.h \
|
||||
dbc_decode_builder.h \
|
||||
dbc_decoder.h \
|
||||
dbc_parser.h \
|
||||
dbc_tree_builder.h \
|
||||
decode_database.h \
|
||||
frame_info.h \
|
||||
signal_info.h \
|
||||
tree_node.h
|
||||
TEMPLATE = subdirs
|
||||
SUBDIRS += core tests
|
||||
core.subdir = core
|
||||
tests.subdir = tests
|
||||
tests.depends = core
|
||||
contains(CONFIG, dbc_qt) {
|
||||
SUBDIRS += qt model_tests
|
||||
qt.subdir = qt
|
||||
qt.depends = core
|
||||
model_tests.file = tests/model_tests.pro
|
||||
model_tests.depends = qt
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
/**
|
||||
* @file dbc_decode_builder.cpp
|
||||
* @brief
|
||||
*
|
||||
* Created: 2026-03-13
|
||||
* Author: Deeaitch (Dim. Himro)
|
||||
*
|
||||
* Licensed under the MIT License.
|
||||
* See LICENSE file in the project root for full license text.
|
||||
*/
|
||||
|
||||
#include "dbc_decode_builder.h"
|
||||
|
||||
DecodeDatabase DbcDecodeBuilder::Build (const DbcDatabase &source) const {
|
||||
DecodeDatabase result;
|
||||
|
||||
for (std::size_t frameIndex = 0U; frameIndex < source.frames.size(); ++frameIndex) {
|
||||
const FrameInfo &sourceFrame = source.frames[frameIndex];
|
||||
DecodeFrame targetFrame;
|
||||
|
||||
targetFrame.name = sourceFrame.name;
|
||||
targetFrame.canId = sourceFrame.canId;
|
||||
targetFrame.isExtended = sourceFrame.isExtended;
|
||||
targetFrame.dlc = sourceFrame.dlc;
|
||||
targetFrame.pgn = sourceFrame.pgn;
|
||||
targetFrame.hasPgn = sourceFrame.hasPgn;
|
||||
targetFrame.transmitter = sourceFrame.transmitter;
|
||||
targetFrame.comment = sourceFrame.comment;
|
||||
|
||||
for (std::size_t signalIndex = 0U; signalIndex < sourceFrame.signals.size(); ++signalIndex) {
|
||||
const SignalInfo &sourceSignal = sourceFrame.signals[signalIndex];
|
||||
DecodeSignal targetSignal;
|
||||
|
||||
targetSignal.name = sourceSignal.name;
|
||||
targetSignal.startBit = sourceSignal.startBit;
|
||||
targetSignal.length = sourceSignal.length;
|
||||
targetSignal.byteOrder = sourceSignal.isLittleEndian ? ByteOrder::Intel : ByteOrder::Motorola;
|
||||
targetSignal.valueType = sourceSignal.isSigned ? ValueType::Signed : ValueType::Unsigned;
|
||||
targetSignal.factor = sourceSignal.factor;
|
||||
targetSignal.offset = sourceSignal.offset;
|
||||
targetSignal.minimum = sourceSignal.minimum;
|
||||
targetSignal.maximum = sourceSignal.maximum;
|
||||
targetSignal.unit = sourceSignal.unit;
|
||||
targetSignal.receivers = sourceSignal.receivers;
|
||||
targetSignal.comment = sourceSignal.comment;
|
||||
|
||||
targetFrame.signals.push_back (targetSignal);
|
||||
}
|
||||
|
||||
result.frames.push_back (targetFrame);
|
||||
result.frameIndexByKey[FrameKey (targetFrame.canId, targetFrame.isExtended)] =
|
||||
result.frames.size() - 1U;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -1,157 +0,0 @@
|
||||
/**
|
||||
* @file dbc_decoder.cpp
|
||||
* @brief
|
||||
*
|
||||
* Created: 2026-03-13
|
||||
* Author: Deeaitch (Dim. Himro)
|
||||
*
|
||||
* Licensed under the MIT License.
|
||||
* See LICENSE file in the project root for full license text.
|
||||
*/
|
||||
|
||||
#include "dbc_decoder.h"
|
||||
|
||||
const DecodeFrame *DbcDecoder::FindFrame (const DecodeDatabase &database,
|
||||
std::uint32_t canId,
|
||||
bool isExtended) const {
|
||||
const FrameKey key (canId, isExtended);
|
||||
const std::unordered_map<FrameKey, std::size_t, FrameKeyHasher>::const_iterator it =
|
||||
database.frameIndexByKey.find (key);
|
||||
|
||||
if (it == database.frameIndexByKey.end())
|
||||
return nullptr;
|
||||
|
||||
const std::size_t index = it->second;
|
||||
if (index >= database.frames.size())
|
||||
return nullptr;
|
||||
|
||||
return &database.frames[index];
|
||||
}
|
||||
|
||||
DecodedFrameValue DbcDecoder::Decode (const DecodeDatabase &database,
|
||||
const RawCanFrame &frame) const {
|
||||
DecodedFrameValue result;
|
||||
const DecodeFrame *definition = FindFrame (database, frame.canId, frame.isExtended);
|
||||
|
||||
if (definition == nullptr)
|
||||
return result;
|
||||
|
||||
result.definition = definition;
|
||||
result.valid = true;
|
||||
|
||||
for (std::size_t signalIndex = 0U; signalIndex < definition->signals.size(); ++signalIndex) {
|
||||
const DecodeSignal &signal = definition->signals[signalIndex];
|
||||
DecodedSignalValue decoded;
|
||||
std::uint64_t unsignedValue = 0U;
|
||||
|
||||
decoded.definition = &signal;
|
||||
|
||||
if (!ExtractUnsigned (frame.data, signal, unsignedValue)) {
|
||||
decoded.valid = false;
|
||||
result.signals.push_back (decoded);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (signal.valueType == ValueType::Signed)
|
||||
decoded.rawValue = SignExtend (unsignedValue, signal.length);
|
||||
else
|
||||
decoded.rawValue = static_cast<std::int64_t> (unsignedValue);
|
||||
|
||||
decoded.physicalValue =
|
||||
(static_cast<double> (decoded.rawValue) * signal.factor) + signal.offset;
|
||||
decoded.valid = true;
|
||||
|
||||
result.signals.push_back (decoded);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
bool DbcDecoder::ExtractUnsigned (const std::vector<std::uint8_t> &data,
|
||||
const DecodeSignal &signal,
|
||||
std::uint64_t &value) {
|
||||
if ((signal.length == 0U) || (signal.length > 64U))
|
||||
return false;
|
||||
|
||||
if (signal.byteOrder == ByteOrder::Intel)
|
||||
return ExtractIntel (data, signal.startBit, signal.length, value);
|
||||
|
||||
return ExtractMotorola (data, signal.startBit, signal.length, value);
|
||||
}
|
||||
|
||||
bool DbcDecoder::ExtractIntel (const std::vector<std::uint8_t> &data,
|
||||
std::uint32_t startBit,
|
||||
std::uint32_t length,
|
||||
std::uint64_t &value) {
|
||||
value = 0U;
|
||||
|
||||
for (std::uint32_t bitIndex = 0U; bitIndex < length; ++bitIndex) {
|
||||
const std::uint32_t absoluteBit = startBit + bitIndex;
|
||||
const std::uint32_t byteIndex = absoluteBit / 8U;
|
||||
const std::uint32_t bitInByte = absoluteBit % 8U;
|
||||
|
||||
if (byteIndex >= data.size())
|
||||
return false;
|
||||
|
||||
const std::uint64_t bitValue =
|
||||
(static_cast<std::uint64_t> ((data[byteIndex] >> bitInByte) & 0x01U) << bitIndex);
|
||||
|
||||
value |= bitValue;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool DbcDecoder::ExtractMotorola (const std::vector<std::uint8_t> &data,
|
||||
std::uint32_t startBit,
|
||||
std::uint32_t length,
|
||||
std::uint64_t &value) {
|
||||
/*
|
||||
* DBC Motorola bit numbering:
|
||||
* - startBit points to the most significant bit of the signal
|
||||
* - inside a byte, bit numbering goes 7..0
|
||||
* - crossing byte boundary moves to the next byte, bit 7
|
||||
*/
|
||||
|
||||
value = 0U;
|
||||
|
||||
std::int32_t currentBit = static_cast<std::int32_t> (startBit);
|
||||
|
||||
for (std::uint32_t bitIndex = 0U; bitIndex < length; ++bitIndex) {
|
||||
if (currentBit < 0)
|
||||
return false;
|
||||
|
||||
const std::uint32_t absoluteBit = static_cast<std::uint32_t> (currentBit);
|
||||
const std::uint32_t byteIndex = absoluteBit / 8U;
|
||||
const std::uint32_t bitFromMsb = absoluteBit % 8U;
|
||||
const std::uint32_t bitInByte = 7U - bitFromMsb;
|
||||
|
||||
if (byteIndex >= data.size())
|
||||
return false;
|
||||
|
||||
value <<= 1U;
|
||||
value |= static_cast<std::uint64_t> ((data[byteIndex] >> bitInByte) & 0x01U);
|
||||
|
||||
if ((absoluteBit % 8U) == 7U)
|
||||
currentBit = static_cast<std::int32_t> ((byteIndex + 1U) * 8U);
|
||||
else
|
||||
--currentBit;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
std::int64_t DbcDecoder::SignExtend (std::uint64_t value, std::uint32_t bitLength) {
|
||||
if ((bitLength == 0U) || (bitLength >= 64U))
|
||||
return static_cast<std::int64_t> (value);
|
||||
|
||||
const std::uint64_t signMask = (static_cast<std::uint64_t> (1U) << (bitLength - 1U));
|
||||
const std::uint64_t valueMask = (static_cast<std::uint64_t> (1U) << bitLength) - 1U;
|
||||
|
||||
value &= valueMask;
|
||||
|
||||
if ((value & signMask) == 0U)
|
||||
return static_cast<std::int64_t> (value);
|
||||
|
||||
return static_cast<std::int64_t> (value | (~valueMask));
|
||||
}
|
||||
@@ -1,110 +0,0 @@
|
||||
/**
|
||||
* @file dbc_decoder.h
|
||||
* @brief
|
||||
*
|
||||
* Created: 2026-03-13
|
||||
* Author: Deeaitch (Dim. Himro)
|
||||
*
|
||||
* Licensed under the MIT License.
|
||||
* See LICENSE file in the project root for full license text.
|
||||
*/
|
||||
|
||||
#ifndef DBC_DECODER_H
|
||||
#define DBC_DECODER_H
|
||||
|
||||
#include <vector>
|
||||
#include <cstdint>
|
||||
|
||||
#include "decode_database.h"
|
||||
|
||||
/**
|
||||
* @brief Raw CAN frame used for runtime or trace decoding.
|
||||
*/
|
||||
struct RawCanFrame {
|
||||
std::uint32_t canId; /**< Normalized CAN ID. */
|
||||
bool isExtended; /**< true for extended frame. */
|
||||
std::vector<std::uint8_t> data; /**< Payload bytes. */
|
||||
|
||||
RawCanFrame()
|
||||
: canId (0U)
|
||||
, isExtended (false)
|
||||
, data() {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief One decoded signal value.
|
||||
*/
|
||||
struct DecodedSignalValue {
|
||||
const DecodeSignal *definition; /**< Signal definition. */
|
||||
std::int64_t rawValue; /**< Extracted raw integer value. */
|
||||
double physicalValue; /**< Converted physical value. */
|
||||
bool valid; /**< true if decoding succeeded. */
|
||||
|
||||
DecodedSignalValue()
|
||||
: definition (nullptr)
|
||||
, rawValue (0)
|
||||
, physicalValue (0.0)
|
||||
, valid (false) {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Fully decoded frame.
|
||||
*/
|
||||
struct DecodedFrameValue {
|
||||
const DecodeFrame *definition; /**< Frame definition. */
|
||||
std::vector<DecodedSignalValue> signals; /**< Decoded signal values. */
|
||||
bool valid; /**< true if frame was matched. */
|
||||
|
||||
DecodedFrameValue()
|
||||
: definition (nullptr)
|
||||
, signals()
|
||||
, valid (false) {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Runtime CAN decoder using prebuilt decode database.
|
||||
*/
|
||||
class DbcDecoder {
|
||||
public:
|
||||
/**
|
||||
* @brief Find frame definition by CAN ID.
|
||||
* @param database Runtime decode database.
|
||||
* @param canId Normalized CAN ID.
|
||||
* @param isExtended true for extended frame.
|
||||
* @return Pointer to frame definition or nullptr.
|
||||
*/
|
||||
const DecodeFrame *FindFrame (const DecodeDatabase &database,
|
||||
std::uint32_t canId,
|
||||
bool isExtended) const;
|
||||
|
||||
/**
|
||||
* @brief Decode one raw CAN frame.
|
||||
* @param database Runtime decode database.
|
||||
* @param frame Raw CAN frame.
|
||||
* @return Decoded frame value.
|
||||
*/
|
||||
DecodedFrameValue Decode (const DecodeDatabase &database,
|
||||
const RawCanFrame &frame) const;
|
||||
|
||||
private:
|
||||
static bool ExtractUnsigned (const std::vector<std::uint8_t> &data,
|
||||
const DecodeSignal &signal,
|
||||
std::uint64_t &value);
|
||||
|
||||
static bool ExtractIntel (const std::vector<std::uint8_t> &data,
|
||||
std::uint32_t startBit,
|
||||
std::uint32_t length,
|
||||
std::uint64_t &value);
|
||||
|
||||
static bool ExtractMotorola (const std::vector<std::uint8_t> &data,
|
||||
std::uint32_t startBit,
|
||||
std::uint32_t length,
|
||||
std::uint64_t &value);
|
||||
|
||||
static std::int64_t SignExtend (std::uint64_t value, std::uint32_t bitLength);
|
||||
};
|
||||
|
||||
#endif /* DBC_DECODER_H */
|
||||
@@ -1,356 +0,0 @@
|
||||
/**
|
||||
* @file dbc_parser.cpp
|
||||
* @brief
|
||||
*
|
||||
* Created: 2026-03-13
|
||||
* Author: Deeaitch (Dim. Himro)
|
||||
*
|
||||
* Licensed under the MIT License.
|
||||
* See LICENSE file in the project root for full license text.
|
||||
*/
|
||||
|
||||
#include "dbc_parser.h"
|
||||
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <stdexcept>
|
||||
#include <cctype>
|
||||
|
||||
namespace {
|
||||
/**
|
||||
* @brief Remove leading and trailing spaces.
|
||||
* @param text Input text.
|
||||
* @return Trimmed text.
|
||||
*/
|
||||
std::string TrimText (const std::string &text) {
|
||||
std::string::size_type begin = 0U;
|
||||
while ((begin < text.size()) &&
|
||||
std::isspace (static_cast<unsigned char> (text[begin])))
|
||||
++begin;
|
||||
|
||||
std::string::size_type end = text.size();
|
||||
while ((end > begin) &&
|
||||
std::isspace (static_cast<unsigned char> (text[end - 1U])))
|
||||
--end;
|
||||
|
||||
return text.substr (begin, end - begin);
|
||||
}
|
||||
}
|
||||
|
||||
DbcDatabase DbcParser::ParseFile (const std::string &filePath) const {
|
||||
std::ifstream input (filePath.c_str());
|
||||
if (!input.is_open())
|
||||
throw std::runtime_error ("Failed to open DBC file: " + filePath);
|
||||
|
||||
DbcDatabase database;
|
||||
FrameInfo *currentFrame = nullptr;
|
||||
|
||||
std::string line;
|
||||
while (std::getline (input, line)) {
|
||||
line = Trim (line);
|
||||
if (line.empty())
|
||||
continue;
|
||||
|
||||
if (IsFrameLine (line)) {
|
||||
FrameInfo frame = ParseFrameLine (line);
|
||||
database.frames.push_back (frame);
|
||||
currentFrame = &database.frames.back();
|
||||
} else if (IsSignalLine (line)) {
|
||||
if (currentFrame == nullptr)
|
||||
throw std::runtime_error ("Signal found before any frame definition.");
|
||||
|
||||
SignalInfo signal = ParseSignalLine (line);
|
||||
currentFrame->signals.push_back (signal);
|
||||
} else if (IsCommentLine (line))
|
||||
ParseCommentLine (line, database);
|
||||
}
|
||||
|
||||
return database;
|
||||
}
|
||||
|
||||
bool DbcParser::IsFrameLine (const std::string &line) {
|
||||
return (line.size() >= 4U) && (line.compare (0U, 4U, "BO_ ") == 0);
|
||||
}
|
||||
|
||||
bool DbcParser::IsSignalLine (const std::string &line) {
|
||||
return (line.size() >= 4U) && (line.compare (0U, 4U, "SG_ ") == 0);
|
||||
}
|
||||
|
||||
bool DbcParser::IsCommentLine (const std::string &line) {
|
||||
return (line.size() >= 4U) && (line.compare (0U, 4U, "CM_ ") == 0);
|
||||
}
|
||||
|
||||
std::string DbcParser::Trim (const std::string &text) {
|
||||
return TrimText (text);
|
||||
}
|
||||
|
||||
std::vector<std::string> DbcParser::SplitReceivers (const std::string &text) {
|
||||
std::vector<std::string> receivers;
|
||||
std::string token;
|
||||
std::istringstream stream (text);
|
||||
|
||||
while (std::getline (stream, token, ',')) {
|
||||
token = TrimText (token);
|
||||
if (!token.empty())
|
||||
receivers.push_back (token);
|
||||
}
|
||||
|
||||
return receivers;
|
||||
}
|
||||
|
||||
void DbcParser::NormalizeCanId (std::uint32_t rawCanId,
|
||||
std::uint32_t &normalizedCanId,
|
||||
bool &isExtended) {
|
||||
/*
|
||||
* DBC commonly stores extended identifiers with bit 31 set.
|
||||
* Example:
|
||||
* raw id = 0x80000000 | actual_29_bit_id
|
||||
*/
|
||||
if ((rawCanId & 0x80000000U) != 0U) {
|
||||
isExtended = true;
|
||||
normalizedCanId = (rawCanId & 0x1FFFFFFFU);
|
||||
} else {
|
||||
isExtended = (rawCanId > 0x7FFU);
|
||||
normalizedCanId = rawCanId;
|
||||
}
|
||||
}
|
||||
|
||||
std::uint32_t DbcParser::TryExtractPgn (std::uint32_t canId, bool isExtended, bool &hasPgn) {
|
||||
hasPgn = false;
|
||||
|
||||
if (!isExtended)
|
||||
return 0U;
|
||||
|
||||
if ((canId & 0x1FFFFFFFU) != canId)
|
||||
return 0U;
|
||||
|
||||
const std::uint32_t pf = (canId >> 16U) & 0xFFU;
|
||||
const std::uint32_t ps = (canId >> 8U) & 0xFFU;
|
||||
const std::uint32_t dp = (canId >> 24U) & 0x01U;
|
||||
|
||||
std::uint32_t pgn = 0U;
|
||||
|
||||
if (pf < 240U)
|
||||
pgn = (dp << 16U) | (pf << 8U);
|
||||
else
|
||||
pgn = (dp << 16U) | (pf << 8U) | ps;
|
||||
|
||||
hasPgn = true;
|
||||
return pgn;
|
||||
}
|
||||
|
||||
FrameInfo DbcParser::ParseFrameLine (const std::string &line) {
|
||||
/*
|
||||
* Example:
|
||||
* BO_ 256 EngineData: 8 EEC1
|
||||
*/
|
||||
|
||||
std::istringstream stream (line);
|
||||
std::string token;
|
||||
FrameInfo frame;
|
||||
std::uint32_t rawCanId = 0U;
|
||||
|
||||
stream >> token;
|
||||
if (token != "BO_")
|
||||
throw std::runtime_error ("Invalid frame line: " + line);
|
||||
|
||||
stream >> rawCanId;
|
||||
NormalizeCanId (rawCanId, frame.canId, frame.isExtended);
|
||||
|
||||
stream >> token;
|
||||
if (token.empty())
|
||||
throw std::runtime_error ("Missing frame name: " + line);
|
||||
|
||||
if (token[token.size() - 1U] == ':')
|
||||
token.erase (token.size() - 1U, 1U);
|
||||
|
||||
frame.name = token;
|
||||
|
||||
{
|
||||
unsigned int dlcValue = 0U;
|
||||
stream >> dlcValue;
|
||||
frame.dlc = static_cast<std::uint8_t> (dlcValue);
|
||||
}
|
||||
|
||||
stream >> frame.transmitter;
|
||||
frame.pgn = TryExtractPgn (frame.canId, frame.isExtended, frame.hasPgn);
|
||||
|
||||
return frame;
|
||||
}
|
||||
|
||||
SignalInfo DbcParser::ParseSignalLine (const std::string &line) {
|
||||
/*
|
||||
* Example:
|
||||
* SG_ EngineSpeed : 0|16@1+ (0.125,0) [0|8000] "rpm" ECU1,ECU2
|
||||
*/
|
||||
|
||||
SignalInfo signal;
|
||||
|
||||
std::string work = TrimText (line);
|
||||
if (work.compare (0U, 4U, "SG_ ") != 0)
|
||||
throw std::runtime_error ("Invalid signal line: " + line);
|
||||
|
||||
work.erase (0U, 4U);
|
||||
|
||||
const std::string::size_type colonPos = work.find (':');
|
||||
if (colonPos == std::string::npos)
|
||||
throw std::runtime_error ("Signal line missing ':' : " + line);
|
||||
|
||||
signal.name = TrimText (work.substr (0U, colonPos));
|
||||
std::string rest = TrimText (work.substr (colonPos + 1U));
|
||||
|
||||
const std::string::size_type pipePos = rest.find ('|');
|
||||
const std::string::size_type atPos = rest.find ('@');
|
||||
const std::string::size_type signPos = rest.find_first_of ("+-", atPos);
|
||||
const std::string::size_type factorBegin = rest.find ('(');
|
||||
const std::string::size_type factorComma = rest.find (',', factorBegin);
|
||||
const std::string::size_type factorEnd = rest.find (')', factorComma);
|
||||
const std::string::size_type rangeBegin = rest.find ('[');
|
||||
const std::string::size_type rangeSep = rest.find ('|', rangeBegin);
|
||||
const std::string::size_type rangeEnd = rest.find (']', rangeSep);
|
||||
const std::string::size_type unitBegin = rest.find ('"', rangeEnd);
|
||||
const std::string::size_type unitEnd = rest.find ('"', unitBegin + 1U);
|
||||
|
||||
if ((pipePos == std::string::npos) ||
|
||||
(atPos == std::string::npos) ||
|
||||
(signPos == std::string::npos) ||
|
||||
(factorBegin == std::string::npos) ||
|
||||
(factorComma == std::string::npos) ||
|
||||
(factorEnd == std::string::npos) ||
|
||||
(rangeBegin == std::string::npos) ||
|
||||
(rangeSep == std::string::npos) ||
|
||||
(rangeEnd == std::string::npos) ||
|
||||
(unitBegin == std::string::npos) ||
|
||||
(unitEnd == std::string::npos))
|
||||
throw std::runtime_error ("Unsupported signal syntax: " + line);
|
||||
|
||||
signal.startBit = static_cast<std::uint32_t> (
|
||||
std::stoul (TrimText (rest.substr (0U, pipePos)))
|
||||
);
|
||||
|
||||
signal.length = static_cast<std::uint32_t> (
|
||||
std::stoul (TrimText (rest.substr (pipePos + 1U, atPos - pipePos - 1U)))
|
||||
);
|
||||
|
||||
{
|
||||
if ((atPos + 1U) >= rest.size())
|
||||
throw std::runtime_error ("Invalid endianness in signal: " + line);
|
||||
|
||||
const char endianChar = rest[atPos + 1U];
|
||||
signal.isLittleEndian = (endianChar == '1');
|
||||
}
|
||||
|
||||
{
|
||||
const char signChar = rest[signPos];
|
||||
signal.isSigned = (signChar == '-');
|
||||
}
|
||||
|
||||
signal.factor = std::stod (
|
||||
TrimText (rest.substr (factorBegin + 1U, factorComma - factorBegin - 1U))
|
||||
);
|
||||
|
||||
signal.offset = std::stod (
|
||||
TrimText (rest.substr (factorComma + 1U, factorEnd - factorComma - 1U))
|
||||
);
|
||||
|
||||
signal.minimum = std::stod (
|
||||
TrimText (rest.substr (rangeBegin + 1U, rangeSep - rangeBegin - 1U))
|
||||
);
|
||||
|
||||
signal.maximum = std::stod (
|
||||
TrimText (rest.substr (rangeSep + 1U, rangeEnd - rangeSep - 1U))
|
||||
);
|
||||
|
||||
signal.unit = rest.substr (unitBegin + 1U, unitEnd - unitBegin - 1U);
|
||||
|
||||
{
|
||||
const std::string receiversText = TrimText (rest.substr (unitEnd + 1U));
|
||||
signal.receivers = SplitReceivers (receiversText);
|
||||
}
|
||||
|
||||
return signal;
|
||||
}
|
||||
|
||||
void DbcParser::ParseCommentLine (const std::string &line, DbcDatabase &database) {
|
||||
/*
|
||||
* Examples:
|
||||
* CM_ BO_ 256 "Frame comment";
|
||||
* CM_ SG_ 256 EngineSpeed "Signal comment";
|
||||
*/
|
||||
|
||||
std::istringstream stream (line);
|
||||
std::string token;
|
||||
stream >> token;
|
||||
|
||||
if (token != "CM_")
|
||||
return;
|
||||
|
||||
stream >> token;
|
||||
|
||||
if (token == "BO_") {
|
||||
std::uint32_t rawCanId = 0U;
|
||||
std::uint32_t canId = 0U;
|
||||
bool isExtended = false;
|
||||
|
||||
stream >> rawCanId;
|
||||
NormalizeCanId (rawCanId, canId, isExtended);
|
||||
|
||||
const std::string::size_type quoteBegin = line.find ('"');
|
||||
const std::string::size_type quoteEnd = line.rfind ('"');
|
||||
|
||||
if ((quoteBegin == std::string::npos) ||
|
||||
(quoteEnd == std::string::npos) ||
|
||||
(quoteEnd <= quoteBegin))
|
||||
return;
|
||||
|
||||
FrameInfo *frame = FindFrameById (database, canId, isExtended);
|
||||
if (frame != nullptr)
|
||||
frame->comment = line.substr (quoteBegin + 1U, quoteEnd - quoteBegin - 1U);
|
||||
} else if (token == "SG_") {
|
||||
std::uint32_t rawCanId = 0U;
|
||||
std::uint32_t canId = 0U;
|
||||
bool isExtended = false;
|
||||
std::string signalName;
|
||||
|
||||
stream >> rawCanId;
|
||||
stream >> signalName;
|
||||
|
||||
NormalizeCanId (rawCanId, canId, isExtended);
|
||||
|
||||
const std::string::size_type quoteBegin = line.find ('"');
|
||||
const std::string::size_type quoteEnd = line.rfind ('"');
|
||||
|
||||
if ((quoteBegin == std::string::npos) ||
|
||||
(quoteEnd == std::string::npos) ||
|
||||
(quoteEnd <= quoteBegin))
|
||||
return;
|
||||
|
||||
FrameInfo *frame = FindFrameById (database, canId, isExtended);
|
||||
if (frame != nullptr) {
|
||||
SignalInfo *signal = FindSignalByName (*frame, signalName);
|
||||
if (signal != nullptr)
|
||||
signal->comment = line.substr (quoteBegin + 1U, quoteEnd - quoteBegin - 1U);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FrameInfo *DbcParser::FindFrameById (DbcDatabase &database,
|
||||
std::uint32_t canId,
|
||||
bool isExtended) {
|
||||
for (std::size_t index = 0U; index < database.frames.size(); ++index) {
|
||||
if ((database.frames[index].canId == canId) &&
|
||||
(database.frames[index].isExtended == isExtended))
|
||||
return &database.frames[index];
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
SignalInfo *DbcParser::FindSignalByName (FrameInfo &frame, const std::string &signalName) {
|
||||
for (std::size_t index = 0U; index < frame.signals.size(); ++index) {
|
||||
if (frame.signals[index].name == signalName)
|
||||
return &frame.signals[index];
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
@@ -1,69 +0,0 @@
|
||||
/**
|
||||
* @file dbc_parser.h
|
||||
* @brief
|
||||
*
|
||||
* Created: 2026-03-13
|
||||
* Author: Deeaitch (Dim. Himro)
|
||||
*
|
||||
* Licensed under the MIT License.
|
||||
* See LICENSE file in the project root for full license text.
|
||||
*/
|
||||
|
||||
#ifndef DBC_PARSER_H
|
||||
#define DBC_PARSER_H
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <cstdint>
|
||||
|
||||
#include "dbc_database.h"
|
||||
|
||||
/**
|
||||
* @brief Minimal DBC parser.
|
||||
*
|
||||
* Supports:
|
||||
* - BO_
|
||||
* - SG_
|
||||
* - CM_ BO_
|
||||
* - CM_ SG_
|
||||
*
|
||||
* Ignores:
|
||||
* - attributes
|
||||
* - multiplexing
|
||||
* - value tables
|
||||
*/
|
||||
class DbcParser {
|
||||
public:
|
||||
/**
|
||||
* @brief Parse DBC file.
|
||||
* @param filePath Path to input file.
|
||||
* @return Parsed database.
|
||||
* @throws std::runtime_error on file or parse errors.
|
||||
*/
|
||||
DbcDatabase ParseFile (const std::string &filePath) const;
|
||||
|
||||
private:
|
||||
static bool IsFrameLine (const std::string &line);
|
||||
static bool IsSignalLine (const std::string &line);
|
||||
static bool IsCommentLine (const std::string &line);
|
||||
static std::string Trim (const std::string &text);
|
||||
static std::vector<std::string> SplitReceivers (const std::string &text);
|
||||
static std::uint32_t TryExtractPgn (std::uint32_t canId, bool isExtended, bool &hasPgn);
|
||||
|
||||
static void NormalizeCanId (std::uint32_t rawCanId,
|
||||
std::uint32_t &normalizedCanId,
|
||||
bool &isExtended);
|
||||
|
||||
static FrameInfo ParseFrameLine (const std::string &line);
|
||||
static SignalInfo ParseSignalLine (const std::string &line);
|
||||
|
||||
static void ParseCommentLine (const std::string &line, DbcDatabase &database);
|
||||
|
||||
static FrameInfo *FindFrameById (DbcDatabase &database,
|
||||
std::uint32_t canId,
|
||||
bool isExtended);
|
||||
|
||||
static SignalInfo *FindSignalByName (FrameInfo &frame, const std::string &signalName);
|
||||
};
|
||||
|
||||
#endif /* DBC_PARSER_H */
|
||||
@@ -1,31 +0,0 @@
|
||||
/**
|
||||
* @file dbc_tree_builder.cpp
|
||||
* @brief
|
||||
*
|
||||
* Created: 2026-03-13
|
||||
* Author: Deeaitch (Dim. Himro)
|
||||
*
|
||||
* Licensed under the MIT License.
|
||||
* See LICENSE file in the project root for full license text.
|
||||
*/
|
||||
|
||||
#include "dbc_tree_builder.h"
|
||||
|
||||
std::unique_ptr<TreeNode> DbcTreeBuilder::Build (const DbcDatabase &database) const {
|
||||
std::unique_ptr<TreeNode> root (new TreeNode());
|
||||
|
||||
for (std::size_t frameIndex = 0U; frameIndex < database.frames.size(); ++frameIndex) {
|
||||
const FrameInfo &frame = database.frames[frameIndex];
|
||||
std::unique_ptr<TreeNode> frameNode (new TreeNode (frame));
|
||||
|
||||
for (std::size_t signalIndex = 0U; signalIndex < frame.signals.size(); ++signalIndex) {
|
||||
const SignalInfo &signal = frame.signals[signalIndex];
|
||||
std::unique_ptr<TreeNode> signalNode (new TreeNode (signal));
|
||||
frameNode->AddChild (std::move (signalNode));
|
||||
}
|
||||
|
||||
root->AddChild (std::move (frameNode));
|
||||
}
|
||||
|
||||
return root;
|
||||
}
|
||||
@@ -1,137 +0,0 @@
|
||||
/**
|
||||
* @file decode_database.h
|
||||
* @brief
|
||||
*
|
||||
* Created: 2026-03-13
|
||||
* Author: Deeaitch (Dim. Himro)
|
||||
*
|
||||
* Licensed under the MIT License.
|
||||
* See LICENSE file in the project root for full license text.
|
||||
*/
|
||||
|
||||
#ifndef DECODE_DATABASE_H
|
||||
#define DECODE_DATABASE_H
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <unordered_map>
|
||||
#include <cstdint>
|
||||
|
||||
/**
|
||||
* @brief Signal byte order used for runtime decoding.
|
||||
*/
|
||||
enum class ByteOrder {
|
||||
Intel,
|
||||
Motorola
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Signal numeric type.
|
||||
*/
|
||||
enum class ValueType {
|
||||
Unsigned,
|
||||
Signed
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Runtime-ready signal definition.
|
||||
*/
|
||||
struct DecodeSignal {
|
||||
std::string name; /**< Signal name. */
|
||||
std::uint32_t startBit; /**< DBC start bit. */
|
||||
std::uint32_t length; /**< Signal length in bits. */
|
||||
ByteOrder byteOrder; /**< Intel or Motorola. */
|
||||
ValueType valueType; /**< Signed or unsigned. */
|
||||
double factor; /**< Scaling factor. */
|
||||
double offset; /**< Physical offset. */
|
||||
double minimum; /**< Minimum physical value. */
|
||||
double maximum; /**< Maximum physical value. */
|
||||
std::string unit; /**< Physical unit. */
|
||||
std::vector<std::string> receivers; /**< Receivers. */
|
||||
std::string comment; /**< Comment. */
|
||||
|
||||
DecodeSignal()
|
||||
: name()
|
||||
, startBit (0U)
|
||||
, length (0U)
|
||||
, byteOrder (ByteOrder::Intel)
|
||||
, valueType (ValueType::Unsigned)
|
||||
, factor (1.0)
|
||||
, offset (0.0)
|
||||
, minimum (0.0)
|
||||
, maximum (0.0)
|
||||
, unit()
|
||||
, receivers()
|
||||
, comment() {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Runtime-ready frame definition.
|
||||
*/
|
||||
struct DecodeFrame {
|
||||
std::string name; /**< Frame name. */
|
||||
std::uint32_t canId; /**< Normalized CAN ID. */
|
||||
bool isExtended; /**< true for extended frame. */
|
||||
std::uint8_t dlc; /**< Payload length. */
|
||||
std::uint32_t pgn; /**< PGN if available. */
|
||||
bool hasPgn; /**< true if PGN is valid. */
|
||||
std::string transmitter; /**< Transmitter ECU. */
|
||||
std::string comment; /**< Frame comment. */
|
||||
std::vector<DecodeSignal> signals; /**< Signal definitions. */
|
||||
|
||||
DecodeFrame()
|
||||
: name()
|
||||
, canId (0U)
|
||||
, isExtended (false)
|
||||
, dlc (0U)
|
||||
, pgn (0U)
|
||||
, hasPgn (false)
|
||||
, transmitter()
|
||||
, comment()
|
||||
, signals() {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Key for fast frame lookup.
|
||||
*/
|
||||
struct FrameKey {
|
||||
std::uint32_t canId;
|
||||
bool isExtended;
|
||||
|
||||
FrameKey()
|
||||
: canId (0U)
|
||||
, isExtended (false) {
|
||||
}
|
||||
|
||||
FrameKey (std::uint32_t id, bool extended)
|
||||
: canId (id)
|
||||
, isExtended (extended) {
|
||||
}
|
||||
|
||||
bool operator== (const FrameKey &other) const {
|
||||
return (canId == other.canId) && (isExtended == other.isExtended);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Hasher for frame key.
|
||||
*/
|
||||
struct FrameKeyHasher {
|
||||
std::size_t operator() (const FrameKey &key) const {
|
||||
const std::size_t a = static_cast<std::size_t> (key.canId);
|
||||
const std::size_t b = key.isExtended ? 1U : 0U;
|
||||
return (a * 1315423911U) ^ b;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Runtime decode database with fast lookup by CAN ID.
|
||||
*/
|
||||
struct DecodeDatabase {
|
||||
std::vector<DecodeFrame> frames;
|
||||
std::unordered_map<FrameKey, std::size_t, FrameKeyHasher> frameIndexByKey;
|
||||
};
|
||||
|
||||
#endif /* DECODE_DATABASE_H */
|
||||
@@ -1,78 +1,86 @@
|
||||
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
|
||||
<tagfile doxygen_version="1.9.4">
|
||||
<tagfile doxygen_version="1.9.8">
|
||||
<compound kind="file">
|
||||
<name>dbc_database.h</name>
|
||||
<path>/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/</path>
|
||||
<path>core/</path>
|
||||
<filename>dbc__database_8h.html</filename>
|
||||
<includes id="frame__info_8h" name="frame_info.h" local="yes" imported="no">frame_info.h</includes>
|
||||
<includes id="frame__info_8h" name="frame_info.h" local="yes" import="no" module="no" objc="no">frame_info.h</includes>
|
||||
<class kind="struct">DbcDatabase</class>
|
||||
</compound>
|
||||
<compound kind="file">
|
||||
<name>dbc_decode_builder.cpp</name>
|
||||
<path>/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/</path>
|
||||
<path>core/</path>
|
||||
<filename>dbc__decode__builder_8cpp.html</filename>
|
||||
<includes id="dbc__decode__builder_8h" name="dbc_decode_builder.h" local="yes" imported="no">dbc_decode_builder.h</includes>
|
||||
<includes id="dbc__decode__builder_8h" name="dbc_decode_builder.h" local="yes" import="no" module="no" objc="no">dbc_decode_builder.h</includes>
|
||||
</compound>
|
||||
<compound kind="file">
|
||||
<name>dbc_decode_builder.h</name>
|
||||
<path>/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/</path>
|
||||
<path>core/</path>
|
||||
<filename>dbc__decode__builder_8h.html</filename>
|
||||
<includes id="dbc__database_8h" name="dbc_database.h" local="yes" imported="no">dbc_database.h</includes>
|
||||
<includes id="decode__database_8h" name="decode_database.h" local="yes" imported="no">decode_database.h</includes>
|
||||
<includes id="dbc__database_8h" name="dbc_database.h" local="yes" import="no" module="no" objc="no">dbc_database.h</includes>
|
||||
<includes id="decode__database_8h" name="decode_database.h" local="yes" import="no" module="no" objc="no">decode_database.h</includes>
|
||||
<class kind="class">DbcDecodeBuilder</class>
|
||||
</compound>
|
||||
<compound kind="file">
|
||||
<name>dbc_decoder.cpp</name>
|
||||
<path>/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/</path>
|
||||
<path>core/</path>
|
||||
<filename>dbc__decoder_8cpp.html</filename>
|
||||
<includes id="dbc__decoder_8h" name="dbc_decoder.h" local="yes" imported="no">dbc_decoder.h</includes>
|
||||
<includes id="dbc__decoder_8h" name="dbc_decoder.h" local="yes" import="no" module="no" objc="no">dbc_decoder.h</includes>
|
||||
</compound>
|
||||
<compound kind="file">
|
||||
<name>dbc_decoder.h</name>
|
||||
<path>/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/</path>
|
||||
<path>core/</path>
|
||||
<filename>dbc__decoder_8h.html</filename>
|
||||
<includes id="decode__database_8h" name="decode_database.h" local="yes" imported="no">decode_database.h</includes>
|
||||
<includes id="decode__database_8h" name="decode_database.h" local="yes" import="no" module="no" objc="no">decode_database.h</includes>
|
||||
<class kind="struct">RawCanFrame</class>
|
||||
<class kind="struct">DecodedSignalValue</class>
|
||||
<class kind="struct">DecodedFrameValue</class>
|
||||
<class kind="class">DbcDecoder</class>
|
||||
<member kind="enumeration">
|
||||
<type></type>
|
||||
<name>FrameDecodeStatus</name>
|
||||
<anchorfile>dbc__decoder_8h.html</anchorfile>
|
||||
<anchor>a855b2bc36cb18bfbae5ff30a2394e961</anchor>
|
||||
<arglist></arglist>
|
||||
<enumvalue file="dbc__decoder_8h.html" anchor="a855b2bc36cb18bfbae5ff30a2394e961a85f5d387f9a01dce258470e1a5a23332">UnknownFrame</enumvalue>
|
||||
<enumvalue file="dbc__decoder_8h.html" anchor="a855b2bc36cb18bfbae5ff30a2394e961a7c9fa088a1e7db1fc83cb62aefd3ea7f">InsufficientPayload</enumvalue>
|
||||
<enumvalue file="dbc__decoder_8h.html" anchor="a855b2bc36cb18bfbae5ff30a2394e961aedeb8da96660592dfe0853f212b77469">SignalErrors</enumvalue>
|
||||
<enumvalue file="dbc__decoder_8h.html" anchor="a855b2bc36cb18bfbae5ff30a2394e961a3ac705f2acd51a4613f9188c05c91d0d">Valid</enumvalue>
|
||||
</member>
|
||||
</compound>
|
||||
<compound kind="file">
|
||||
<name>dbc_parser.cpp</name>
|
||||
<path>/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/</path>
|
||||
<path>core/</path>
|
||||
<filename>dbc__parser_8cpp.html</filename>
|
||||
<includes id="dbc__parser_8h" name="dbc_parser.h" local="yes" imported="no">dbc_parser.h</includes>
|
||||
<includes id="dbc__parser_8h" name="dbc_parser.h" local="yes" import="no" module="no" objc="no">dbc_parser.h</includes>
|
||||
</compound>
|
||||
<compound kind="file">
|
||||
<name>dbc_parser.h</name>
|
||||
<path>/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/</path>
|
||||
<path>core/</path>
|
||||
<filename>dbc__parser_8h.html</filename>
|
||||
<includes id="dbc__database_8h" name="dbc_database.h" local="yes" imported="no">dbc_database.h</includes>
|
||||
<class kind="class">DbcParser</class>
|
||||
</compound>
|
||||
<compound kind="file">
|
||||
<name>dbc_tree_builder.cpp</name>
|
||||
<path>/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/</path>
|
||||
<path>core/</path>
|
||||
<filename>dbc__tree__builder_8cpp.html</filename>
|
||||
<includes id="dbc__tree__builder_8h" name="dbc_tree_builder.h" local="yes" imported="no">dbc_tree_builder.h</includes>
|
||||
<includes id="dbc__tree__builder_8h" name="dbc_tree_builder.h" local="yes" import="no" module="no" objc="no">dbc_tree_builder.h</includes>
|
||||
</compound>
|
||||
<compound kind="file">
|
||||
<name>dbc_tree_builder.h</name>
|
||||
<path>/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/</path>
|
||||
<path>core/</path>
|
||||
<filename>dbc__tree__builder_8h.html</filename>
|
||||
<includes id="dbc__database_8h" name="dbc_database.h" local="yes" imported="no">dbc_database.h</includes>
|
||||
<includes id="tree__node_8h" name="tree_node.h" local="yes" imported="no">tree_node.h</includes>
|
||||
<includes id="dbc__database_8h" name="dbc_database.h" local="yes" import="no" module="no" objc="no">dbc_database.h</includes>
|
||||
<includes id="tree__node_8h" name="tree_node.h" local="yes" import="no" module="no" objc="no">tree_node.h</includes>
|
||||
<class kind="class">DbcTreeBuilder</class>
|
||||
</compound>
|
||||
<compound kind="file">
|
||||
<name>decode_database.h</name>
|
||||
<path>/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/</path>
|
||||
<path>core/</path>
|
||||
<filename>decode__database_8h.html</filename>
|
||||
<class kind="struct">DecodeSignal</class>
|
||||
<class kind="struct">DecodeFrame</class>
|
||||
<class kind="struct">FrameKey</class>
|
||||
<class kind="struct">FrameKeyHasher</class>
|
||||
<class kind="struct">DecodeDatabase</class>
|
||||
<class kind="class">DecodeDatabase</class>
|
||||
<member kind="enumeration">
|
||||
<type></type>
|
||||
<name>ByteOrder</name>
|
||||
@@ -94,38 +102,29 @@
|
||||
</compound>
|
||||
<compound kind="file">
|
||||
<name>frame_info.h</name>
|
||||
<path>/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/</path>
|
||||
<path>core/</path>
|
||||
<filename>frame__info_8h.html</filename>
|
||||
<includes id="signal__info_8h" name="signal_info.h" local="yes" imported="no">signal_info.h</includes>
|
||||
<includes id="signal__info_8h" name="signal_info.h" local="yes" import="no" module="no" objc="no">signal_info.h</includes>
|
||||
<class kind="struct">FrameInfo</class>
|
||||
</compound>
|
||||
<compound kind="file">
|
||||
<name>main.cpp</name>
|
||||
<path>/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/</path>
|
||||
<filename>main_8cpp.html</filename>
|
||||
<includes id="dbc__parser_8h" name="dbc_parser.h" local="yes" imported="no">dbc_parser.h</includes>
|
||||
<includes id="dbc__tree__builder_8h" name="dbc_tree_builder.h" local="yes" imported="no">dbc_tree_builder.h</includes>
|
||||
<includes id="dbc__decode__builder_8h" name="dbc_decode_builder.h" local="yes" imported="no">dbc_decode_builder.h</includes>
|
||||
<includes id="dbc__decoder_8h" name="dbc_decoder.h" local="yes" imported="no">dbc_decoder.h</includes>
|
||||
</compound>
|
||||
<compound kind="file">
|
||||
<name>signal_info.h</name>
|
||||
<path>/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/</path>
|
||||
<path>core/</path>
|
||||
<filename>signal__info_8h.html</filename>
|
||||
<class kind="struct">SignalInfo</class>
|
||||
</compound>
|
||||
<compound kind="file">
|
||||
<name>tree_node.cpp</name>
|
||||
<path>/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/</path>
|
||||
<path>core/</path>
|
||||
<filename>tree__node_8cpp.html</filename>
|
||||
<includes id="tree__node_8h" name="tree_node.h" local="yes" imported="no">tree_node.h</includes>
|
||||
<includes id="tree__node_8h" name="tree_node.h" local="yes" import="no" module="no" objc="no">tree_node.h</includes>
|
||||
</compound>
|
||||
<compound kind="file">
|
||||
<name>tree_node.h</name>
|
||||
<path>/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/</path>
|
||||
<path>core/</path>
|
||||
<filename>tree__node_8h.html</filename>
|
||||
<includes id="frame__info_8h" name="frame_info.h" local="yes" imported="no">frame_info.h</includes>
|
||||
<includes id="signal__info_8h" name="signal_info.h" local="yes" imported="no">signal_info.h</includes>
|
||||
<includes id="frame__info_8h" name="frame_info.h" local="yes" import="no" module="no" objc="no">frame_info.h</includes>
|
||||
<includes id="signal__info_8h" name="signal_info.h" local="yes" import="no" module="no" objc="no">signal_info.h</includes>
|
||||
<class kind="class">TreeNode</class>
|
||||
<member kind="enumeration">
|
||||
<type></type>
|
||||
@@ -138,6 +137,20 @@
|
||||
<enumvalue file="tree__node_8h.html" anchor="acac9cbaeea226ed297804c012dc12b16a085fea7abdc5d904fe69a3081efd7398">Signal</enumvalue>
|
||||
</member>
|
||||
</compound>
|
||||
<compound kind="file">
|
||||
<name>examples/main.cpp</name>
|
||||
<path>examples/</path>
|
||||
<filename>examples_2main_8cpp.html</filename>
|
||||
<includes id="dbc__decode__builder_8h" name="dbc_decode_builder.h" local="yes" import="no" module="no" objc="no">dbc_decode_builder.h</includes>
|
||||
<includes id="dbc__decoder_8h" name="dbc_decoder.h" local="yes" import="no" module="no" objc="no">dbc_decoder.h</includes>
|
||||
<includes id="dbc__parser_8h" name="dbc_parser.h" local="yes" import="no" module="no" objc="no">dbc_parser.h</includes>
|
||||
<includes id="dbc__tree__builder_8h" name="dbc_tree_builder.h" local="yes" import="no" module="no" objc="no">dbc_tree_builder.h</includes>
|
||||
</compound>
|
||||
<compound kind="class">
|
||||
<name>DbcCommentHandler</name>
|
||||
<filename>classDbcCommentHandler.html</filename>
|
||||
<base>DbcStatementHandler</base>
|
||||
</compound>
|
||||
<compound kind="struct">
|
||||
<name>DbcDatabase</name>
|
||||
<filename>structDbcDatabase.html</filename>
|
||||
@@ -164,10 +177,10 @@
|
||||
<name>DbcDecoder</name>
|
||||
<filename>classDbcDecoder.html</filename>
|
||||
<member kind="function">
|
||||
<type>const DecodeFrame *</type>
|
||||
<type>std::shared_ptr< const DecodeFrame ></type>
|
||||
<name>FindFrame</name>
|
||||
<anchorfile>classDbcDecoder.html</anchorfile>
|
||||
<anchor>ab2cfb2fb711c95d3a29365546b89f3da</anchor>
|
||||
<anchor>a4005c4311f57b7faf21c0cb31463039c</anchor>
|
||||
<arglist>(const DecodeDatabase &database, std::uint32_t canId, bool isExtended) const</arglist>
|
||||
</member>
|
||||
<member kind="function">
|
||||
@@ -178,6 +191,28 @@
|
||||
<arglist>(const DecodeDatabase &database, const RawCanFrame &frame) const</arglist>
|
||||
</member>
|
||||
</compound>
|
||||
<compound kind="struct">
|
||||
<name>DbcDiagnostic</name>
|
||||
<filename>structDbcDiagnostic.html</filename>
|
||||
</compound>
|
||||
<compound kind="class">
|
||||
<name>DbcDiagnosticError</name>
|
||||
<filename>classDbcDiagnosticError.html</filename>
|
||||
</compound>
|
||||
<compound kind="class">
|
||||
<name>DbcFrameHandler</name>
|
||||
<filename>classDbcFrameHandler.html</filename>
|
||||
<base>DbcStatementHandler</base>
|
||||
</compound>
|
||||
<compound kind="class">
|
||||
<name>DbcHeaderHandler</name>
|
||||
<filename>classDbcHeaderHandler.html</filename>
|
||||
<base>DbcStatementHandler</base>
|
||||
</compound>
|
||||
<compound kind="struct">
|
||||
<name>DbcParseContext</name>
|
||||
<filename>structDbcParseContext.html</filename>
|
||||
</compound>
|
||||
<compound kind="class">
|
||||
<name>DbcParser</name>
|
||||
<filename>classDbcParser.html</filename>
|
||||
@@ -188,6 +223,37 @@
|
||||
<anchor>aef72826942c9095d653fafa435855e56</anchor>
|
||||
<arglist>(const std::string &filePath) const</arglist>
|
||||
</member>
|
||||
<member kind="function">
|
||||
<type>DbcParseResult</type>
|
||||
<name>ParseFileWithDiagnostics</name>
|
||||
<anchorfile>classDbcParser.html</anchorfile>
|
||||
<anchor>a0e915ce79c2e3d4c95a5aaf2bf0409bc</anchor>
|
||||
<arglist>(const std::string &filePath) const</arglist>
|
||||
</member>
|
||||
</compound>
|
||||
<compound kind="struct">
|
||||
<name>DbcParseResult</name>
|
||||
<filename>structDbcParseResult.html</filename>
|
||||
</compound>
|
||||
<compound kind="class">
|
||||
<name>DbcSignalHandler</name>
|
||||
<filename>classDbcSignalHandler.html</filename>
|
||||
<base>DbcStatementHandler</base>
|
||||
</compound>
|
||||
<compound kind="class">
|
||||
<name>DbcStatementDispatcher</name>
|
||||
<filename>classDbcStatementDispatcher.html</filename>
|
||||
<member kind="function">
|
||||
<type>bool</type>
|
||||
<name>Dispatch</name>
|
||||
<anchorfile>classDbcStatementDispatcher.html</anchorfile>
|
||||
<anchor>a495c2d5c7ebb8103b1987cdd87c142ed</anchor>
|
||||
<arglist>(const std::string &line, DbcParseContext &context) const</arglist>
|
||||
</member>
|
||||
</compound>
|
||||
<compound kind="class">
|
||||
<name>DbcStatementHandler</name>
|
||||
<filename>classDbcStatementHandler.html</filename>
|
||||
</compound>
|
||||
<compound kind="class">
|
||||
<name>DbcTreeBuilder</name>
|
||||
@@ -200,18 +266,60 @@
|
||||
<arglist>(const DbcDatabase &database) const</arglist>
|
||||
</member>
|
||||
</compound>
|
||||
<compound kind="struct">
|
||||
<compound kind="class">
|
||||
<name>DbcTreeModel</name>
|
||||
<filename>classDbcTreeModel.html</filename>
|
||||
</compound>
|
||||
<compound kind="class">
|
||||
<name>DbcUnsupportedMultiplexingHandler</name>
|
||||
<filename>classDbcUnsupportedMultiplexingHandler.html</filename>
|
||||
<base>DbcStatementHandler</base>
|
||||
</compound>
|
||||
<compound kind="class">
|
||||
<name>DbcValueDescriptionHandler</name>
|
||||
<filename>classDbcValueDescriptionHandler.html</filename>
|
||||
<base>DbcStatementHandler</base>
|
||||
</compound>
|
||||
<compound kind="class">
|
||||
<name>DecodeDatabase</name>
|
||||
<filename>structDecodeDatabase.html</filename>
|
||||
<filename>classDecodeDatabase.html</filename>
|
||||
<member kind="function">
|
||||
<type></type>
|
||||
<name>DecodeDatabase</name>
|
||||
<anchorfile>classDecodeDatabase.html</anchorfile>
|
||||
<anchor>a51a44cf7c3f23c98ec8781afe0097c0c</anchor>
|
||||
<arglist>(const std::vector< DecodeFrame > &frames)</arglist>
|
||||
</member>
|
||||
<member kind="function">
|
||||
<type>const std::vector< DecodeFrame > &</type>
|
||||
<name>GetFrames</name>
|
||||
<anchorfile>classDecodeDatabase.html</anchorfile>
|
||||
<anchor>aa034c1510984a85f60ad6c0bd744d6e8</anchor>
|
||||
<arglist>() const</arglist>
|
||||
</member>
|
||||
<member kind="function">
|
||||
<type>std::shared_ptr< const DecodeFrame ></type>
|
||||
<name>FindFrame</name>
|
||||
<anchorfile>classDecodeDatabase.html</anchorfile>
|
||||
<anchor>a780d6e747a48b10a5eb0ab85448d2970</anchor>
|
||||
<arglist>(const FrameKey &key) const</arglist>
|
||||
</member>
|
||||
</compound>
|
||||
<compound kind="struct">
|
||||
<name>DecodedFrameValue</name>
|
||||
<filename>structDecodedFrameValue.html</filename>
|
||||
<member kind="variable">
|
||||
<type>const DecodeFrame *</type>
|
||||
<type>std::shared_ptr< const DecodeFrame ></type>
|
||||
<name>definition</name>
|
||||
<anchorfile>structDecodedFrameValue.html</anchorfile>
|
||||
<anchor>a60dda1cc352d2c8087f0bdbc81dd266c</anchor>
|
||||
<anchor>a33e971ba10030506007aa201c89f351d</anchor>
|
||||
<arglist></arglist>
|
||||
</member>
|
||||
<member kind="variable">
|
||||
<type>FrameKey</type>
|
||||
<name>key</name>
|
||||
<anchorfile>structDecodedFrameValue.html</anchorfile>
|
||||
<anchor>a32143efe2023a1ecd977a9ae93e50b73</anchor>
|
||||
<arglist></arglist>
|
||||
</member>
|
||||
<member kind="variable">
|
||||
@@ -228,22 +336,43 @@
|
||||
<anchor>a4f51c31110dba1f73a763c596372beb0</anchor>
|
||||
<arglist></arglist>
|
||||
</member>
|
||||
<member kind="variable">
|
||||
<type>FrameDecodeStatus</type>
|
||||
<name>status</name>
|
||||
<anchorfile>structDecodedFrameValue.html</anchorfile>
|
||||
<anchor>a645f433798d48a2787e7f00dfbb7dff9</anchor>
|
||||
<arglist></arglist>
|
||||
</member>
|
||||
</compound>
|
||||
<compound kind="struct">
|
||||
<name>DecodedSignalValue</name>
|
||||
<filename>structDecodedSignalValue.html</filename>
|
||||
<member kind="function">
|
||||
<type>const std::string *</type>
|
||||
<name>GetValueDescription</name>
|
||||
<anchorfile>structDecodedSignalValue.html</anchorfile>
|
||||
<anchor>affc38af1bf31bcb6f2c33044bce92bd2</anchor>
|
||||
<arglist>() const</arglist>
|
||||
</member>
|
||||
<member kind="variable">
|
||||
<type>const DecodeSignal *</type>
|
||||
<type>std::shared_ptr< const DecodeSignal ></type>
|
||||
<name>definition</name>
|
||||
<anchorfile>structDecodedSignalValue.html</anchorfile>
|
||||
<anchor>acadc3b3bb21dd6b0412d342c7e6b20d7</anchor>
|
||||
<anchor>a828b5ef7faefc14fbf5dbd46249bcad2</anchor>
|
||||
<arglist></arglist>
|
||||
</member>
|
||||
<member kind="variable">
|
||||
<type>std::int64_t</type>
|
||||
<type>SignalKey</type>
|
||||
<name>key</name>
|
||||
<anchorfile>structDecodedSignalValue.html</anchorfile>
|
||||
<anchor>a33df0fcd92b23b3e08539906fc6b4c4a</anchor>
|
||||
<arglist></arglist>
|
||||
</member>
|
||||
<member kind="variable">
|
||||
<type>RawSignalValue</type>
|
||||
<name>rawValue</name>
|
||||
<anchorfile>structDecodedSignalValue.html</anchorfile>
|
||||
<anchor>a5138b825940e34689f7b3891627ee9ec</anchor>
|
||||
<anchor>a503c90b4b1a610b8252c45e466367c28</anchor>
|
||||
<arglist></arglist>
|
||||
</member>
|
||||
<member kind="variable">
|
||||
@@ -408,6 +537,13 @@
|
||||
<anchor>abdbae62a64d2df716bf60c6b67b30eaa</anchor>
|
||||
<arglist></arglist>
|
||||
</member>
|
||||
<member kind="variable">
|
||||
<type>ValueDescriptions</type>
|
||||
<name>valueDescriptions</name>
|
||||
<anchorfile>structDecodeSignal.html</anchorfile>
|
||||
<anchor>a822155d9bf4ed5f3300c9e9befe606ff</anchor>
|
||||
<arglist></arglist>
|
||||
</member>
|
||||
<member kind="variable">
|
||||
<type>std::string</type>
|
||||
<name>comment</name>
|
||||
@@ -491,6 +627,14 @@
|
||||
<name>FrameKeyHasher</name>
|
||||
<filename>structFrameKeyHasher.html</filename>
|
||||
</compound>
|
||||
<compound kind="struct">
|
||||
<name>Multiplexing</name>
|
||||
<filename>structMultiplexing.html</filename>
|
||||
</compound>
|
||||
<compound kind="struct">
|
||||
<name>PendingValueDescriptions</name>
|
||||
<filename>structPendingValueDescriptions.html</filename>
|
||||
</compound>
|
||||
<compound kind="struct">
|
||||
<name>RawCanFrame</name>
|
||||
<filename>structRawCanFrame.html</filename>
|
||||
@@ -596,6 +740,13 @@
|
||||
<anchor>a2c95562fd0b29327a7fd7b1e6feee7f3</anchor>
|
||||
<arglist></arglist>
|
||||
</member>
|
||||
<member kind="variable">
|
||||
<type>ValueDescriptions</type>
|
||||
<name>valueDescriptions</name>
|
||||
<anchorfile>structSignalInfo.html</anchorfile>
|
||||
<anchor>a43f47d0433d0cc39076bd7278b46af9c</anchor>
|
||||
<arglist></arglist>
|
||||
</member>
|
||||
<member kind="variable">
|
||||
<type>std::string</type>
|
||||
<name>comment</name>
|
||||
@@ -604,6 +755,14 @@
|
||||
<arglist></arglist>
|
||||
</member>
|
||||
</compound>
|
||||
<compound kind="struct">
|
||||
<name>SignalKey</name>
|
||||
<filename>structSignalKey.html</filename>
|
||||
</compound>
|
||||
<compound kind="struct">
|
||||
<name>SignalKeyHasher</name>
|
||||
<filename>structSignalKeyHasher.html</filename>
|
||||
</compound>
|
||||
<compound kind="class">
|
||||
<name>TreeNode</name>
|
||||
<filename>classTreeNode.html</filename>
|
||||
@@ -635,6 +794,20 @@
|
||||
<anchor>a6161f2ebb92184eab4215d121870e788</anchor>
|
||||
<arglist>(std::unique_ptr< TreeNode > child)</arglist>
|
||||
</member>
|
||||
<member kind="function">
|
||||
<type>const TreeNode *</type>
|
||||
<name>GetParent</name>
|
||||
<anchorfile>classTreeNode.html</anchorfile>
|
||||
<anchor>aa48fbc17903eb8cfa40353e29f853c6f</anchor>
|
||||
<arglist>() const</arglist>
|
||||
</member>
|
||||
<member kind="function">
|
||||
<type>std::size_t</type>
|
||||
<name>GetRow</name>
|
||||
<anchorfile>classTreeNode.html</anchorfile>
|
||||
<anchor>ad501f97eeec7f7d3353bfae838fbb6a8</anchor>
|
||||
<arglist>() const</arglist>
|
||||
</member>
|
||||
<member kind="function">
|
||||
<type>std::size_t</type>
|
||||
<name>GetChildCount</name>
|
||||
@@ -685,9 +858,54 @@
|
||||
<arglist>() const</arglist>
|
||||
</member>
|
||||
</compound>
|
||||
<compound kind="class">
|
||||
<name>TypeFactory</name>
|
||||
<filename>classTypeFactory.html</filename>
|
||||
<templarg>class ClassId</templarg>
|
||||
<templarg>class BaseClass</templarg>
|
||||
<templarg>class... Args</templarg>
|
||||
<member kind="function">
|
||||
<type>void</type>
|
||||
<name>registerType</name>
|
||||
<anchorfile>classTypeFactory.html</anchorfile>
|
||||
<anchor>ad6d85795285ee21193ac03e1b24762d3</anchor>
|
||||
<arglist>(const ClassId &id)</arglist>
|
||||
</member>
|
||||
<member kind="function">
|
||||
<type>CreatorFn</type>
|
||||
<name>creator</name>
|
||||
<anchorfile>classTypeFactory.html</anchorfile>
|
||||
<anchor>ad82f537569ece3d3a4a376523fa94473</anchor>
|
||||
<arglist>(const ClassId &id) const</arglist>
|
||||
</member>
|
||||
<member kind="function">
|
||||
<type>BasePtr</type>
|
||||
<name>create</name>
|
||||
<anchorfile>classTypeFactory.html</anchorfile>
|
||||
<anchor>a3f43b03d6e3a0fd503fdec01ecf62e9f</anchor>
|
||||
<arglist>(const ClassId &id, Args... args) const</arglist>
|
||||
</member>
|
||||
<member kind="function">
|
||||
<type>bool</type>
|
||||
<name>contains</name>
|
||||
<anchorfile>classTypeFactory.html</anchorfile>
|
||||
<anchor>a1a119ad2956abe146213c6ca124d8dd4</anchor>
|
||||
<arglist>(const ClassId &id) const</arglist>
|
||||
</member>
|
||||
</compound>
|
||||
<compound kind="page">
|
||||
<name>md_changelog</name>
|
||||
<title>Changelog</title>
|
||||
<filename>md_changelog.html</filename>
|
||||
</compound>
|
||||
<compound kind="page">
|
||||
<name>md_README</name>
|
||||
<title>DBC Parser and Runtime Decode Module Documentation</title>
|
||||
<filename>md_README.html</filename>
|
||||
</compound>
|
||||
<compound kind="page">
|
||||
<name>md_tests_2README</name>
|
||||
<title>QtTest regression tests</title>
|
||||
<filename>md_tests_2README.html</filename>
|
||||
</compound>
|
||||
</tagfile>
|
||||
@@ -1,10 +1,75 @@
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/main.cpp:97: warning: Member main(int argc, char *argv[]) (function) of file main.cpp is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/decode_database.h:133: warning: Member frames (variable) of struct DecodeDatabase is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/decode_database.h:134: warning: Member frameIndexByKey (variable) of struct DecodeDatabase is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/decode_database.h:108: warning: Member FrameKey(std::uint32_t id, bool extended) (function) of struct FrameKey is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/decode_database.h:113: warning: Member operator==(const FrameKey &other) const (function) of struct FrameKey is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/decode_database.h:100: warning: Member canId (variable) of struct FrameKey is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/decode_database.h:101: warning: Member isExtended (variable) of struct FrameKey is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/decode_database.h:122: warning: Member operator()(const FrameKey &key) const (function) of struct FrameKeyHasher is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tree_node.h:59: warning: Member TreeNode(TreeNode &&)=default (function) of class TreeNode is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/tree_node.h:60: warning: Member operator=(TreeNode &&)=default (function) of class TreeNode is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:66: warning: Compound DbcCommentHandler is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_diagnostic.h:25: warning: Compound DbcDiagnostic is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:50: warning: Compound DbcFrameHandler is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_diagnostic.h:33: warning: Compound DbcParseResult is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:58: warning: Compound DbcSignalHandler is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:44: warning: Compound DbcStatementHandler is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:79: warning: Compound DbcUnsupportedMultiplexingHandler is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:74: warning: Compound DbcValueDescriptionHandler is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:12: warning: Compound PendingValueDescriptions is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/definition_key.h:56: warning: Compound SignalKeyHasher is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decoder.h:32: warning: Member SignalDecodeStatus (enumeration) of file dbc_decoder.h is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/examples/main.cpp:100: warning: Member main(int argc, char *argv[]) (function) of file examples/main.cpp is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/README.md:1627: warning: end of comment block while expecting command </tt>
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:68: warning: Member Handle(const std::string &line, DbcParseContext &context) const override (function) of class DbcCommentHandler is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_diagnostic.h:26: warning: Member severity (variable) of struct DbcDiagnostic is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_diagnostic.h:27: warning: Member code (variable) of struct DbcDiagnostic is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_diagnostic.h:28: warning: Member filePath (variable) of struct DbcDiagnostic is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_diagnostic.h:29: warning: Member lineNumber (variable) of struct DbcDiagnostic is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_diagnostic.h:30: warning: Member message (variable) of struct DbcDiagnostic is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:23: warning: Member DbcDiagnosticError(DbcDiagnosticCode code, const std::string &filePath, std::size_t lineNumber, const std::string &message) (function) of class DbcDiagnosticError is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:28: warning: Member diagnostic (variable) of class DbcDiagnosticError is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:52: warning: Member Handle(const std::string &line, DbcParseContext &context) const override (function) of class DbcFrameHandler is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:87: warning: Member Handle(const std::string &line, DbcParseContext &context) const override (function) of class DbcHeaderHandler is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:39: warning: Member ValidateMultiplexing(const std::string &filePath) const (function) of struct DbcParseContext is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:41: warning: Member ResolveValueDescriptions(const std::string &filePath) (function) of struct DbcParseContext is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:33: warning: Member database (variable) of struct DbcParseContext is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:34: warning: Member currentFrame (variable) of struct DbcParseContext is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:35: warning: Member lineNumber (variable) of struct DbcParseContext is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:36: warning: Member pendingValues (variable) of struct DbcParseContext is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:38: warning: Member signalLines (variable) of struct DbcParseContext is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_diagnostic.h:37: warning: Member HasErrors() const (function) of struct DbcParseResult is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_diagnostic.h:34: warning: Member database (variable) of struct DbcParseResult is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_diagnostic.h:35: warning: Member diagnostics (variable) of struct DbcParseResult is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:60: warning: Member Handle(const std::string &line, DbcParseContext &context) const override (function) of class DbcSignalHandler is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:96: warning: Member RegisterType(const std::string &keyword) (function) of class DbcStatementDispatcher is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:47: warning: Member Handle(const std::string &line, DbcParseContext &context) const =0 (function) of class DbcStatementHandler is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/dbc_tree_model.h:13: warning: Member Column (enumeration) of class DbcTreeModel is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/dbc_tree_model.h:24: warning: Member Role (enumeration) of class DbcTreeModel is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/dbc_tree_model.h:36: warning: Member DbcTreeModel(QObject *parent=nullptr) (function) of class DbcTreeModel is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/dbc_tree_model.h:37: warning: Member SetTree(std::unique_ptr< TreeNode > root) (function) of class DbcTreeModel is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/dbc_tree_model.h:38: warning: Member index(int row, int column, const QModelIndex &parent=QModelIndex()) const override (function) of class DbcTreeModel is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/dbc_tree_model.h:39: warning: Member parent(const QModelIndex &child) const override (function) of class DbcTreeModel is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/dbc_tree_model.h:40: warning: Member rowCount(const QModelIndex &parent=QModelIndex()) const override (function) of class DbcTreeModel is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/dbc_tree_model.h:41: warning: Member columnCount(const QModelIndex &parent=QModelIndex()) const override (function) of class DbcTreeModel is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/dbc_tree_model.h:42: warning: Member data(const QModelIndex &index, int role=Qt::DisplayRole) const override (function) of class DbcTreeModel is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/dbc_tree_model.h:43: warning: Member headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override (function) of class DbcTreeModel is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/qt/dbc_tree_model.h:44: warning: Member flags(const QModelIndex &index) const override (function) of class DbcTreeModel is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:81: warning: Member Handle(const std::string &line, DbcParseContext &context) const override (function) of class DbcUnsupportedMultiplexingHandler is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:76: warning: Member Handle(const std::string &line, DbcParseContext &context) const override (function) of class DbcValueDescriptionHandler is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/decode_database.h:101: warning: Member FindSignal(const SignalKey &key) const (function) of class DecodeDatabase is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_decoder.h:58: warning: Member status (variable) of struct DecodedSignalValue is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/decode_database.h:78: warning: Member GetKey() const (function) of struct DecodeFrame is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/decode_database.h:44: warning: Member multiplexing (variable) of struct DecodeSignal is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/definition_key.h:21: warning: Member FrameKey(std::uint32_t id, bool extended) (function) of struct FrameKey is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/definition_key.h:25: warning: Member operator==(const FrameKey &other) const (function) of struct FrameKey is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/definition_key.h:16: warning: Member canId (variable) of struct FrameKey is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/definition_key.h:17: warning: Member isExtended (variable) of struct FrameKey is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/definition_key.h:34: warning: Member operator()(const FrameKey &key) const (function) of struct FrameKeyHasher is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/multiplexing.h:15: warning: Member role (variable) of struct Multiplexing is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/multiplexing.h:16: warning: Member value (variable) of struct Multiplexing is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:13: warning: Member canId (variable) of struct PendingValueDescriptions is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:14: warning: Member isExtended (variable) of struct PendingValueDescriptions is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:15: warning: Member signalName (variable) of struct PendingValueDescriptions is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:16: warning: Member descriptions (variable) of struct PendingValueDescriptions is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/dbc_statement_handler.h:17: warning: Member lineNumber (variable) of struct PendingValueDescriptions is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/signal_info.h:25: warning: Member multiplexing (variable) of struct SignalInfo is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/definition_key.h:47: warning: Member SignalKey(FrameKey frameKey, std::string signalName) (function) of struct SignalKey is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/definition_key.h:51: warning: Member operator==(const SignalKey &other) const (function) of struct SignalKey is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/definition_key.h:43: warning: Member frame (variable) of struct SignalKey is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/definition_key.h:44: warning: Member name (variable) of struct SignalKey is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/definition_key.h:57: warning: Member operator()(const SignalKey &key) const (function) of struct SignalKeyHasher is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/typefactory.h:61: warning: Member BasePtr (typedef) of class TypeFactory is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/typefactory.h:62: warning: Member CreatorFn (typedef) of class TypeFactory is not documented.
|
||||
/home/deeaitch/work/3.projects/git.himro.ca/automotive/dbc/core/typefactory.h:110: warning: Member classes (variable) of class TypeFactory is not documented.
|
||||
error: failed to run qhelpgenerator on index.qhp
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: Class List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -34,10 +34,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
@@ -77,9 +77,16 @@ $(document).ready(function(){initNavTree('annotated.html',''); initResizable();
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
@@ -88,22 +95,40 @@ $(document).ready(function(){initNavTree('annotated.html',''); initResizable();
|
||||
<div class="contents">
|
||||
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
|
||||
<table class="directory">
|
||||
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDbcDatabase.html" target="_self">DbcDatabase</a></td><td class="desc">Parsed DBC content stored in a simple internal form </td></tr>
|
||||
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcDecodeBuilder.html" target="_self">DbcDecodeBuilder</a></td><td class="desc">Converts parsed DBC data into runtime decode database </td></tr>
|
||||
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcDecoder.html" target="_self">DbcDecoder</a></td><td class="desc">Runtime CAN decoder using prebuilt decode database </td></tr>
|
||||
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcParser.html" target="_self">DbcParser</a></td><td class="desc">Minimal DBC parser </td></tr>
|
||||
<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcTreeBuilder.html" target="_self">DbcTreeBuilder</a></td><td class="desc">Builds a simple tree from parsed DBC database </td></tr>
|
||||
<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodeDatabase.html" target="_self">DecodeDatabase</a></td><td class="desc">Runtime decode database with fast lookup by CAN ID </td></tr>
|
||||
<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodedFrameValue.html" target="_self">DecodedFrameValue</a></td><td class="desc">Fully decoded frame </td></tr>
|
||||
<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodedSignalValue.html" target="_self">DecodedSignalValue</a></td><td class="desc">One decoded signal value </td></tr>
|
||||
<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodeFrame.html" target="_self">DecodeFrame</a></td><td class="desc">Runtime-ready frame definition </td></tr>
|
||||
<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodeSignal.html" target="_self">DecodeSignal</a></td><td class="desc">Runtime-ready signal definition </td></tr>
|
||||
<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structFrameInfo.html" target="_self">FrameInfo</a></td><td class="desc">Describes one CAN frame from a DBC file </td></tr>
|
||||
<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structFrameKey.html" target="_self">FrameKey</a></td><td class="desc">Key for fast frame lookup </td></tr>
|
||||
<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structFrameKeyHasher.html" target="_self">FrameKeyHasher</a></td><td class="desc">Hasher for frame key </td></tr>
|
||||
<tr id="row_13_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structRawCanFrame.html" target="_self">RawCanFrame</a></td><td class="desc">Raw CAN frame used for runtime or trace decoding </td></tr>
|
||||
<tr id="row_14_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structSignalInfo.html" target="_self">SignalInfo</a></td><td class="desc">Describes one signal inside a DBC frame </td></tr>
|
||||
<tr id="row_15_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTreeNode.html" target="_self">TreeNode</a></td><td class="desc">Tree node for later use in model/view or other hierarchy consumers </td></tr>
|
||||
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcCommentHandler.html" target="_self">DbcCommentHandler</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDbcDatabase.html" target="_self">DbcDatabase</a></td><td class="desc">Parsed DBC content stored in a simple internal form </td></tr>
|
||||
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcDecodeBuilder.html" target="_self">DbcDecodeBuilder</a></td><td class="desc">Converts parsed DBC data into runtime decode database </td></tr>
|
||||
<tr id="row_3_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcDecoder.html" target="_self">DbcDecoder</a></td><td class="desc">Runtime CAN decoder using prebuilt decode database </td></tr>
|
||||
<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDbcDiagnostic.html" target="_self">DbcDiagnostic</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_5_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcDiagnosticError.html" target="_self">DbcDiagnosticError</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcFrameHandler.html" target="_self">DbcFrameHandler</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_7_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcHeaderHandler.html" target="_self">DbcHeaderHandler</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDbcParseContext.html" target="_self">DbcParseContext</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_9_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcParser.html" target="_self">DbcParser</a></td><td class="desc">Minimal DBC parser </td></tr>
|
||||
<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDbcParseResult.html" target="_self">DbcParseResult</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_11_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcSignalHandler.html" target="_self">DbcSignalHandler</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcStatementDispatcher.html" target="_self">DbcStatementDispatcher</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_13_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcStatementHandler.html" target="_self">DbcStatementHandler</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_14_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcTreeBuilder.html" target="_self">DbcTreeBuilder</a></td><td class="desc">Builds a simple tree from parsed DBC database </td></tr>
|
||||
<tr id="row_15_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcTreeModel.html" target="_self">DbcTreeModel</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_16_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcUnsupportedMultiplexingHandler.html" target="_self">DbcUnsupportedMultiplexingHandler</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_17_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDbcValueDescriptionHandler.html" target="_self">DbcValueDescriptionHandler</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_18_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classDecodeDatabase.html" target="_self">DecodeDatabase</a></td><td class="desc">Immutable runtime snapshot. Copies share storage; reload replaces a snapshot. Owning lookup handles and decoded results keep old definitions alive </td></tr>
|
||||
<tr id="row_19_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodedFrameValue.html" target="_self">DecodedFrameValue</a></td><td class="desc">Fully decoded frame </td></tr>
|
||||
<tr id="row_20_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodedSignalValue.html" target="_self">DecodedSignalValue</a></td><td class="desc">One decoded signal value </td></tr>
|
||||
<tr id="row_21_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodeFrame.html" target="_self">DecodeFrame</a></td><td class="desc">Runtime-ready frame definition </td></tr>
|
||||
<tr id="row_22_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structDecodeSignal.html" target="_self">DecodeSignal</a></td><td class="desc">Runtime-ready signal definition </td></tr>
|
||||
<tr id="row_23_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structFrameInfo.html" target="_self">FrameInfo</a></td><td class="desc">Describes one CAN frame from a DBC file </td></tr>
|
||||
<tr id="row_24_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structFrameKey.html" target="_self">FrameKey</a></td><td class="desc">Stable frame identifier: normalized CAN ID and frame type </td></tr>
|
||||
<tr id="row_25_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structFrameKeyHasher.html" target="_self">FrameKeyHasher</a></td><td class="desc">Hasher for frame key </td></tr>
|
||||
<tr id="row_26_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structMultiplexing.html" target="_self">Multiplexing</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_27_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structPendingValueDescriptions.html" target="_self">PendingValueDescriptions</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_28_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structRawCanFrame.html" target="_self">RawCanFrame</a></td><td class="desc">Raw CAN frame used for runtime or trace decoding </td></tr>
|
||||
<tr id="row_29_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structSignalInfo.html" target="_self">SignalInfo</a></td><td class="desc">Describes one signal inside a DBC frame </td></tr>
|
||||
<tr id="row_30_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structSignalKey.html" target="_self">SignalKey</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_31_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structSignalKeyHasher.html" target="_self">SignalKeyHasher</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_32_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTreeNode.html" target="_self">TreeNode</a></td><td class="desc">Tree node for later use in model/view or other hierarchy consumers </td></tr>
|
||||
<tr id="row_33_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTypeFactory.html" target="_self">TypeFactory</a></td><td class="desc">Registry-based factory for creating objects by runtime identifier </td></tr>
|
||||
</table>
|
||||
</div><!-- directory -->
|
||||
</div><!-- contents -->
|
||||
@@ -111,7 +136,7 @@ $(document).ready(function(){initNavTree('annotated.html',''); initResizable();
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4 </li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -1,11 +1,24 @@
|
||||
var annotated_dup =
|
||||
[
|
||||
[ "DbcCommentHandler", "classDbcCommentHandler.html", null ],
|
||||
[ "DbcDatabase", "structDbcDatabase.html", "structDbcDatabase" ],
|
||||
[ "DbcDecodeBuilder", "classDbcDecodeBuilder.html", "classDbcDecodeBuilder" ],
|
||||
[ "DbcDecoder", "classDbcDecoder.html", "classDbcDecoder" ],
|
||||
[ "DbcDiagnostic", "structDbcDiagnostic.html", null ],
|
||||
[ "DbcDiagnosticError", "classDbcDiagnosticError.html", null ],
|
||||
[ "DbcFrameHandler", "classDbcFrameHandler.html", null ],
|
||||
[ "DbcHeaderHandler", "classDbcHeaderHandler.html", null ],
|
||||
[ "DbcParseContext", "structDbcParseContext.html", null ],
|
||||
[ "DbcParser", "classDbcParser.html", "classDbcParser" ],
|
||||
[ "DbcParseResult", "structDbcParseResult.html", null ],
|
||||
[ "DbcSignalHandler", "classDbcSignalHandler.html", null ],
|
||||
[ "DbcStatementDispatcher", "classDbcStatementDispatcher.html", "classDbcStatementDispatcher" ],
|
||||
[ "DbcStatementHandler", "classDbcStatementHandler.html", null ],
|
||||
[ "DbcTreeBuilder", "classDbcTreeBuilder.html", "classDbcTreeBuilder" ],
|
||||
[ "DecodeDatabase", "structDecodeDatabase.html", null ],
|
||||
[ "DbcTreeModel", "classDbcTreeModel.html", null ],
|
||||
[ "DbcUnsupportedMultiplexingHandler", "classDbcUnsupportedMultiplexingHandler.html", null ],
|
||||
[ "DbcValueDescriptionHandler", "classDbcValueDescriptionHandler.html", null ],
|
||||
[ "DecodeDatabase", "classDecodeDatabase.html", "classDecodeDatabase" ],
|
||||
[ "DecodedFrameValue", "structDecodedFrameValue.html", "structDecodedFrameValue" ],
|
||||
[ "DecodedSignalValue", "structDecodedSignalValue.html", "structDecodedSignalValue" ],
|
||||
[ "DecodeFrame", "structDecodeFrame.html", "structDecodeFrame" ],
|
||||
@@ -13,7 +26,12 @@ var annotated_dup =
|
||||
[ "FrameInfo", "structFrameInfo.html", "structFrameInfo" ],
|
||||
[ "FrameKey", "structFrameKey.html", null ],
|
||||
[ "FrameKeyHasher", "structFrameKeyHasher.html", null ],
|
||||
[ "Multiplexing", "structMultiplexing.html", null ],
|
||||
[ "PendingValueDescriptions", "structPendingValueDescriptions.html", null ],
|
||||
[ "RawCanFrame", "structRawCanFrame.html", "structRawCanFrame" ],
|
||||
[ "SignalInfo", "structSignalInfo.html", "structSignalInfo" ],
|
||||
[ "TreeNode", "classTreeNode.html", "classTreeNode" ]
|
||||
[ "SignalKey", "structSignalKey.html", null ],
|
||||
[ "SignalKeyHasher", "structSignalKeyHasher.html", null ],
|
||||
[ "TreeNode", "classTreeNode.html", "classTreeNode" ],
|
||||
[ "TypeFactory", "classTypeFactory.html", "classTypeFactory" ]
|
||||
];
|
||||
|
After Width: | Height: | Size: 635 B |
@@ -0,0 +1,110 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">DBC Framework
|
||||
</div>
|
||||
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classDbcCommentHandler.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">DbcCommentHandler Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classDbcCommentHandler.html">DbcCommentHandler</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Handle</b>(const std::string &line, DbcParseContext &context) const override (defined in <a class="el" href="classDbcCommentHandler.html">DbcCommentHandler</a>)</td><td class="entry"><a class="el" href="classDbcCommentHandler.html">DbcCommentHandler</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>~DbcStatementHandler</b>()=default (defined in <a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a>)</td><td class="entry"><a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,170 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: DbcCommentHandler Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">DBC Framework
|
||||
</div>
|
||||
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classDbcCommentHandler.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="classDbcCommentHandler-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">DbcCommentHandler Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for DbcCommentHandler:</div>
|
||||
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><iframe scrolling="no" frameborder="0" src="classDbcCommentHandler__inherit__graph.svg" width="204" height="210"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
||||
</div>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:aa4fce77b585a441d251d8535ef7a51a6" id="r_aa4fce77b585a441d251d8535ef7a51a6"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcCommentHandler.html#aa4fce77b585a441d251d8535ef7a51a6">Handle</a> (const std::string &line, <a class="el" href="structDbcParseContext.html">DbcParseContext</a> &context) const override</td></tr>
|
||||
<tr class="separator:aa4fce77b585a441d251d8535ef7a51a6"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock">
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00066">66</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||
</div><h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="aa4fce77b585a441d251d8535ef7a51a6" name="aa4fce77b585a441d251d8535ef7a51a6"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa4fce77b585a441d251d8535ef7a51a6">◆ </a></span>Handle()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void DbcCommentHandler::Handle </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const std::string & </td>
|
||||
<td class="paramname"><em>line</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="structDbcParseContext.html">DbcParseContext</a> & </td>
|
||||
<td class="paramname"><em>context</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>Implements <a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a>.</p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00367">367</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following files:<ul>
|
||||
<li><a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a></li>
|
||||
<li><a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="classDbcCommentHandler.html">DbcCommentHandler</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,5 @@
|
||||
<map id="DbcCommentHandler" name="DbcCommentHandler">
|
||||
<area shape="rect" id="Node000001" title=" " alt="" coords="25,139,179,204"/>
|
||||
<area shape="rect" id="Node000002" href="$classDbcStatementHandler.html" title=" " alt="" coords="5,5,199,91"/>
|
||||
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="105,104,105,138,99,138,99,104"/>
|
||||
</map>
|
||||
@@ -0,0 +1 @@
|
||||
031e88596ad00375d87ac04af33f405c
|
||||
@@ -0,0 +1,78 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.42.4 (0)
|
||||
-->
|
||||
<!-- Title: DbcCommentHandler Pages: 1 -->
|
||||
<svg width="153pt" height="157pt"
|
||||
viewBox="0.00 0.00 153.00 157.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
|
||||
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
|
||||
<style type="text/css"><![CDATA[
|
||||
.node, .edge {opacity: 0.7;}
|
||||
.node.selected, .edge.selected {opacity: 1;}
|
||||
.edge:hover path { stroke: red; }
|
||||
.edge:hover polygon { stroke: red; fill: red; }
|
||||
]]></style>
|
||||
<script type="application/ecmascript" xlink:href="svg.min.js"/>
|
||||
<svg id="graph" class="graph">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 153)">
|
||||
<title>DbcCommentHandler</title>
|
||||
<!-- Node1 -->
|
||||
<g id="Node000001" class="node">
|
||||
<title>Node1</title>
|
||||
<g id="a_Node000001"><a xlink:title=" ">
|
||||
<polygon fill="#999999" stroke="transparent" points="130.5,-49 14.5,-49 14.5,0 130.5,0 130.5,-49"/>
|
||||
<text text-anchor="start" x="19.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcCommentHandler</text>
|
||||
<text text-anchor="start" x="70.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="31.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="57.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#666666" stroke="#666666" points="14.5,-31.5 14.5,-31.5 130.5,-31.5 130.5,-31.5 14.5,-31.5"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="14.5,-16.5 14.5,-16.5 130.5,-16.5 130.5,-16.5 14.5,-16.5"/>
|
||||
<polygon fill="none" stroke="#666666" points="14.5,0 14.5,-49 130.5,-49 130.5,0 14.5,0"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2 -->
|
||||
<g id="Node000002" class="node">
|
||||
<title>Node2</title>
|
||||
<g id="a_Node000002"><a xlink:href="classDbcStatementHandler.html" target="_top" xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="145,-149 0,-149 0,-85 145,-85 145,-149"/>
|
||||
<text text-anchor="start" x="18.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00">DbcStatementHandler</text>
|
||||
<text text-anchor="start" x="71" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="4.5" y="-107" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-107" font-family="Helvetica,sans-Serif" font-size="10.00">~DbcStatementHandler()</text>
|
||||
<text text-anchor="start" x="4.5" y="-92" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-92" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-132 0.5,-132 145.5,-132 145.5,-132 0.5,-132"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-117 0.5,-117 145.5,-117 145.5,-117 0.5,-117"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="0,-85 0,-149 145,-149 145,-85 0,-85"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2->Node1 -->
|
||||
<g id="edge1_Node000001_Node000002" class="edge">
|
||||
<title>Node2->Node1</title>
|
||||
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M72.5,-74.77C72.5,-66.03 72.5,-57.09 72.5,-49.27"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="69,-74.85 72.5,-84.86 76,-74.86 69,-74.85"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
|
||||
<style type='text/css'>
|
||||
<![CDATA[
|
||||
[data-mouse-over-selected='false'] { opacity: 0.7; }
|
||||
[data-mouse-over-selected='true'] { opacity: 1.0; }
|
||||
]]>
|
||||
</style>
|
||||
<script type="application/ecmascript"><![CDATA[
|
||||
document.addEventListener('DOMContentLoaded', (event) => {
|
||||
highlightEdges();
|
||||
highlightAdjacentNodes();
|
||||
});
|
||||
]]></script>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
@@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.42.4 (0)
|
||||
-->
|
||||
<!-- Title: DbcCommentHandler Pages: 1 -->
|
||||
<svg width="153pt" height="157pt"
|
||||
viewBox="0.00 0.00 153.00 157.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 153)">
|
||||
<title>DbcCommentHandler</title>
|
||||
<!-- Node1 -->
|
||||
<g id="Node000001" class="node">
|
||||
<title>Node1</title>
|
||||
<g id="a_Node000001"><a xlink:title=" ">
|
||||
<polygon fill="#999999" stroke="transparent" points="130.5,-49 14.5,-49 14.5,0 130.5,0 130.5,-49"/>
|
||||
<text text-anchor="start" x="19.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcCommentHandler</text>
|
||||
<text text-anchor="start" x="70.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="31.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="57.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#666666" stroke="#666666" points="14.5,-31.5 14.5,-31.5 130.5,-31.5 130.5,-31.5 14.5,-31.5"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="14.5,-16.5 14.5,-16.5 130.5,-16.5 130.5,-16.5 14.5,-16.5"/>
|
||||
<polygon fill="none" stroke="#666666" points="14.5,0 14.5,-49 130.5,-49 130.5,0 14.5,0"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2 -->
|
||||
<g id="Node000002" class="node">
|
||||
<title>Node2</title>
|
||||
<g id="a_Node000002"><a xlink:href="classDbcStatementHandler.html" target="_top" xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="145,-149 0,-149 0,-85 145,-85 145,-149"/>
|
||||
<text text-anchor="start" x="18.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00">DbcStatementHandler</text>
|
||||
<text text-anchor="start" x="71" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="4.5" y="-107" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-107" font-family="Helvetica,sans-Serif" font-size="10.00">~DbcStatementHandler()</text>
|
||||
<text text-anchor="start" x="4.5" y="-92" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-92" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-132 0.5,-132 145.5,-132 145.5,-132 0.5,-132"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-117 0.5,-117 145.5,-117 145.5,-117 0.5,-117"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="0,-85 0,-149 145,-149 145,-85 0,-85"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2->Node1 -->
|
||||
<g id="edge1_Node000001_Node000002" class="edge">
|
||||
<title>Node2->Node1</title>
|
||||
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M72.5,-74.77C72.5,-66.03 72.5,-57.09 72.5,-49.27"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="69,-74.85 72.5,-84.86 76,-74.86 69,-74.85"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -34,10 +34,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
@@ -77,9 +77,16 @@ $(document).ready(function(){initNavTree('classDbcDecodeBuilder.html',''); initR
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
@@ -95,7 +102,7 @@ $(document).ready(function(){initNavTree('classDbcDecodeBuilder.html',''); initR
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4 </li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: DbcDecodeBuilder Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -34,10 +34,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
@@ -77,9 +77,16 @@ $(document).ready(function(){initNavTree('classDbcDecodeBuilder.html',''); initR
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
@@ -97,23 +104,23 @@ $(document).ready(function(){initNavTree('classDbcDecodeBuilder.html',''); initR
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a2bc6386dfb5e58976c42e22c19ec471b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structDecodeDatabase.html">DecodeDatabase</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">Build</a> (const <a class="el" href="structDbcDatabase.html">DbcDatabase</a> &source) const</td></tr>
|
||||
<tr class="memdesc:a2bc6386dfb5e58976c42e22c19ec471b"><td class="mdescLeft"> </td><td class="mdescRight">Build runtime decode database. <a href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">More...</a><br /></td></tr>
|
||||
<tr class="memitem:a2bc6386dfb5e58976c42e22c19ec471b" id="r_a2bc6386dfb5e58976c42e22c19ec471b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classDecodeDatabase.html">DecodeDatabase</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcDecodeBuilder.html#a2bc6386dfb5e58976c42e22c19ec471b">Build</a> (const <a class="el" href="structDbcDatabase.html">DbcDatabase</a> &source) const</td></tr>
|
||||
<tr class="memdesc:a2bc6386dfb5e58976c42e22c19ec471b"><td class="mdescLeft"> </td><td class="mdescRight">Build runtime decode database. <br /></td></tr>
|
||||
<tr class="separator:a2bc6386dfb5e58976c42e22c19ec471b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p >Converts parsed DBC data into runtime decode database. </p>
|
||||
<div class="textblock"><p>Converts parsed DBC data into runtime decode database. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__decode__builder_8h_source.html#l00021">21</a> of file <a class="el" href="dbc__decode__builder_8h_source.html">dbc_decode_builder.h</a>.</p>
|
||||
</div><h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="a2bc6386dfb5e58976c42e22c19ec471b" name="a2bc6386dfb5e58976c42e22c19ec471b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a2bc6386dfb5e58976c42e22c19ec471b">◆ </a></span>Build()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a2bc6386dfb5e58976c42e22c19ec471b">◆ </a></span>Build()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="structDecodeDatabase.html">DecodeDatabase</a> DbcDecodeBuilder::Build </td>
|
||||
<td class="memname"><a class="el" href="classDecodeDatabase.html">DecodeDatabase</a> DbcDecodeBuilder::Build </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const <a class="el" href="structDbcDatabase.html">DbcDatabase</a> & </td>
|
||||
<td class="paramname"><em>source</em></td><td>)</td>
|
||||
@@ -129,11 +136,17 @@ Public Member Functions</h2></td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>Runtime-ready decode database. </dd></dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>Immutable runtime snapshot independent of source lifetime. </dd></dl>
|
||||
<dl class="exception"><dt>Exceptions</dt><dd>
|
||||
<table class="exception">
|
||||
<tr><td class="paramname">std::invalid_argument</td><td>for invalid metadata or duplicate keys. </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__decode__builder_8cpp_source.html#l00014">14</a> of file <a class="el" href="dbc__decode__builder_8cpp_source.html">dbc_decode_builder.cpp</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__decode__builder_8cpp_source.html#l00015">15</a> of file <a class="el" href="dbc__decode__builder_8cpp_source.html">dbc_decode_builder.cpp</a>.</p>
|
||||
|
||||
<p class="reference">References <a class="el" href="decode__database_8h_source.html#l00043">DecodeSignal::byteOrder</a>, <a class="el" href="decode__database_8h_source.html#l00074">DecodeFrame::canId</a>, <a class="el" href="frame__info_8h_source.html#l00026">FrameInfo::canId</a>, <a class="el" href="decode__database_8h_source.html#l00080">DecodeFrame::comment</a>, <a class="el" href="frame__info_8h_source.html#l00032">FrameInfo::comment</a>, <a class="el" href="decode__database_8h_source.html#l00076">DecodeFrame::dlc</a>, <a class="el" href="frame__info_8h_source.html#l00030">FrameInfo::dlc</a>, <a class="el" href="dbc__database_8h_source.html#l00023">DbcDatabase::frames</a>, <a class="el" href="decode__database_8h_source.html#l00078">DecodeFrame::hasPgn</a>, <a class="el" href="frame__info_8h_source.html#l00029">FrameInfo::hasPgn</a>, <a class="el" href="decode__database_8h_source.html#l00075">DecodeFrame::isExtended</a>, <a class="el" href="frame__info_8h_source.html#l00027">FrameInfo::isExtended</a>, <a class="el" href="signal__info_8h_source.html#l00026">SignalInfo::isLittleEndian</a>, <a class="el" href="decode__database_8h_source.html#l00042">DecodeSignal::length</a>, <a class="el" href="signal__info_8h_source.html#l00025">SignalInfo::length</a>, <a class="el" href="decode__database_8h_source.html#l00040">DecodeSignal::name</a>, <a class="el" href="decode__database_8h_source.html#l00073">DecodeFrame::name</a>, <a class="el" href="frame__info_8h_source.html#l00025">FrameInfo::name</a>, <a class="el" href="signal__info_8h_source.html#l00023">SignalInfo::name</a>, <a class="el" href="decode__database_8h_source.html#l00077">DecodeFrame::pgn</a>, <a class="el" href="frame__info_8h_source.html#l00028">FrameInfo::pgn</a>, <a class="el" href="decode__database_8h_source.html#l00041">DecodeSignal::startBit</a>, <a class="el" href="signal__info_8h_source.html#l00024">SignalInfo::startBit</a>, <a class="el" href="decode__database_8h_source.html#l00079">DecodeFrame::transmitter</a>, and <a class="el" href="frame__info_8h_source.html#l00031">FrameInfo::transmitter</a>.</p>
|
||||
<p class="reference">References <a class="el" href="decode__database_8h_source.html#l00048">DecodeSignal::byteOrder</a>, <a class="el" href="decode__database_8h_source.html#l00067">DecodeFrame::canId</a>, <a class="el" href="decode__database_8h_source.html#l00057">DecodeSignal::comment</a>, <a class="el" href="decode__database_8h_source.html#l00073">DecodeFrame::comment</a>, <a class="el" href="decode__database_8h_source.html#l00069">DecodeFrame::dlc</a>, <a class="el" href="decode__database_8h_source.html#l00050">DecodeSignal::factor</a>, <a class="el" href="dbc__database_8h_source.html#l00023">DbcDatabase::frames</a>, <a class="el" href="decode__database_8h_source.html#l00071">DecodeFrame::hasPgn</a>, <a class="el" href="decode__database_8h_source.html#l00068">DecodeFrame::isExtended</a>, <a class="el" href="decode__database_8h_source.html#l00047">DecodeSignal::length</a>, <a class="el" href="decode__database_8h_source.html#l00053">DecodeSignal::maximum</a>, <a class="el" href="decode__database_8h_source.html#l00052">DecodeSignal::minimum</a>, <a class="el" href="decode__database_8h_source.html#l00045">DecodeSignal::name</a>, <a class="el" href="decode__database_8h_source.html#l00066">DecodeFrame::name</a>, <a class="el" href="decode__database_8h_source.html#l00051">DecodeSignal::offset</a>, <a class="el" href="decode__database_8h_source.html#l00070">DecodeFrame::pgn</a>, <a class="el" href="decode__database_8h_source.html#l00055">DecodeSignal::receivers</a>, <a class="el" href="decode__database_8h_source.html#l00046">DecodeSignal::startBit</a>, <a class="el" href="decode__database_8h_source.html#l00072">DecodeFrame::transmitter</a>, <a class="el" href="decode__database_8h_source.html#l00054">DecodeSignal::unit</a>, <a class="el" href="decode__database_8h_source.html#l00056">DecodeSignal::valueDescriptions</a>, and <a class="el" href="decode__database_8h_source.html#l00049">DecodeSignal::valueType</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -147,7 +160,7 @@ Public Member Functions</h2></td></tr>
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="classDbcDecodeBuilder.html">DbcDecodeBuilder</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4 </li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -34,10 +34,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
@@ -77,9 +77,16 @@ $(document).ready(function(){initNavTree('classDbcDecoder.html',''); initResizab
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
@@ -90,13 +97,13 @@ $(document).ready(function(){initNavTree('classDbcDecoder.html',''); initResizab
|
||||
<p>This is the complete list of members for <a class="el" href="classDbcDecoder.html">DbcDecoder</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">Decode</a>(const DecodeDatabase &database, const RawCanFrame &frame) const</td><td class="entry"><a class="el" href="classDbcDecoder.html">DbcDecoder</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classDbcDecoder.html#ab2cfb2fb711c95d3a29365546b89f3da">FindFrame</a>(const DecodeDatabase &database, std::uint32_t canId, bool isExtended) const</td><td class="entry"><a class="el" href="classDbcDecoder.html">DbcDecoder</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classDbcDecoder.html#a4005c4311f57b7faf21c0cb31463039c">FindFrame</a>(const DecodeDatabase &database, std::uint32_t canId, bool isExtended) const</td><td class="entry"><a class="el" href="classDbcDecoder.html">DbcDecoder</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4 </li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: DbcDecoder Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -34,10 +34,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
@@ -77,13 +77,21 @@ $(document).ready(function(){initNavTree('classDbcDecoder.html',''); initResizab
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#nested-classes">Classes</a> |
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="classDbcDecoder-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">DbcDecoder Class Reference</div></div>
|
||||
@@ -97,28 +105,28 @@ $(document).ready(function(){initNavTree('classDbcDecoder.html',''); initResizab
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:ab2cfb2fb711c95d3a29365546b89f3da"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structDecodeFrame.html">DecodeFrame</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcDecoder.html#ab2cfb2fb711c95d3a29365546b89f3da">FindFrame</a> (const <a class="el" href="structDecodeDatabase.html">DecodeDatabase</a> &database, std::uint32_t canId, bool isExtended) const</td></tr>
|
||||
<tr class="memdesc:ab2cfb2fb711c95d3a29365546b89f3da"><td class="mdescLeft"> </td><td class="mdescRight">Find frame definition by CAN ID. <a href="classDbcDecoder.html#ab2cfb2fb711c95d3a29365546b89f3da">More...</a><br /></td></tr>
|
||||
<tr class="separator:ab2cfb2fb711c95d3a29365546b89f3da"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a345951ffe5d943a70d3a1ea1f39e74f7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structDecodedFrameValue.html">DecodedFrameValue</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">Decode</a> (const <a class="el" href="structDecodeDatabase.html">DecodeDatabase</a> &database, const <a class="el" href="structRawCanFrame.html">RawCanFrame</a> &frame) const</td></tr>
|
||||
<tr class="memdesc:a345951ffe5d943a70d3a1ea1f39e74f7"><td class="mdescLeft"> </td><td class="mdescRight">Decode one raw CAN frame. <a href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">More...</a><br /></td></tr>
|
||||
<tr class="memitem:a4005c4311f57b7faf21c0cb31463039c" id="r_a4005c4311f57b7faf21c0cb31463039c"><td class="memItemLeft" align="right" valign="top">std::shared_ptr< const <a class="el" href="structDecodeFrame.html">DecodeFrame</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcDecoder.html#a4005c4311f57b7faf21c0cb31463039c">FindFrame</a> (const <a class="el" href="classDecodeDatabase.html">DecodeDatabase</a> &database, std::uint32_t canId, bool isExtended) const</td></tr>
|
||||
<tr class="memdesc:a4005c4311f57b7faf21c0cb31463039c"><td class="mdescLeft"> </td><td class="mdescRight">Find frame definition by CAN ID. <br /></td></tr>
|
||||
<tr class="separator:a4005c4311f57b7faf21c0cb31463039c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a345951ffe5d943a70d3a1ea1f39e74f7" id="r_a345951ffe5d943a70d3a1ea1f39e74f7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structDecodedFrameValue.html">DecodedFrameValue</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7">Decode</a> (const <a class="el" href="classDecodeDatabase.html">DecodeDatabase</a> &database, const <a class="el" href="structRawCanFrame.html">RawCanFrame</a> &frame) const</td></tr>
|
||||
<tr class="memdesc:a345951ffe5d943a70d3a1ea1f39e74f7"><td class="mdescLeft"> </td><td class="mdescRight">Decode one raw CAN frame. <br /></td></tr>
|
||||
<tr class="separator:a345951ffe5d943a70d3a1ea1f39e74f7"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p >Runtime CAN decoder using prebuilt decode database. </p>
|
||||
<div class="textblock"><p>Runtime CAN decoder using prebuilt decode database. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__decoder_8h_source.html#l00070">70</a> of file <a class="el" href="dbc__decoder_8h_source.html">dbc_decoder.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__decoder_8h_source.html#l00084">84</a> of file <a class="el" href="dbc__decoder_8h_source.html">dbc_decoder.h</a>.</p>
|
||||
</div><h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="ab2cfb2fb711c95d3a29365546b89f3da" name="ab2cfb2fb711c95d3a29365546b89f3da"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab2cfb2fb711c95d3a29365546b89f3da">◆ </a></span>FindFrame()</h2>
|
||||
<a id="a4005c4311f57b7faf21c0cb31463039c" name="a4005c4311f57b7faf21c0cb31463039c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a4005c4311f57b7faf21c0cb31463039c">◆ </a></span>FindFrame()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">const <a class="el" href="structDecodeFrame.html">DecodeFrame</a> * DbcDecoder::FindFrame </td>
|
||||
<td class="memname">std::shared_ptr< const <a class="el" href="structDecodeFrame.html">DecodeFrame</a> > DbcDecoder::FindFrame </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const <a class="el" href="structDecodeDatabase.html">DecodeDatabase</a> & </td>
|
||||
<td class="paramtype">const <a class="el" href="classDecodeDatabase.html">DecodeDatabase</a> & </td>
|
||||
<td class="paramname"><em>database</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -150,16 +158,18 @@ Public Member Functions</h2></td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>Pointer to frame definition or nullptr. </dd></dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>Owning immutable frame handle or nullptr. Safe across reload. </dd></dl>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__decoder_8cpp_source.html#l00014">14</a> of file <a class="el" href="dbc__decoder_8cpp_source.html">dbc_decoder.cpp</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__decoder_8cpp_source.html#l00017">17</a> of file <a class="el" href="dbc__decoder_8cpp_source.html">dbc_decoder.cpp</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="dbc__decoder_8cpp_source.html#l00031">Decode()</a>.</p>
|
||||
<p class="reference">References <a class="el" href="decode__database_8cpp_source.html#l00110">DecodeDatabase::FindFrame()</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="dbc__decoder_8cpp_source.html#l00023">Decode()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a345951ffe5d943a70d3a1ea1f39e74f7" name="a345951ffe5d943a70d3a1ea1f39e74f7"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a345951ffe5d943a70d3a1ea1f39e74f7">◆ </a></span>Decode()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a345951ffe5d943a70d3a1ea1f39e74f7">◆ </a></span>Decode()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -167,7 +177,7 @@ Public Member Functions</h2></td></tr>
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="structDecodedFrameValue.html">DecodedFrameValue</a> DbcDecoder::Decode </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const <a class="el" href="structDecodeDatabase.html">DecodeDatabase</a> & </td>
|
||||
<td class="paramtype">const <a class="el" href="classDecodeDatabase.html">DecodeDatabase</a> & </td>
|
||||
<td class="paramname"><em>database</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -188,15 +198,15 @@ Public Member Functions</h2></td></tr>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">database</td><td>Runtime decode database. </td></tr>
|
||||
<tr><td class="paramname">frame</td><td>Raw CAN frame. </td></tr>
|
||||
<tr><td class="paramname">frame</td><td>Raw CAN frame. Short payloads decode available signals; bytes beyond declared DLC are ignored. </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>Decoded frame value. </dd></dl>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__decoder_8cpp_source.html#l00031">31</a> of file <a class="el" href="dbc__decoder_8cpp_source.html">dbc_decoder.cpp</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__decoder_8cpp_source.html#l00023">23</a> of file <a class="el" href="dbc__decoder_8cpp_source.html">dbc_decoder.cpp</a>.</p>
|
||||
|
||||
<p class="reference">References <a class="el" href="dbc__decoder_8h_source.html#l00024">RawCanFrame::canId</a>, <a class="el" href="dbc__decoder_8h_source.html#l00026">RawCanFrame::data</a>, <a class="el" href="dbc__decoder_8h_source.html#l00039">DecodedSignalValue::definition</a>, <a class="el" href="dbc__decoder_8h_source.html#l00056">DecodedFrameValue::definition</a>, <a class="el" href="dbc__decoder_8cpp_source.html#l00014">FindFrame()</a>, <a class="el" href="dbc__decoder_8h_source.html#l00025">RawCanFrame::isExtended</a>, <a class="el" href="dbc__decoder_8h_source.html#l00042">DecodedSignalValue::valid</a>, <a class="el" href="dbc__decoder_8h_source.html#l00058">DecodedFrameValue::valid</a>, and <a class="el" href="decode__database_8h_source.html#l00044">DecodeSignal::valueType</a>.</p>
|
||||
<p class="reference">References <a class="el" href="dbc__decoder_8h_source.html#l00025">RawCanFrame::canId</a>, <a class="el" href="dbc__decoder_8h_source.html#l00027">RawCanFrame::data</a>, <a class="el" href="dbc__decoder_8h_source.html#l00053">DecodedSignalValue::definition</a>, <a class="el" href="dbc__decoder_8h_source.html#l00072">DecodedFrameValue::definition</a>, <a class="el" href="dbc__decoder_8cpp_source.html#l00017">FindFrame()</a>, <a class="el" href="dbc__decoder_8h_source.html#l00026">RawCanFrame::isExtended</a>, <a class="el" href="dbc__decoder_8h_source.html#l00054">DecodedSignalValue::key</a>, <a class="el" href="dbc__decoder_8h_source.html#l00073">DecodedFrameValue::key</a>, <a class="el" href="dbc__decoder_8h_source.html#l00076">DecodedFrameValue::status</a>, <a class="el" href="dbc__decoder_8h_source.html#l00057">DecodedSignalValue::valid</a>, and <a class="el" href="dbc__decoder_8h_source.html#l00075">DecodedFrameValue::valid</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -210,7 +220,7 @@ Public Member Functions</h2></td></tr>
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="classDbcDecoder.html">DbcDecoder</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4 </li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
var classDbcDecoder =
|
||||
[
|
||||
[ "FindFrame", "classDbcDecoder.html#ab2cfb2fb711c95d3a29365546b89f3da", null ],
|
||||
[ "FindFrame", "classDbcDecoder.html#a4005c4311f57b7faf21c0cb31463039c", null ],
|
||||
[ "Decode", "classDbcDecoder.html#a345951ffe5d943a70d3a1ea1f39e74f7", null ]
|
||||
];
|
||||
@@ -0,0 +1,110 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">DBC Framework
|
||||
</div>
|
||||
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classDbcDiagnosticError.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">DbcDiagnosticError Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classDbcDiagnosticError.html">DbcDiagnosticError</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DbcDiagnosticError</b>(DbcDiagnosticCode code, const std::string &filePath, std::size_t lineNumber, const std::string &message) (defined in <a class="el" href="classDbcDiagnosticError.html">DbcDiagnosticError</a>)</td><td class="entry"><a class="el" href="classDbcDiagnosticError.html">DbcDiagnosticError</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>diagnostic</b> (defined in <a class="el" href="classDbcDiagnosticError.html">DbcDiagnosticError</a>)</td><td class="entry"><a class="el" href="classDbcDiagnosticError.html">DbcDiagnosticError</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,205 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: DbcDiagnosticError Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">DBC Framework
|
||||
</div>
|
||||
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classDbcDiagnosticError.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="#pub-attribs">Public Attributes</a> |
|
||||
<a href="classDbcDiagnosticError-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">DbcDiagnosticError Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><code>#include <<a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>></code></p>
|
||||
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for DbcDiagnosticError:</div>
|
||||
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><iframe scrolling="no" frameborder="0" src="classDbcDiagnosticError__inherit__graph.svg" width="175" height="303"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
||||
</div>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:aa9997368f79a9a0723481aaeffc44618" id="r_aa9997368f79a9a0723481aaeffc44618"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcDiagnosticError.html#aa9997368f79a9a0723481aaeffc44618">DbcDiagnosticError</a> (DbcDiagnosticCode code, const std::string &filePath, std::size_t lineNumber, const std::string &message)</td></tr>
|
||||
<tr class="separator:aa9997368f79a9a0723481aaeffc44618"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
|
||||
Public Attributes</h2></td></tr>
|
||||
<tr class="memitem:ab3965082f01d66b6d5c20525af44235d" id="r_ab3965082f01d66b6d5c20525af44235d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structDbcDiagnostic.html">DbcDiagnostic</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcDiagnosticError.html#ab3965082f01d66b6d5c20525af44235d">diagnostic</a></td></tr>
|
||||
<tr class="separator:ab3965082f01d66b6d5c20525af44235d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p>Carries deferred validation locations without parsing exception text. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00021">21</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||||
<a id="aa9997368f79a9a0723481aaeffc44618" name="aa9997368f79a9a0723481aaeffc44618"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa9997368f79a9a0723481aaeffc44618">◆ </a></span>DbcDiagnosticError()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">DbcDiagnosticError::DbcDiagnosticError </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">DbcDiagnosticCode </td>
|
||||
<td class="paramname"><em>code</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const std::string & </td>
|
||||
<td class="paramname"><em>filePath</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">std::size_t </td>
|
||||
<td class="paramname"><em>lineNumber</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const std::string & </td>
|
||||
<td class="paramname"><em>message</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00023">23</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Data Documentation</h2>
|
||||
<a id="ab3965082f01d66b6d5c20525af44235d" name="ab3965082f01d66b6d5c20525af44235d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab3965082f01d66b6d5c20525af44235d">◆ </a></span>diagnostic</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="structDbcDiagnostic.html">DbcDiagnostic</a> DbcDiagnosticError::diagnostic</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00028">28</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li><a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="classDbcDiagnosticError.html">DbcDiagnosticError</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,7 @@
|
||||
<map id="DbcDiagnosticError" name="DbcDiagnosticError">
|
||||
<area shape="rect" id="Node000001" title=" " alt="" coords="5,232,169,297"/>
|
||||
<area shape="rect" id="Node000002" title=" " alt="" coords="22,119,153,184"/>
|
||||
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="90,198,90,232,85,232,85,198"/>
|
||||
<area shape="rect" id="Node000003" title=" " alt="" coords="34,5,141,71"/>
|
||||
<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="90,84,90,119,85,119,85,84"/>
|
||||
</map>
|
||||
@@ -0,0 +1 @@
|
||||
2dc86eee0052fd3c477fa415ad03afd3
|
||||
@@ -0,0 +1,100 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.42.4 (0)
|
||||
-->
|
||||
<!-- Title: DbcDiagnosticError Pages: 1 -->
|
||||
<svg width="131pt" height="227pt"
|
||||
viewBox="0.00 0.00 131.00 227.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
|
||||
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
|
||||
<style type="text/css"><![CDATA[
|
||||
.node, .edge {opacity: 0.7;}
|
||||
.node.selected, .edge.selected {opacity: 1;}
|
||||
.edge:hover path { stroke: red; }
|
||||
.edge:hover polygon { stroke: red; fill: red; }
|
||||
]]></style>
|
||||
<script type="application/ecmascript" xlink:href="svg.min.js"/>
|
||||
<svg id="graph" class="graph">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 223)">
|
||||
<title>DbcDiagnosticError</title>
|
||||
<!-- Node1 -->
|
||||
<g id="Node000001" class="node">
|
||||
<title>Node1</title>
|
||||
<g id="a_Node000001"><a xlink:title=" ">
|
||||
<polygon fill="#999999" stroke="transparent" points="123,-49 0,-49 0,0 123,0 123,-49"/>
|
||||
<text text-anchor="start" x="15" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcDiagnosticError</text>
|
||||
<text text-anchor="start" x="4.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">diagnostic</text>
|
||||
<text text-anchor="start" x="4.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcDiagnosticError()</text>
|
||||
<polygon fill="#666666" stroke="#666666" points="0.5,-31.5 0.5,-31.5 123.5,-31.5 123.5,-31.5 0.5,-31.5"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="0.5,-16.5 0.5,-16.5 15.5,-16.5 15.5,-16.5 0.5,-16.5"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="15.5,-16.5 15.5,-16.5 123.5,-16.5 123.5,-16.5 15.5,-16.5"/>
|
||||
<polygon fill="none" stroke="#666666" points="0,0 0,-49 123,-49 123,0 0,0"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2 -->
|
||||
<g id="Node000002" class="node">
|
||||
<title>Node2</title>
|
||||
<g id="a_Node000002"><a xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="110.5,-134 12.5,-134 12.5,-85 110.5,-85 110.5,-134"/>
|
||||
<text text-anchor="start" x="17.5" y="-121.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::runtime_error</text>
|
||||
<text text-anchor="start" x="59.5" y="-106.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="59.5" y="-91.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<polygon fill="#666666" stroke="#666666" points="12.5,-116.5 12.5,-116.5 110.5,-116.5 110.5,-116.5 12.5,-116.5"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="12.5,-101.5 12.5,-101.5 110.5,-101.5 110.5,-101.5 12.5,-101.5"/>
|
||||
<polygon fill="none" stroke="#666666" points="12.5,-85 12.5,-134 110.5,-134 110.5,-85 12.5,-85"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2->Node1 -->
|
||||
<g id="edge1_Node000001_Node000002" class="edge">
|
||||
<title>Node2->Node1</title>
|
||||
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M61.5,-74.77C61.5,-66.17 61.5,-57.1 61.5,-49.12"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="58,-74.94 61.5,-84.94 65,-74.94 58,-74.94"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node3 -->
|
||||
<g id="Node000003" class="node">
|
||||
<title>Node3</title>
|
||||
<g id="a_Node000003"><a xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="101.5,-219 21.5,-219 21.5,-170 101.5,-170 101.5,-219"/>
|
||||
<text text-anchor="start" x="26.5" y="-206.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::exception</text>
|
||||
<text text-anchor="start" x="59.5" y="-191.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="59.5" y="-176.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<polygon fill="#666666" stroke="#666666" points="21.5,-201.5 21.5,-201.5 101.5,-201.5 101.5,-201.5 21.5,-201.5"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="21.5,-186.5 21.5,-186.5 101.5,-186.5 101.5,-186.5 21.5,-186.5"/>
|
||||
<polygon fill="none" stroke="#666666" points="21.5,-170 21.5,-219 101.5,-219 101.5,-170 21.5,-170"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node3->Node2 -->
|
||||
<g id="edge2_Node000002_Node000003" class="edge">
|
||||
<title>Node3->Node2</title>
|
||||
<g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M61.5,-159.77C61.5,-151.17 61.5,-142.1 61.5,-134.12"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="58,-159.94 61.5,-169.94 65,-159.94 58,-159.94"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
|
||||
<style type='text/css'>
|
||||
<![CDATA[
|
||||
[data-mouse-over-selected='false'] { opacity: 0.7; }
|
||||
[data-mouse-over-selected='true'] { opacity: 1.0; }
|
||||
]]>
|
||||
</style>
|
||||
<script type="application/ecmascript"><![CDATA[
|
||||
document.addEventListener('DOMContentLoaded', (event) => {
|
||||
highlightEdges();
|
||||
highlightAdjacentNodes();
|
||||
});
|
||||
]]></script>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.9 KiB |
@@ -0,0 +1,75 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.42.4 (0)
|
||||
-->
|
||||
<!-- Title: DbcDiagnosticError Pages: 1 -->
|
||||
<svg width="131pt" height="227pt"
|
||||
viewBox="0.00 0.00 131.00 227.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 223)">
|
||||
<title>DbcDiagnosticError</title>
|
||||
<!-- Node1 -->
|
||||
<g id="Node000001" class="node">
|
||||
<title>Node1</title>
|
||||
<g id="a_Node000001"><a xlink:title=" ">
|
||||
<polygon fill="#999999" stroke="transparent" points="123,-49 0,-49 0,0 123,0 123,-49"/>
|
||||
<text text-anchor="start" x="15" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcDiagnosticError</text>
|
||||
<text text-anchor="start" x="4.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">diagnostic</text>
|
||||
<text text-anchor="start" x="4.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcDiagnosticError()</text>
|
||||
<polygon fill="#666666" stroke="#666666" points="0.5,-31.5 0.5,-31.5 123.5,-31.5 123.5,-31.5 0.5,-31.5"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="0.5,-16.5 0.5,-16.5 15.5,-16.5 15.5,-16.5 0.5,-16.5"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="15.5,-16.5 15.5,-16.5 123.5,-16.5 123.5,-16.5 15.5,-16.5"/>
|
||||
<polygon fill="none" stroke="#666666" points="0,0 0,-49 123,-49 123,0 0,0"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2 -->
|
||||
<g id="Node000002" class="node">
|
||||
<title>Node2</title>
|
||||
<g id="a_Node000002"><a xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="110.5,-134 12.5,-134 12.5,-85 110.5,-85 110.5,-134"/>
|
||||
<text text-anchor="start" x="17.5" y="-121.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::runtime_error</text>
|
||||
<text text-anchor="start" x="59.5" y="-106.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="59.5" y="-91.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<polygon fill="#666666" stroke="#666666" points="12.5,-116.5 12.5,-116.5 110.5,-116.5 110.5,-116.5 12.5,-116.5"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="12.5,-101.5 12.5,-101.5 110.5,-101.5 110.5,-101.5 12.5,-101.5"/>
|
||||
<polygon fill="none" stroke="#666666" points="12.5,-85 12.5,-134 110.5,-134 110.5,-85 12.5,-85"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2->Node1 -->
|
||||
<g id="edge1_Node000001_Node000002" class="edge">
|
||||
<title>Node2->Node1</title>
|
||||
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M61.5,-74.77C61.5,-66.17 61.5,-57.1 61.5,-49.12"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="58,-74.94 61.5,-84.94 65,-74.94 58,-74.94"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node3 -->
|
||||
<g id="Node000003" class="node">
|
||||
<title>Node3</title>
|
||||
<g id="a_Node000003"><a xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="101.5,-219 21.5,-219 21.5,-170 101.5,-170 101.5,-219"/>
|
||||
<text text-anchor="start" x="26.5" y="-206.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::exception</text>
|
||||
<text text-anchor="start" x="59.5" y="-191.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="59.5" y="-176.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<polygon fill="#666666" stroke="#666666" points="21.5,-201.5 21.5,-201.5 101.5,-201.5 101.5,-201.5 21.5,-201.5"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="21.5,-186.5 21.5,-186.5 101.5,-186.5 101.5,-186.5 21.5,-186.5"/>
|
||||
<polygon fill="none" stroke="#666666" points="21.5,-170 21.5,-219 101.5,-219 101.5,-170 21.5,-170"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node3->Node2 -->
|
||||
<g id="edge2_Node000002_Node000003" class="edge">
|
||||
<title>Node3->Node2</title>
|
||||
<g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M61.5,-159.77C61.5,-151.17 61.5,-142.1 61.5,-134.12"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="58,-159.94 61.5,-169.94 65,-159.94 58,-159.94"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.1 KiB |
@@ -0,0 +1,110 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">DBC Framework
|
||||
</div>
|
||||
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classDbcFrameHandler.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">DbcFrameHandler Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classDbcFrameHandler.html">DbcFrameHandler</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Handle</b>(const std::string &line, DbcParseContext &context) const override (defined in <a class="el" href="classDbcFrameHandler.html">DbcFrameHandler</a>)</td><td class="entry"><a class="el" href="classDbcFrameHandler.html">DbcFrameHandler</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>~DbcStatementHandler</b>()=default (defined in <a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a>)</td><td class="entry"><a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,170 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: DbcFrameHandler Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">DBC Framework
|
||||
</div>
|
||||
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classDbcFrameHandler.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="classDbcFrameHandler-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">DbcFrameHandler Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for DbcFrameHandler:</div>
|
||||
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><iframe scrolling="no" frameborder="0" src="classDbcFrameHandler__inherit__graph.svg" width="204" height="210"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
||||
</div>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a0d3f43bbcc5e191460bc31827e74ce89" id="r_a0d3f43bbcc5e191460bc31827e74ce89"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcFrameHandler.html#a0d3f43bbcc5e191460bc31827e74ce89">Handle</a> (const std::string &line, <a class="el" href="structDbcParseContext.html">DbcParseContext</a> &context) const override</td></tr>
|
||||
<tr class="separator:a0d3f43bbcc5e191460bc31827e74ce89"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock">
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00050">50</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||
</div><h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="a0d3f43bbcc5e191460bc31827e74ce89" name="a0d3f43bbcc5e191460bc31827e74ce89"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0d3f43bbcc5e191460bc31827e74ce89">◆ </a></span>Handle()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void DbcFrameHandler::Handle </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const std::string & </td>
|
||||
<td class="paramname"><em>line</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="structDbcParseContext.html">DbcParseContext</a> & </td>
|
||||
<td class="paramname"><em>context</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>Implements <a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a>.</p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00343">343</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following files:<ul>
|
||||
<li><a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a></li>
|
||||
<li><a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="classDbcFrameHandler.html">DbcFrameHandler</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,5 @@
|
||||
<map id="DbcFrameHandler" name="DbcFrameHandler">
|
||||
<area shape="rect" id="Node000001" title=" " alt="" coords="37,139,167,204"/>
|
||||
<area shape="rect" id="Node000002" href="$classDbcStatementHandler.html" title=" " alt="" coords="5,5,199,91"/>
|
||||
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="105,104,105,138,99,138,99,104"/>
|
||||
</map>
|
||||
@@ -0,0 +1 @@
|
||||
e01f0e1a340a0e632ef160180de2de74
|
||||
@@ -0,0 +1,78 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.42.4 (0)
|
||||
-->
|
||||
<!-- Title: DbcFrameHandler Pages: 1 -->
|
||||
<svg width="153pt" height="157pt"
|
||||
viewBox="0.00 0.00 153.00 157.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
|
||||
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
|
||||
<style type="text/css"><![CDATA[
|
||||
.node, .edge {opacity: 0.7;}
|
||||
.node.selected, .edge.selected {opacity: 1;}
|
||||
.edge:hover path { stroke: red; }
|
||||
.edge:hover polygon { stroke: red; fill: red; }
|
||||
]]></style>
|
||||
<script type="application/ecmascript" xlink:href="svg.min.js"/>
|
||||
<svg id="graph" class="graph">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 153)">
|
||||
<title>DbcFrameHandler</title>
|
||||
<!-- Node1 -->
|
||||
<g id="Node000001" class="node">
|
||||
<title>Node1</title>
|
||||
<g id="a_Node000001"><a xlink:title=" ">
|
||||
<polygon fill="#999999" stroke="transparent" points="121.5,-49 23.5,-49 23.5,0 121.5,0 121.5,-49"/>
|
||||
<text text-anchor="start" x="28.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcFrameHandler</text>
|
||||
<text text-anchor="start" x="70.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="36" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="57.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#666666" stroke="#666666" points="23.5,-31.5 23.5,-31.5 121.5,-31.5 121.5,-31.5 23.5,-31.5"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="23.5,-16.5 23.5,-16.5 121.5,-16.5 121.5,-16.5 23.5,-16.5"/>
|
||||
<polygon fill="none" stroke="#666666" points="23.5,0 23.5,-49 121.5,-49 121.5,0 23.5,0"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2 -->
|
||||
<g id="Node000002" class="node">
|
||||
<title>Node2</title>
|
||||
<g id="a_Node000002"><a xlink:href="classDbcStatementHandler.html" target="_top" xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="145,-149 0,-149 0,-85 145,-85 145,-149"/>
|
||||
<text text-anchor="start" x="18.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00">DbcStatementHandler</text>
|
||||
<text text-anchor="start" x="71" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="4.5" y="-107" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-107" font-family="Helvetica,sans-Serif" font-size="10.00">~DbcStatementHandler()</text>
|
||||
<text text-anchor="start" x="4.5" y="-92" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-92" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-132 0.5,-132 145.5,-132 145.5,-132 0.5,-132"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-117 0.5,-117 145.5,-117 145.5,-117 0.5,-117"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="0,-85 0,-149 145,-149 145,-85 0,-85"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2->Node1 -->
|
||||
<g id="edge1_Node000001_Node000002" class="edge">
|
||||
<title>Node2->Node1</title>
|
||||
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M72.5,-74.77C72.5,-66.03 72.5,-57.09 72.5,-49.27"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="69,-74.85 72.5,-84.86 76,-74.86 69,-74.85"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
|
||||
<style type='text/css'>
|
||||
<![CDATA[
|
||||
[data-mouse-over-selected='false'] { opacity: 0.7; }
|
||||
[data-mouse-over-selected='true'] { opacity: 1.0; }
|
||||
]]>
|
||||
</style>
|
||||
<script type="application/ecmascript"><![CDATA[
|
||||
document.addEventListener('DOMContentLoaded', (event) => {
|
||||
highlightEdges();
|
||||
highlightAdjacentNodes();
|
||||
});
|
||||
]]></script>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
@@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.42.4 (0)
|
||||
-->
|
||||
<!-- Title: DbcFrameHandler Pages: 1 -->
|
||||
<svg width="153pt" height="157pt"
|
||||
viewBox="0.00 0.00 153.00 157.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 153)">
|
||||
<title>DbcFrameHandler</title>
|
||||
<!-- Node1 -->
|
||||
<g id="Node000001" class="node">
|
||||
<title>Node1</title>
|
||||
<g id="a_Node000001"><a xlink:title=" ">
|
||||
<polygon fill="#999999" stroke="transparent" points="121.5,-49 23.5,-49 23.5,0 121.5,0 121.5,-49"/>
|
||||
<text text-anchor="start" x="28.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcFrameHandler</text>
|
||||
<text text-anchor="start" x="70.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="36" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="57.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#666666" stroke="#666666" points="23.5,-31.5 23.5,-31.5 121.5,-31.5 121.5,-31.5 23.5,-31.5"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="23.5,-16.5 23.5,-16.5 121.5,-16.5 121.5,-16.5 23.5,-16.5"/>
|
||||
<polygon fill="none" stroke="#666666" points="23.5,0 23.5,-49 121.5,-49 121.5,0 23.5,0"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2 -->
|
||||
<g id="Node000002" class="node">
|
||||
<title>Node2</title>
|
||||
<g id="a_Node000002"><a xlink:href="classDbcStatementHandler.html" target="_top" xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="145,-149 0,-149 0,-85 145,-85 145,-149"/>
|
||||
<text text-anchor="start" x="18.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00">DbcStatementHandler</text>
|
||||
<text text-anchor="start" x="71" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="4.5" y="-107" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-107" font-family="Helvetica,sans-Serif" font-size="10.00">~DbcStatementHandler()</text>
|
||||
<text text-anchor="start" x="4.5" y="-92" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-92" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-132 0.5,-132 145.5,-132 145.5,-132 0.5,-132"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-117 0.5,-117 145.5,-117 145.5,-117 0.5,-117"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="0,-85 0,-149 145,-149 145,-85 0,-85"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2->Node1 -->
|
||||
<g id="edge1_Node000001_Node000002" class="edge">
|
||||
<title>Node2->Node1</title>
|
||||
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M72.5,-74.77C72.5,-66.03 72.5,-57.09 72.5,-49.27"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="69,-74.85 72.5,-84.86 76,-74.86 69,-74.85"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
@@ -0,0 +1,110 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">DBC Framework
|
||||
</div>
|
||||
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classDbcHeaderHandler.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">DbcHeaderHandler Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classDbcHeaderHandler.html">DbcHeaderHandler</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Handle</b>(const std::string &line, DbcParseContext &context) const override (defined in <a class="el" href="classDbcHeaderHandler.html">DbcHeaderHandler</a>)</td><td class="entry"><a class="el" href="classDbcHeaderHandler.html">DbcHeaderHandler</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>~DbcStatementHandler</b>()=default (defined in <a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a>)</td><td class="entry"><a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,173 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: DbcHeaderHandler Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">DBC Framework
|
||||
</div>
|
||||
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classDbcHeaderHandler.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="classDbcHeaderHandler-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">DbcHeaderHandler Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><code>#include <<a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>></code></p>
|
||||
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for DbcHeaderHandler:</div>
|
||||
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><iframe scrolling="no" frameborder="0" src="classDbcHeaderHandler__inherit__graph.svg" width="204" height="210"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
||||
</div>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a1e43a9dcf157f4d4418032d9e9711693" id="r_a1e43a9dcf157f4d4418032d9e9711693"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcHeaderHandler.html#a1e43a9dcf157f4d4418032d9e9711693">Handle</a> (const std::string &line, <a class="el" href="structDbcParseContext.html">DbcParseContext</a> &context) const override</td></tr>
|
||||
<tr class="separator:a1e43a9dcf157f4d4418032d9e9711693"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p>Common header metadata does not change the supported decode definitions. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00085">85</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||
</div><h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="a1e43a9dcf157f4d4418032d9e9711693" name="a1e43a9dcf157f4d4418032d9e9711693"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1e43a9dcf157f4d4418032d9e9711693">◆ </a></span>Handle()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void DbcHeaderHandler::Handle </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const std::string & </td>
|
||||
<td class="paramname"><em>line</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="structDbcParseContext.html">DbcParseContext</a> & </td>
|
||||
<td class="paramname"><em>context</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>Implements <a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a>.</p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00386">386</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following files:<ul>
|
||||
<li><a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a></li>
|
||||
<li><a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="classDbcHeaderHandler.html">DbcHeaderHandler</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,5 @@
|
||||
<map id="DbcHeaderHandler" name="DbcHeaderHandler">
|
||||
<area shape="rect" id="Node000001" title=" " alt="" coords="33,139,171,204"/>
|
||||
<area shape="rect" id="Node000002" href="$classDbcStatementHandler.html" title=" " alt="" coords="5,5,199,91"/>
|
||||
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="105,104,105,138,99,138,99,104"/>
|
||||
</map>
|
||||
@@ -0,0 +1 @@
|
||||
b906816fb2675b5eef3174ec5bac8679
|
||||
@@ -0,0 +1,78 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.42.4 (0)
|
||||
-->
|
||||
<!-- Title: DbcHeaderHandler Pages: 1 -->
|
||||
<svg width="153pt" height="157pt"
|
||||
viewBox="0.00 0.00 153.00 157.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
|
||||
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
|
||||
<style type="text/css"><![CDATA[
|
||||
.node, .edge {opacity: 0.7;}
|
||||
.node.selected, .edge.selected {opacity: 1;}
|
||||
.edge:hover path { stroke: red; }
|
||||
.edge:hover polygon { stroke: red; fill: red; }
|
||||
]]></style>
|
||||
<script type="application/ecmascript" xlink:href="svg.min.js"/>
|
||||
<svg id="graph" class="graph">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 153)">
|
||||
<title>DbcHeaderHandler</title>
|
||||
<!-- Node1 -->
|
||||
<g id="Node000001" class="node">
|
||||
<title>Node1</title>
|
||||
<g id="a_Node000001"><a xlink:title=" ">
|
||||
<polygon fill="#999999" stroke="transparent" points="124,-49 21,-49 21,0 124,0 124,-49"/>
|
||||
<text text-anchor="start" x="26.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcHeaderHandler</text>
|
||||
<text text-anchor="start" x="71" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="35" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="57.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#666666" stroke="#666666" points="21.5,-31.5 21.5,-31.5 124.5,-31.5 124.5,-31.5 21.5,-31.5"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="21.5,-16.5 21.5,-16.5 124.5,-16.5 124.5,-16.5 21.5,-16.5"/>
|
||||
<polygon fill="none" stroke="#666666" points="21,0 21,-49 124,-49 124,0 21,0"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2 -->
|
||||
<g id="Node000002" class="node">
|
||||
<title>Node2</title>
|
||||
<g id="a_Node000002"><a xlink:href="classDbcStatementHandler.html" target="_top" xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="145,-149 0,-149 0,-85 145,-85 145,-149"/>
|
||||
<text text-anchor="start" x="18.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00">DbcStatementHandler</text>
|
||||
<text text-anchor="start" x="71" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="4.5" y="-107" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-107" font-family="Helvetica,sans-Serif" font-size="10.00">~DbcStatementHandler()</text>
|
||||
<text text-anchor="start" x="4.5" y="-92" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-92" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-132 0.5,-132 145.5,-132 145.5,-132 0.5,-132"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-117 0.5,-117 145.5,-117 145.5,-117 0.5,-117"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="0,-85 0,-149 145,-149 145,-85 0,-85"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2->Node1 -->
|
||||
<g id="edge1_Node000001_Node000002" class="edge">
|
||||
<title>Node2->Node1</title>
|
||||
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M72.5,-74.77C72.5,-66.03 72.5,-57.09 72.5,-49.27"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="69,-74.85 72.5,-84.86 76,-74.86 69,-74.85"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
|
||||
<style type='text/css'>
|
||||
<![CDATA[
|
||||
[data-mouse-over-selected='false'] { opacity: 0.7; }
|
||||
[data-mouse-over-selected='true'] { opacity: 1.0; }
|
||||
]]>
|
||||
</style>
|
||||
<script type="application/ecmascript"><![CDATA[
|
||||
document.addEventListener('DOMContentLoaded', (event) => {
|
||||
highlightEdges();
|
||||
highlightAdjacentNodes();
|
||||
});
|
||||
]]></script>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
@@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.42.4 (0)
|
||||
-->
|
||||
<!-- Title: DbcHeaderHandler Pages: 1 -->
|
||||
<svg width="153pt" height="157pt"
|
||||
viewBox="0.00 0.00 153.00 157.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 153)">
|
||||
<title>DbcHeaderHandler</title>
|
||||
<!-- Node1 -->
|
||||
<g id="Node000001" class="node">
|
||||
<title>Node1</title>
|
||||
<g id="a_Node000001"><a xlink:title=" ">
|
||||
<polygon fill="#999999" stroke="transparent" points="124,-49 21,-49 21,0 124,0 124,-49"/>
|
||||
<text text-anchor="start" x="26.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcHeaderHandler</text>
|
||||
<text text-anchor="start" x="71" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="35" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="57.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#666666" stroke="#666666" points="21.5,-31.5 21.5,-31.5 124.5,-31.5 124.5,-31.5 21.5,-31.5"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="21.5,-16.5 21.5,-16.5 124.5,-16.5 124.5,-16.5 21.5,-16.5"/>
|
||||
<polygon fill="none" stroke="#666666" points="21,0 21,-49 124,-49 124,0 21,0"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2 -->
|
||||
<g id="Node000002" class="node">
|
||||
<title>Node2</title>
|
||||
<g id="a_Node000002"><a xlink:href="classDbcStatementHandler.html" target="_top" xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="145,-149 0,-149 0,-85 145,-85 145,-149"/>
|
||||
<text text-anchor="start" x="18.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00">DbcStatementHandler</text>
|
||||
<text text-anchor="start" x="71" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="4.5" y="-107" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-107" font-family="Helvetica,sans-Serif" font-size="10.00">~DbcStatementHandler()</text>
|
||||
<text text-anchor="start" x="4.5" y="-92" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-92" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-132 0.5,-132 145.5,-132 145.5,-132 0.5,-132"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-117 0.5,-117 145.5,-117 145.5,-117 0.5,-117"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="0,-85 0,-149 145,-149 145,-85 0,-85"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2->Node1 -->
|
||||
<g id="edge1_Node000001_Node000002" class="edge">
|
||||
<title>Node2->Node1</title>
|
||||
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M72.5,-74.77C72.5,-66.03 72.5,-57.09 72.5,-49.27"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="69,-74.85 72.5,-84.86 76,-74.86 69,-74.85"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -34,10 +34,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
@@ -77,9 +77,16 @@ $(document).ready(function(){initNavTree('classDbcParser.html',''); initResizabl
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
@@ -90,12 +97,13 @@ $(document).ready(function(){initNavTree('classDbcParser.html',''); initResizabl
|
||||
<p>This is the complete list of members for <a class="el" href="classDbcParser.html">DbcParser</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classDbcParser.html#aef72826942c9095d653fafa435855e56">ParseFile</a>(const std::string &filePath) const</td><td class="entry"><a class="el" href="classDbcParser.html">DbcParser</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">ParseFileWithDiagnostics</a>(const std::string &filePath) const</td><td class="entry"><a class="el" href="classDbcParser.html">DbcParser</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4 </li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: DbcParser Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -34,10 +34,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
@@ -77,9 +77,16 @@ $(document).ready(function(){initNavTree('classDbcParser.html',''); initResizabl
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
@@ -97,28 +104,29 @@ $(document).ready(function(){initNavTree('classDbcParser.html',''); initResizabl
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:aef72826942c9095d653fafa435855e56"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structDbcDatabase.html">DbcDatabase</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcParser.html#aef72826942c9095d653fafa435855e56">ParseFile</a> (const std::string &filePath) const</td></tr>
|
||||
<tr class="memdesc:aef72826942c9095d653fafa435855e56"><td class="mdescLeft"> </td><td class="mdescRight">Parse DBC file. <a href="classDbcParser.html#aef72826942c9095d653fafa435855e56">More...</a><br /></td></tr>
|
||||
<tr class="memitem:aef72826942c9095d653fafa435855e56" id="r_aef72826942c9095d653fafa435855e56"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structDbcDatabase.html">DbcDatabase</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcParser.html#aef72826942c9095d653fafa435855e56">ParseFile</a> (const std::string &filePath) const</td></tr>
|
||||
<tr class="memdesc:aef72826942c9095d653fafa435855e56"><td class="mdescLeft"> </td><td class="mdescRight">Parse DBC file. <br /></td></tr>
|
||||
<tr class="separator:aef72826942c9095d653fafa435855e56"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a0e915ce79c2e3d4c95a5aaf2bf0409bc" id="r_a0e915ce79c2e3d4c95a5aaf2bf0409bc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structDbcParseResult.html">DbcParseResult</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc">ParseFileWithDiagnostics</a> (const std::string &filePath) const</td></tr>
|
||||
<tr class="memdesc:a0e915ce79c2e3d4c95a5aaf2bf0409bc"><td class="mdescLeft"> </td><td class="mdescRight">Parse with warnings and a structured first error instead of throwing. <br /></td></tr>
|
||||
<tr class="separator:a0e915ce79c2e3d4c95a5aaf2bf0409bc"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p >Minimal DBC parser. </p>
|
||||
<p >Supports:</p><ul>
|
||||
<div class="textblock"><p>Minimal DBC parser. </p>
|
||||
<p>Supports:</p><ul>
|
||||
<li>BO_</li>
|
||||
<li>SG_</li>
|
||||
<li>CM_ BO_</li>
|
||||
<li>CM_ SG_</li>
|
||||
<li>basic M / mN multiplexing</li>
|
||||
<li>VAL_ signal value descriptions</li>
|
||||
</ul>
|
||||
<p >Ignores:</p><ul>
|
||||
<li>attributes</li>
|
||||
<li>multiplexing</li>
|
||||
<li>value tables </li>
|
||||
</ul>
|
||||
<p>Reports unsupported statements as warnings, except SG_MUL_VAL_ which is an error. VERSION, NS_, BS_, BU_ and NS_ symbol declarations stay quiet. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__parser_8h_source.html#l00035">35</a> of file <a class="el" href="dbc__parser_8h_source.html">dbc_parser.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__parser_8h_source.html#l00033">33</a> of file <a class="el" href="dbc__parser_8h_source.html">dbc_parser.h</a>.</p>
|
||||
</div><h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="aef72826942c9095d653fafa435855e56" name="aef72826942c9095d653fafa435855e56"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aef72826942c9095d653fafa435855e56">◆ </a></span>ParseFile()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aef72826942c9095d653fafa435855e56">◆ </a></span>ParseFile()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -143,14 +151,41 @@ Public Member Functions</h2></td></tr>
|
||||
<dl class="section return"><dt>Returns</dt><dd>Parsed database. </dd></dl>
|
||||
<dl class="exception"><dt>Exceptions</dt><dd>
|
||||
<table class="exception">
|
||||
<tr><td class="paramname">std::runtime_error</td><td>on file or parse errors. </td></tr>
|
||||
<tr><td class="paramname">std::runtime_error</td><td>on file or parse errors. Line parse errors include the file path and one-based line number. Duplicate normalized CAN IDs of the same frame type and duplicate signal names within a frame are rejected at the repeated definition's line. </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__parser_8cpp_source.html#l00040">40</a> of file <a class="el" href="dbc__parser_8cpp_source.html">dbc_parser.cpp</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__parser_8cpp_source.html#l00031">31</a> of file <a class="el" href="dbc__parser_8cpp_source.html">dbc_parser.cpp</a>.</p>
|
||||
|
||||
<p class="reference">References <a class="el" href="dbc__database_8h_source.html#l00023">DbcDatabase::frames</a>.</p>
|
||||
<p class="reference">References <a class="el" href="dbc__parser_8cpp_source.html#l00044">ParseFileWithDiagnostics()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a0e915ce79c2e3d4c95a5aaf2bf0409bc" name="a0e915ce79c2e3d4c95a5aaf2bf0409bc"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0e915ce79c2e3d4c95a5aaf2bf0409bc">◆ </a></span>ParseFileWithDiagnostics()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="structDbcParseResult.html">DbcParseResult</a> DbcParser::ParseFileWithDiagnostics </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const std::string & </td>
|
||||
<td class="paramname"><em>filePath</em></td><td>)</td>
|
||||
<td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>Parse with warnings and a structured first error instead of throwing. </p>
|
||||
<dl class="section return"><dt>Returns</dt><dd>Valid database with diagnostics; empty database on error. File errors use line zero; statement errors use physical one-based lines. Warnings indicate ignored syntax and possible incomplete decoding. </dd></dl>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__parser_8cpp_source.html#l00044">44</a> of file <a class="el" href="dbc__parser_8cpp_source.html">dbc_parser.cpp</a>.</p>
|
||||
|
||||
<p class="reference">References <a class="el" href="dbc__statement__handler_8cpp_source.html#l00388">DbcStatementDispatcher::Dispatch()</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="dbc__parser_8cpp_source.html#l00031">ParseFile()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -164,7 +199,7 @@ Public Member Functions</h2></td></tr>
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="classDbcParser.html">DbcParser</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4 </li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
var classDbcParser =
|
||||
[
|
||||
[ "ParseFile", "classDbcParser.html#aef72826942c9095d653fafa435855e56", null ]
|
||||
[ "ParseFile", "classDbcParser.html#aef72826942c9095d653fafa435855e56", null ],
|
||||
[ "ParseFileWithDiagnostics", "classDbcParser.html#a0e915ce79c2e3d4c95a5aaf2bf0409bc", null ]
|
||||
];
|
||||
@@ -0,0 +1,110 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">DBC Framework
|
||||
</div>
|
||||
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classDbcSignalHandler.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">DbcSignalHandler Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classDbcSignalHandler.html">DbcSignalHandler</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Handle</b>(const std::string &line, DbcParseContext &context) const override (defined in <a class="el" href="classDbcSignalHandler.html">DbcSignalHandler</a>)</td><td class="entry"><a class="el" href="classDbcSignalHandler.html">DbcSignalHandler</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>~DbcStatementHandler</b>()=default (defined in <a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a>)</td><td class="entry"><a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,170 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: DbcSignalHandler Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">DBC Framework
|
||||
</div>
|
||||
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classDbcSignalHandler.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="classDbcSignalHandler-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">DbcSignalHandler Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for DbcSignalHandler:</div>
|
||||
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><iframe scrolling="no" frameborder="0" src="classDbcSignalHandler__inherit__graph.svg" width="204" height="210"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
||||
</div>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:ad7d891ec1414fb645f85ccd410f2737b" id="r_ad7d891ec1414fb645f85ccd410f2737b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcSignalHandler.html#ad7d891ec1414fb645f85ccd410f2737b">Handle</a> (const std::string &line, <a class="el" href="structDbcParseContext.html">DbcParseContext</a> &context) const override</td></tr>
|
||||
<tr class="separator:ad7d891ec1414fb645f85ccd410f2737b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock">
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00058">58</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||
</div><h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="ad7d891ec1414fb645f85ccd410f2737b" name="ad7d891ec1414fb645f85ccd410f2737b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad7d891ec1414fb645f85ccd410f2737b">◆ </a></span>Handle()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void DbcSignalHandler::Handle </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const std::string & </td>
|
||||
<td class="paramname"><em>line</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="structDbcParseContext.html">DbcParseContext</a> & </td>
|
||||
<td class="paramname"><em>context</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>Implements <a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a>.</p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00353">353</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following files:<ul>
|
||||
<li><a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a></li>
|
||||
<li><a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="classDbcSignalHandler.html">DbcSignalHandler</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,5 @@
|
||||
<map id="DbcSignalHandler" name="DbcSignalHandler">
|
||||
<area shape="rect" id="Node000001" title=" " alt="" coords="37,139,167,204"/>
|
||||
<area shape="rect" id="Node000002" href="$classDbcStatementHandler.html" title=" " alt="" coords="5,5,199,91"/>
|
||||
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="105,104,105,138,99,138,99,104"/>
|
||||
</map>
|
||||
@@ -0,0 +1 @@
|
||||
9f75986e6e276d126dcdd20bd25bc7f7
|
||||
@@ -0,0 +1,78 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.42.4 (0)
|
||||
-->
|
||||
<!-- Title: DbcSignalHandler Pages: 1 -->
|
||||
<svg width="153pt" height="157pt"
|
||||
viewBox="0.00 0.00 153.00 157.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
|
||||
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
|
||||
<style type="text/css"><![CDATA[
|
||||
.node, .edge {opacity: 0.7;}
|
||||
.node.selected, .edge.selected {opacity: 1;}
|
||||
.edge:hover path { stroke: red; }
|
||||
.edge:hover polygon { stroke: red; fill: red; }
|
||||
]]></style>
|
||||
<script type="application/ecmascript" xlink:href="svg.min.js"/>
|
||||
<svg id="graph" class="graph">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 153)">
|
||||
<title>DbcSignalHandler</title>
|
||||
<!-- Node1 -->
|
||||
<g id="Node000001" class="node">
|
||||
<title>Node1</title>
|
||||
<g id="a_Node000001"><a xlink:title=" ">
|
||||
<polygon fill="#999999" stroke="transparent" points="121.5,-49 23.5,-49 23.5,0 121.5,0 121.5,-49"/>
|
||||
<text text-anchor="start" x="28.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcSignalHandler</text>
|
||||
<text text-anchor="start" x="70.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="36" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="57.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#666666" stroke="#666666" points="23.5,-31.5 23.5,-31.5 121.5,-31.5 121.5,-31.5 23.5,-31.5"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="23.5,-16.5 23.5,-16.5 121.5,-16.5 121.5,-16.5 23.5,-16.5"/>
|
||||
<polygon fill="none" stroke="#666666" points="23.5,0 23.5,-49 121.5,-49 121.5,0 23.5,0"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2 -->
|
||||
<g id="Node000002" class="node">
|
||||
<title>Node2</title>
|
||||
<g id="a_Node000002"><a xlink:href="classDbcStatementHandler.html" target="_top" xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="145,-149 0,-149 0,-85 145,-85 145,-149"/>
|
||||
<text text-anchor="start" x="18.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00">DbcStatementHandler</text>
|
||||
<text text-anchor="start" x="71" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="4.5" y="-107" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-107" font-family="Helvetica,sans-Serif" font-size="10.00">~DbcStatementHandler()</text>
|
||||
<text text-anchor="start" x="4.5" y="-92" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-92" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-132 0.5,-132 145.5,-132 145.5,-132 0.5,-132"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-117 0.5,-117 145.5,-117 145.5,-117 0.5,-117"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="0,-85 0,-149 145,-149 145,-85 0,-85"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2->Node1 -->
|
||||
<g id="edge1_Node000001_Node000002" class="edge">
|
||||
<title>Node2->Node1</title>
|
||||
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M72.5,-74.77C72.5,-66.03 72.5,-57.09 72.5,-49.27"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="69,-74.85 72.5,-84.86 76,-74.86 69,-74.85"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
|
||||
<style type='text/css'>
|
||||
<![CDATA[
|
||||
[data-mouse-over-selected='false'] { opacity: 0.7; }
|
||||
[data-mouse-over-selected='true'] { opacity: 1.0; }
|
||||
]]>
|
||||
</style>
|
||||
<script type="application/ecmascript"><![CDATA[
|
||||
document.addEventListener('DOMContentLoaded', (event) => {
|
||||
highlightEdges();
|
||||
highlightAdjacentNodes();
|
||||
});
|
||||
]]></script>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
@@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.42.4 (0)
|
||||
-->
|
||||
<!-- Title: DbcSignalHandler Pages: 1 -->
|
||||
<svg width="153pt" height="157pt"
|
||||
viewBox="0.00 0.00 153.00 157.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 153)">
|
||||
<title>DbcSignalHandler</title>
|
||||
<!-- Node1 -->
|
||||
<g id="Node000001" class="node">
|
||||
<title>Node1</title>
|
||||
<g id="a_Node000001"><a xlink:title=" ">
|
||||
<polygon fill="#999999" stroke="transparent" points="121.5,-49 23.5,-49 23.5,0 121.5,0 121.5,-49"/>
|
||||
<text text-anchor="start" x="28.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcSignalHandler</text>
|
||||
<text text-anchor="start" x="70.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="36" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="57.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#666666" stroke="#666666" points="23.5,-31.5 23.5,-31.5 121.5,-31.5 121.5,-31.5 23.5,-31.5"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="23.5,-16.5 23.5,-16.5 121.5,-16.5 121.5,-16.5 23.5,-16.5"/>
|
||||
<polygon fill="none" stroke="#666666" points="23.5,0 23.5,-49 121.5,-49 121.5,0 23.5,0"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2 -->
|
||||
<g id="Node000002" class="node">
|
||||
<title>Node2</title>
|
||||
<g id="a_Node000002"><a xlink:href="classDbcStatementHandler.html" target="_top" xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="145,-149 0,-149 0,-85 145,-85 145,-149"/>
|
||||
<text text-anchor="start" x="18.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00">DbcStatementHandler</text>
|
||||
<text text-anchor="start" x="71" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="4.5" y="-107" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-107" font-family="Helvetica,sans-Serif" font-size="10.00">~DbcStatementHandler()</text>
|
||||
<text text-anchor="start" x="4.5" y="-92" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-92" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-132 0.5,-132 145.5,-132 145.5,-132 0.5,-132"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-117 0.5,-117 145.5,-117 145.5,-117 0.5,-117"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="0,-85 0,-149 145,-149 145,-85 0,-85"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2->Node1 -->
|
||||
<g id="edge1_Node000001_Node000002" class="edge">
|
||||
<title>Node2->Node1</title>
|
||||
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M72.5,-74.77C72.5,-66.03 72.5,-57.09 72.5,-49.27"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="69,-74.85 72.5,-84.86 76,-74.86 69,-74.85"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
@@ -0,0 +1,111 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">DBC Framework
|
||||
</div>
|
||||
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classDbcStatementDispatcher.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">DbcStatementDispatcher Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DbcStatementDispatcher</b>() (defined in <a class="el" href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a>)</td><td class="entry"><a class="el" href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed">Dispatch</a>(const std::string &line, DbcParseContext &context) const</td><td class="entry"><a class="el" href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RegisterType</b>(const std::string &keyword) (defined in <a class="el" href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a>)</td><td class="entry"><a class="el" href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,212 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: DbcStatementDispatcher Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">DBC Framework
|
||||
</div>
|
||||
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classDbcStatementDispatcher.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="classDbcStatementDispatcher-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">DbcStatementDispatcher Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><code>#include <<a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>></code></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a2c6e9a614ed747275d43bcccc50d0b2d" id="r_a2c6e9a614ed747275d43bcccc50d0b2d"><td class="memTemplParams" colspan="2">template<class Handler > </td></tr>
|
||||
<tr class="memitem:a2c6e9a614ed747275d43bcccc50d0b2d"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classDbcStatementDispatcher.html#a2c6e9a614ed747275d43bcccc50d0b2d">RegisterType</a> (const std::string &keyword)</td></tr>
|
||||
<tr class="separator:a2c6e9a614ed747275d43bcccc50d0b2d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a495c2d5c7ebb8103b1987cdd87c142ed" id="r_a495c2d5c7ebb8103b1987cdd87c142ed"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed">Dispatch</a> (const std::string &line, <a class="el" href="structDbcParseContext.html">DbcParseContext</a> &context) const</td></tr>
|
||||
<tr class="separator:a495c2d5c7ebb8103b1987cdd87c142ed"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p>Exact-key dispatch to handlers created once per registration via <a class="el" href="classTypeFactory.html" title="Registry-based factory for creating objects by runtime identifier.">TypeFactory</a>. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00091">91</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||||
<a id="a2f064359b59d8644b8a8196653d47482" name="a2f064359b59d8644b8a8196653d47482"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a2f064359b59d8644b8a8196653d47482">◆ </a></span>DbcStatementDispatcher()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">DbcStatementDispatcher::DbcStatementDispatcher </td>
|
||||
<td>(</td>
|
||||
<td class="paramname"></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00371">371</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="a2c6e9a614ed747275d43bcccc50d0b2d" name="a2c6e9a614ed747275d43bcccc50d0b2d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a2c6e9a614ed747275d43bcccc50d0b2d">◆ </a></span>RegisterType()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<div class="memtemplate">
|
||||
template<class Handler > </div>
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void DbcStatementDispatcher::RegisterType </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const std::string & </td>
|
||||
<td class="paramname"><em>keyword</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00096">96</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a495c2d5c7ebb8103b1987cdd87c142ed" name="a495c2d5c7ebb8103b1987cdd87c142ed"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a495c2d5c7ebb8103b1987cdd87c142ed">◆ </a></span>Dispatch()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">bool DbcStatementDispatcher::Dispatch </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const std::string & </td>
|
||||
<td class="paramname"><em>line</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="structDbcParseContext.html">DbcParseContext</a> & </td>
|
||||
<td class="paramname"><em>context</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Returns false for an unregistered keyword; input must be trimmed. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8cpp_source.html#l00388">388</a> of file <a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="dbc__parser_8cpp_source.html#l00044">DbcParser::ParseFileWithDiagnostics()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following files:<ul>
|
||||
<li><a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a></li>
|
||||
<li><a class="el" href="dbc__statement__handler_8cpp_source.html">dbc_statement_handler.cpp</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="classDbcStatementDispatcher.html">DbcStatementDispatcher</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,4 @@
|
||||
var classDbcStatementDispatcher =
|
||||
[
|
||||
[ "Dispatch", "classDbcStatementDispatcher.html#a495c2d5c7ebb8103b1987cdd87c142ed", null ]
|
||||
];
|
||||
@@ -0,0 +1,110 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">DBC Framework
|
||||
</div>
|
||||
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classDbcStatementHandler.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">DbcStatementHandler Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Handle</b>(const std::string &line, DbcParseContext &context) const =0 (defined in <a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a>)</td><td class="entry"><a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>~DbcStatementHandler</b>()=default (defined in <a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a>)</td><td class="entry"><a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,129 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: DbcStatementHandler Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">DBC Framework
|
||||
</div>
|
||||
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classDbcStatementHandler.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="classDbcStatementHandler-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">DbcStatementHandler Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for DbcStatementHandler:</div>
|
||||
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="classDbcStatementHandler__inherit__graph.svg" width="100%" height="487"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
|
||||
</div>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a3de86e1e27e9bcb0fe6f1460a8ba5739" id="r_a3de86e1e27e9bcb0fe6f1460a8ba5739"><td class="memItemLeft" align="right" valign="top"><a id="a3de86e1e27e9bcb0fe6f1460a8ba5739" name="a3de86e1e27e9bcb0fe6f1460a8ba5739"></a>
|
||||
virtual void </td><td class="memItemRight" valign="bottom"><b>Handle</b> (const std::string &line, <a class="el" href="structDbcParseContext.html">DbcParseContext</a> &context) const =0</td></tr>
|
||||
<tr class="separator:a3de86e1e27e9bcb0fe6f1460a8ba5739"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock">
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__statement__handler_8h_source.html#l00044">44</a> of file <a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a>.</p>
|
||||
</div><hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li><a class="el" href="dbc__statement__handler_8h_source.html">dbc_statement_handler.h</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,17 @@
|
||||
<map id="DbcStatementHandler" name="DbcStatementHandler">
|
||||
<area shape="rect" id="Node000001" title=" " alt="" coords="484,5,677,91"/>
|
||||
<area shape="rect" id="Node000002" title=" " alt="" coords="5,139,153,244"/>
|
||||
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="471,66,324,94,244,115,167,141,155,146,153,141,165,136,243,110,323,89,470,61"/>
|
||||
<area shape="rect" id="Node000003" href="$classDbcCommentHandler.html" title=" " alt="" coords="178,159,333,224"/>
|
||||
<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="472,89,346,141,308,161,306,156,344,136,470,84"/>
|
||||
<area shape="rect" id="Node000004" href="$classDbcFrameHandler.html" title=" " alt="" coords="357,159,487,224"/>
|
||||
<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="525,102,460,160,456,156,522,98"/>
|
||||
<area shape="rect" id="Node000005" href="$classDbcHeaderHandler.html" title=" " alt="" coords="512,159,649,224"/>
|
||||
<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="583,104,583,158,578,158,578,104"/>
|
||||
<area shape="rect" id="Node000006" href="$classDbcSignalHandler.html" title=" " alt="" coords="674,159,805,224"/>
|
||||
<area shape="poly" id="edge5_Node000001_Node000006" title=" " alt="" coords="640,98,705,156,702,160,636,102"/>
|
||||
<area shape="rect" id="Node000007" href="$classDbcUnsupportedMultiplexingHandler.html" title=" " alt="" coords="829,151,1031,231"/>
|
||||
<area shape="poly" id="edge6_Node000001_Node000007" title=" " alt="" coords="691,87,818,136,847,149,845,154,816,141,689,92"/>
|
||||
<area shape="rect" id="Node000008" href="$classDbcValueDescriptionHandler.html" title=" " alt="" coords="1055,159,1255,224"/>
|
||||
<area shape="poly" id="edge7_Node000001_Node000008" title=" " alt="" coords="692,60,859,89,953,110,1044,136,1095,156,1093,161,1042,141,951,115,858,94,691,66"/>
|
||||
</map>
|
||||
@@ -0,0 +1 @@
|
||||
9968b812b5276c7cad7a358f5120f96a
|
||||
@@ -0,0 +1,286 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.42.4 (0)
|
||||
-->
|
||||
<!-- Title: DbcStatementHandler Pages: 1 -->
|
||||
<!--zoomable 187 -->
|
||||
|
||||
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
|
||||
<style type="text/css"><![CDATA[
|
||||
.node, .edge {opacity: 0.7;}
|
||||
.node.selected, .edge.selected {opacity: 1;}
|
||||
.edge:hover path { stroke: red; }
|
||||
.edge:hover polygon { stroke: red; fill: red; }
|
||||
]]></style>
|
||||
|
||||
<defs>
|
||||
<circle id="rim" cx="0" cy="0" r="7"/>
|
||||
<circle id="rim2" cx="0" cy="0" r="3.5"/>
|
||||
<g id="zoomPlus">
|
||||
<use xlink:href="#rim" fill="#404040"><set attributeName="fill" to="#808080" begin="zoomplus.mouseover" end="zoomplus.mouseout"/></use>
|
||||
<path d="M-4,0h8M0,-4v8" fill="none" stroke="white" stroke-width="1.5" pointer-events="none"/>
|
||||
</g>
|
||||
<g id="zoomMin">
|
||||
<use xlink:href="#rim" fill="#404040"><set attributeName="fill" to="#808080" begin="zoomminus.mouseover" end="zoomminus.mouseout"/></use>
|
||||
<path d="M-4,0h8" fill="none" stroke="white" stroke-width="1.5" pointer-events="none"/>
|
||||
</g>
|
||||
<g id="arrowUp" transform="translate(30 24)">
|
||||
<use xlink:href="#rim"/>
|
||||
<path pointer-events="none" fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
|
||||
</g>
|
||||
<g id="arrowRight" transform="rotate(90) translate(36 -43)">
|
||||
<use xlink:href="#rim"/>
|
||||
<path pointer-events="none" fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
|
||||
</g>
|
||||
<g id="arrowDown" transform="rotate(180) translate(-30 -48)">
|
||||
<use xlink:href="#rim"/>
|
||||
<path pointer-events="none" fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
|
||||
</g>
|
||||
<g id="arrowLeft" transform="rotate(270) translate(-36 17)">
|
||||
<use xlink:href="#rim"/>
|
||||
<path pointer-events="none" fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
|
||||
</g>
|
||||
<g id="resetDef">
|
||||
<use xlink:href="#rim2" fill="#404040"><set attributeName="fill" to="#808080" begin="reset.mouseover" end="reset.mouseout"/></use>
|
||||
</g>
|
||||
</defs>
|
||||
<script type="application/ecmascript">
|
||||
var viewWidth = 946;
|
||||
var viewHeight = 187;
|
||||
var sectionId = 'dynsection-0';
|
||||
</script>
|
||||
<script type="application/ecmascript" xlink:href="svg.min.js"/>
|
||||
<svg id="graph" class="graph">
|
||||
<g id="viewport">
|
||||
<title>DbcStatementHandler</title>
|
||||
<!-- Node1 -->
|
||||
<g id="Node000001" class="node">
|
||||
<title>Node1</title>
|
||||
<g id="a_Node000001"><a xlink:title=" ">
|
||||
<polygon fill="#999999" stroke="transparent" points="504,-179 359,-179 359,-115 504,-115 504,-179"/>
|
||||
<text text-anchor="start" x="377.5" y="-167" font-family="Helvetica,sans-Serif" font-size="10.00">DbcStatementHandler</text>
|
||||
<text text-anchor="start" x="430" y="-152" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="363.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="376.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00">~DbcStatementHandler()</text>
|
||||
<text text-anchor="start" x="363.5" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="376.5" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#666666" stroke="#666666" points="359.5,-162 359.5,-162 504.5,-162 504.5,-162 359.5,-162"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="359.5,-147 359.5,-147 504.5,-147 504.5,-147 359.5,-147"/>
|
||||
<polygon fill="none" stroke="#666666" points="359,-115 359,-179 504,-179 504,-115 359,-115"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2 -->
|
||||
<g id="Node000002" class="node">
|
||||
<title>Node2</title>
|
||||
<g id="a_Node000002"><a xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="111,-79 0,-79 0,0 111,0 111,-79"/>
|
||||
<text text-anchor="start" x="15" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">CountingHandler</text>
|
||||
<text text-anchor="start" x="4.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">instances</text>
|
||||
<text text-anchor="start" x="4.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">calls</text>
|
||||
<text text-anchor="start" x="4.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">CountingHandler()</text>
|
||||
<text text-anchor="start" x="4.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-61.5 0.5,-61.5 111.5,-61.5 111.5,-61.5 0.5,-61.5"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-31.5 0.5,-31.5 15.5,-31.5 15.5,-31.5 0.5,-31.5"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="15.5,-31.5 15.5,-31.5 111.5,-31.5 111.5,-31.5 15.5,-31.5"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="0,0 0,-79 111,-79 111,0 0,0"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node1->Node2 -->
|
||||
<g id="edge1_Node000001_Node000002" class="edge">
|
||||
<title>Node1->Node2</title>
|
||||
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M348.84,-135.61C284.93,-125.83 195.06,-108.22 120.5,-79 117.45,-77.8 114.37,-76.47 111.3,-75.05"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="348.46,-139.1 358.87,-137.12 349.5,-132.17 348.46,-139.1"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node3 -->
|
||||
<g id="Node000003" class="node">
|
||||
<title>Node3</title>
|
||||
<g id="a_Node000003"><a xlink:href="classDbcCommentHandler.html" target="_top" xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="245.5,-64 129.5,-64 129.5,-15 245.5,-15 245.5,-64"/>
|
||||
<text text-anchor="start" x="134.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcCommentHandler</text>
|
||||
<text text-anchor="start" x="185.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="146.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="172.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="129.5,-46.5 129.5,-46.5 245.5,-46.5 245.5,-46.5 129.5,-46.5"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="129.5,-31.5 129.5,-31.5 245.5,-31.5 245.5,-31.5 129.5,-31.5"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="129.5,-15 129.5,-64 245.5,-64 245.5,-15 129.5,-15"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node1->Node3 -->
|
||||
<g id="edge2_Node000001_Node000003" class="edge">
|
||||
<title>Node1->Node3</title>
|
||||
<g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M349.27,-117.98C319.03,-106.86 284.79,-93.32 254.5,-79 245.16,-74.58 235.38,-69.34 226.26,-64.17"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="348.34,-121.36 358.93,-121.5 350.74,-114.79 348.34,-121.36"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node4 -->
|
||||
<g id="Node000004" class="node">
|
||||
<title>Node4</title>
|
||||
<g id="a_Node000004"><a xlink:href="classDbcFrameHandler.html" target="_top" xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="361.5,-64 263.5,-64 263.5,-15 361.5,-15 361.5,-64"/>
|
||||
<text text-anchor="start" x="268.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcFrameHandler</text>
|
||||
<text text-anchor="start" x="310.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="276" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="297.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="263.5,-46.5 263.5,-46.5 361.5,-46.5 361.5,-46.5 263.5,-46.5"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="263.5,-31.5 263.5,-31.5 361.5,-31.5 361.5,-31.5 263.5,-31.5"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="263.5,-15 263.5,-64 361.5,-64 361.5,-15 263.5,-15"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node1->Node4 -->
|
||||
<g id="edge3_Node000001_Node000004" class="edge">
|
||||
<title>Node1->Node4</title>
|
||||
<g id="a_edge3_Node000001_Node000004"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M388.55,-107.92C372.13,-93.37 353.89,-77.19 339.38,-64.33"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="386.64,-110.9 396.44,-114.92 391.28,-105.66 386.64,-110.9"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node5 -->
|
||||
<g id="Node000005" class="node">
|
||||
<title>Node5</title>
|
||||
<g id="a_Node000005"><a xlink:href="classDbcHeaderHandler.html" target="_top" xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="483,-64 380,-64 380,-15 483,-15 483,-64"/>
|
||||
<text text-anchor="start" x="385.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcHeaderHandler</text>
|
||||
<text text-anchor="start" x="430" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="394" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="416.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#666666" stroke="#666666" points="380.5,-46.5 380.5,-46.5 483.5,-46.5 483.5,-46.5 380.5,-46.5"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="380.5,-31.5 380.5,-31.5 483.5,-31.5 483.5,-31.5 380.5,-31.5"/>
|
||||
<polygon fill="none" stroke="#666666" points="380,-15 380,-64 483,-64 483,-15 380,-15"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node1->Node5 -->
|
||||
<g id="edge4_Node000001_Node000005" class="edge">
|
||||
<title>Node1->Node5</title>
|
||||
<g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M431.5,-104.72C431.5,-91.03 431.5,-76.26 431.5,-64.33"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="428,-104.92 431.5,-114.92 435,-104.92 428,-104.92"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node6 -->
|
||||
<g id="Node000006" class="node">
|
||||
<title>Node6</title>
|
||||
<g id="a_Node000006"><a xlink:href="classDbcSignalHandler.html" target="_top" xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="599.5,-64 501.5,-64 501.5,-15 599.5,-15 599.5,-64"/>
|
||||
<text text-anchor="start" x="506.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcSignalHandler</text>
|
||||
<text text-anchor="start" x="548.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="514" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="535.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="501.5,-46.5 501.5,-46.5 599.5,-46.5 599.5,-46.5 501.5,-46.5"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="501.5,-31.5 501.5,-31.5 599.5,-31.5 599.5,-31.5 501.5,-31.5"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="501.5,-15 501.5,-64 599.5,-64 599.5,-15 501.5,-15"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node1->Node6 -->
|
||||
<g id="edge5_Node000001_Node000006" class="edge">
|
||||
<title>Node1->Node6</title>
|
||||
<g id="a_edge5_Node000001_Node000006"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M474.45,-107.92C490.87,-93.37 509.11,-77.19 523.62,-64.33"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="471.72,-105.66 466.56,-114.92 476.36,-110.9 471.72,-105.66"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node7 -->
|
||||
<g id="Node000007" class="node">
|
||||
<title>Node7</title>
|
||||
<g id="a_Node000007"><a xlink:href="classDbcUnsupportedMultiplexingHandler.html" target="_top" xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="769.5,-69.5 617.5,-69.5 617.5,-9.5 769.5,-9.5 769.5,-69.5"/>
|
||||
<text text-anchor="start" x="622.5" y="-57.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcUnsupportedMultiplexing</text>
|
||||
<text text-anchor="start" x="674" y="-46.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handler</text>
|
||||
<text text-anchor="start" x="691.5" y="-31.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="643.5" y="-16.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="678.5" y="-16.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="617.5,-41.5 617.5,-41.5 769.5,-41.5 769.5,-41.5 617.5,-41.5"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="617.5,-26.5 617.5,-26.5 769.5,-26.5 769.5,-26.5 617.5,-26.5"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="617.5,-9.5 617.5,-69.5 769.5,-69.5 769.5,-9.5 617.5,-9.5"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node1->Node7 -->
|
||||
<g id="edge6_Node000001_Node000007" class="edge">
|
||||
<title>Node1->Node7</title>
|
||||
<g id="a_edge6_Node000001_Node000007"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M513.82,-116.07C543.79,-104.86 577.83,-91.73 608.5,-79 615.68,-76.02 623.16,-72.8 630.57,-69.54"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="512.39,-112.87 504.25,-119.65 514.84,-119.43 512.39,-112.87"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node8 -->
|
||||
<g id="Node000008" class="node">
|
||||
<title>Node8</title>
|
||||
<g id="a_Node000008"><a xlink:href="classDbcValueDescriptionHandler.html" target="_top" xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="937.5,-64 787.5,-64 787.5,-15 937.5,-15 937.5,-64"/>
|
||||
<text text-anchor="start" x="792.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcValueDescriptionHandler</text>
|
||||
<text text-anchor="start" x="860.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="813" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="847.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="787.5,-46.5 787.5,-46.5 937.5,-46.5 937.5,-46.5 787.5,-46.5"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="787.5,-31.5 787.5,-31.5 937.5,-31.5 937.5,-31.5 787.5,-31.5"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="787.5,-15 787.5,-64 937.5,-64 937.5,-15 787.5,-15"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node1->Node8 -->
|
||||
<g id="edge7_Node000001_Node000008" class="edge">
|
||||
<title>Node1->Node8</title>
|
||||
<g id="a_edge7_Node000001_Node000008"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M514.45,-135.67C585.64,-125.47 690.37,-107.25 778.5,-79 791.03,-74.98 804.15,-69.59 816.19,-64.11"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="513.61,-132.26 504.2,-137.12 514.59,-139.19 513.61,-132.26"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
<g id="navigator" transform="translate(0 0)" fill="#404254">
|
||||
<rect fill="#f2f5e9" fill-opacity="0.5" stroke="#606060" stroke-width=".5" x="0" y="0" width="60" height="60"/>
|
||||
<use id="zoomplus" xlink:href="#zoomPlus" x="17" y="9" onmousedown="handleZoom(evt,'in')"/>
|
||||
<use id="zoomminus" xlink:href="#zoomMin" x="42" y="9" onmousedown="handleZoom(evt,'out')"/>
|
||||
<use id="reset" xlink:href="#resetDef" x="30" y="36" onmousedown="handleReset()"/>
|
||||
<use id="arrowup" xlink:href="#arrowUp" x="0" y="0" onmousedown="handlePan(0,-1)"/>
|
||||
<use id="arrowright" xlink:href="#arrowRight" x="0" y="0" onmousedown="handlePan(1,0)"/>
|
||||
<use id="arrowdown" xlink:href="#arrowDown" x="0" y="0" onmousedown="handlePan(0,1)"/>
|
||||
<use id="arrowleft" xlink:href="#arrowLeft" x="0" y="0" onmousedown="handlePan(-1,0)"/>
|
||||
</g>
|
||||
<svg viewBox="0 0 15 15" width="100%" height="30px" preserveAspectRatio="xMaxYMin meet">
|
||||
<g id="arrow_out" transform="scale(0.3 0.3)">
|
||||
<a xlink:href="classDbcStatementHandler__inherit__graph_org.svg" target="_base">
|
||||
<rect id="button" ry="5" rx="5" y="6" x="6" height="38" width="38"
|
||||
fill="#f2f5e9" fill-opacity="0.5" stroke="#606060" stroke-width="1.0"/>
|
||||
<path id="arrow"
|
||||
d="M 11.500037,31.436501 C 11.940474,20.09759 22.043105,11.32322 32.158766,21.979434 L 37.068811,17.246167 C 37.068811,17.246167 37.088388,32 37.088388,32 L 22.160133,31.978069 C 22.160133,31.978069 26.997745,27.140456 26.997745,27.140456 C 18.528582,18.264221 13.291696,25.230495 11.500037,31.436501 z"
|
||||
style="fill:#404040;"/>
|
||||
</a>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
<style type='text/css'>
|
||||
<![CDATA[
|
||||
[data-mouse-over-selected='false'] { opacity: 0.7; }
|
||||
[data-mouse-over-selected='true'] { opacity: 1.0; }
|
||||
]]>
|
||||
</style>
|
||||
<script type="application/ecmascript"><![CDATA[
|
||||
document.addEventListener('DOMContentLoaded', (event) => {
|
||||
highlightEdges();
|
||||
highlightAdjacentNodes();
|
||||
});
|
||||
]]></script>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 16 KiB |
@@ -0,0 +1,204 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.42.4 (0)
|
||||
-->
|
||||
<!-- Title: DbcStatementHandler Pages: 1 -->
|
||||
<svg width="946pt" height="187pt"
|
||||
viewBox="0.00 0.00 945.50 187.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 183)">
|
||||
<title>DbcStatementHandler</title>
|
||||
<!-- Node1 -->
|
||||
<g id="Node000001" class="node">
|
||||
<title>Node1</title>
|
||||
<g id="a_Node000001"><a xlink:title=" ">
|
||||
<polygon fill="#999999" stroke="transparent" points="504,-179 359,-179 359,-115 504,-115 504,-179"/>
|
||||
<text text-anchor="start" x="377.5" y="-167" font-family="Helvetica,sans-Serif" font-size="10.00">DbcStatementHandler</text>
|
||||
<text text-anchor="start" x="430" y="-152" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="363.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="376.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00">~DbcStatementHandler()</text>
|
||||
<text text-anchor="start" x="363.5" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="376.5" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#666666" stroke="#666666" points="359.5,-162 359.5,-162 504.5,-162 504.5,-162 359.5,-162"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="359.5,-147 359.5,-147 504.5,-147 504.5,-147 359.5,-147"/>
|
||||
<polygon fill="none" stroke="#666666" points="359,-115 359,-179 504,-179 504,-115 359,-115"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2 -->
|
||||
<g id="Node000002" class="node">
|
||||
<title>Node2</title>
|
||||
<g id="a_Node000002"><a xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="111,-79 0,-79 0,0 111,0 111,-79"/>
|
||||
<text text-anchor="start" x="15" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">CountingHandler</text>
|
||||
<text text-anchor="start" x="4.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">instances</text>
|
||||
<text text-anchor="start" x="4.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">calls</text>
|
||||
<text text-anchor="start" x="4.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">CountingHandler()</text>
|
||||
<text text-anchor="start" x="4.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="17.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-61.5 0.5,-61.5 111.5,-61.5 111.5,-61.5 0.5,-61.5"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-31.5 0.5,-31.5 15.5,-31.5 15.5,-31.5 0.5,-31.5"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="15.5,-31.5 15.5,-31.5 111.5,-31.5 111.5,-31.5 15.5,-31.5"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="0,0 0,-79 111,-79 111,0 0,0"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node1->Node2 -->
|
||||
<g id="edge1_Node000001_Node000002" class="edge">
|
||||
<title>Node1->Node2</title>
|
||||
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M348.84,-135.61C284.93,-125.83 195.06,-108.22 120.5,-79 117.45,-77.8 114.37,-76.47 111.3,-75.05"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="348.46,-139.1 358.87,-137.12 349.5,-132.17 348.46,-139.1"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node3 -->
|
||||
<g id="Node000003" class="node">
|
||||
<title>Node3</title>
|
||||
<g id="a_Node000003"><a xlink:href="classDbcCommentHandler.html" target="_top" xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="245.5,-64 129.5,-64 129.5,-15 245.5,-15 245.5,-64"/>
|
||||
<text text-anchor="start" x="134.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcCommentHandler</text>
|
||||
<text text-anchor="start" x="185.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="146.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="172.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="129.5,-46.5 129.5,-46.5 245.5,-46.5 245.5,-46.5 129.5,-46.5"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="129.5,-31.5 129.5,-31.5 245.5,-31.5 245.5,-31.5 129.5,-31.5"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="129.5,-15 129.5,-64 245.5,-64 245.5,-15 129.5,-15"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node1->Node3 -->
|
||||
<g id="edge2_Node000001_Node000003" class="edge">
|
||||
<title>Node1->Node3</title>
|
||||
<g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M349.27,-117.98C319.03,-106.86 284.79,-93.32 254.5,-79 245.16,-74.58 235.38,-69.34 226.26,-64.17"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="348.34,-121.36 358.93,-121.5 350.74,-114.79 348.34,-121.36"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node4 -->
|
||||
<g id="Node000004" class="node">
|
||||
<title>Node4</title>
|
||||
<g id="a_Node000004"><a xlink:href="classDbcFrameHandler.html" target="_top" xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="361.5,-64 263.5,-64 263.5,-15 361.5,-15 361.5,-64"/>
|
||||
<text text-anchor="start" x="268.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcFrameHandler</text>
|
||||
<text text-anchor="start" x="310.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="276" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="297.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="263.5,-46.5 263.5,-46.5 361.5,-46.5 361.5,-46.5 263.5,-46.5"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="263.5,-31.5 263.5,-31.5 361.5,-31.5 361.5,-31.5 263.5,-31.5"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="263.5,-15 263.5,-64 361.5,-64 361.5,-15 263.5,-15"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node1->Node4 -->
|
||||
<g id="edge3_Node000001_Node000004" class="edge">
|
||||
<title>Node1->Node4</title>
|
||||
<g id="a_edge3_Node000001_Node000004"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M388.55,-107.92C372.13,-93.37 353.89,-77.19 339.38,-64.33"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="386.64,-110.9 396.44,-114.92 391.28,-105.66 386.64,-110.9"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node5 -->
|
||||
<g id="Node000005" class="node">
|
||||
<title>Node5</title>
|
||||
<g id="a_Node000005"><a xlink:href="classDbcHeaderHandler.html" target="_top" xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="483,-64 380,-64 380,-15 483,-15 483,-64"/>
|
||||
<text text-anchor="start" x="385.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcHeaderHandler</text>
|
||||
<text text-anchor="start" x="430" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="394" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="416.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#666666" stroke="#666666" points="380.5,-46.5 380.5,-46.5 483.5,-46.5 483.5,-46.5 380.5,-46.5"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="380.5,-31.5 380.5,-31.5 483.5,-31.5 483.5,-31.5 380.5,-31.5"/>
|
||||
<polygon fill="none" stroke="#666666" points="380,-15 380,-64 483,-64 483,-15 380,-15"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node1->Node5 -->
|
||||
<g id="edge4_Node000001_Node000005" class="edge">
|
||||
<title>Node1->Node5</title>
|
||||
<g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M431.5,-104.72C431.5,-91.03 431.5,-76.26 431.5,-64.33"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="428,-104.92 431.5,-114.92 435,-104.92 428,-104.92"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node6 -->
|
||||
<g id="Node000006" class="node">
|
||||
<title>Node6</title>
|
||||
<g id="a_Node000006"><a xlink:href="classDbcSignalHandler.html" target="_top" xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="599.5,-64 501.5,-64 501.5,-15 599.5,-15 599.5,-64"/>
|
||||
<text text-anchor="start" x="506.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcSignalHandler</text>
|
||||
<text text-anchor="start" x="548.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="514" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="535.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="501.5,-46.5 501.5,-46.5 599.5,-46.5 599.5,-46.5 501.5,-46.5"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="501.5,-31.5 501.5,-31.5 599.5,-31.5 599.5,-31.5 501.5,-31.5"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="501.5,-15 501.5,-64 599.5,-64 599.5,-15 501.5,-15"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node1->Node6 -->
|
||||
<g id="edge5_Node000001_Node000006" class="edge">
|
||||
<title>Node1->Node6</title>
|
||||
<g id="a_edge5_Node000001_Node000006"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M474.45,-107.92C490.87,-93.37 509.11,-77.19 523.62,-64.33"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="471.72,-105.66 466.56,-114.92 476.36,-110.9 471.72,-105.66"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node7 -->
|
||||
<g id="Node000007" class="node">
|
||||
<title>Node7</title>
|
||||
<g id="a_Node000007"><a xlink:href="classDbcUnsupportedMultiplexingHandler.html" target="_top" xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="769.5,-69.5 617.5,-69.5 617.5,-9.5 769.5,-9.5 769.5,-69.5"/>
|
||||
<text text-anchor="start" x="622.5" y="-57.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcUnsupportedMultiplexing</text>
|
||||
<text text-anchor="start" x="674" y="-46.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handler</text>
|
||||
<text text-anchor="start" x="691.5" y="-31.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="643.5" y="-16.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="678.5" y="-16.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="617.5,-41.5 617.5,-41.5 769.5,-41.5 769.5,-41.5 617.5,-41.5"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="617.5,-26.5 617.5,-26.5 769.5,-26.5 769.5,-26.5 617.5,-26.5"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="617.5,-9.5 617.5,-69.5 769.5,-69.5 769.5,-9.5 617.5,-9.5"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node1->Node7 -->
|
||||
<g id="edge6_Node000001_Node000007" class="edge">
|
||||
<title>Node1->Node7</title>
|
||||
<g id="a_edge6_Node000001_Node000007"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M513.82,-116.07C543.79,-104.86 577.83,-91.73 608.5,-79 615.68,-76.02 623.16,-72.8 630.57,-69.54"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="512.39,-112.87 504.25,-119.65 514.84,-119.43 512.39,-112.87"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node8 -->
|
||||
<g id="Node000008" class="node">
|
||||
<title>Node8</title>
|
||||
<g id="a_Node000008"><a xlink:href="classDbcValueDescriptionHandler.html" target="_top" xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="937.5,-64 787.5,-64 787.5,-15 937.5,-15 937.5,-64"/>
|
||||
<text text-anchor="start" x="792.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcValueDescriptionHandler</text>
|
||||
<text text-anchor="start" x="860.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="813" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="847.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">Handle()</text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="787.5,-46.5 787.5,-46.5 937.5,-46.5 937.5,-46.5 787.5,-46.5"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="787.5,-31.5 787.5,-31.5 937.5,-31.5 937.5,-31.5 787.5,-31.5"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="787.5,-15 787.5,-64 937.5,-64 937.5,-15 787.5,-15"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node1->Node8 -->
|
||||
<g id="edge7_Node000001_Node000008" class="edge">
|
||||
<title>Node1->Node8</title>
|
||||
<g id="a_edge7_Node000001_Node000008"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M514.45,-135.67C585.64,-125.47 690.37,-107.25 778.5,-79 791.03,-74.98 804.15,-69.59 816.19,-64.11"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="513.61,-132.26 504.2,-137.12 514.59,-139.19 513.61,-132.26"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -34,10 +34,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
@@ -77,9 +77,16 @@ $(document).ready(function(){initNavTree('classDbcTreeBuilder.html',''); initRes
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
@@ -95,7 +102,7 @@ $(document).ready(function(){initNavTree('classDbcTreeBuilder.html',''); initRes
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4 </li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: DbcTreeBuilder Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -34,10 +34,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
@@ -77,9 +77,16 @@ $(document).ready(function(){initNavTree('classDbcTreeBuilder.html',''); initRes
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
@@ -97,17 +104,17 @@ $(document).ready(function(){initNavTree('classDbcTreeBuilder.html',''); initRes
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a7e57d067d831b14b383947fd125edd4b"><td class="memItemLeft" align="right" valign="top">std::unique_ptr< <a class="el" href="classTreeNode.html">TreeNode</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcTreeBuilder.html#a7e57d067d831b14b383947fd125edd4b">Build</a> (const <a class="el" href="structDbcDatabase.html">DbcDatabase</a> &database) const</td></tr>
|
||||
<tr class="memdesc:a7e57d067d831b14b383947fd125edd4b"><td class="mdescLeft"> </td><td class="mdescRight">Build tree representation of parsed DBC data. <a href="classDbcTreeBuilder.html#a7e57d067d831b14b383947fd125edd4b">More...</a><br /></td></tr>
|
||||
<tr class="memitem:a7e57d067d831b14b383947fd125edd4b" id="r_a7e57d067d831b14b383947fd125edd4b"><td class="memItemLeft" align="right" valign="top">std::unique_ptr< <a class="el" href="classTreeNode.html">TreeNode</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcTreeBuilder.html#a7e57d067d831b14b383947fd125edd4b">Build</a> (const <a class="el" href="structDbcDatabase.html">DbcDatabase</a> &database) const</td></tr>
|
||||
<tr class="memdesc:a7e57d067d831b14b383947fd125edd4b"><td class="mdescLeft"> </td><td class="mdescRight">Build tree representation of parsed DBC data. <br /></td></tr>
|
||||
<tr class="separator:a7e57d067d831b14b383947fd125edd4b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p >Builds a simple tree from parsed DBC database. </p>
|
||||
<div class="textblock"><p>Builds a simple tree from parsed DBC database. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__tree__builder_8h_source.html#l00023">23</a> of file <a class="el" href="dbc__tree__builder_8h_source.html">dbc_tree_builder.h</a>.</p>
|
||||
</div><h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="a7e57d067d831b14b383947fd125edd4b" name="a7e57d067d831b14b383947fd125edd4b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7e57d067d831b14b383947fd125edd4b">◆ </a></span>Build()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7e57d067d831b14b383947fd125edd4b">◆ </a></span>Build()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -147,7 +154,7 @@ Public Member Functions</h2></td></tr>
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="classDbcTreeBuilder.html">DbcTreeBuilder</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4 </li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -0,0 +1,140 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">DBC Framework
|
||||
</div>
|
||||
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classDbcTreeModel.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">DbcTreeModel Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BitLength</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>BitLengthRole</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ByteOrder</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>CanId</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>CanIdRole</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>Column</b> enum name (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>columnCount</b>(const QModelIndex &parent=QModelIndex()) const override (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>ColumnCount</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Comment</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>CommentRole</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>data</b>(const QModelIndex &index, int role=Qt::DisplayRole) const override (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>DbcTreeModel</b>(QObject *parent=nullptr) (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ExtendedRole</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>flags</b>(const QModelIndex &index) const override (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>headerData</b>(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>index</b>(int row, int column, const QModelIndex &parent=QModelIndex()) const override (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>LittleEndianRole</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>Name</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>NodeTypeRole</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>parent</b>(const QModelIndex &child) const override (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PayloadLength</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>PayloadLengthRole</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Role</b> enum name (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>rowCount</b>(const QModelIndex &parent=QModelIndex()) const override (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>SetTree</b>(std::unique_ptr< TreeNode > root) (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>Signed</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>SignedRole</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>StartBit</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>StartBitRole</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>Unit</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>UnitRole</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>ValueDescriptionsRole</b> enum value (defined in <a class="el" href="classDbcTreeModel.html">DbcTreeModel</a>)</td><td class="entry"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,506 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: DbcTreeModel Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">DBC Framework
|
||||
</div>
|
||||
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classDbcTreeModel.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-types">Public Types</a> |
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="classDbcTreeModel-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">DbcTreeModel Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><code>#include <<a class="el" href="dbc__tree__model_8h_source.html">dbc_tree_model.h</a>></code></p>
|
||||
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for DbcTreeModel:</div>
|
||||
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><iframe scrolling="no" frameborder="0" src="classDbcTreeModel__inherit__graph.svg" width="159" height="350"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
||||
</div>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
|
||||
Public Types</h2></td></tr>
|
||||
<tr class="memitem:a5e31be609fae4d7dfdd79140f56069ae" id="r_a5e31be609fae4d7dfdd79140f56069ae"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>Column</b> { <br />
|
||||
  <b>Name</b>
|
||||
, <b>CanId</b>
|
||||
, <b>PayloadLength</b>
|
||||
, <b>StartBit</b>
|
||||
, <br />
|
||||
  <b>BitLength</b>
|
||||
, <b>ByteOrder</b>
|
||||
, <b>Signed</b>
|
||||
, <b>Unit</b>
|
||||
, <br />
|
||||
  <b>Comment</b>
|
||||
, <b>ColumnCount</b>
|
||||
<br />
|
||||
}</td></tr>
|
||||
<tr class="separator:a5e31be609fae4d7dfdd79140f56069ae"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a0f360d424848c6c39f2312e6209b0dfd" id="r_a0f360d424848c6c39f2312e6209b0dfd"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>Role</b> { <br />
|
||||
  <b>NodeTypeRole</b> = Qt::UserRole + 1
|
||||
, <b>CanIdRole</b>
|
||||
, <b>PayloadLengthRole</b>
|
||||
, <b>StartBitRole</b>
|
||||
, <br />
|
||||
  <b>BitLengthRole</b>
|
||||
, <b>LittleEndianRole</b>
|
||||
, <b>SignedRole</b>
|
||||
, <b>UnitRole</b>
|
||||
, <br />
|
||||
  <b>CommentRole</b>
|
||||
, <b>ValueDescriptionsRole</b>
|
||||
, <b>ExtendedRole</b>
|
||||
<br />
|
||||
}</td></tr>
|
||||
<tr class="separator:a0f360d424848c6c39f2312e6209b0dfd"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a4f7214b727d812885bf077352ec9ece1" id="r_a4f7214b727d812885bf077352ec9ece1"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcTreeModel.html#a4f7214b727d812885bf077352ec9ece1">DbcTreeModel</a> (QObject *parent=nullptr)</td></tr>
|
||||
<tr class="separator:a4f7214b727d812885bf077352ec9ece1"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a8cb5a81d456cdead42b75fd3462ee00a" id="r_a8cb5a81d456cdead42b75fd3462ee00a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcTreeModel.html#a8cb5a81d456cdead42b75fd3462ee00a">SetTree</a> (std::unique_ptr< <a class="el" href="classTreeNode.html">TreeNode</a> > root)</td></tr>
|
||||
<tr class="separator:a8cb5a81d456cdead42b75fd3462ee00a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a8caeb5ec6141eb3e446e48df3c70b3ad" id="r_a8caeb5ec6141eb3e446e48df3c70b3ad"><td class="memItemLeft" align="right" valign="top">QModelIndex </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcTreeModel.html#a8caeb5ec6141eb3e446e48df3c70b3ad">index</a> (int row, int column, const QModelIndex &parent=QModelIndex()) const override</td></tr>
|
||||
<tr class="separator:a8caeb5ec6141eb3e446e48df3c70b3ad"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae40bb8b8a26d205f178c6dd1134ff4b3" id="r_ae40bb8b8a26d205f178c6dd1134ff4b3"><td class="memItemLeft" align="right" valign="top">QModelIndex </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcTreeModel.html#ae40bb8b8a26d205f178c6dd1134ff4b3">parent</a> (const QModelIndex &child) const override</td></tr>
|
||||
<tr class="separator:ae40bb8b8a26d205f178c6dd1134ff4b3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a30bed0d65342917c19d9183da55af452" id="r_a30bed0d65342917c19d9183da55af452"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcTreeModel.html#a30bed0d65342917c19d9183da55af452">rowCount</a> (const QModelIndex &parent=QModelIndex()) const override</td></tr>
|
||||
<tr class="separator:a30bed0d65342917c19d9183da55af452"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a397f885e7fd45c387825b4357b875c10" id="r_a397f885e7fd45c387825b4357b875c10"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcTreeModel.html#a397f885e7fd45c387825b4357b875c10">columnCount</a> (const QModelIndex &parent=QModelIndex()) const override</td></tr>
|
||||
<tr class="separator:a397f885e7fd45c387825b4357b875c10"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aca81d05c81cc48c1185fc36659e96e5b" id="r_aca81d05c81cc48c1185fc36659e96e5b"><td class="memItemLeft" align="right" valign="top">QVariant </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcTreeModel.html#aca81d05c81cc48c1185fc36659e96e5b">data</a> (const QModelIndex &index, int role=Qt::DisplayRole) const override</td></tr>
|
||||
<tr class="separator:aca81d05c81cc48c1185fc36659e96e5b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aad5834e8edb00808cbfa498ea8c63fe9" id="r_aad5834e8edb00808cbfa498ea8c63fe9"><td class="memItemLeft" align="right" valign="top">QVariant </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcTreeModel.html#aad5834e8edb00808cbfa498ea8c63fe9">headerData</a> (int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override</td></tr>
|
||||
<tr class="separator:aad5834e8edb00808cbfa498ea8c63fe9"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a8f7842a79144bdb24fa9c5fbdcd37295" id="r_a8f7842a79144bdb24fa9c5fbdcd37295"><td class="memItemLeft" align="right" valign="top">Qt::ItemFlags </td><td class="memItemRight" valign="bottom"><a class="el" href="classDbcTreeModel.html#a8f7842a79144bdb24fa9c5fbdcd37295">flags</a> (const QModelIndex &index) const override</td></tr>
|
||||
<tr class="separator:a8f7842a79144bdb24fa9c5fbdcd37295"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p>Read-only model. Owns an immutable tree; all indexes expire on SetTree(). Use QPersistentModelIndex to observe reset invalidation. Call on the model thread. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__tree__model_8h_source.html#l00011">11</a> of file <a class="el" href="dbc__tree__model_8h_source.html">dbc_tree_model.h</a>.</p>
|
||||
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
|
||||
<a id="a5e31be609fae4d7dfdd79140f56069ae" name="a5e31be609fae4d7dfdd79140f56069ae"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a5e31be609fae4d7dfdd79140f56069ae">◆ </a></span>Column</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">enum DbcTreeModel::Column</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__tree__model_8h_source.html#l00013">13</a> of file <a class="el" href="dbc__tree__model_8h_source.html">dbc_tree_model.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a0f360d424848c6c39f2312e6209b0dfd" name="a0f360d424848c6c39f2312e6209b0dfd"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0f360d424848c6c39f2312e6209b0dfd">◆ </a></span>Role</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">enum DbcTreeModel::Role</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__tree__model_8h_source.html#l00024">24</a> of file <a class="el" href="dbc__tree__model_8h_source.html">dbc_tree_model.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||||
<a id="a4f7214b727d812885bf077352ec9ece1" name="a4f7214b727d812885bf077352ec9ece1"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a4f7214b727d812885bf077352ec9ece1">◆ </a></span>DbcTreeModel()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">DbcTreeModel::DbcTreeModel </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">QObject * </td>
|
||||
<td class="paramname"><em>parent</em> = <code>nullptr</code></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__tree__model_8cpp_source.html#l00025">25</a> of file <a class="el" href="dbc__tree__model_8cpp_source.html">dbc_tree_model.cpp</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="a8cb5a81d456cdead42b75fd3462ee00a" name="a8cb5a81d456cdead42b75fd3462ee00a"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8cb5a81d456cdead42b75fd3462ee00a">◆ </a></span>SetTree()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void DbcTreeModel::SetTree </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">std::unique_ptr< <a class="el" href="classTreeNode.html">TreeNode</a> > </td>
|
||||
<td class="paramname"><em>root</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__tree__model_8cpp_source.html#l00027">27</a> of file <a class="el" href="dbc__tree__model_8cpp_source.html">dbc_tree_model.cpp</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a8caeb5ec6141eb3e446e48df3c70b3ad" name="a8caeb5ec6141eb3e446e48df3c70b3ad"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8caeb5ec6141eb3e446e48df3c70b3ad">◆ </a></span>index()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">QModelIndex DbcTreeModel::index </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>row</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>column</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const QModelIndex & </td>
|
||||
<td class="paramname"><em>parent</em> = <code>QModelIndex()</code> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">override</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__tree__model_8cpp_source.html#l00042">42</a> of file <a class="el" href="dbc__tree__model_8cpp_source.html">dbc_tree_model.cpp</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae40bb8b8a26d205f178c6dd1134ff4b3" name="ae40bb8b8a26d205f178c6dd1134ff4b3"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae40bb8b8a26d205f178c6dd1134ff4b3">◆ </a></span>parent()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">QModelIndex DbcTreeModel::parent </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const QModelIndex & </td>
|
||||
<td class="paramname"><em>child</em></td><td>)</td>
|
||||
<td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">override</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__tree__model_8cpp_source.html#l00053">53</a> of file <a class="el" href="dbc__tree__model_8cpp_source.html">dbc_tree_model.cpp</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a30bed0d65342917c19d9183da55af452" name="a30bed0d65342917c19d9183da55af452"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a30bed0d65342917c19d9183da55af452">◆ </a></span>rowCount()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">int DbcTreeModel::rowCount </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const QModelIndex & </td>
|
||||
<td class="paramname"><em>parent</em> = <code>QModelIndex()</code></td><td>)</td>
|
||||
<td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">override</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__tree__model_8cpp_source.html#l00061">61</a> of file <a class="el" href="dbc__tree__model_8cpp_source.html">dbc_tree_model.cpp</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a397f885e7fd45c387825b4357b875c10" name="a397f885e7fd45c387825b4357b875c10"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a397f885e7fd45c387825b4357b875c10">◆ </a></span>columnCount()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">int DbcTreeModel::columnCount </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const QModelIndex & </td>
|
||||
<td class="paramname"><em>parent</em> = <code>QModelIndex()</code></td><td>)</td>
|
||||
<td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">override</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__tree__model_8cpp_source.html#l00070">70</a> of file <a class="el" href="dbc__tree__model_8cpp_source.html">dbc_tree_model.cpp</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aca81d05c81cc48c1185fc36659e96e5b" name="aca81d05c81cc48c1185fc36659e96e5b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aca81d05c81cc48c1185fc36659e96e5b">◆ </a></span>data()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">QVariant DbcTreeModel::data </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const QModelIndex & </td>
|
||||
<td class="paramname"><em>index</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>role</em> = <code>Qt::DisplayRole</code> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">override</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__tree__model_8cpp_source.html#l00074">74</a> of file <a class="el" href="dbc__tree__model_8cpp_source.html">dbc_tree_model.cpp</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aad5834e8edb00808cbfa498ea8c63fe9" name="aad5834e8edb00808cbfa498ea8c63fe9"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aad5834e8edb00808cbfa498ea8c63fe9">◆ </a></span>headerData()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">QVariant DbcTreeModel::headerData </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>section</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">Qt::Orientation </td>
|
||||
<td class="paramname"><em>orientation</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>role</em> = <code>Qt::DisplayRole</code> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">override</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__tree__model_8cpp_source.html#l00138">138</a> of file <a class="el" href="dbc__tree__model_8cpp_source.html">dbc_tree_model.cpp</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a8f7842a79144bdb24fa9c5fbdcd37295" name="a8f7842a79144bdb24fa9c5fbdcd37295"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8f7842a79144bdb24fa9c5fbdcd37295">◆ </a></span>flags()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">Qt::ItemFlags DbcTreeModel::flags </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const QModelIndex & </td>
|
||||
<td class="paramname"><em>index</em></td><td>)</td>
|
||||
<td> const</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">override</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="dbc__tree__model_8cpp_source.html#l00145">145</a> of file <a class="el" href="dbc__tree__model_8cpp_source.html">dbc_tree_model.cpp</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following files:<ul>
|
||||
<li><a class="el" href="dbc__tree__model_8h_source.html">dbc_tree_model.h</a></li>
|
||||
<li><a class="el" href="dbc__tree__model_8cpp_source.html">dbc_tree_model.cpp</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="classDbcTreeModel.html">DbcTreeModel</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,5 @@
|
||||
<map id="DbcTreeModel" name="DbcTreeModel">
|
||||
<area shape="rect" id="Node000001" title=" " alt="" coords="14,119,145,344"/>
|
||||
<area shape="rect" id="Node000002" title=" " alt="" coords="5,5,153,71"/>
|
||||
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="82,84,82,119,77,119,77,84"/>
|
||||
</map>
|
||||
@@ -0,0 +1 @@
|
||||
967c95d0a3c851ca66fee7fa9f601b98
|
||||
@@ -0,0 +1,91 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.42.4 (0)
|
||||
-->
|
||||
<!-- Title: DbcTreeModel Pages: 1 -->
|
||||
<svg width="119pt" height="262pt"
|
||||
viewBox="0.00 0.00 119.00 262.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
|
||||
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
|
||||
<style type="text/css"><![CDATA[
|
||||
.node, .edge {opacity: 0.7;}
|
||||
.node.selected, .edge.selected {opacity: 1;}
|
||||
.edge:hover path { stroke: red; }
|
||||
.edge:hover polygon { stroke: red; fill: red; }
|
||||
]]></style>
|
||||
<script type="application/ecmascript" xlink:href="svg.min.js"/>
|
||||
<svg id="graph" class="graph">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 258)">
|
||||
<title>DbcTreeModel</title>
|
||||
<!-- Node1 -->
|
||||
<g id="Node000001" class="node">
|
||||
<title>Node1</title>
|
||||
<g id="a_Node000001"><a xlink:title=" ">
|
||||
<polygon fill="#999999" stroke="transparent" points="104.5,-169 6.5,-169 6.5,0 104.5,0 104.5,-169"/>
|
||||
<text text-anchor="start" x="20.5" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcTreeModel</text>
|
||||
<text text-anchor="start" x="53.5" y="-141.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="10.5" y="-126.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="23.5" y="-126.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcTreeModel()</text>
|
||||
<text text-anchor="start" x="10.5" y="-111.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="23.5" y="-111.5" font-family="Helvetica,sans-Serif" font-size="10.00">SetTree()</text>
|
||||
<text text-anchor="start" x="10.5" y="-96.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="23.5" y="-96.5" font-family="Helvetica,sans-Serif" font-size="10.00">index()</text>
|
||||
<text text-anchor="start" x="10.5" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="23.5" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">parent()</text>
|
||||
<text text-anchor="start" x="10.5" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="23.5" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">rowCount()</text>
|
||||
<text text-anchor="start" x="10.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="23.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">columnCount()</text>
|
||||
<text text-anchor="start" x="10.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="23.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">data()</text>
|
||||
<text text-anchor="start" x="10.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="23.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">headerData()</text>
|
||||
<text text-anchor="start" x="10.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="23.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">flags()</text>
|
||||
<polygon fill="#666666" stroke="#666666" points="6.5,-151.5 6.5,-151.5 104.5,-151.5 104.5,-151.5 6.5,-151.5"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="6.5,-136.5 6.5,-136.5 104.5,-136.5 104.5,-136.5 6.5,-136.5"/>
|
||||
<polygon fill="none" stroke="#666666" points="6.5,0 6.5,-169 104.5,-169 104.5,0 6.5,0"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2 -->
|
||||
<g id="Node000002" class="node">
|
||||
<title>Node2</title>
|
||||
<g id="a_Node000002"><a xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="111,-254 0,-254 0,-205 111,-205 111,-254"/>
|
||||
<text text-anchor="start" x="5.5" y="-241.5" font-family="Helvetica,sans-Serif" font-size="10.00">QAbstractItemModel</text>
|
||||
<text text-anchor="start" x="54" y="-226.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="54" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-236.5 0.5,-236.5 111.5,-236.5 111.5,-236.5 0.5,-236.5"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-221.5 0.5,-221.5 111.5,-221.5 111.5,-221.5 0.5,-221.5"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="0,-205 0,-254 111,-254 111,-205 0,-205"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2->Node1 -->
|
||||
<g id="edge1_Node000001_Node000002" class="edge">
|
||||
<title>Node2->Node1</title>
|
||||
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M55.5,-194.72C55.5,-186.84 55.5,-178.1 55.5,-169.1"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="52,-194.89 55.5,-204.89 59,-194.89 52,-194.89"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
|
||||
<style type='text/css'>
|
||||
<![CDATA[
|
||||
[data-mouse-over-selected='false'] { opacity: 0.7; }
|
||||
[data-mouse-over-selected='true'] { opacity: 1.0; }
|
||||
]]>
|
||||
</style>
|
||||
<script type="application/ecmascript"><![CDATA[
|
||||
document.addEventListener('DOMContentLoaded', (event) => {
|
||||
highlightEdges();
|
||||
highlightAdjacentNodes();
|
||||
});
|
||||
]]></script>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.2 KiB |
@@ -0,0 +1,66 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.42.4 (0)
|
||||
-->
|
||||
<!-- Title: DbcTreeModel Pages: 1 -->
|
||||
<svg width="119pt" height="262pt"
|
||||
viewBox="0.00 0.00 119.00 262.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 258)">
|
||||
<title>DbcTreeModel</title>
|
||||
<!-- Node1 -->
|
||||
<g id="Node000001" class="node">
|
||||
<title>Node1</title>
|
||||
<g id="a_Node000001"><a xlink:title=" ">
|
||||
<polygon fill="#999999" stroke="transparent" points="104.5,-169 6.5,-169 6.5,0 104.5,0 104.5,-169"/>
|
||||
<text text-anchor="start" x="20.5" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcTreeModel</text>
|
||||
<text text-anchor="start" x="53.5" y="-141.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="10.5" y="-126.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="23.5" y="-126.5" font-family="Helvetica,sans-Serif" font-size="10.00">DbcTreeModel()</text>
|
||||
<text text-anchor="start" x="10.5" y="-111.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="23.5" y="-111.5" font-family="Helvetica,sans-Serif" font-size="10.00">SetTree()</text>
|
||||
<text text-anchor="start" x="10.5" y="-96.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="23.5" y="-96.5" font-family="Helvetica,sans-Serif" font-size="10.00">index()</text>
|
||||
<text text-anchor="start" x="10.5" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="23.5" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">parent()</text>
|
||||
<text text-anchor="start" x="10.5" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="23.5" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">rowCount()</text>
|
||||
<text text-anchor="start" x="10.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="23.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">columnCount()</text>
|
||||
<text text-anchor="start" x="10.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="23.5" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">data()</text>
|
||||
<text text-anchor="start" x="10.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="23.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">headerData()</text>
|
||||
<text text-anchor="start" x="10.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
|
||||
<text text-anchor="start" x="23.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">flags()</text>
|
||||
<polygon fill="#666666" stroke="#666666" points="6.5,-151.5 6.5,-151.5 104.5,-151.5 104.5,-151.5 6.5,-151.5"/>
|
||||
<polygon fill="#666666" stroke="#666666" points="6.5,-136.5 6.5,-136.5 104.5,-136.5 104.5,-136.5 6.5,-136.5"/>
|
||||
<polygon fill="none" stroke="#666666" points="6.5,0 6.5,-169 104.5,-169 104.5,0 6.5,0"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2 -->
|
||||
<g id="Node000002" class="node">
|
||||
<title>Node2</title>
|
||||
<g id="a_Node000002"><a xlink:title=" ">
|
||||
<polygon fill="white" stroke="transparent" points="111,-254 0,-254 0,-205 111,-205 111,-254"/>
|
||||
<text text-anchor="start" x="5.5" y="-241.5" font-family="Helvetica,sans-Serif" font-size="10.00">QAbstractItemModel</text>
|
||||
<text text-anchor="start" x="54" y="-226.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<text text-anchor="start" x="54" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-236.5 0.5,-236.5 111.5,-236.5 111.5,-236.5 0.5,-236.5"/>
|
||||
<polygon fill="#bfbfbf" stroke="#bfbfbf" points="0.5,-221.5 0.5,-221.5 111.5,-221.5 111.5,-221.5 0.5,-221.5"/>
|
||||
<polygon fill="none" stroke="#bfbfbf" points="0,-205 0,-254 111,-254 111,-205 0,-205"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node2->Node1 -->
|
||||
<g id="edge1_Node000001_Node000002" class="edge">
|
||||
<title>Node2->Node1</title>
|
||||
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
|
||||
<path fill="none" stroke="#63b8ff" d="M55.5,-194.72C55.5,-186.84 55.5,-178.1 55.5,-169.1"/>
|
||||
<polygon fill="none" stroke="#63b8ff" points="52,-194.89 55.5,-204.89 59,-194.89 52,-194.89"/>
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.4 KiB |
@@ -0,0 +1,110 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>DBC Framework: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">DBC Framework
|
||||
</div>
|
||||
<div id="projectbrief">DBC parsing and CAN signal decoding framework</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classDbcUnsupportedMultiplexingHandler.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">DbcUnsupportedMultiplexingHandler Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classDbcUnsupportedMultiplexingHandler.html">DbcUnsupportedMultiplexingHandler</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Handle</b>(const std::string &line, DbcParseContext &context) const override (defined in <a class="el" href="classDbcUnsupportedMultiplexingHandler.html">DbcUnsupportedMultiplexingHandler</a>)</td><td class="entry"><a class="el" href="classDbcUnsupportedMultiplexingHandler.html">DbcUnsupportedMultiplexingHandler</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
||||
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>~DbcStatementHandler</b>()=default (defined in <a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a>)</td><td class="entry"><a class="el" href="classDbcStatementHandler.html">DbcStatementHandler</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||