126a127
> self.printControllerPython(path)
136a138,160
> def printControllerPython(self, path):
> code = code_formatter()
> ident = self.ident
> py_ident = "%s_Controller" % ident
> c_ident = "%s_Controller" % self.ident
> code('''
> from m5.params import *
> from m5.SimObject import SimObject
> from Controller import RubyController
>
> class $py_ident(RubyController):
> type = '$py_ident'
> ''')
> code.indent()
> for param in self.config_parameters:
> dflt_str = ''
> if param.default is not None:
> dflt_str = str(param.default) + ', '
> code('${{param.name}} = Param.Int(${dflt_str}"")')
> code.dedent()
> code.write(path, '%s.py' % py_ident)
>
>
154a179,180
> #include "params/$c_ident.hh"
>
177c203,204
< $c_ident(const string & name);
---
> typedef ${c_ident}Params Params;
> $c_ident(const Params *p);
179c206
< void init(Network* net_ptr, const vector<string> & argv);
---
> void init();
280a308,314
> $c_ident *
> ${c_ident}Params::create()
> {
> return new $c_ident(this);
> }
>
>
286,287c320,321
< $c_ident::$c_ident(const string &name)
< : m_name(name)
---
> $c_ident::$c_ident(const Params *p)
> : AbstractController(p)
288a323,327
> m_version = p->version;
> m_transitions_per_cycle = p->transitions_per_cycle;
> m_buffer_size = p->buffer_size;
> m_recycle_latency = p->recycle_latency;
> m_number_of_TBEs = p->number_of_TBEs;
290a330,331
> for param in self.config_parameters:
> code('m_${{param.name}} = p->${{param.name}};')
301c342
< void $c_ident::init(Network *net_ptr, const vector<string> &argv)
---
> void $c_ident::init()
303,332d343
< for (size_t i = 0; i < argv.size(); i += 2) {
< if (argv[i] == "version")
< m_version = atoi(argv[i+1].c_str());
< else if (argv[i] == "transitions_per_cycle")
< m_transitions_per_cycle = atoi(argv[i+1].c_str());
< else if (argv[i] == "buffer_size")
< m_buffer_size = atoi(argv[i+1].c_str());
< else if (argv[i] == "recycle_latency")
< m_recycle_latency = atoi(argv[i+1].c_str());
< else if (argv[i] == "number_of_TBEs")
< m_number_of_TBEs = atoi(argv[i+1].c_str());
< ''')
<
< code.indent()
< code.indent()
< for param in self.config_parameters:
< code('else if (argv[i] == "${{param.name}}")')
< if param.type_ast.type.ident == "int":
< code(' m_${{param.name}} = atoi(argv[i+1].c_str());')
< elif param.type_ast.type.ident == "bool":
< code(' m_${{param.name}} = string_to_bool(argv[i+1]);')
< else:
< self.error("only int and bool parameters are "\
< "currently supported")
< code.dedent()
< code.dedent()
< code('''
< }
<
< m_net_ptr = net_ptr;
335,338d345
< for (size_t i = 0; i < argv.size(); i += 2) {
< if (argv[i] != "version")
< m_cfg[argv[i]] = argv[i+1];
< }