Lines Matching refs:Table
158 std::string searchableFieldType(const GenericTable &Table, in searchableFieldType() argument
177 PrintFatalError(Index.Loc, Twine("In table '") + Table.Name + in searchableFieldType()
186 Twine("In table '") + Table.Name + "' lookup method '" + in searchableFieldType()
191 void emitGenericTable(const GenericTable &Table, raw_ostream &OS);
193 void emitLookupDeclaration(const GenericTable &Table,
195 void emitLookupFunction(const GenericTable &Table, const SearchIndex &Index,
201 parseSearchIndex(GenericTable &Table, const RecordVal *RecVal, StringRef Name,
207 void collectTableEntries(GenericTable &Table,
321 void SearchableTableEmitter::emitLookupFunction(const GenericTable &Table, in emitLookupFunction() argument
326 emitLookupDeclaration(Table, Index, OS); in emitLookupFunction()
335 IndexTypeName = Table.CppTypeName; in emitLookupFunction()
336 IndexName = Table.Name; in emitLookupFunction()
337 IndexRows = Table.Entries; in emitLookupFunction()
342 << searchableFieldType(Table, Index, Field, TypeInStaticStruct) << " " in emitLookupFunction()
351 Entries.reserve(Table.Entries.size()); in emitLookupFunction()
352 for (unsigned i = 0; i < Table.Entries.size(); ++i) in emitLookupFunction()
353 Entries.emplace_back(Table.Entries[i], i); in emitLookupFunction()
414 OS << "&" << Table.Name << "[Table[Idx]._index]"; in emitLookupFunction()
433 OS << " " << searchableFieldType(Table, Index, Field, TypeInTempStruct) in emitLookupFunction()
445 Twine("In table '") + Table.Name + in emitLookupFunction()
514 OS << " return &" << Table.Name << "[Idx->_index];\n"; in emitLookupFunction()
520 void SearchableTableEmitter::emitLookupDeclaration(const GenericTable &Table, in emitLookupDeclaration() argument
524 OS << "llvm::iterator_range<const " << Table.CppTypeName << " *> "; in emitLookupDeclaration()
526 OS << "const " << Table.CppTypeName << " *"; in emitLookupDeclaration()
530 OS << LS << searchableFieldType(Table, Index, Field, TypeInArgument) << " " in emitLookupDeclaration()
535 void SearchableTableEmitter::emitGenericTable(const GenericTable &Table, in emitGenericTable() argument
537 emitIfdef((Twine("GET_") + Table.PreprocessorGuard + "_DECL").str(), OS); in emitGenericTable()
540 if (Table.PrimaryKey) { in emitGenericTable()
541 emitLookupDeclaration(Table, *Table.PrimaryKey, OS); in emitGenericTable()
544 for (const auto &Index : Table.Indices) { in emitGenericTable()
545 emitLookupDeclaration(Table, *Index, OS); in emitGenericTable()
551 emitIfdef((Twine("GET_") + Table.PreprocessorGuard + "_IMPL").str(), OS); in emitGenericTable()
554 OS << "constexpr " << Table.CppTypeName << " " << Table.Name << "[] = {\n"; in emitGenericTable()
555 for (unsigned i = 0; i < Table.Entries.size(); ++i) { in emitGenericTable()
556 Record *Entry = Table.Entries[i]; in emitGenericTable()
560 for (const auto &Field : Table.Fields) in emitGenericTable()
562 << primaryRepresentation(Table.Locs[0], Field, in emitGenericTable()
571 if (Table.PrimaryKey) in emitGenericTable()
572 emitLookupFunction(Table, *Table.PrimaryKey, /*IsPrimary=*/true, OS); in emitGenericTable()
573 for (const auto &Index : Table.Indices) in emitGenericTable()
574 emitLookupFunction(Table, *Index, /*IsPrimary=*/false, OS); in emitGenericTable()
599 GenericTable &Table, const RecordVal *KeyRecVal, StringRef Name, in parseSearchIndex() argument
608 const GenericField *Field = Table.getFieldByName(FieldName); in parseSearchIndex()
612 Twine("In table '") + Table.Name + in parseSearchIndex()
659 GenericTable &Table, const std::vector<Record *> &Items) { in collectTableEntries() argument
661 PrintFatalError(Table.Locs, in collectTableEntries()
662 Twine("Table '") + Table.Name + "' has no entries"); in collectTableEntries()
665 for (auto &Field : Table.Fields) { in collectTableEntries()
669 "' for table '" + Table.Name + in collectTableEntries()
680 Table.Name + "' entry has incompatible type: " + in collectTableEntries()
687 Table.Entries.push_back(EntryRec); // Add record to table's record list. in collectTableEntries()
692 for (auto &Field : Table.Fields) { in collectTableEntries()
695 "' in table '" + Table.Name + "'. Maybe it is not used?"); in collectTableEntries()
706 std::copy(Table.Fields.begin(), Table.Fields.end(), in collectTableEntries()
708 llvm::sort(Table.Entries, [&](Record *LHS, Record *RHS) { in collectTableEntries()
748 auto Table = std::make_unique<GenericTable>(); in run() local
749 Table->Name = std::string(TableRec->getName()); in run()
750 Table->Locs = TableRec->getLoc(); in run()
751 Table->PreprocessorGuard = std::string(TableRec->getName()); in run()
752 Table->CppTypeName = std::string(TableRec->getValueAsString("CppTypeName")); in run()
756 Table->Fields.emplace_back(FieldName); // Construct a GenericField. in run()
760 if (!parseFieldType(Table->Fields.back(), in run()
763 Twine("Table '") + Table->Name + "' has invalid 'TypeOf_" + in run()
794 collectTableEntries(*Table, Definitions); in run()
797 Table->PrimaryKey = in run()
798 parseSearchIndex(*Table, TableRec->getValue("PrimaryKey"), in run()
804 llvm::stable_sort(Table->Entries, [&](Record *LHS, Record *RHS) { in run()
805 return compareBy(LHS, RHS, *Table->PrimaryKey); in run()
809 TableMap.insert(std::pair(TableRec, Table.get())); in run()
810 Tables.emplace_back(std::move(Table)); in run()
822 GenericTable &Table = *It->second; in run() local
823 Table.Indices.push_back(parseSearchIndex( in run()
824 Table, IndexRec->getValue("Key"), IndexRec->getName(), in run()
855 auto Table = std::make_unique<GenericTable>(); in run() local
856 Table->Name = (Twine(Class->getName()) + "sList").str(); in run()
857 Table->Locs = Class->getLoc(); in run()
858 Table->PreprocessorGuard = Class->getName().upper(); in run()
859 Table->CppTypeName = std::string(Class->getName()); in run()
871 Table->Fields.emplace_back(FieldName); in run()
874 collectTableEntries(*Table, Items); in run()
879 (Twine("lookup") + Table->CppTypeName + "By" + Field).str(); in run()
880 Table->Indices.push_back( in run()
881 parseSearchIndex(*Table, Class->getValue(Field), Name, {Field}, in run()
885 Tables.emplace_back(std::move(Table)); in run()
892 for (const auto &Table : Tables) in run() local
893 emitGenericTable(*Table, OS); in run()