aboutsummaryrefslogtreecommitdiffstats
path: root/lib/bb/data.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bb/data.py')
-rw-r--r--lib/bb/data.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/bb/data.py b/lib/bb/data.py
index 0aeda8de0..32aab74f3 100644
--- a/lib/bb/data.py
+++ b/lib/bb/data.py
@@ -38,6 +38,38 @@ from bb import note, debug, data_dict
_dict_type = data_dict.DataDict
_dict_p_type = data_dict.DataDictPackage
+class DataDictCache:
+ """
+ Databacked Dictionary implementation
+ """
+ def __init__(self, cache_dir):
+ self.cache_dir = cache_dir
+ self.files = []
+
+ def has_key(self,key):
+ return key in self.files
+
+ def keys(self):
+ return self.files
+
+ def __setitem__(self, key, data):
+ """
+ Add the key to the list of known files and
+ place the data in the cache?
+ """
+ if key in self.files:
+ return
+
+ self.files.append(key)
+
+ def __getitem__(self, key):
+ if not key in self.files:
+ return None
+
+ # not cached yet
+ return _dict_p_type(self.cache_dir, key,False,None)
+
+
def init():
return _dict_type()
@@ -48,6 +80,14 @@ def init_db(cache,name,clean,parent = None):
def init_db_mtime(cache,cache_bbfile):
return _dict_p_type.mtime(cache,cache_bbfile)
+def pkgdata(use_cache, cache):
+ """
+ Return some sort of dictionary to lookup parsed dictionaires
+ """
+ if use_cache:
+ return DataDictCache(cache)
+ return {}
+
_data_dict = init()
def createCopy(source):