""" Objective-C runtime wrapper for use by LLDB Python formatters Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. See https://llvm.org/LICENSE.txt for license information. SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception """ import lldb.formatters.metrics class Cache: def __init__(self): self.data = {} self.statistics = lldb.formatters.metrics.Metrics() self.statistics.add_metric('hit') self.statistics.add_metric('miss') def look_for_key(self, key): if key in self.data: return True return False def add_item(self, key, value, ok_to_replace=True): if not(ok_to_replace) and self.look_for_key(key): return False self.data[key] = value return True def get_value(self, key, default=None): if self.look_for_key(key): self.statistics.metric_hit('hit', key) return self.data[key] else: self.statistics.metric_hit('miss', key) return default