SymbolFileSymtab.h revision 49ce8969d3154e1560106cfe530444c09410f217
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 lldb::LanguageType 58 ParseCompileUnitLanguage (const lldb_private::SymbolContext& sc); 59 60 virtual size_t 61 ParseCompileUnitFunctions (const lldb_private::SymbolContext& sc); 62 63 virtual bool 64 ParseCompileUnitLineTable (const lldb_private::SymbolContext& sc); 65 66 virtual bool 67 ParseCompileUnitSupportFiles (const lldb_private::SymbolContext& sc, lldb_private::FileSpecList &support_files); 68 69 virtual size_t 70 ParseFunctionBlocks (const lldb_private::SymbolContext& sc); 71 72 virtual size_t 73 ParseTypes (const lldb_private::SymbolContext& sc); 74 75 virtual size_t 76 ParseVariablesForContext (const lldb_private::SymbolContext& sc); 77 78 virtual lldb_private::Type* 79 ResolveTypeUID(lldb::user_id_t type_uid); 80 81 virtual lldb::clang_type_t 82 ResolveClangOpaqueTypeDefinition (lldb::clang_type_t clang_Type); 83 84 virtual uint32_t 85 ResolveSymbolContext (const lldb_private::Address& so_addr, uint32_t resolve_scope, lldb_private::SymbolContext& sc); 86 87 virtual uint32_t 88 ResolveSymbolContext (const lldb_private::FileSpec& file_spec, uint32_t line, bool check_inlines, uint32_t resolve_scope, lldb_private::SymbolContextList& sc_list); 89 90 virtual uint32_t 91 FindGlobalVariables(const lldb_private::ConstString &name, const lldb_private::ClangNamespaceDecl *namespace_decl, bool append, uint32_t max_matches, lldb_private::VariableList& variables); 92 93 virtual uint32_t 94 FindGlobalVariables(const lldb_private::RegularExpression& regex, bool append, uint32_t max_matches, lldb_private::VariableList& variables); 95 96 virtual uint32_t 97 FindFunctions(const lldb_private::ConstString &name, const lldb_private::ClangNamespaceDecl *namespace_decl, uint32_t name_type_mask, bool include_inlines, bool append, lldb_private::SymbolContextList& sc_list); 98 99 virtual uint32_t 100 FindFunctions(const lldb_private::RegularExpression& regex, bool include_inlines, bool append, lldb_private::SymbolContextList& sc_list); 101 102 virtual uint32_t 103 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); 104 105// virtual uint32_t 106// FindTypes(const lldb_private::SymbolContext& sc, const lldb_private::RegularExpression& regex, bool append, uint32_t max_matches, lldb_private::TypeList& types); 107 108 virtual lldb_private::ClangNamespaceDecl 109 FindNamespace (const lldb_private::SymbolContext& sc, 110 const lldb_private::ConstString &name, 111 const lldb_private::ClangNamespaceDecl *parent_namespace_decl); 112 113 //------------------------------------------------------------------ 114 // PluginInterface protocol 115 //------------------------------------------------------------------ 116 virtual const char * 117 GetPluginName(); 118 119 virtual const char * 120 GetShortPluginName(); 121 122 virtual uint32_t 123 GetPluginVersion(); 124 125protected: 126 typedef std::map<lldb_private::ConstString, lldb::TypeSP> TypeMap; 127 128 lldb_private::Symtab::IndexCollection m_source_indexes; 129 lldb_private::Symtab::IndexCollection m_func_indexes; 130 lldb_private::Symtab::IndexCollection m_code_indexes; 131 lldb_private::Symtab::IndexCollection m_data_indexes; 132 lldb_private::Symtab::NameToIndexMap m_objc_class_name_to_index; 133 TypeMap m_objc_class_types; 134 135 lldb_private::ClangASTContext & 136 GetClangASTContext (); 137 138private: 139 DISALLOW_COPY_AND_ASSIGN (SymbolFileSymtab); 140}; 141 142 143#endif // liblldb_SymbolFileSymtab_h_ 144