python: Write configuration file without reassigning sys.stdout.

Using print >>ini_file syntax instead of reassigning sys.stdout
allows the python debugger to be used.

--HG--
extra : convert_revision : 63fc268f2e80f338ad1a7abe54b9e979e2239609
This commit is contained in:
Miles Kaufmann 2007-08-30 15:16:59 -04:00
parent e4eea9ee04
commit eddf6f1637
3 changed files with 15 additions and 15 deletions

View file

@ -721,37 +721,38 @@ class SimObject(object):
for child in child_names:
self._children[child].unproxy_all()
def print_ini(self):
print '[' + self.path() + ']' # .ini section header
def print_ini(self, ini_file):
print >>ini_file, '[' + self.path() + ']' # .ini section header
instanceDict[self.path()] = self
if hasattr(self, 'type'):
print 'type=%s' % self.type
print >>ini_file, 'type=%s' % self.type
child_names = self._children.keys()
child_names.sort()
if len(child_names):
print 'children=%s' % ' '.join(child_names)
print >>ini_file, 'children=%s' % ' '.join(child_names)
param_names = self._params.keys()
param_names.sort()
for param in param_names:
value = self._values.get(param)
if value != None:
print '%s=%s' % (param, self._values[param].ini_str())
print >>ini_file, '%s=%s' % (param,
self._values[param].ini_str())
port_names = self._ports.keys()
port_names.sort()
for port_name in port_names:
port = self._port_refs.get(port_name, None)
if port != None:
print '%s=%s' % (port_name, port.ini_str())
print >>ini_file, '%s=%s' % (port_name, port.ini_str())
print # blank line between objects
print >>ini_file # blank line between objects
for child in child_names:
self._children[child].print_ini()
self._children[child].print_ini(ini_file)
def getCCParams(self):
if self._ccParams:

View file

@ -176,9 +176,9 @@ class VectorParamValue(list):
return [v.unproxy(base) for v in self]
class SimObjVector(VectorParamValue):
def print_ini(self):
def print_ini(self, ini_file):
for v in self:
v.print_ini()
v.print_ini(ini_file)
class VectorParamDesc(ParamDesc):
# Convert assigned value to appropriate type. If the RHS is not a

View file

@ -45,11 +45,10 @@ def instantiate(root):
ticks.fixGlobalFrequency()
root.unproxy_all()
# ugly temporary hack to get output to config.ini
sys.stdout = file(os.path.join(options.outdir, 'config.ini'), 'w')
root.print_ini()
sys.stdout.close() # close config.ini
sys.stdout = sys.__stdout__ # restore to original
ini_file = file(os.path.join(options.outdir, 'config.ini'), 'w')
root.print_ini(ini_file)
ini_file.close() # close config.ini
# Initialize the global statistics
internal.stats.initSimStats()