def genEnum(self, enuminfo, name, alias):
        """Generate the C declaration for a constant (a single <enum> value)."""

        OutputGenerator.genEnum(self, enuminfo, name, alias)

        body = self.buildConstantCDecl(enuminfo, name, alias)
        self.appendSection('enum', body)
示例#2
0
    def genEnum(self, enuminfo, name, alias):
        OutputGenerator.genEnum(self, enuminfo, name, alias)

        # Add a typeCategory{} entry for the category of this type.
        self.addName(self.typeCategory, name, 'consts')

        self.consts[name] = None
示例#3
0
    def genEnum(self, enuminfo, name, alias):
        """Generate enumerant (compile time constants)."""
        OutputGenerator.genEnum(self, enuminfo, name, alias)

        if alias:
            return
        self.record_name(self.consts, name)
示例#4
0
    def genEnum(self, enuminfo, name, alias):
        OutputGenerator.genEnum(self, enuminfo, name, alias)

        # Add a typeCategory{} entry for the category of this type.
        self.addName(self.typeCategory, name, 'consts')

        self.consts[name] = None
示例#5
0
    def genEnum(self, enuminfo, name, alias):
        """Generate the C declaration for a constant (a single <enum> value)."""

        OutputGenerator.genEnum(self, enuminfo, name, alias)

        body = self.buildConstantCDecl(enuminfo, name, alias)

        self.writeInclude('enums', name, body)
示例#6
0
    def genEnum(self, enuminfo, name, alias):
        """Generate enumerants.

        <enum> tags may specify their values in several ways, but are usually
        just integers."""
        OutputGenerator.genEnum(self, enuminfo, name, alias)
        (_, strVal) = self.enumToValue(enuminfo.elem, False)
        body = '#define ' + name.ljust(33) + ' ' + strVal
        self.appendSection('enum', body)
示例#7
0
    def genEnum(self, enuminfo, name, alias):
        """Generate enumerant (compile-time constants).

        - Add the constant name to the 'consts' dictionary, with the
          value being None to indicate that the constant isn't
          an enumeration value."""
        OutputGenerator.genEnum(self, enuminfo, name, alias)

        # Add a typeCategory{} entry for the category of this type.
        self.addName(self.typeCategory, name, 'consts')

        self.consts[name] = None
示例#8
0
    def genEnum(self, enuminfo, name, alias):
        """Generate enumerants.

        <enum> tags may specify their values in several ways, but are usually
        just integers."""
        OutputGenerator.genEnum(self, enuminfo, name, alias)
        (_, strVal) = self.enumToValue(enuminfo.elem, False)

        if self.misracppstyle() and enuminfo.elem.get('type') and not alias:
            # Generate e.g.: static constexpr uint32_t x = ~static_cast<uint32_t>(1U);
            # This appeases MISRA "underlying type" rules.
            typeStr = enuminfo.elem.get('type');
            invert = '~' in strVal
            number = strVal.strip("()~UL")
            if typeStr != "float":
                number += 'U'
            strVal = "~" if invert else ""
            strVal += "static_cast<" + typeStr + ">(" + number + ")"
            body = 'static constexpr ' + typeStr.ljust(9) + name.ljust(33) + ' {' + strVal + '};'
            self.appendSection('enum', body)
        elif enuminfo.elem.get('type') and not alias:
            # Generate e.g.: #define x (~0ULL)
            typeStr = enuminfo.elem.get('type');
            invert = '~' in strVal
            paren = '(' in strVal
            number = strVal.strip("()~UL")
            if typeStr != "float":
                if typeStr == "uint64_t":
                    number += 'ULL'
                else:
                    number += 'U'
            strVal = "~" if invert else ""
            strVal += number
            if paren:
                strVal = "(" + strVal + ")";
            body = '#define ' + name.ljust(33) + ' ' + strVal;
            self.appendSection('enum', body)
        else:
            body = '#define ' + name.ljust(33) + ' ' + strVal
            self.appendSection('enum', body)
示例#9
0
 def genEnum(self, enuminfo, name, alias):
     """Generate enumerant."""
     OutputGenerator.genEnum(self, enuminfo, name, alias)
     self.logMsg('diag', '# NOT writing compile-time constant', name)
示例#10
0
 def genEnum(self, enuminfo, name, alias):
     OutputGenerator.genEnum(self, enuminfo, name, alias)
示例#11
0
 def genEnum(self, enuminfo, name, alias):
     OutputGenerator.genEnum(self, enuminfo, name, alias)
     (_, strVal) = self.enumToValue(enuminfo.elem, False)
     body = '#define ' + name.ljust(33) + ' ' + strVal
     self.appendSection('enum', body)
示例#12
0
 def genEnum(self, enuminfo, name, alias):
     OutputGenerator.genEnum(self, enuminfo, name, alias)
     (_, strVal) = self.enumToValue(enuminfo.elem, False)
     body = '#define ' + name.ljust(33) + ' ' + strVal
     self.appendSection('enum', body)
示例#13
0
 def genEnum(self, enuminfo, name, alias):
     OutputGenerator.genEnum(self, enuminfo, name, alias)
     self.logMsg('diag', '# NOT writing compile-time constant', name)
示例#14
0
 def genEnum(self, enuminfo, name):
     OutputGenerator.genEnum(self, enuminfo, name)
     self.logMsg('diag', '# NOT writing compile-time constant', name)