blob: 63915cc6633803a4f12e1d74d1d400b48ca52ac6 [file] [log] [blame]
Enrico Granata3f1052b2012-03-13 21:52:00 +00001"""
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"""
Enrico Granata28399ad2012-04-25 01:39:27 +00008import lldb.formatters.metrics
Enrico Granataeb4a4792012-02-23 23:10:27 +00009
Kate Stoneb9c1b512016-09-06 20:57:50 +000010
Enrico Granataeb4a4792012-02-23 23:10:27 +000011class Cache:
Enrico Granataeb4a4792012-02-23 23:10:27 +000012
Kate Stoneb9c1b512016-09-06 20:57:50 +000013 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')
Enrico Granataeb4a4792012-02-23 23:10:27 +000018
Kate Stoneb9c1b512016-09-06 20:57:50 +000019 def look_for_key(self, key):
20 if key in self.data:
21 return True
22 return False
Enrico Granataeb4a4792012-02-23 23:10:27 +000023
Kate Stoneb9c1b512016-09-06 20:57:50 +000024 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
Enrico Granataeb4a4792012-02-23 23:10:27 +000029
Kate Stoneb9c1b512016-09-06 20:57:50 +000030 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