2
0
mirror of https://github.com/boostorg/python.git synced 2026-01-24 06:02:14 +00:00
Files
python/pyste/src/Exporter.py
Bruno da Silva de Oliveira 5d1e245858 - New construct, add_method.
[SVN r18650]
2003-06-03 01:48:51 +00:00

73 lines
1.9 KiB
Python

import os.path
#==============================================================================
# Exporter
#==============================================================================
class Exporter:
'Base class for objects capable to generate boost.python code.'
INDENT = ' ' * 4
def __init__(self, info, parser_tail=None):
self.info = info
self.parser_tail = parser_tail
def Name(self):
return self.info.name
def Parse(self, parser):
self.parser = parser
header = self.info.include
tail = self.parser_tail
declarations, parser_header = parser.parse(header, tail)
self.parser_header = parser_header
self.SetDeclarations(declarations)
def SetDeclarations(self, declarations):
self.declarations = declarations
def GenerateCode(self, codeunit, exported_names):
self.WriteInclude(codeunit)
self.Export(codeunit, exported_names)
def WriteInclude(self, codeunit):
codeunit.Write('include', '#include <%s>\n' % self.info.include)
def Export(self, codeunit, exported_names):
'subclasses must override this to do the real work'
pass
def Unit(self):
raise NotImplementedError
def GetDeclarations(self, fullname):
decls = [x for x in self.declarations if x.FullName() == fullname]
if not decls:
raise RuntimeError, 'no %s declaration found!' % fullname
return decls
def GetDeclaration(self, fullname):
decls = self.GetDeclarations(fullname)
assert len(decls) == 1
return decls[0]
def Order(self):
'''Returns a string that uniquely identifies this instance. All
exporters will be sorted by Order before being exported.
'''
raise NotImplementedError
def Unit(self):
return self.info.include