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