From 2cbed52bf7a3ca68504d96d10ec35fc67e8c7d82 Mon Sep 17 00:00:00 2001 From: Sei Lisa Date: Thu, 31 Jul 2014 03:29:21 +0200 Subject: [PATCH] Add optimization of declarations. integer a = 0; -> integer a; float f; -> float f = 0; vector v; -> vector v = <0,0,0>; rotation r -> rotation r = <0,0,0,1>; --- lslopt/lsloptimizer.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/lslopt/lsloptimizer.py b/lslopt/lsloptimizer.py index c8b9b74..bb665ed 100644 --- a/lslopt/lsloptimizer.py +++ b/lslopt/lsloptimizer.py @@ -521,13 +521,21 @@ class optimizer(object): return if nt == 'DECL': - # The expression code is elsewhere. if child: self.FoldTree(child, 0) - # TODO: Remove assignment if integer zero. + # Remove assignment if integer zero. + if node['t'] == 'integer' and child[0]['nt'] == 'CONST' \ + and not child[0]['value']: + del node['ch'] + child = None else: - # TODO: Add assignment if vector, rotation or float. - pass + # Add assignment if vector, rotation or float. + if node['t'] in ('float', 'vector', 'rotation'): + typ = node['t'] + node['ch'] = [{'nt':'CONST', 't':typ, 'value': + 0.0 if typ == 'float' else + lslfuncs.ZERO_VECTOR if typ == 'vector' else + lslfuncs.ZERO_ROTATION}] return if nt in self.ignored_stmts: