Lines Matching refs:code

11 # modified or unmodified, in source code or in binary form.
20 # met: redistributions of source code must retain the above copyright
102 # allows parameter validity checking in the Python code. Continuing
130 def createCxxConfigDirectoryEntryFile(code, name, simobj, is_header):
134 code('#include "params/%s.hh"' % name)
139 code('#include "%s"' % param.ptype._value_dict['cxx_header'])
140 code('#include "params/%s.hh"' % param.ptype.__name__)
142 param.ptype.cxx_ini_predecls(code)
147 code('#include "sim/cxx_config.hh"')
148 code()
149 code('class ${param_class} : public CxxConfigParams,'
151 code('{')
152 code(' private:')
153 code.indent()
154 code('class DirectoryEntry : public CxxConfigDirectoryEntry')
155 code('{')
156 code(' public:')
157 code.indent()
158 code('DirectoryEntry();');
159 code()
160 code('CxxConfigParams *makeParamsObject() const')
161 code('{ return new ${param_class}; }')
162 code.dedent()
163 code('};')
164 code()
165 code.dedent()
166 code(' public:')
167 code.indent()
171 code('#include "%s"' % simobj._value_dict['cxx_header'])
172 code('#include "base/str.hh"')
173 code('#include "cxx_config/${name}.hh"')
175 code()
176 code('${member_prefix}DirectoryEntry::DirectoryEntry()');
177 code('{')
182 code.indent()
187 code('parameters["%s"] = new ParamDesc("%s", %s, %s);' %
195 code('ports["%s"] = new PortDesc("%s", %s, %s);' %
199 code.dedent()
200 code('}')
201 code()
203 code('bool ${member_prefix}setSimObject(const std::string &name,')
204 code(' SimObject *simObject)${end_of_decl}')
207 code('{')
208 code.indent()
209 code('bool ret = true;')
210 code()
211 code('if (false) {')
217 code('} else if (name == "${{param.name}}") {')
218 code.indent()
219 code('this->${{param.name}} = '
221 code('if (simObject && !this->${{param.name}})')
222 code(' ret = false;')
223 code.dedent()
224 code('} else {')
225 code(' ret = false;')
226 code('}')
227 code()
228 code('return ret;')
229 code.dedent()
230 code('}')
232 code()
233 code('bool ${member_prefix}setSimObjectVector('
235 code(' const std::vector<SimObject *> &simObjects)${end_of_decl}')
238 code('{')
239 code.indent()
240 code('bool ret = true;')
241 code()
242 code('if (false) {')
248 code('} else if (name == "${{param.name}}") {')
249 code.indent()
250 code('this->${{param.name}}.clear();')
251 code('for (auto i = simObjects.begin(); '
253 code('{')
254 code.indent()
255 code('${{param.ptype.cxx_type}} object = '
257 code('if (*i && !object)')
258 code(' ret = false;')
259 code('else')
260 code(' this->${{param.name}}.push_back(object);')
261 code.dedent()
262 code('}')
263 code.dedent()
264 code('} else {')
265 code(' ret = false;')
266 code('}')
267 code()
268 code('return ret;')
269 code.dedent()
270 code('}')
272 code()
273 code('void ${member_prefix}setName(const std::string &name_)'
277 code('{')
278 code.indent()
279 code('this->name = name_;')
280 code.dedent()
281 code('}')
284 code('const std::string &${member_prefix}getName()')
285 code('{ return this->name; }')
287 code()
288 code('bool ${member_prefix}setParam(const std::string &name,')
289 code(' const std::string &value, const Flags flags)${end_of_decl}')
292 code('{')
293 code.indent()
294 code('bool ret = true;')
295 code()
296 code('if (false) {')
302 code('} else if (name == "${{param.name}}") {')
303 code.indent()
304 param.ptype.cxx_ini_parse(code,
306 code.dedent()
307 code('} else {')
308 code(' ret = false;')
309 code('}')
310 code()
311 code('return ret;')
312 code.dedent()
313 code('}')
315 code()
316 code('bool ${member_prefix}setParamVector('
318 code(' const std::vector<std::string> &values,')
319 code(' const Flags flags)${end_of_decl}')
322 code('{')
323 code.indent()
324 code('bool ret = true;')
325 code()
326 code('if (false) {')
332 code('} else if (name == "${{param.name}}") {')
333 code.indent()
334 code('${{param.name}}.clear();')
335 code('for (auto i = values.begin(); '
337 code('{')
338 code.indent()
339 code('${{param.ptype.cxx_type}} elem;')
340 param.ptype.cxx_ini_parse(code,
342 code('if (ret)')
343 code(' this->${{param.name}}.push_back(elem);')
344 code.dedent()
345 code('}')
346 code.dedent()
347 code('} else {')
348 code(' ret = false;')
349 code('}')
350 code()
351 code('return ret;')
352 code.dedent()
353 code('}')
355 code()
356 code('bool ${member_prefix}setPortConnectionCount('
358 code(' unsigned int count)${end_of_decl}')
361 code('{')
362 code.indent()
363 code('bool ret = true;')
364 code()
365 code('if (false)')
366 code(' ;')
368 code('else if (name == "${{port.name}}")')
369 code(' this->port_${{port.name}}_connection_count = count;')
370 code('else')
371 code(' ret = false;')
372 code()
373 code('return ret;')
374 code.dedent()
375 code('}')
377 code()
378 code('SimObject *${member_prefix}simObjectCreate()${end_of_decl}')
381 code('{')
383 code(' return NULL;')
385 code(' return this->create();')
386 code('}')
389 code()
390 code('static CxxConfigDirectoryEntry'
392 code('{ return new DirectoryEntry; }')
395 code.dedent()
396 code('};')
680 def cxx_predecls(cls, code):
681 code('#include "params/$cls.hh"')
683 def pybind_predecls(cls, code):
684 code('#include "${{cls.cxx_header}}"')
686 def pybind_decl(cls, code):
696 code('''#include "pybind11/pybind11.h"
709 param.pybind_predecls(code)
711 code('''namespace py = pybind11;
718 code.indent()
720 code('py::class_<${cls}Params, ${{cls._base.type}}Params, ' \
724 code('py::class_<${cls}Params, ' \
728 code.indent()
730 code('.def(py::init<>())')
731 code('.def("create", &${cls}Params::create)')
741 exp.export(code, "%sParams" % cls)
743 code(';')
744 code()
745 code.dedent()
762 code('py::class_<${{cls.cxx_class}}, ${base_str}, ' \
766 code('py::class_<${{cls.cxx_class}}, ' \
769 code.indent()
771 exp.export(code, cls.cxx_class)
772 code(';')
773 code.dedent()
774 code()
775 code.dedent()
776 code('}')
777 code()
778 code('static EmbeddedPyBind embed_obj("${0}", module_init, "${1}");',
785 def cxx_param_decl(cls, code):
855 def declare(self, code):
859 arg.declare(code)
862 code('namespace $ns {')
865 code('template <${{", ".join(self.template_params)}}>')
867 code('class ${{self.name}};')
870 code('} // namespace $ns')
872 code('''\
884 code('''#include <string>''')
891 cxx_class.declare(code)
894 param.cxx_predecls(code)
896 port.cxx_predecls(code)
897 code()
900 code('#include "params/${{cls._base.type}}.hh"')
901 code()
905 code('#include "enums/${{ptype.__name__}}.hh"')
906 code()
909 code("struct ${cls}Params")
911 code(" : public ${{cls._base.type}}Params")
912 code("{")
915 code(" ${{cls.cxx_type}} create();")
917 code.indent()
919 code('''
927 param.cxx_decl(code)
929 port.cxx_decl(code)
931 code.dedent()
932 code('};')
934 code()
935 code('#endif // __PARAMS__${cls}__')
936 return code
940 def cxx_config_param_file(cls, code, is_header):
941 createCxxConfigDirectoryEntryFile(code, cls.__name__, cls, is_header)
942 return code
1079 # the code in this class deals with the configuration hierarchy itself
1366 # clear out child with given name. This code is not likely to be exercised.
1380 # This code path had an undiscovered bug that would make it fail
1561 # in the Python code that assembled this system
1690 exec a list of Python code strings contained in params.