2#ifndef DBC_STATEMENT_HANDLER_H
3#define DBC_STATEMENT_HANDLER_H
6#include "typefactory.h"
8#include <unordered_map>
13 std::string signalName;
14 ValueDescriptions descriptions;
15 std::size_t lineNumber;
22 std::size_t lineNumber = 0U;
23 std::vector<PendingValueDescriptions> pendingValues = {};
25 std::vector<std::vector<std::size_t>> signalLines = {};
26 void ValidateMultiplexing(
const std::string &filePath)
const;
28 void ResolveValueDescriptions(
const std::string &filePath);
34 virtual void Handle(
const std::string &line,
DbcParseContext &context)
const = 0;
39 void Handle(
const std::string &line,
DbcParseContext &context)
const override;
42 static FrameInfo ParseFrameLine(
const std::string &line);
47 void Handle(
const std::string &line,
DbcParseContext &context)
const override;
50 static SignalInfo ParseSignalLine(
const std::string &line);
55 void Handle(
const std::string &line,
DbcParseContext &context)
const override;
58 static void ParseCommentLine(
const std::string &line,
DbcDatabase &database);
63 void Handle(
const std::string &line,
DbcParseContext &context)
const override;
68 void Handle(
const std::string &line,
DbcParseContext &context)
const override;
76 template<
class Handler>
77 void RegisterType(
const std::string &keyword) {
79 m_handlers.insert_or_assign(keyword, m_factory.
create(keyword));
86 using HandlerMap = std::unordered_map<std::string, std::shared_ptr<DbcStatementHandler>>;
88 HandlerMap m_handlers;
bool Dispatch(const std::string &line, DbcParseContext &context) const
Registry-based factory for creating objects by runtime identifier.
BasePtr create(const ClassId &id, Args... args) const
Creates an instance for the given id using provided arguments.
void registerType(const ClassId &id)
Registers a Derived type under the given id.
Created: 2026-03-13 Author: Deeaitch (Dim. Himro)
Parsed DBC content stored in a simple internal form.
Describes one CAN frame from a DBC file.
Describes one signal inside a DBC frame.