83,84c83,85
< cxx_predecls = []
< swig_predecls = []
---
> @classmethod
> def cxx_predecls(cls, code):
> pass
85a87,90
> @classmethod
> def swig_predecls(cls, code):
> pass
>
155,156c160,161
< def cxx_predecls(self):
< return self.ptype.cxx_predecls
---
> def cxx_predecls(self, code):
> self.ptype.cxx_predecls(code)
158,159c163,164
< def swig_predecls(self):
< return self.ptype.swig_predecls
---
> def swig_predecls(self, code):
> self.ptype.swig_predecls(code)
161,162c166,167
< def cxx_decl(self):
< return '%s %s;' % (self.ptype.cxx_type, self.name)
---
> def cxx_decl(self, code):
> code('${{self.ptype.cxx_type}} ${{self.name}};')
238,239c243,244
< def swig_predecls(self):
< return ['%%include "%s_vptype.i"' % self.ptype_str]
---
> def swig_predecls(self, code):
> code('%include "${{self.ptype_str}}_vptype.i"')
241c246
< def swig_decl(self):
---
> def swig_decl(self, code):
243,245c248,254
< vdecl = 'namespace std { %%template(vector_%s) vector< %s >; }' % \
< (self.ptype_str, cxx_type)
< return ['%include "std_vector.i"'] + self.ptype.swig_predecls + [vdecl]
---
> code('%include "std_vector.i"')
> self.ptype.swig_predecls(code)
> code('''\
> namespace std {
> %template(vector_${{self.ptype_str}}) vector< $cxx_type >;
> }
> ''')
247,248c256,258
< def cxx_predecls(self):
< return ['#include <vector>'] + self.ptype.cxx_predecls
---
> def cxx_predecls(self, code):
> code('#include <vector>')
> self.ptype.cxx_predecls(code)
250,251c260,261
< def cxx_decl(self):
< return 'std::vector< %s > %s;' % (self.ptype.cxx_type, self.name)
---
> def cxx_decl(self, code):
> code('std::vector< ${{self.ptype.cxx_type}} > ${{self.name}};')
294,297d303
< cxx_predecls = ['#include <string>']
< swig_predecls = ['%include "std_string.i"\n' +
< '%apply const std::string& {std::string *};']
< swig_predecls = ['%include "std_string.i"' ]
298a305,312
> @classmethod
> def cxx_predecls(self, code):
> code('#include <string>')
>
> @classmethod
> def swig_predecls(cls, code):
> code('%include "std_string.i"')
>
353,361d366
< if not cls.cxx_predecls:
< # most derived types require this, so we just do it here once
< cls.cxx_predecls = ['#include "base/types.hh"']
<
< if not cls.swig_predecls:
< # most derived types require this, so we just do it here once
< cls.swig_predecls = ['%import "stdint.i"\n' +
< '%import "base/types.hh"']
<
395a401,411
> @classmethod
> def cxx_predecls(cls, code):
> # most derived types require this, so we just do it here once
> code('#include "base/types.hh"')
>
> @classmethod
> def swig_predecls(cls, code):
> # most derived types require this, so we just do it here once
> code('%import "stdint.i"')
> code('%import "base/types.hh"')
>
479,480d494
< cls.cxx_predecls = \
< ['#include "base/range.hh"'] + cls.type.cxx_predecls
523a538,542
> @classmethod
> def cxx_predecls(cls, code):
> code('#include "base/range.hh"')
> cls.type.cxx_predecls(code)
>
526d544
< swig_predecls = ['%include "python/swig/range.i"']
527a546,549
> @classmethod
> def swig_predecls(cls, code):
> code('%include "python/swig/range.i"')
>
538d559
< swig_predecls = ['%include "python/swig/range.i"']
539a561,564
> @classmethod
> def swig_predecls(cls, code):
> code('%include "python/swig/range.i"')
>
592,593c617,625
< cxx_predecls = ['#include "base/inet.hh"']
< swig_predecls = ['%include "python/swig/inet.i"']
---
>
> @classmethod
> def cxx_predecls(cls, code):
> code('#include "base/inet.hh"')
>
> @classmethod
> def swig_predecls(cls, code):
> code('%include "python/swig/inet.i"')
>
664,665c696,704
< cxx_predecls = [ '#include <time.h>' ]
< swig_predecls = [ '%include "python/swig/time.i"' ]
---
>
> @classmethod
> def cxx_predecls(cls, code):
> code('#include <time.h>')
>
> @classmethod
> def swig_predecls(cls, code):
> code('%include "python/swig/time.i"')
>
752c791
< def cxx_decl(cls):
---
> def cxx_decl(cls, code):
754,758c793,800
< code = "#ifndef __ENUM__%s\n" % name
< code += '#define __ENUM__%s\n' % name
< code += '\n'
< code += 'namespace Enums {\n'
< code += ' enum %s {\n' % name
---
> code('''\
> #ifndef __ENUM__${name}__
> #define __ENUM__${name}__
>
> namespace Enums {
> enum $name {
> ''')
> code.indent(2)
760,767c802,808
< code += ' %s = %d,\n' % (val, cls.map[val])
< code += ' Num_%s = %d,\n' % (name, len(cls.vals))
< code += ' };\n'
< code += ' extern const char *%sStrings[Num_%s];\n' % (name, name)
< code += '}\n'
< code += '\n'
< code += '#endif\n'
< return code
---
> code('$val = ${{cls.map[val]}},')
> code('Num_$name = ${{len(cls.vals)}},')
> code.dedent(2)
> code('''\
> };
> extern const char *${name}Strings[Num_${name}];
> }
769c810,813
< def cxx_def(cls):
---
> #endif // __ENUM__${name}__
> ''')
>
> def cxx_def(cls, code):
771,774c815,821
< code = '#include "enums/%s.hh"\n' % name
< code += 'namespace Enums {\n'
< code += ' const char *%sStrings[Num_%s] =\n' % (name, name)
< code += ' {\n'
---
> code('''\
> #include "enums/${name}.hh"
> namespace Enums {
> const char *${name}Strings[Num_${name}] =
> {
> ''')
> code.indent(2)
776,779c823,828
< code += ' "%s",\n' % val
< code += ' };\n'
< code += '}\n'
< return code
---
> code('"$val",')
> code.dedent(2)
> code('''
> };
> /* namespace Enums */ }
> ''')
803,805d851
< cxx_predecls = ['#include "base/types.hh"']
< swig_predecls = ['%import "stdint.i"\n' +
< '%import "base/types.hh"']
806a853,861
> @classmethod
> def cxx_predecls(cls, code):
> code('#include "base/types.hh"')
>
> @classmethod
> def swig_predecls(cls, code):
> code('%import "stdint.i"')
> code('%import "base/types.hh"')
>
881,883c936,945
< cxx_predecls = ['#include "base/types.hh"']
< swig_predecls = ['%import "stdint.i"\n' +
< '%import "base/types.hh"']
---
>
> @classmethod
> def cxx_predecls(cls, code):
> code('#include "base/types.hh"')
>
> @classmethod
> def swig_predecls(cls, code):
> code('%import "stdint.i"')
> code('%import "base/types.hh"')
>