diff --git a/direct/src/showbase/PythonUtil.py b/direct/src/showbase/PythonUtil.py index 6175bb069a..0bc3cd986f 100644 --- a/direct/src/showbase/PythonUtil.py +++ b/direct/src/showbase/PythonUtil.py @@ -1785,7 +1785,7 @@ def randUint32(rng=random.random): rng must return float in [0..1]""" return long(rng() * 0xFFFFFFFFL) -class SerialNum: +class SerialNumGen: """generates serial numbers""" def __init__(self, start=None): if start is None: @@ -1795,10 +1795,13 @@ class SerialNum: self.__counter += 1 return self.__counter -_uname = SerialNum() +_serialGen = SerialNumGen() +def serialNum(): + global _serialGen + return _serialGen.next() def uniqueName(name): - global _uname - return '%s-%s' % (name, _uname.next()) + global _serialGen + return '%s-%s' % (name, _serialGen.next()) def beginExports(modname): """The beginExports/endExports construct is used to bracket @@ -1995,6 +1998,69 @@ def safeRepr(obj): def isDefaultValue(x): return x == type(x)() +# debugging functions that conditionally bring up the debugger in __dev__ +# all can be used with assert, as in 'assert _equal(a,b)' +def setTrace(): + if __dev__: + print StackTrace() + import pdb;pdb.set_trace() + # setTrace + return True +def _equal(a,b): + if a != b: + if __dev__: + print StackTrace() + import pdb;pdb.set_trace() + # setTrace + else: + assert a == b + return True +def _notEqual(a,b): + if a == b: + if __dev__: + print StackTrace() + import pdb;pdb.set_trace() + # setTrace + else: + assert a != b + return True +def _isNone(a): + if a is not None: + if __dev__: + print StackTrace() + import pdb;pdb.set_trace() + # setTrace + else: + assert a is None + return True +def _notNone(a): + if a is None: + if __dev__: + print StackTrace() + import pdb;pdb.set_trace() + pass # import pdb;pdb.set_trace() + else: + assert a is not None + return True +def _contains(container,item): + if item not in container: + if __dev__: + print StackTrace() + import pdb;pdb.set_trace() + # setTrace + else: + assert item in container + return True +def _notIn(container,item): + if item in container: + if __dev__: + print StackTrace() + import pdb;pdb.set_trace() + # setTrace + else: + assert item not in container + return True + class ScratchPad: """empty class to stick values onto""" def __init__(self, **kArgs): @@ -2005,7 +2071,15 @@ import __builtin__ __builtin__.Functor = Functor __builtin__.Stack = Stack __builtin__.Queue = Queue -__builtin__.SerialNum = SerialNum +__builtin__.SerialNumGen = SerialNumGen __builtin__.ScratchPad = ScratchPad __builtin__.uniqueName = uniqueName +__builtin__.serialNum = serialNum __builtin__.profiled = profiled +__builtin__.setTrace = setTrace +__builtin__._equal = _equal +__builtin__._notEqual = _notEqual +__builtin__._isNone = _isNone +__builtin__._notNone = _notNone +__builtin__._contains = _contains +__builtin__._notIn = _notIn