Lines Matching refs:Table

153   std::string searchableFieldType(const GenericTable &Table,  in searchableFieldType()  argument
172 PrintFatalError(Index.Loc, Twine("In table '") + Table.Name + in searchableFieldType()
179 Twine("In table '") + Table.Name + "' lookup method '" + in searchableFieldType()
184 void emitGenericTable(const GenericTable &Table, raw_ostream &OS);
186 void emitLookupDeclaration(const GenericTable &Table,
188 void emitLookupFunction(const GenericTable &Table, const SearchIndex &Index,
194 parseSearchIndex(GenericTable &Table, const RecordVal *RecVal, StringRef Name,
199 void collectTableEntries(GenericTable &Table,
305 void SearchableTableEmitter::emitLookupFunction(const GenericTable &Table, in emitLookupFunction() argument
310 emitLookupDeclaration(Table, Index, OS); in emitLookupFunction()
319 IndexTypeName = Table.CppTypeName; in emitLookupFunction()
320 IndexName = Table.Name; in emitLookupFunction()
321 IndexRows = Table.Entries; in emitLookupFunction()
326 << searchableFieldType(Table, Index, Field, TypeInStaticStruct) << " " in emitLookupFunction()
335 Entries.reserve(Table.Entries.size()); in emitLookupFunction()
336 for (unsigned i = 0; i < Table.Entries.size(); ++i) in emitLookupFunction()
337 Entries.emplace_back(Table.Entries[i], i); in emitLookupFunction()
387 OS << "&" << Table.Name << "[Table[Idx]._index]"; in emitLookupFunction()
406 OS << " " << searchableFieldType(Table, Index, Field, TypeInTempStruct) in emitLookupFunction()
418 Twine("In table '") + Table.Name + in emitLookupFunction()
465 OS << " return &" << Table.Name << "[Idx->_index];\n"; in emitLookupFunction()
470 void SearchableTableEmitter::emitLookupDeclaration(const GenericTable &Table, in emitLookupDeclaration() argument
473 OS << "const " << Table.CppTypeName << " *" << Index.Name << "("; in emitLookupDeclaration()
477 OS << LS << searchableFieldType(Table, Index, Field, TypeInArgument) << " " in emitLookupDeclaration()
482 void SearchableTableEmitter::emitGenericTable(const GenericTable &Table, in emitGenericTable() argument
484 emitIfdef((Twine("GET_") + Table.PreprocessorGuard + "_DECL").str(), OS); in emitGenericTable()
487 if (Table.PrimaryKey) { in emitGenericTable()
488 emitLookupDeclaration(Table, *Table.PrimaryKey, OS); in emitGenericTable()
491 for (const auto &Index : Table.Indices) { in emitGenericTable()
492 emitLookupDeclaration(Table, *Index, OS); in emitGenericTable()
498 emitIfdef((Twine("GET_") + Table.PreprocessorGuard + "_IMPL").str(), OS); in emitGenericTable()
501 OS << "constexpr " << Table.CppTypeName << " " << Table.Name << "[] = {\n"; in emitGenericTable()
502 for (unsigned i = 0; i < Table.Entries.size(); ++i) { in emitGenericTable()
503 Record *Entry = Table.Entries[i]; in emitGenericTable()
507 for (const auto &Field : Table.Fields) in emitGenericTable()
509 << primaryRepresentation(Table.Locs[0], Field, in emitGenericTable()
518 if (Table.PrimaryKey) in emitGenericTable()
519 emitLookupFunction(Table, *Table.PrimaryKey, true, OS); in emitGenericTable()
520 for (const auto &Index : Table.Indices) in emitGenericTable()
521 emitLookupFunction(Table, *Index, false, OS); in emitGenericTable()
546 GenericTable &Table, const RecordVal *KeyRecVal, StringRef Name, in parseSearchIndex() argument
554 const GenericField *Field = Table.getFieldByName(FieldName); in parseSearchIndex()
558 Twine("In table '") + Table.Name + in parseSearchIndex()
605 GenericTable &Table, const std::vector<Record *> &Items) { in collectTableEntries() argument
607 PrintFatalError(Table.Locs, in collectTableEntries()
608 Twine("Table '") + Table.Name + "' has no entries"); in collectTableEntries()
611 for (auto &Field : Table.Fields) { in collectTableEntries()
615 "' for table '" + Table.Name + in collectTableEntries()
626 Table.Name + "' entry has incompatible type: " + in collectTableEntries()
633 Table.Entries.push_back(EntryRec); // Add record to table's record list. in collectTableEntries()
638 for (auto &Field : Table.Fields) { in collectTableEntries()
641 "' in table '" + Table.Name + "'. Maybe it is not used?"); in collectTableEntries()
652 std::copy(Table.Fields.begin(), Table.Fields.end(), in collectTableEntries()
654 llvm::sort(Table.Entries, [&](Record *LHS, Record *RHS) { in collectTableEntries()
692 auto Table = std::make_unique<GenericTable>(); in run() local
693 Table->Name = std::string(TableRec->getName()); in run()
694 Table->Locs = TableRec->getLoc(); in run()
695 Table->PreprocessorGuard = std::string(TableRec->getName()); in run()
696 Table->CppTypeName = std::string(TableRec->getValueAsString("CppTypeName")); in run()
700 Table->Fields.emplace_back(FieldName); // Construct a GenericField. in run()
703 if (!parseFieldType(Table->Fields.back(), TypeOfRecordVal->getValue())) { in run()
705 Twine("Table '") + Table->Name + in run()
720 collectTableEntries(*Table, Records.getAllDerivedDefinitions(FilterClass)); in run()
723 Table->PrimaryKey = in run()
724 parseSearchIndex(*Table, TableRec->getValue("PrimaryKey"), in run()
729 llvm::stable_sort(Table->Entries, [&](Record *LHS, Record *RHS) { in run()
730 return compareBy(LHS, RHS, *Table->PrimaryKey); in run()
734 TableMap.insert(std::make_pair(TableRec, Table.get())); in run()
735 Tables.emplace_back(std::move(Table)); in run()
747 GenericTable &Table = *It->second; in run() local
748 Table.Indices.push_back( in run()
749 parseSearchIndex(Table, IndexRec->getValue("Key"), IndexRec->getName(), in run()
780 auto Table = std::make_unique<GenericTable>(); in run() local
781 Table->Name = (Twine(Class->getName()) + "sList").str(); in run()
782 Table->Locs = Class->getLoc(); in run()
783 Table->PreprocessorGuard = Class->getName().upper(); in run()
784 Table->CppTypeName = std::string(Class->getName()); in run()
796 Table->Fields.emplace_back(FieldName); in run()
799 collectTableEntries(*Table, Items); in run()
804 (Twine("lookup") + Table->CppTypeName + "By" + Field).str(); in run()
805 Table->Indices.push_back(parseSearchIndex(*Table, Class->getValue(Field), in run()
809 Tables.emplace_back(std::move(Table)); in run()
816 for (const auto &Table : Tables) in run() local
817 emitGenericTable(*Table, OS); in run()