ClangExpressionDeclMap.h revision 8f0dc34f45576dfb719f879b6d3ea5f61de0e918
124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- ClangExpressionDeclMap.h --------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef liblldb_ClangExpressionDeclMap_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define liblldb_ClangExpressionDeclMap_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C Includes 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <signal.h> 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <stdint.h> 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C++ Includes 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <vector> 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Other libraries and framework includes 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/ClangForward.h" 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/Value.h" 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace clang { 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner class DeclarationName; 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner class DeclContext; 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb_private { 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 328f0dc34f45576dfb719f879b6d3ea5f61de0e918Sean Callananclass Function; 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass NameSearchContext; 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass Variable; 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass ClangExpressionDeclMap 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ClangExpressionDeclMap(ExecutionContext *exe_ctx); 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~ClangExpressionDeclMap(); 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Interface for ClangStmtVisitor 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool GetIndexForDecl (uint32_t &index, 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const clang::Decl *decl); 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Interface for DwarfExpression 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Value *GetValueForIndex (uint32_t index); 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Interface for ClangASTSource 5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void GetDecls (NameSearchContext &context, 5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const char *name); 5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected: 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate: 5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner struct Tuple 5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const clang::NamedDecl *m_decl; 5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Value *m_value; /* owned by ClangExpressionDeclMap */ 5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner }; 5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef std::vector<Tuple> TupleVector; 6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef TupleVector::iterator TupleIterator; 6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner TupleVector m_tuples; 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ExecutionContext *m_exe_ctx; 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SymbolContext *m_sym_ctx; /* owned by ClangExpressionDeclMap */ 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 678f0dc34f45576dfb719f879b6d3ea5f61de0e918Sean Callanan void AddOneVariable(NameSearchContext &context, Variable *var); 688f0dc34f45576dfb719f879b6d3ea5f61de0e918Sean Callanan void AddOneFunction(NameSearchContext &context, Function *fun); 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb_private 7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // liblldb_ClangExpressionDeclMap_h_ 74