================
@@ -893,6 +905,56 @@
APINotesReader::Implementation::getIdentifier(llvm::StringRef Str) {
return *Known;
}
+std::optional<llvm::StringRef>
+APINotesReader::Implementation::getIdentifierString(IdentifierID ID) {
+ if (!IdentifierTable)
+ return std::nullopt;
+
+ if (ID == IdentifierID(0))
+ return llvm::StringRef();
+
+ for (llvm::StringRef Identifier : IdentifierTable->keys()) {
+ auto KnownID = IdentifierTable->find(Identifier);
+ if (KnownID != IdentifierTable->end() && *KnownID == ID)
+ return Identifier;
+ }
+
+ return std::nullopt;
+}
+
+template <typename TableT>
+void APINotesReader::Implementation::collectFunctionParameterSelectors(
+ TableT *Table, uint32_t ParentContextID, llvm::StringRef Name,
+ llvm::SmallVectorImpl<llvm::SmallVector<std::string, 4>> &Selectors) {
+ if (!Table)
+ return;
+
+ std::optional<IdentifierID> NameID = getIdentifier(Name);
+ if (!NameID)
+ return;
+
+ for (auto I = Table->key_begin(), E = Table->key_end(); I != E; ++I) {
----------------
Xazax-hun wrote:
Wouldn't a range-based for over `Table->keys()` be cleaner here?
https://github.com/llvm/llvm-project/pull/209408
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits