xref: /llvm-project/lldb/examples/summaries/cocoa/cache.py (revision 2238dcc39358353cac21df75c3c3286ab20b8f53)
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    def __init__(self):
13        self.data = {}
14        self.statistics = lldb.formatters.metrics.Metrics()
15        self.statistics.add_metric("hit")
16        self.statistics.add_metric("miss")
17
18    def look_for_key(self, key):
19        if key in self.data:
20            return True
21        return False
22
23    def add_item(self, key, value, ok_to_replace=True):
24        if not (ok_to_replace) and self.look_for_key(key):
25            return False
26        self.data[key] = value
27        return True
28
29    def get_value(self, key, default=None):
30        if self.look_for_key(key):
31            self.statistics.metric_hit("hit", key)
32            return self.data[key]
33        else:
34            self.statistics.metric_hit("miss", key)
35            return default
36