1 //===-- ClangDeclVendor.h ---------------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLDB_SOURCE_PLUGINS_EXPRESSIONPARSER_CLANG_CLANGDECLVENDOR_H
10 #define LLDB_SOURCE_PLUGINS_EXPRESSIONPARSER_CLANG_CLANGDECLVENDOR_H
11 
12 #include "lldb/Symbol/DeclVendor.h"
13 
14 namespace clang {
15 class NamedDecl;
16 }
17 
18 namespace lldb_private {
19 
20 // A clang specialized extension to DeclVendor.
21 class ClangDeclVendor : public DeclVendor {
22 public:
23   ClangDeclVendor(DeclVendorKind kind) : DeclVendor(kind) {}
24 
25   virtual ~ClangDeclVendor() = default;
26 
27   using DeclVendor::FindDecls;
28 
29   uint32_t FindDecls(ConstString name, bool append, uint32_t max_matches,
30                      std::vector<clang::NamedDecl *> &decls);
31 
32   static bool classof(const DeclVendor *vendor) {
33     return vendor->GetKind() >= eClangDeclVendor &&
34            vendor->GetKind() < eLastClangDeclVendor;
35   }
36 
37 private:
38   ClangDeclVendor(const ClangDeclVendor &) = delete;
39   const ClangDeclVendor &operator=(const ClangDeclVendor &) = delete;
40 };
41 } // namespace lldb_private
42 
43 #endif
44