DeclVendor.h revision 278334
1//===-- DeclVendor.h --------------------------------------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef liblldb_DeclVendor_h_
11#define liblldb_DeclVendor_h_
12
13#include "lldb/Core/ClangForward.h"
14
15#include <vector>
16
17namespace lldb_private {
18
19//----------------------------------------------------------------------
20// The Decl vendor class is intended as a generic interface to search
21// for named declarations that are not necessarily backed by a specific
22// symbol file.
23//----------------------------------------------------------------------
24class DeclVendor
25{
26public:
27    //------------------------------------------------------------------
28    // Constructors and Destructors
29    //------------------------------------------------------------------
30    DeclVendor()
31    {
32    }
33
34    virtual
35    ~DeclVendor()
36    {
37    }
38
39    //------------------------------------------------------------------
40    /// Look up the set of Decls that the DeclVendor currently knows about
41    /// matching a given name.
42    ///
43    /// @param[in] name
44    ///     The name to look for.
45    ///
46    /// @param[in] append
47    ///     If true, FindDecls will clear "decls" when it starts.
48    ///
49    /// @param[in] max_matches
50    ///     The maximum number of Decls to return.  UINT32_MAX means "as
51    ///     many as possible."
52    ///
53    /// @return
54    ///     The number of Decls added to decls; will not exceed
55    ///     max_matches.
56    //------------------------------------------------------------------
57    virtual uint32_t
58    FindDecls (const ConstString &name,
59               bool append,
60               uint32_t max_matches,
61               std::vector <clang::NamedDecl*> &decls) = 0;
62
63private:
64    //------------------------------------------------------------------
65    // For DeclVendor only
66    //------------------------------------------------------------------
67    DISALLOW_COPY_AND_ASSIGN (DeclVendor);
68};
69
70
71} // namespace lldb_private
72
73#endif
74