xref: /freebsd-src/contrib/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangDeclVendor.h (revision 81ad626541db97eb356e2c1d4a20eb2a26a766ab)
19dba64beSDimitry Andric //===-- ClangDeclVendor.h ---------------------------------------*- C++ -*-===//
29dba64beSDimitry Andric //
39dba64beSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
49dba64beSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
59dba64beSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
69dba64beSDimitry Andric //
79dba64beSDimitry Andric //===----------------------------------------------------------------------===//
89dba64beSDimitry Andric 
95ffd83dbSDimitry Andric #ifndef LLDB_SOURCE_PLUGINS_EXPRESSIONPARSER_CLANG_CLANGDECLVENDOR_H
105ffd83dbSDimitry Andric #define LLDB_SOURCE_PLUGINS_EXPRESSIONPARSER_CLANG_CLANGDECLVENDOR_H
119dba64beSDimitry Andric 
129dba64beSDimitry Andric #include "lldb/Symbol/DeclVendor.h"
139dba64beSDimitry Andric 
145ffd83dbSDimitry Andric namespace clang {
155ffd83dbSDimitry Andric class NamedDecl;
165ffd83dbSDimitry Andric }
175ffd83dbSDimitry Andric 
189dba64beSDimitry Andric namespace lldb_private {
199dba64beSDimitry Andric 
209dba64beSDimitry Andric // A clang specialized extension to DeclVendor.
219dba64beSDimitry Andric class ClangDeclVendor : public DeclVendor {
229dba64beSDimitry Andric public:
ClangDeclVendor(DeclVendorKind kind)239dba64beSDimitry Andric   ClangDeclVendor(DeclVendorKind kind) : DeclVendor(kind) {}
249dba64beSDimitry Andric 
25*81ad6265SDimitry Andric   ~ClangDeclVendor() override = default;
269dba64beSDimitry Andric 
27480093f4SDimitry Andric   using DeclVendor::FindDecls;
289dba64beSDimitry Andric 
299dba64beSDimitry Andric   uint32_t FindDecls(ConstString name, bool append, uint32_t max_matches,
30480093f4SDimitry Andric                      std::vector<clang::NamedDecl *> &decls);
319dba64beSDimitry Andric 
classof(const DeclVendor * vendor)329dba64beSDimitry Andric   static bool classof(const DeclVendor *vendor) {
339dba64beSDimitry Andric     return vendor->GetKind() >= eClangDeclVendor &&
349dba64beSDimitry Andric            vendor->GetKind() < eLastClangDeclVendor;
359dba64beSDimitry Andric   }
369dba64beSDimitry Andric 
379dba64beSDimitry Andric private:
385ffd83dbSDimitry Andric   ClangDeclVendor(const ClangDeclVendor &) = delete;
395ffd83dbSDimitry Andric   const ClangDeclVendor &operator=(const ClangDeclVendor &) = delete;
409dba64beSDimitry Andric };
419dba64beSDimitry Andric } // namespace lldb_private
429dba64beSDimitry Andric 
439dba64beSDimitry Andric #endif
44