enumexporter.py

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

PY
59
字号
# 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)from Exporter import Exporterfrom settings import *import utils#==============================================================================# EnumExporter #==============================================================================class EnumExporter(Exporter):    'Exports enumerators'    def __init__(self, info):        Exporter.__init__(self, info)    def SetDeclarations(self, declarations):        Exporter.SetDeclarations(self, declarations)        if self.declarations:            self.enum = self.GetDeclaration(self.info.name)        else:            self.enum = None    def Export(self, codeunit, exported_names):        if self.info.exclude:            return         indent = self.INDENT        in_indent = self.INDENT*2        rename = self.info.rename or self.enum.name        full_name = self.enum.FullName()        unnamed_enum = False        if rename.startswith('$_') or rename.startswith('._'):            unnamed_enum = True          code = ''        if not unnamed_enum:            code += indent + namespaces.python            code += 'enum_< %s >("%s")\n' % (full_name, rename)        for name in self.enum.values:                     rename = self.info[name].rename or name            value_fullname = self.enum.ValueFullName(name)            if not unnamed_enum:                code += in_indent + '.value("%s", %s)\n' % (rename, value_fullname)            else:                code += indent + namespaces.python                code += 'scope().attr("%s") = (int)%s;\n' % (rename, value_fullname )                            if self.info.export_values and not unnamed_enum:            code += in_indent + '.export_values()\n'        if not unnamed_enum:            code += indent + ';\n'        code += '\n'        codeunit.Write('module', code)        exported_names[self.enum.FullName()] = 1    def Name(self):        return self.info.name

⌨️ 快捷键说明

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