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

Source Code for Module lacewing.bitdict

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