1 //===-- SymbolFileSymtab.h --------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef liblldb_SymbolFileSymtab_h_
11 #define liblldb_SymbolFileSymtab_h_
13 #include "lldb/Symbol/SymbolFile.h"
14 #include "lldb/Symbol/Symtab.h"
17 class SymbolFileSymtab : public lldb_private::SymbolFile
20 //------------------------------------------------------------------
22 //------------------------------------------------------------------
29 static lldb_private::ConstString
30 GetPluginNameStatic();
33 GetPluginDescriptionStatic();
35 static lldb_private::SymbolFile*
36 CreateInstance (lldb_private::ObjectFile* obj_file);
38 //------------------------------------------------------------------
39 // Constructors and Destructors
40 //------------------------------------------------------------------
41 SymbolFileSymtab(lldb_private::ObjectFile* obj_file);
46 virtual uint32_t CalculateAbilities ();
48 //------------------------------------------------------------------
49 // Compile Unit function calls
50 //------------------------------------------------------------------
54 virtual lldb::CompUnitSP
55 ParseCompileUnitAtIndex(uint32_t index);
57 virtual lldb::LanguageType
58 ParseCompileUnitLanguage (const lldb_private::SymbolContext& sc);
61 ParseCompileUnitFunctions (const lldb_private::SymbolContext& sc);
64 ParseCompileUnitLineTable (const lldb_private::SymbolContext& sc);
67 ParseCompileUnitSupportFiles (const lldb_private::SymbolContext& sc, lldb_private::FileSpecList &support_files);
70 ParseFunctionBlocks (const lldb_private::SymbolContext& sc);
73 ParseTypes (const lldb_private::SymbolContext& sc);
76 ParseVariablesForContext (const lldb_private::SymbolContext& sc);
78 virtual lldb_private::Type*
79 ResolveTypeUID(lldb::user_id_t type_uid);
82 ResolveClangOpaqueTypeDefinition (lldb_private::ClangASTType& clang_type);
85 ResolveSymbolContext (const lldb_private::Address& so_addr, uint32_t resolve_scope, lldb_private::SymbolContext& sc);
88 ResolveSymbolContext (const lldb_private::FileSpec& file_spec, uint32_t line, bool check_inlines, uint32_t resolve_scope, lldb_private::SymbolContextList& sc_list);
91 FindGlobalVariables(const lldb_private::ConstString &name, const lldb_private::ClangNamespaceDecl *namespace_decl, bool append, uint32_t max_matches, lldb_private::VariableList& variables);
94 FindGlobalVariables(const lldb_private::RegularExpression& regex, bool append, uint32_t max_matches, lldb_private::VariableList& variables);
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);
100 FindFunctions(const lldb_private::RegularExpression& regex, bool include_inlines, bool append, lldb_private::SymbolContextList& sc_list);
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);
106 GetTypes (lldb_private::SymbolContextScope *sc_scope,
108 lldb_private::TypeList &type_list);
110 virtual lldb_private::ClangNamespaceDecl
111 FindNamespace (const lldb_private::SymbolContext& sc,
112 const lldb_private::ConstString &name,
113 const lldb_private::ClangNamespaceDecl *parent_namespace_decl);
115 //------------------------------------------------------------------
116 // PluginInterface protocol
117 //------------------------------------------------------------------
118 virtual lldb_private::ConstString
125 typedef std::map<lldb_private::ConstString, lldb::TypeSP> TypeMap;
127 lldb_private::Symtab::IndexCollection m_source_indexes;
128 lldb_private::Symtab::IndexCollection m_func_indexes;
129 lldb_private::Symtab::IndexCollection m_code_indexes;
130 lldb_private::Symtab::IndexCollection m_data_indexes;
131 lldb_private::Symtab::NameToIndexMap m_objc_class_name_to_index;
132 TypeMap m_objc_class_types;
134 lldb_private::ClangASTContext &
135 GetClangASTContext ();
138 DISALLOW_COPY_AND_ASSIGN (SymbolFileSymtab);
142 #endif // liblldb_SymbolFileSymtab_h_