11 #include "llvm/TableGen/Record.h"
21 assert(def->isSubClassOf(
"EnumCase") &&
22 "must be subclass of TableGen 'EnumCase' class");
25 EnumCase::EnumCase(
const DefInit *init) :
EnumCase(init->getDef()) {}
27 StringRef EnumCase::getSymbol()
const {
28 return def->getValueAsString(
"symbol");
38 assert(isSubClassOf(
"EnumInfo") &&
39 "must be subclass of TableGen 'EnumInfo' class");
47 return def->isSubClassOf(className);
61 return def->getValueAsString(
"className");
65 return def->getValueAsString(
"summary");
69 return def->getValueAsString(
"description");
73 return def->getValueAsString(
"cppNamespace");
79 return def->getValueAsString(
"underlyingType");
83 return def->getValueAsString(
"underlyingToSymbolFnName");
87 return def->getValueAsString(
"stringToSymbolFnName");
91 return def->getValueAsString(
"symbolToStringFnName");
95 return def->getValueAsString(
"symbolToStringFnRetType");
99 return def->getValueAsString(
"maxEnumValFnName");
103 const auto *inits =
def->getValueAsListInit(
"enumerants");
105 std::vector<EnumCase> cases;
106 cases.reserve(inits->size());
108 for (
const Init *init : *inits) {
109 cases.emplace_back(cast<DefInit>(init));
117 def->getValueAsBit(
"genSpecializedAttr");
121 return def->getValueAsDef(
"baseAttrClass");
125 return def->getValueAsString(
"specializedAttrClassName");
129 return def->getValueAsBit(
"printBitEnumPrimaryGroups");
133 return def->getValueAsBit(
"printBitEnumQuoted");
const llvm::Record & getDef() const
EnumCase(const llvm::Record *record)
StringRef getSymbolToStringFnName() const
bool genSpecializedAttr() const
const llvm::Record * getBaseAttrClass() const
std::vector< EnumCase > getAllCases() const
EnumInfo(const llvm::Record *record)
bool printBitEnumPrimaryGroups() const
int64_t getBitwidth() const
bool isSubClassOf(StringRef className) const
StringRef getMaxEnumValFnName() const
const llvm::Record & getDef() const
StringRef getUnderlyingToSymbolFnName() const
StringRef getUnderlyingType() const
bool printBitEnumQuoted() const
StringRef getStringToSymbolFnName() const
StringRef getCppNamespace() const
StringRef getSummary() const
StringRef getSpecializedAttrClassName() const
StringRef getEnumClassName() const
StringRef getDescription() const
StringRef getSymbolToStringFnRetType() const
std::optional< Attribute > asEnumAttr() const
Include the generated interface declarations.