This commit is contained in:
deeaitch committed 2026-10-20 13:06:55 -04:00
1 parent 713276d34a
commit fc97682b37
45 files changed
+6760 -5

No files matched your search

+20 -1
View File
@@ -241,7 +241,26 @@ has no metadata payload. The payload types are:
- `FrameInfo`
- `SignalInfo`
The tree supports browsing through the optional `DbcTreeModel` adapter.
The tree is independent of Qt and supports browsing through the optional
`DbcTreeModel` adapter. `GetParent()` returns a non-owning parent pointer;
`GetRow()` returns the zero-based sibling position (zero for a detached node or
root). `GetChild()` returns nullptr outside the child range, and `AddChild()`
ignores null children. Appending children preserves existing addresses and rows.
Nodes cannot be copied or moved. Transfer their `std::unique_ptr` ownership to
preserve parent links and addresses. `AddChild()` accepts an rvalue ownership
handle and rejects self/ancestor insertion and already-attached children with
`std::invalid_argument` before consuming ownership. There is no detach or
reparent operation; callers must supply exclusive ownership.
`GetFrameKey()` returns `std::optional<FrameKey>` for frame nodes and signals
directly attached to a frame. `GetSignalKey()` returns `std::optional<SignalKey>`
for those signals. Roots, detached signals, and signals without a frame parent
have no key. Keys use normalized CAN ID plus standard/extended type, and signal
keys also include the signal name. They match runtime definition keys, remain
independent of row order and frame display names, and survive source-database
changes or destruction. Renaming a signal changes its logical identity. Returned
keys are values and may be retained after destroying the tree.
It is **not** the primary runtime decode structure.