Evaluation optimizations.
[python-bulletml.git] / bulletml / expr.py
index 8022476..33f7d44 100644 (file)
@@ -57,8 +57,13 @@ class NumberDef(object):
         if self.__value is not None:
             return self.__value
         rand = random.random()
-        variables = dict(rand=rand, rank=rank, params=params)
+        variables = { 'rand': rand, 'rank': rank, 'params': params }
         return eval(self.__expr, variables)
 
     def __repr__(self):
         return "%s(%r)" % (type(self).__name__, self.__original)
+
+class INumberDef(NumberDef):
+    """A NumberDef, but returns rounded integer results."""
+    def __call__(self, params, rank):
+        return int(round(super(INumberDef, self).__call__(params, rank)))