    void addSignal(const MessageId &id, const Signal &sig);
    void updateSignal(const MessageId &id, const QString &sig_name, const Signal &sig);
    void removeSignal(const MessageId &id, const QString &sig_name);
  
    static std::vector<std::string> allDBCNames();
    inline QString name() const { return name_; }
    void updateMsg(const MessageId &id, const QString &name, uint32_t size);
    void removeMsg(const MessageId &id);
    inline const std::map<uint32_t, Msg> &messages() const { return msgs; }
    inline const Msg *msg(const MessageId &id) const { return msg(id.address); }
 
</s> remove   inline const std::map<uint32_t, Msg> &messages() const { return msgs; }
  inline const Msg *msg(const MessageId &id) const { return msg(id.address); }
  inline const Msg *msg(uint32_t address) const {
 </s> add   inline const std::map<uint32_t, cabana::Msg> &messages() const { return msgs; }
  inline const cabana::Msg *msg(const MessageId &id) const { return msg(id.address); }
  inline const cabana::Msg *msg(uint32_t address) const { </s> remove   void addSignal(const MessageId &id, const Signal &sig);
  void updateSignal(const MessageId &id, const QString &sig_name, const Signal &sig);
 </s> add   void addSignal(const MessageId &id, const cabana::Signal &sig);
  void updateSignal(const MessageId &id, const QString &sig_name, const cabana::Signal &sig); </s> remove const QString UNTITLED = "untitled";

// TODO: Add helper function in dbc.h
double get_raw_value(uint8_t *data, size_t data_size, const Signal &sig);
bool operator==(const Signal &l, const Signal &r);
inline bool operator!=(const Signal &l, const Signal &r) { return !(l == r); }
int bigEndianStartBitsIndex(int start_bit);
int bigEndianBitIndex(int index);
void updateSigSizeParamsFromRange(Signal &s, int start_bit, int size);
std::pair<int, int> getSignalRange(const Signal *s);
 </s> add  </s> remove void DBCManager::updateSignal(const MessageId &id, const QString &sig_name, const Signal &sig) {
  if (auto m = const_cast<Msg *>(msg(id))) {
    if (auto s = (Signal *)m->sig(sig_name)) {
 </s> add void DBCManager::updateSignal(const MessageId &id, const QString &sig_name, const cabana::Signal &sig) {
  if (auto m = const_cast<cabana::Msg *>(msg(id))) {
    if (auto s = (cabana::Signal *)m->sig(sig_name)) { </s> remove   EditSignalCommand(const MessageId &id, const Signal *sig, const Signal &new_sig, QUndoCommand *parent = nullptr);
 </s> add   EditSignalCommand(const MessageId &id, const cabana::Signal *sig, const cabana::Signal &new_sig, QUndoCommand *parent = nullptr);
    void addSignal(const MessageId &id, const Signal &sig);
    void updateSignal(const MessageId &id, const QString &sig_name, const Signal &sig);
    void removeSignal(const MessageId &id, const QString &sig_name);
  

    inline QString name() const { return name_; }
    void updateMsg(const MessageId &id, const QString &name, uint32_t size);
    void removeMsg(const MessageId &id);
    inline const std::map<uint32_t, Msg> &messages() const { return msgs; }
    inline const Msg *msg(const MessageId &id) const { return msg(id.address); }
keep keep keep keep replace keep keep keep keep keep
 cabana: refactor Msg and Signal into dbc.cc (#27552) 
tools/cabana/dbcmanager.h