Lines Matching refs:Table
154 std::string searchableFieldType(const GenericTable &Table, in searchableFieldType() argument
173 PrintFatalError(Index.Loc, Twine("In table '") + Table.Name + in searchableFieldType()
182 Twine("In table '") + Table.Name + "' lookup method '" + in searchableFieldType()
187 void emitGenericTable(const GenericTable &Table, raw_ostream &OS);
189 void emitLookupDeclaration(const GenericTable &Table,
191 void emitLookupFunction(const GenericTable &Table, const SearchIndex &Index,
197 parseSearchIndex(GenericTable &Table, const RecordVal *RecVal, StringRef Name,
202 void collectTableEntries(GenericTable &Table,
308 void SearchableTableEmitter::emitLookupFunction(const GenericTable &Table, in emitLookupFunction() argument
313 emitLookupDeclaration(Table, Index, OS); in emitLookupFunction()
322 IndexTypeName = Table.CppTypeName; in emitLookupFunction()
323 IndexName = Table.Name; in emitLookupFunction()
324 IndexRows = Table.Entries; in emitLookupFunction()
329 << searchableFieldType(Table, Index, Field, TypeInStaticStruct) << " " in emitLookupFunction()
338 Entries.reserve(Table.Entries.size()); in emitLookupFunction()
339 for (unsigned i = 0; i < Table.Entries.size(); ++i) in emitLookupFunction()
340 Entries.emplace_back(Table.Entries[i], i); in emitLookupFunction()
390 OS << "&" << Table.Name << "[Table[Idx]._index]"; in emitLookupFunction()
409 OS << " " << searchableFieldType(Table, Index, Field, TypeInTempStruct) in emitLookupFunction()
421 Twine("In table '") + Table.Name + in emitLookupFunction()
468 OS << " return &" << Table.Name << "[Idx->_index];\n"; in emitLookupFunction()
473 void SearchableTableEmitter::emitLookupDeclaration(const GenericTable &Table, in emitLookupDeclaration() argument
476 OS << "const " << Table.CppTypeName << " *" << Index.Name << "("; in emitLookupDeclaration()
480 OS << LS << searchableFieldType(Table, Index, Field, TypeInArgument) << " " in emitLookupDeclaration()
485 void SearchableTableEmitter::emitGenericTable(const GenericTable &Table, in emitGenericTable() argument
487 emitIfdef((Twine("GET_") + Table.PreprocessorGuard + "_DECL").str(), OS); in emitGenericTable()
490 if (Table.PrimaryKey) { in emitGenericTable()
491 emitLookupDeclaration(Table, *Table.PrimaryKey, OS); in emitGenericTable()
494 for (const auto &Index : Table.Indices) { in emitGenericTable()
495 emitLookupDeclaration(Table, *Index, OS); in emitGenericTable()
501 emitIfdef((Twine("GET_") + Table.PreprocessorGuard + "_IMPL").str(), OS); in emitGenericTable()
504 OS << "constexpr " << Table.CppTypeName << " " << Table.Name << "[] = {\n"; in emitGenericTable()
505 for (unsigned i = 0; i < Table.Entries.size(); ++i) { in emitGenericTable()
506 Record *Entry = Table.Entries[i]; in emitGenericTable()
510 for (const auto &Field : Table.Fields) in emitGenericTable()
512 << primaryRepresentation(Table.Locs[0], Field, in emitGenericTable()
521 if (Table.PrimaryKey) in emitGenericTable()
522 emitLookupFunction(Table, *Table.PrimaryKey, true, OS); in emitGenericTable()
523 for (const auto &Index : Table.Indices) in emitGenericTable()
524 emitLookupFunction(Table, *Index, false, OS); in emitGenericTable()
549 GenericTable &Table, const RecordVal *KeyRecVal, StringRef Name, in parseSearchIndex() argument
557 const GenericField *Field = Table.getFieldByName(FieldName); in parseSearchIndex()
561 Twine("In table '") + Table.Name + in parseSearchIndex()
608 GenericTable &Table, const std::vector<Record *> &Items) { in collectTableEntries() argument
610 PrintFatalError(Table.Locs, in collectTableEntries()
611 Twine("Table '") + Table.Name + "' has no entries"); in collectTableEntries()
614 for (auto &Field : Table.Fields) { in collectTableEntries()
618 "' for table '" + Table.Name + in collectTableEntries()
629 Table.Name + "' entry has incompatible type: " + in collectTableEntries()
636 Table.Entries.push_back(EntryRec); // Add record to table's record list. in collectTableEntries()
641 for (auto &Field : Table.Fields) { in collectTableEntries()
644 "' in table '" + Table.Name + "'. Maybe it is not used?"); in collectTableEntries()
655 std::copy(Table.Fields.begin(), Table.Fields.end(), in collectTableEntries()
657 llvm::sort(Table.Entries, [&](Record *LHS, Record *RHS) { in collectTableEntries()
695 auto Table = std::make_unique<GenericTable>(); in run() local
696 Table->Name = std::string(TableRec->getName()); in run()
697 Table->Locs = TableRec->getLoc(); in run()
698 Table->PreprocessorGuard = std::string(TableRec->getName()); in run()
699 Table->CppTypeName = std::string(TableRec->getValueAsString("CppTypeName")); in run()
703 Table->Fields.emplace_back(FieldName); // Construct a GenericField. in run()
706 if (!parseFieldType(Table->Fields.back(), TypeOfRecordVal->getValue())) { in run()
708 Twine("Table '") + Table->Name + in run()
739 collectTableEntries(*Table, Definitions); in run()
742 Table->PrimaryKey = in run()
743 parseSearchIndex(*Table, TableRec->getValue("PrimaryKey"), in run()
748 llvm::stable_sort(Table->Entries, [&](Record *LHS, Record *RHS) { in run()
749 return compareBy(LHS, RHS, *Table->PrimaryKey); in run()
753 TableMap.insert(std::make_pair(TableRec, Table.get())); in run()
754 Tables.emplace_back(std::move(Table)); in run()
766 GenericTable &Table = *It->second; in run() local
767 Table.Indices.push_back( in run()
768 parseSearchIndex(Table, IndexRec->getValue("Key"), IndexRec->getName(), in run()
799 auto Table = std::make_unique<GenericTable>(); in run() local
800 Table->Name = (Twine(Class->getName()) + "sList").str(); in run()
801 Table->Locs = Class->getLoc(); in run()
802 Table->PreprocessorGuard = Class->getName().upper(); in run()
803 Table->CppTypeName = std::string(Class->getName()); in run()
815 Table->Fields.emplace_back(FieldName); in run()
818 collectTableEntries(*Table, Items); in run()
823 (Twine("lookup") + Table->CppTypeName + "By" + Field).str(); in run()
824 Table->Indices.push_back(parseSearchIndex(*Table, Class->getValue(Field), in run()
828 Tables.emplace_back(std::move(Table)); in run()
835 for (const auto &Table : Tables) in run() local
836 emitGenericTable(*Table, OS); in run()