Lines Matching refs:Table
173 void emitGenericTable(const GenericTable &Table, raw_ostream &OS);
175 void emitLookupDeclaration(const GenericTable &Table,
177 void emitLookupFunction(const GenericTable &Table, const SearchIndex &Index,
183 parseSearchIndex(GenericTable &Table, StringRef Name,
188 void collectTableEntries(GenericTable &Table,
294 void SearchableTableEmitter::emitLookupFunction(const GenericTable &Table, in emitLookupFunction() argument
299 emitLookupDeclaration(Table, Index, OS); in emitLookupFunction()
308 IndexTypeName = Table.CppTypeName; in emitLookupFunction()
309 IndexName = Table.Name; in emitLookupFunction()
310 IndexRows = Table.Entries; in emitLookupFunction()
323 Entries.reserve(Table.Entries.size()); in emitLookupFunction()
324 for (unsigned i = 0; i < Table.Entries.size(); ++i) in emitLookupFunction()
325 Entries.emplace_back(Table.Entries[i], i); in emitLookupFunction()
380 OS << "&" << Table.Name << "[Table[Idx]._index]"; in emitLookupFunction()
416 Field.Name + "' in table '" + Table.Name + "'"); in emitLookupFunction()
460 OS << " return &" << Table.Name << "[Idx->_index];\n"; in emitLookupFunction()
465 void SearchableTableEmitter::emitLookupDeclaration(const GenericTable &Table, in emitLookupDeclaration() argument
468 OS << "const " << Table.CppTypeName << " *" << Index.Name << "("; in emitLookupDeclaration()
481 void SearchableTableEmitter::emitGenericTable(const GenericTable &Table, in emitGenericTable() argument
483 emitIfdef((Twine("GET_") + Table.PreprocessorGuard + "_DECL").str(), OS); in emitGenericTable()
486 if (Table.PrimaryKey) { in emitGenericTable()
487 emitLookupDeclaration(Table, *Table.PrimaryKey, OS); in emitGenericTable()
490 for (const auto &Index : Table.Indices) { in emitGenericTable()
491 emitLookupDeclaration(Table, *Index, OS); in emitGenericTable()
497 emitIfdef((Twine("GET_") + Table.PreprocessorGuard + "_IMPL").str(), OS); in emitGenericTable()
500 OS << "const " << Table.CppTypeName << " " << Table.Name << "[] = {\n"; in emitGenericTable()
501 for (unsigned i = 0; i < Table.Entries.size(); ++i) { in emitGenericTable()
502 Record *Entry = Table.Entries[i]; in emitGenericTable()
506 for (const auto &Field : Table.Fields) { in emitGenericTable()
520 if (Table.PrimaryKey) in emitGenericTable()
521 emitLookupFunction(Table, *Table.PrimaryKey, true, OS); in emitGenericTable()
522 for (const auto &Index : Table.Indices) in emitGenericTable()
523 emitLookupFunction(Table, *Index, false, OS); in emitGenericTable()
542 SearchableTableEmitter::parseSearchIndex(GenericTable &Table, StringRef Name, in parseSearchIndex() argument
550 const GenericField *Field = Table.getFieldByName(FieldName); in parseSearchIndex()
554 "' in table '" + Table.Name + "'"); in parseSearchIndex()
598 GenericTable &Table, const std::vector<Record *> &Items) { in collectTableEntries() argument
600 for (auto &Field : Table.Fields) { in collectTableEntries()
604 "' in table '" + Table.Name + "' is missing field '" + in collectTableEntries()
613 Table.Name + "' has incompatible type: " + in collectTableEntries()
620 Table.Entries.push_back(EntryRec); in collectTableEntries()
625 for (auto &Field : Table.Fields) { in collectTableEntries()
667 auto Table = llvm::make_unique<GenericTable>(); in run() local
668 Table->Name = TableRec->getName(); in run()
669 Table->PreprocessorGuard = TableRec->getName(); in run()
670 Table->CppTypeName = TableRec->getValueAsString("CppTypeName"); in run()
674 Table->Fields.emplace_back(FieldName); in run()
677 if (!parseFieldType(Table->Fields.back(), TypeOfVal->getValue())) { in run()
678 PrintFatalError(Twine("Table '") + Table->Name + in run()
685 collectTableEntries(*Table, Records.getAllDerivedDefinitions( in run()
689 Table->PrimaryKey = in run()
690 parseSearchIndex(*Table, TableRec->getValueAsString("PrimaryKeyName"), in run()
694 std::stable_sort(Table->Entries.begin(), Table->Entries.end(), in run()
696 return compareBy(LHS, RHS, *Table->PrimaryKey); in run()
700 TableMap.insert(std::make_pair(TableRec, Table.get())); in run()
701 Tables.emplace_back(std::move(Table)); in run()
711 GenericTable &Table = *It->second; in run() local
712 Table.Indices.push_back(parseSearchIndex( in run()
713 Table, IndexRec->getName(), IndexRec->getValueAsListOfStrings("Key"), in run()
743 auto Table = llvm::make_unique<GenericTable>(); in run() local
744 Table->Name = (Twine(Class->getName()) + "sList").str(); in run()
745 Table->PreprocessorGuard = Class->getName().upper(); in run()
746 Table->CppTypeName = Class->getName(); in run()
758 Table->Fields.emplace_back(FieldName); in run()
761 collectTableEntries(*Table, Items); in run()
766 (Twine("lookup") + Table->CppTypeName + "By" + Field).str(); in run()
767 Table->Indices.push_back(parseSearchIndex(*Table, Name, {Field}, false)); in run()
770 Tables.emplace_back(std::move(Table)); in run()
777 for (const auto &Table : Tables) in run() local
778 emitGenericTable(*Table, OS); in run()