1""" 2Objective-C runtime wrapper for use by LLDB Python formatters 3 4part of The LLVM Compiler Infrastructure 5This file is distributed under the University of Illinois Open Source 6License. See LICENSE.TXT for details. 7""" 8import lldb.formatters.metrics 9 10class Cache: 11 def __init__(self): 12 self.data = {} 13 self.statistics = lldb.formatters.metrics.Metrics() 14 self.statistics.add_metric('hit') 15 self.statistics.add_metric('miss') 16 17 def look_for_key(self,key): 18 if key in self.data: 19 return True 20 return False 21 22 def add_item(self,key,value,ok_to_replace=True): 23 if not(ok_to_replace) and self.look_for_key(key): 24 return False 25 self.data[key] = value 26 return True 27 28 def get_value(self,key,default=None): 29 if self.look_for_key(key): 30 self.statistics.metric_hit('hit',key) 31 return self.data[key] 32 else: 33 self.statistics.metric_hit('miss',key) 34 return default 35 36