17 #include "llvm/TableGen/Record.h"
25 using llvm::StringInit;
30 if (
const auto *str = dyn_cast<StringInit>(init))
31 return str->getValue().trim();
47 assert((def->isSubClassOf(
"Property") || def->isSubClassOf(
"Attr")) &&
48 "must be subclass of TableGen 'Property' class");
51 Property::Property(
const DefInit *init) :
Property(init->getDef()) {}
53 Property::Property(StringRef storageType, StringRef interfaceType,
54 StringRef convertFromStorageCall,
55 StringRef assignToStorageCall,
56 StringRef convertToAttributeCall,
57 StringRef convertFromAttributeCall,
58 StringRef readFromMlirBytecodeCall,
59 StringRef writeToMlirBytecodeCall,
60 StringRef hashPropertyCall, StringRef defaultValue)
61 : storageType(storageType), interfaceType(interfaceType),
62 convertFromStorageCall(convertFromStorageCall),
63 assignToStorageCall(assignToStorageCall),
64 convertToAttributeCall(convertToAttributeCall),
65 convertFromAttributeCall(convertFromAttributeCall),
66 readFromMlirBytecodeCall(readFromMlirBytecodeCall),
67 writeToMlirBytecodeCall(writeToMlirBytecodeCall),
68 hashPropertyCall(hashPropertyCall), defaultValue(defaultValue) {
69 if (storageType.empty())
70 storageType =
"Property";
static StringRef getValueAsString(const Init *init)
Property(const llvm::Record *record)
Include the generated interface declarations.