101,102c101
< '''A forward class declaration is sufficient since we are
< just declaring a pointer.'''
---
> code('#include "params/$cls.hh"')
104,109c103,104
< class_path = cls._value_dict['cxx_class'].split('::')
< for ns in class_path[:-1]:
< code('namespace $ns {')
< code('class $0;', class_path[-1])
< for ns in reversed(class_path[:-1]):
< code('/* namespace $ns */ }')
---
> def default_swig_predecls(cls, code):
> code('%import "params/$cls.i"')
236c231,232
< setattr(cls, 'swig_predecls', getattr(cls, 'cxx_predecls'))
---
> m = MethodType(default_swig_predecls, cls, MetaSimObject)
> setattr(cls, 'swig_predecls', m)
348a345,353
> if attr == 'cxx_class_path':
> return cls.cxx_class.split('::')
>
> if attr == 'cxx_class_name':
> return cls.cxx_class_path[-1]
>
> if attr == 'cxx_namespaces':
> return cls.cxx_class_path[:-1]
>
362,367d366
< code('''\
< #ifndef __PARAMS__${cls}__
< #define __PARAMS__${cls}__
<
< ''')
<
380,381c379,395
< # get all predeclarations
< cls.cxx_predecls(code)
---
> class_path = cls._value_dict['cxx_class'].split('::')
>
> code('''\
> #ifndef __PARAMS__${cls}__
> #define __PARAMS__${cls}__
>
> ''')
>
> # A forward class declaration is sufficient since we are just
> # declaring a pointer.
> for ns in class_path[:-1]:
> code('namespace $ns {')
> code('class $0;', class_path[-1])
> for ns in reversed(class_path[:-1]):
> code('/* namespace $ns */ }')
> code()
>
397d410
< # close #ifndef __PARAMS__* guard