aboutsummaryrefslogtreecommitdiffstats
path: root/common/nextpnr.cc
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2018-06-12 15:50:33 +0200
committerClifford Wolf <clifford@clifford.at>2018-06-12 15:50:33 +0200
commit9c275d0a653b11f2a494321be2ab66678117db2d (patch)
treecccabe4cfbb191697527e915175b70105ac470f6 /common/nextpnr.cc
parent7e879953d62d486eff62a27fe94b7b5894a251b8 (diff)
downloadnextpnr-9c275d0a653b11f2a494321be2ab66678117db2d.tar.gz
nextpnr-9c275d0a653b11f2a494321be2ab66678117db2d.tar.bz2
nextpnr-9c275d0a653b11f2a494321be2ab66678117db2d.zip
Add fast IdString <-> PortPin conversion
Signed-off-by: Clifford Wolf <clifford@clifford.at>
Diffstat (limited to 'common/nextpnr.cc')
-rw-r--r--common/nextpnr.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/common/nextpnr.cc b/common/nextpnr.cc
index ce2cef63..d2b887de 100644
--- a/common/nextpnr.cc
+++ b/common/nextpnr.cc
@@ -28,7 +28,15 @@ void IdString::initialize()
{
database_str_to_idx = new std::unordered_map<std::string, int>;
database_idx_to_str = new std::vector<const std::string*>;
- auto insert_rc = database_str_to_idx->insert({std::string(), 0});
+ initialize_add("", 0);
+ initialize_chip();
+}
+
+void IdString::initialize_add(const char *s, int idx)
+{
+ assert(database_str_to_idx->count(s) == 0);
+ assert(database_idx_to_str->size() == idx);
+ auto insert_rc = database_str_to_idx->insert({s, idx});
database_idx_to_str->push_back(&insert_rc.first->first);
}