Lines Matching refs:Table

155   std::string searchableFieldType(const GenericTable &Table,  in searchableFieldType()  argument
174 PrintFatalError(Index.Loc, Twine("In table '") + Table.Name + in searchableFieldType()
181 Twine("In table '") + Table.Name + "' lookup method '" + in searchableFieldType()
186 void emitGenericTable(const GenericTable &Table, raw_ostream &OS);
188 void emitLookupDeclaration(const GenericTable &Table,
190 void emitLookupFunction(const GenericTable &Table, const SearchIndex &Index,
196 parseSearchIndex(GenericTable &Table, const RecordVal *RecVal, StringRef Name,
201 void collectTableEntries(GenericTable &Table,
307 void SearchableTableEmitter::emitLookupFunction(const GenericTable &Table, in emitLookupFunction() argument
312 emitLookupDeclaration(Table, Index, OS); in emitLookupFunction()
321 IndexTypeName = Table.CppTypeName; in emitLookupFunction()
322 IndexName = Table.Name; in emitLookupFunction()
323 IndexRows = Table.Entries; in emitLookupFunction()
328 << searchableFieldType(Table, Index, Field, TypeInStaticStruct) << " " in emitLookupFunction()
337 Entries.reserve(Table.Entries.size()); in emitLookupFunction()
338 for (unsigned i = 0; i < Table.Entries.size(); ++i) in emitLookupFunction()
339 Entries.emplace_back(Table.Entries[i], i); in emitLookupFunction()
389 OS << "&" << Table.Name << "[Table[Idx]._index]"; in emitLookupFunction()
408 OS << " " << searchableFieldType(Table, Index, Field, TypeInTempStruct) in emitLookupFunction()
420 Twine("In table '") + Table.Name + in emitLookupFunction()
467 OS << " return &" << Table.Name << "[Idx->_index];\n"; in emitLookupFunction()
472 void SearchableTableEmitter::emitLookupDeclaration(const GenericTable &Table, in emitLookupDeclaration() argument
475 OS << "const " << Table.CppTypeName << " *" << Index.Name << "("; in emitLookupDeclaration()
479 OS << LS << searchableFieldType(Table, Index, Field, TypeInArgument) << " " in emitLookupDeclaration()
484 void SearchableTableEmitter::emitGenericTable(const GenericTable &Table, in emitGenericTable() argument
486 emitIfdef((Twine("GET_") + Table.PreprocessorGuard + "_DECL").str(), OS); in emitGenericTable()
489 if (Table.PrimaryKey) { in emitGenericTable()
490 emitLookupDeclaration(Table, *Table.PrimaryKey, OS); in emitGenericTable()
493 for (const auto &Index : Table.Indices) { in emitGenericTable()
494 emitLookupDeclaration(Table, *Index, OS); in emitGenericTable()
500 emitIfdef((Twine("GET_") + Table.PreprocessorGuard + "_IMPL").str(), OS); in emitGenericTable()
503 OS << "constexpr " << Table.CppTypeName << " " << Table.Name << "[] = {\n"; in emitGenericTable()
504 for (unsigned i = 0; i < Table.Entries.size(); ++i) { in emitGenericTable()
505 Record *Entry = Table.Entries[i]; in emitGenericTable()
509 for (const auto &Field : Table.Fields) in emitGenericTable()
511 << primaryRepresentation(Table.Locs[0], Field, 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()
548 GenericTable &Table, const RecordVal *KeyRecVal, StringRef Name, in parseSearchIndex() argument
556 const GenericField *Field = Table.getFieldByName(FieldName); in parseSearchIndex()
560 Twine("In table '") + Table.Name + in parseSearchIndex()
607 GenericTable &Table, const std::vector<Record *> &Items) { in collectTableEntries() argument
609 PrintFatalError(Table.Locs, in collectTableEntries()
610 Twine("Table '") + Table.Name + "' has no entries"); in collectTableEntries()
613 for (auto &Field : Table.Fields) { in collectTableEntries()
617 "' for table '" + Table.Name + in collectTableEntries()
628 Table.Name + "' entry has incompatible type: " + in collectTableEntries()
635 Table.Entries.push_back(EntryRec); // Add record to table's record list. in collectTableEntries()
640 for (auto &Field : Table.Fields) { in collectTableEntries()
643 "' in table '" + Table.Name + "'. Maybe it is not used?"); in collectTableEntries()
687 auto Table = std::make_unique<GenericTable>(); in run() local
688 Table->Name = std::string(TableRec->getName()); in run()
689 Table->Locs = TableRec->getLoc(); in run()
690 Table->PreprocessorGuard = std::string(TableRec->getName()); in run()
691 Table->CppTypeName = std::string(TableRec->getValueAsString("CppTypeName")); in run()
695 Table->Fields.emplace_back(FieldName); // Construct a GenericField. in run()
698 if (!parseFieldType(Table->Fields.back(), TypeOfRecordVal->getValue())) { in run()
700 Twine("Table '") + Table->Name + in run()
715 collectTableEntries(*Table, Records.getAllDerivedDefinitions(FilterClass)); in run()
718 Table->PrimaryKey = in run()
719 parseSearchIndex(*Table, TableRec->getValue("PrimaryKey"), in run()
724 llvm::stable_sort(Table->Entries, [&](Record *LHS, Record *RHS) { in run()
725 return compareBy(LHS, RHS, *Table->PrimaryKey); in run()
729 TableMap.insert(std::make_pair(TableRec, Table.get())); in run()
730 Tables.emplace_back(std::move(Table)); in run()
742 GenericTable &Table = *It->second; in run() local
743 Table.Indices.push_back( in run()
744 parseSearchIndex(Table, IndexRec->getValue("Key"), IndexRec->getName(), in run()
775 auto Table = std::make_unique<GenericTable>(); in run() local
776 Table->Name = (Twine(Class->getName()) + "sList").str(); in run()
777 Table->Locs = Class->getLoc(); in run()
778 Table->PreprocessorGuard = Class->getName().upper(); in run()
779 Table->CppTypeName = std::string(Class->getName()); in run()
791 Table->Fields.emplace_back(FieldName); in run()
794 collectTableEntries(*Table, Items); in run()
799 (Twine("lookup") + Table->CppTypeName + "By" + Field).str(); in run()
800 Table->Indices.push_back(parseSearchIndex(*Table, Class->getValue(Field), in run()
804 Tables.emplace_back(std::move(Table)); in run()
811 for (const auto &Table : Tables) in run() local
812 emitGenericTable(*Table, OS); in run()