126d125
< 'cxx_namespace' : types.StringType,
192a192
> cls._base = base
198a199,200
> else:
> cls._base = None
202d203
< _type = cls._value_dict['type']
204c205
< cls._value_dict['cxx_class'] = _type
---
> cls._value_dict['cxx_class'] = cls._value_dict['type']
206,213c207,208
< namespace = cls._value_dict.get('cxx_namespace', None)
<
< _cxx_class = cls._value_dict['cxx_class']
< if 'cxx_type' not in cls._value_dict:
< t = _cxx_class + '*'
< if namespace:
< t = '%s::%s' % (namespace, t)
< cls._value_dict['cxx_type'] = t
---
> cls._value_dict['cxx_type'] = '%s *' % cls._value_dict['cxx_class']
>
217,222c212,216
< decl = 'class %s;' % _cxx_class
< if namespace:
< namespaces = namespace.split('::')
< namespaces.reverse()
< for namespace in namespaces:
< decl = 'namespace %s { %s }' % (namespace, decl)
---
> class_path = cls._value_dict['cxx_class'].split('::')
> class_path.reverse()
> decl = 'class %s;' % class_path[0]
> for ns in class_path[1:]:
> decl = 'namespace %s { %s }' % (ns, decl)
354,359d347
< def get_base(cls):
< if str(cls) == 'SimObject':
< return None
<
< return cls.__bases__[0].type
<
390,392c378,379
< base = cls.get_base()
< if base:
< code += '#include "params/%s.hh"\n\n' % base
---
> if cls._base:
> code += '#include "params/%s.hh"\n\n' % cls._base.type
399c386
< code += cls.cxx_struct(base, params)
---
> code += cls.cxx_struct(cls._base, params)
412c399
< code += " : public %sParams" % base
---
> code += " : public %sParams" % base.type
424,438d410
< def cxx_type_decl(cls):
< base = cls.get_base()
< code = ''
<
< if base:
< code += '#include "%s_type.h"\n' % base
<
< # now generate dummy code for inheritance
< code += "struct %s" % cls.cxx_class
< if base:
< code += " : public %s" % base.cxx_class
< code += "\n{};\n"
<
< return code
<
440,441d411
< base = cls.get_base()
<
469,470c439,440
< if base:
< code += '%%import "params/%s.i"\n\n' % base
---
> if cls._base:
> code += '%%import "params/%s.i"\n\n' % cls._base.type