1""" 2Objective-C runtime wrapper for use by LLDB Python formatters 3 4Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5See https://llvm.org/LICENSE.txt for license information. 6SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7""" 8import lldb.formatters.metrics 9 10 11class Cache: 12 13 def __init__(self): 14 self.data = {} 15 self.statistics = lldb.formatters.metrics.Metrics() 16 self.statistics.add_metric('hit') 17 self.statistics.add_metric('miss') 18 19 def look_for_key(self, key): 20 if key in self.data: 21 return True 22 return False 23 24 def add_item(self, key, value, ok_to_replace=True): 25 if not(ok_to_replace) and self.look_for_key(key): 26 return False 27 self.data[key] = value 28 return True 29 30 def get_value(self, key, default=None): 31 if self.look_for_key(key): 32 self.statistics.metric_hit('hit', key) 33 return self.data[key] 34 else: 35 self.statistics.metric_hit('miss', key) 36 return default 37