added DestructiveScratchPad

This commit is contained in:
Darren Ranalli 2008-06-23 17:49:56 +00:00
parent 6ea55fbf08
commit b06bf4d776
1 changed files with 21 additions and 3 deletions

View File

@ -29,7 +29,7 @@ __all__ = ['enumerate', 'unique', 'indent', 'nonRepeatingRandomList',
'GoldenRectangle', 'pivotScalar', 'rad90', 'rad180', 'rad270', 'rad360',
'nullGen', 'loopGen', 'makeFlywheelGen', 'flywheel', 'choice',
'printStack', 'printReverseStack', 'listToIndex2item', 'listToItem2index',
'pandaBreak','pandaTrace','formatTimeCompact']
'pandaBreak','pandaTrace','formatTimeCompact','DestructiveScratchPad']
import types
import string
@ -2364,13 +2364,30 @@ except:
class ScratchPad:
"""empty class to stick values onto"""
def __init__(self, **kArgs):
for key, value in kArgs.items():
for key, value in kArgs.iteritems():
setattr(self, key, value)
self._keys = kArgs.keys()
self._keys = set(kArgs.keys())
def add(self, **kArgs):
for key, value in kArgs.iteritems():
setattr(self, key, value)
self._keys.update(kArgs.keys())
def destroy(self):
for key in self._keys:
delattr(self, key)
class DestructiveScratchPad(ScratchPad):
# automatically calls destroy() on elements passed to __init__
def add(self, **kArgs):
for key, value in kArgs.iteritems():
if hasattr(self, key):
getattr(self, key).destroy()
setattr(self, key, value)
self._keys.update(kArgs.keys())
def destroy(self):
for key in self._keys:
getattr(self, key).destroy()
ScratchPad.destroy(self)
class Sync:
_SeriesGen = SerialNumGen()
def __init__(self, name, other=None):
@ -3394,6 +3411,7 @@ __builtin__.Queue = Queue
__builtin__.Enum = Enum
__builtin__.SerialNumGen = SerialNumGen
__builtin__.ScratchPad = ScratchPad
__builtin__.DestructiveScratchPad = DestructiveScratchPad
__builtin__.uniqueName = uniqueName
__builtin__.serialNum = serialNum
__builtin__.profiled = profiled