exporter.py

来自「Boost provides free peer-reviewed portab」· Python 代码 · 共 95 行

PY
95
字号
# Copyright Bruno da Silva de Oliveira 2003. Use, modification and # distribution is subject to the Boost Software License, Version 1.0.# (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt)import os.path#==============================================================================# Exporter#==============================================================================class Exporter(object):    '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        self.interface_file = None        self.declarations = []        def Name(self):        raise NotImplementedError(self.__class__.__name__)    def Tail(self):        return self.parser_tail            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 SetParsedHeader(self, parsed_header):        self.parser_header = parsed_header     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 GetDeclarations(self, fullname):        decls = []        for decl in self.declarations:            if decl.FullName() == fullname:                decls.append(decl)        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.        '''        return 0, self.info.name    def Header(self):        return self.info.include    def __eq__(self, other):        return type(self) is type(other) and self.Name() == other.Name() \            and self.interface_file == other.interface_file    def __ne__(self, other):        return not self == other

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?