1673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan//===-- AppleObjCSymbolVendor.h ---------------------------------*- C++ -*-===//
2673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan//
3673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan//                     The LLVM Compiler Infrastructure
4673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan//
5673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan// This file is distributed under the University of Illinois Open Source
6673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan// License. See LICENSE.TXT for details.
7673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan//
8673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan//===----------------------------------------------------------------------===//
9673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan
10673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan#ifndef liblldb_AppleObjCSymbolVendor_h_
11673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan#define liblldb_AppleObjCSymbolVendor_h_
12673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan
13673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan// C Includes
14673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan// C++ Includes
15673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan
16673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan#include <map>
17673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan
18673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan// Other libraries and framework includes
19c718b9652bb1a7aea5d133123fcc8bc87277002cSean Callanan
20673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan// Project includes
21673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan#include "lldb/lldb-private.h"
22673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan#include "lldb/Symbol/ClangASTContext.h"
23c718b9652bb1a7aea5d133123fcc8bc87277002cSean Callanan#include "lldb/Symbol/TypeVendor.h"
24d83ecab0aeb229504737e34b2f03c07fcb967480Sean Callanan#include "lldb/Target/ObjCLanguageRuntime.h"
25673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan
26673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanannamespace lldb_private {
27c718b9652bb1a7aea5d133123fcc8bc87277002cSean Callanan
28c718b9652bb1a7aea5d133123fcc8bc87277002cSean Callananclass AppleObjCExternalASTSource;
29673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan
30c718b9652bb1a7aea5d133123fcc8bc87277002cSean Callananclass AppleObjCTypeVendor : public TypeVendor
31673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan{
32673f3dbea64b116166dfa668006cdc84224a27c0Sean Callananpublic:
33c718b9652bb1a7aea5d133123fcc8bc87277002cSean Callanan    AppleObjCTypeVendor(ObjCLanguageRuntime &runtime);
34673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan
35673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan    virtual uint32_t
36c718b9652bb1a7aea5d133123fcc8bc87277002cSean Callanan    FindTypes (const ConstString &name,
37c718b9652bb1a7aea5d133123fcc8bc87277002cSean Callanan               bool append,
38c718b9652bb1a7aea5d133123fcc8bc87277002cSean Callanan               uint32_t max_matches,
39c718b9652bb1a7aea5d133123fcc8bc87277002cSean Callanan               std::vector <ClangASTType> &types);
40673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan
41282c22c6a6b6e54324b0d474b90d918bbfd3a10eSean Callanan    virtual clang::ASTContext *
42282c22c6a6b6e54324b0d474b90d918bbfd3a10eSean Callanan    GetClangASTContext ()
43282c22c6a6b6e54324b0d474b90d918bbfd3a10eSean Callanan    {
44282c22c6a6b6e54324b0d474b90d918bbfd3a10eSean Callanan        return m_ast_ctx.getASTContext();
45282c22c6a6b6e54324b0d474b90d918bbfd3a10eSean Callanan    }
46282c22c6a6b6e54324b0d474b90d918bbfd3a10eSean Callanan
47c718b9652bb1a7aea5d133123fcc8bc87277002cSean Callanan    friend class AppleObjCExternalASTSource;
48673f3dbea64b116166dfa668006cdc84224a27c0Sean Callananprivate:
49d83ecab0aeb229504737e34b2f03c07fcb967480Sean Callanan    clang::ObjCInterfaceDecl   *GetDeclForISA(ObjCLanguageRuntime::ObjCISA isa);
50d83ecab0aeb229504737e34b2f03c07fcb967480Sean Callanan    bool                        FinishDecl(clang::ObjCInterfaceDecl *decl);
51d83ecab0aeb229504737e34b2f03c07fcb967480Sean Callanan
52d83ecab0aeb229504737e34b2f03c07fcb967480Sean Callanan    ObjCLanguageRuntime        &m_runtime;
53d83ecab0aeb229504737e34b2f03c07fcb967480Sean Callanan    ClangASTContext             m_ast_ctx;
54d83ecab0aeb229504737e34b2f03c07fcb967480Sean Callanan    AppleObjCExternalASTSource *m_external_source;
55d83ecab0aeb229504737e34b2f03c07fcb967480Sean Callanan
56d83ecab0aeb229504737e34b2f03c07fcb967480Sean Callanan    typedef llvm::DenseMap<ObjCLanguageRuntime::ObjCISA, clang::ObjCInterfaceDecl *> ISAToInterfaceMap;
57d83ecab0aeb229504737e34b2f03c07fcb967480Sean Callanan
58d83ecab0aeb229504737e34b2f03c07fcb967480Sean Callanan    ISAToInterfaceMap           m_isa_to_interface;
59673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan};
60673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan
61673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan} // namespace lldb_private
62673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan
63673f3dbea64b116166dfa668006cdc84224a27c0Sean Callanan#endif  // liblldb_AppleObjCSymbolVendor_h_
64