SymbolFileSymtab.h revision 16d2187c0c3992f22e9cb011f863dc0fe35e3cde
1//===-- SymbolFileSymtab.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_SymbolFileSymtab_h_ 11#define liblldb_SymbolFileSymtab_h_ 12 13#include "lldb/Symbol/SymbolFile.h" 14#include "lldb/Symbol/Symtab.h" 15#include <vector> 16 17class SymbolFileSymtab : public lldb_private::SymbolFile 18{ 19public: 20 //------------------------------------------------------------------ 21 // Static Functions 22 //------------------------------------------------------------------ 23 static void 24 Initialize(); 25 26 static void 27 Terminate(); 28 29 static const char * 30 GetPluginNameStatic(); 31 32 static const char * 33 GetPluginDescriptionStatic(); 34 35 static lldb_private::SymbolFile* 36 CreateInstance (lldb_private::ObjectFile* obj_file); 37 38 //------------------------------------------------------------------ 39 // Constructors and Destructors 40 //------------------------------------------------------------------ 41 SymbolFileSymtab(lldb_private::ObjectFile* obj_file); 42 43 virtual 44 ~SymbolFileSymtab(); 45 46 virtual uint32_t CalculateAbilities (); 47 48 //------------------------------------------------------------------ 49 // Compile Unit function calls 50 //------------------------------------------------------------------ 51 virtual uint32_t 52 GetNumCompileUnits(); 53 54 virtual lldb::CompUnitSP 55 ParseCompileUnitAtIndex(uint32_t index); 56 57 virtual size_t 58 ParseCompileUnitFunctions (const lldb_private::SymbolContext& sc); 59 60 virtual bool 61 ParseCompileUnitLineTable (const lldb_private::SymbolContext& sc); 62 63 virtual bool 64 ParseCompileUnitSupportFiles (const lldb_private::SymbolContext& sc, lldb_private::FileSpecList &support_files); 65 66 virtual size_t 67 ParseFunctionBlocks (const lldb_private::SymbolContext& sc); 68 69 virtual size_t 70 ParseTypes (const lldb_private::SymbolContext& sc); 71 72 virtual size_t 73 ParseVariablesForContext (const lldb_private::SymbolContext& sc); 74 75 virtual lldb_private::Type* 76 ResolveTypeUID(lldb::user_id_t type_uid); 77 78 virtual lldb::clang_type_t 79 ResolveClangOpaqueTypeDefinition (lldb::clang_type_t clang_Type); 80 81 virtual uint32_t 82 ResolveSymbolContext (const lldb_private::Address& so_addr, uint32_t resolve_scope, lldb_private::SymbolContext& sc); 83 84 virtual uint32_t 85 ResolveSymbolContext (const lldb_private::FileSpec& file_spec, uint32_t line, bool check_inlines, uint32_t resolve_scope, lldb_private::SymbolContextList& sc_list); 86 87 virtual uint32_t 88 FindGlobalVariables(const lldb_private::ConstString &name, const lldb_private::ClangNamespaceDecl *namespace_decl, bool append, uint32_t max_matches, lldb_private::VariableList& variables); 89 90 virtual uint32_t 91 FindGlobalVariables(const lldb_private::RegularExpression& regex, bool append, uint32_t max_matches, lldb_private::VariableList& variables); 92 93 virtual uint32_t 94 FindFunctions(const lldb_private::ConstString &name, const lldb_private::ClangNamespaceDecl *namespace_decl, uint32_t name_type_mask, bool append, lldb_private::SymbolContextList& sc_list); 95 96 virtual uint32_t 97 FindFunctions(const lldb_private::RegularExpression& regex, bool append, lldb_private::SymbolContextList& sc_list); 98 99 virtual uint32_t 100 FindTypes (const lldb_private::SymbolContext& sc,const lldb_private::ConstString &name, const lldb_private::ClangNamespaceDecl *namespace_decl, bool append, uint32_t max_matches, lldb_private::TypeList& types); 101 102// virtual uint32_t 103// FindTypes(const lldb_private::SymbolContext& sc, const lldb_private::RegularExpression& regex, bool append, uint32_t max_matches, lldb_private::TypeList& types); 104 105 virtual lldb_private::ClangNamespaceDecl 106 FindNamespace (const lldb_private::SymbolContext& sc, 107 const lldb_private::ConstString &name, 108 const lldb_private::ClangNamespaceDecl *parent_namespace_decl); 109 110 //------------------------------------------------------------------ 111 // PluginInterface protocol 112 //------------------------------------------------------------------ 113 virtual const char * 114 GetPluginName(); 115 116 virtual const char * 117 GetShortPluginName(); 118 119 virtual uint32_t 120 GetPluginVersion(); 121 122protected: 123 typedef std::map<lldb_private::ConstString, lldb::TypeSP> TypeMap; 124 125 lldb_private::Symtab::IndexCollection m_source_indexes; 126 lldb_private::Symtab::IndexCollection m_func_indexes; 127 lldb_private::Symtab::IndexCollection m_code_indexes; 128 lldb_private::Symtab::IndexCollection m_data_indexes; 129 lldb_private::Symtab::NameToIndexMap m_objc_class_name_to_index; 130 TypeMap m_objc_class_types; 131 132 lldb_private::ClangASTContext & 133 GetClangASTContext (); 134 135private: 136 DISALLOW_COPY_AND_ASSIGN (SymbolFileSymtab); 137}; 138 139 140#endif // liblldb_SymbolFileSymtab_h_ 141