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