rtlil: add const accessors for modules, wires, and cells
authorZachary Snow <zach@zachjs.com>
Wed, 24 Mar 2021 15:23:23 +0000 (11:23 -0400)
committerZachary Snow <zachary.j.snow@gmail.com>
Thu, 25 Mar 2021 14:44:08 +0000 (10:44 -0400)
kernel/rtlil.cc
kernel/rtlil.h

index 87cbaa0d5379e0dc6e75265f8246e159a9172491..7704057206eaf6353e6e620914bba1ccc2be07e0 100644 (file)
@@ -580,6 +580,11 @@ RTLIL::Module *RTLIL::Design::module(RTLIL::IdString name)
        return modules_.count(name) ? modules_.at(name) : NULL;
 }
 
+const RTLIL::Module *RTLIL::Design::module(RTLIL::IdString name) const
+{
+       return modules_.count(name) ? modules_.at(name) : NULL;
+}
+
 RTLIL::Module *RTLIL::Design::top_module()
 {
        RTLIL::Module *module = nullptr;
index bbdf355fa1f4302e83e7fc200521b05d5eb1423d..3137deb00c84079b363077f4f3c7ac1fac5d5a3d 100644 (file)
@@ -1043,6 +1043,7 @@ struct RTLIL::Design
 
        RTLIL::ObjRange<RTLIL::Module*> modules();
        RTLIL::Module *module(RTLIL::IdString name);
+       const RTLIL::Module *module(RTLIL::IdString name) const;
        RTLIL::Module *top_module();
 
        bool has(RTLIL::IdString id) const {
@@ -1191,6 +1192,15 @@ public:
                return it == cells_.end() ? nullptr : it->second;
        }
 
+       const RTLIL::Wire* wire(RTLIL::IdString id) const{
+               auto it = wires_.find(id);
+               return it == wires_.end() ? nullptr : it->second;
+       }
+       const RTLIL::Cell* cell(RTLIL::IdString id) const {
+               auto it = cells_.find(id);
+               return it == cells_.end() ? nullptr : it->second;
+       }
+
        RTLIL::ObjRange<RTLIL::Wire*> wires() { return RTLIL::ObjRange<RTLIL::Wire*>(&wires_, &refcount_wires_); }
        RTLIL::ObjRange<RTLIL::Cell*> cells() { return RTLIL::ObjRange<RTLIL::Cell*>(&cells_, &refcount_cells_); }