2#ifndef DBC_STATEMENT_HANDLER_H
3#define DBC_STATEMENT_HANDLER_H
6#include "typefactory.h"
8#include <unordered_map>
19 virtual void Handle(
const std::string &line,
DbcParseContext &context)
const = 0;
24 void Handle(
const std::string &line,
DbcParseContext &context)
const override;
27 static FrameInfo ParseFrameLine(
const std::string &line);
32 void Handle(
const std::string &line,
DbcParseContext &context)
const override;
35 static SignalInfo ParseSignalLine(
const std::string &line);
40 void Handle(
const std::string &line,
DbcParseContext &context)
const override;
43 static void ParseCommentLine(
const std::string &line,
DbcDatabase &database);
51 template<
class Handler>
52 void RegisterType(
const std::string &keyword) {
54 m_handlers.insert_or_assign(keyword, m_factory.
create(keyword));
62 std::unordered_map<std::string, std::shared_ptr<DbcStatementHandler>> 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.