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