Internals: Use single source of truth VCMethod enumeration (#8249)

This commit is contained in:
Geza Lore
2026-08-28 14:32:08 -04:00
committed by GitHub
parent 297713df8b
commit ab20edbbaf
3 changed files with 149 additions and 267 deletions
+5 -15
View File
@@ -49,26 +49,16 @@ bool VNUser4InUse::s_userBusy = false;
int AstNodeDType::s_uniqueNum = 0;
V3AST_VCMETHOD_ITEMDATA_DECL;
//======================================================================
// VCMethod information
VCMethod VCMethod::arrayMethod(const string& name) {
for (const auto& it : s_itemData)
if (it.m_name == name) return it.m_e;
v3fatalSrc("Not a method name known to VCMethod::s_itemData: '" << name << '\'');
return VCMethod{};
}
void VCMethod::selfTest() {
int i = 0;
for (const auto& it : s_itemData) {
const VCMethod exp{i};
UASSERT_STATIC(it.m_e == exp,
"VCMethod::s_itemData table rows are out-of-order, starting at row "s
+ cvtToStr(i) + " '" + +it.m_name + '\'');
++i;
for (int i = 0; i < _ENUM_MAX; ++i) {
const VCMethod method{i};
if (name == method.ascii()) return method;
}
v3fatalSrc("Not a method name known to VCMethod: '" << name << '\'');
return VCMethod{};
}
//######################################################################