Package lacewing :: Module bitdict
[frames] | no frames]

Source Code for Module lacewing.bitdict

 1  # Copyright (c) 2011 Mathias Kaerlev. 
 2  # See LICENSE for details. 
 3   
4 -class BitDict(object):
5 keys = None 6 flags = 0 7
8 - def __init__(self, *arg):
9 if arg[0] is False: 10 return 11 self.keys = dict([(item, index) for (index, item) in enumerate(arg)])
12
13 - def __getitem__(self, key):
14 return self.flags & (2 ** self.keys[key]) != 0
15
16 - def __setitem__(self, key, value):
17 if value: 18 self.flags |= 2**self.keys[key] 19 else: 20 self.flags &= ~2**self.keys[key]
21
22 - def iteritems(self):
23 for key, index in self.keys.iteritems(): 24 yield key, self[key]
25
26 - def setFlags(self, flags):
27 self.flags = flags
28
29 - def getFlags(self):
30 return self.flags
31
32 - def copy(self):
33 newDict = BitDict(False) 34 newDict.keys = self.keys 35 return newDict
36
37 - def __str__(self):
38 actual_dict = {} 39 for key in self.keys: 40 actual_dict[key] = self[key] 41 return '%s' % actual_dict
42
43 - def __repr__(self):
44 return str(self)
45