aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--proto_writer.cc12
1 files changed, 10 insertions, 2 deletions
diff --git a/proto_writer.cc b/proto_writer.cc
index 3ed8624..8935485 100644
--- a/proto_writer.cc
+++ b/proto_writer.cc
@@ -89,9 +89,17 @@ struct Transform {
ElfSymbol::Binding operator()(stg::ElfSymbol::Binding);
ElfSymbol::Visibility operator()(stg::ElfSymbol::Visibility);
+ std::unordered_map<uint32_t, Id> GetInternalIdByExternalIdMap() {
+ std::unordered_map<uint32_t, Id> internal_id_map;
+ for (const auto [id, ext_id] : external_id_by_internal_id) {
+ internal_id_map.emplace(ext_id, id);
+ }
+ return internal_id_map;
+ }
+
const Graph& graph;
proto::STG& stg;
- std::unordered_map<Id, uint32_t> external_id;
+ std::unordered_map<Id, uint32_t> external_id_by_internal_id;
std::unordered_set<uint32_t> used_ids;
// Function object: Id -> uint32_t
@@ -100,7 +108,7 @@ struct Transform {
template <typename MapId>
uint32_t Transform<MapId>::operator()(Id id) {
- auto [it, inserted] = external_id.emplace(id, 0);
+ auto [it, inserted] = external_id_by_internal_id.emplace(id, 0);
if (inserted) {
uint32_t mapped_id = map_id(id);