From 7f9aa8505fed73223de6104fa8405949b78e95f9 Mon Sep 17 00:00:00 2001 From: Braden Ganetsky Date: Fri, 16 Aug 2024 17:20:12 -0500 Subject: [PATCH] Fix containers of reference type --- extra/boost_unordered_printers.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/extra/boost_unordered_printers.py b/extra/boost_unordered_printers.py index c92add0d..71f0c782 100644 --- a/extra/boost_unordered_printers.py +++ b/extra/boost_unordered_printers.py @@ -18,6 +18,12 @@ class BoostUnorderedHelpers: else: return e + def maybe_unwrap_reference(value): + if value.type.code == gdb.TYPE_CODE_REF: + return value.referenced_value() + else: + return value + def countr_zero(n): for i in range(32): if (n & (1 << i)) != 0: @@ -36,7 +42,7 @@ class BoostUnorderedPointerCustomizationPoint: class BoostUnorderedFcaPrinter: def __init__(self, val): - self.val = val + self.val = BoostUnorderedHelpers.maybe_unwrap_reference(val) self.name = f"{self.val.type.strip_typedefs()}".split("<")[0] self.name = self.name.replace("boost::unordered::", "boost::") self.is_map = self.name.endswith("map") @@ -94,7 +100,7 @@ class BoostUnorderedFcaIteratorPrinter: class BoostUnorderedFoaPrinter: def __init__(self, val): - self.val = val + self.val = BoostUnorderedHelpers.maybe_unwrap_reference(val) self.name = f"{self.val.type.strip_typedefs()}".split("<")[0] self.name = self.name.replace("boost::unordered::", "boost::") self.is_map = self.name.endswith("map")