20#ifndef GDB_DWARF2_COOKED_INDEX_H
21#define GDB_DWARF2_COOKED_INDEX_H
28#include "gdbsupport/gdb_string_view.h"
30#include "gdbsupport/gdb_obstack.h"
32#include "gdbsupport/iterator-range.h"
33#include "gdbsupport/thread-pool.h"
36#include "gdbsupport/range-chain.h"
74 cooked_index_flag flags_,
const char *name_,
87 bool matches (block_search_flags search_flags)
const
115 return tag == DW_TAG_module;
118 return tag == DW_TAG_common_block;
134 return (
tag == DW_TAG_variable
135 ||
tag == DW_TAG_constant
136 ||
tag == DW_TAG_enumerator);
138 return tag == DW_TAG_subprogram;
142 return tag == DW_TAG_module;
154 const char *
full_name (
struct obstack *storage,
bool for_main =
false)
const;
197 static int compare (
const char *stra,
const char *strb,
232 void write_scope (
struct obstack *storage,
const char *sep,
233 bool for_name)
const;
254 cooked_index_flag
flags,
280 typedef iterator_range<std::vector<cooked_index_entry *>::iterator>
range;
315 cooked_index_flag
flags,
346 std::vector<gdb::unique_xmalloc_ptr<char>>
m_names;
364 typedef std::vector<std::unique_ptr<cooked_index>>
vec_type;
389 typedef range_chain<cooked_index::range>
range;
399 std::vector<cooked_index::range> result_range;
400 result_range.reserve (
m_vector.size ());
402 result_range.push_back (entry->all_entries ());
403 return range (std::move (result_range));
std::vector< addrmap * > get_addrmaps()
dwarf2_per_cu_data * lookup(CORE_ADDR addr)
const cooked_index_entry * get_main() const
std::vector< std::unique_ptr< cooked_index > > vec_type
quick_symbol_functions_up make_quick_functions() const override
range find(const std::string &name, bool completing)
cooked_index_vector * index_for_writing() override
DISABLE_COPY_AND_ASSIGN(cooked_index_vector)
range_chain< cooked_index::range > range
dwarf2_per_cu_data * lookup(CORE_ADDR addr)
gdb::unique_xmalloc_ptr< char > handle_gnat_encoded_entry(cooked_index_entry *entry, htab_t gnat_entries)
cooked_index_entry * create(sect_offset die_offset, enum dwarf_tag tag, cooked_index_flag flags, const char *name, const cooked_index_entry *parent_entry, dwarf2_per_cu_data *per_cu)
const cooked_index_entry * get_main() const
std::vector< gdb::unique_xmalloc_ptr< char > > m_names
cooked_index_entry * m_main
gdb::future< void > m_future
void install_addrmap(addrmap_mutable *map)
iterator_range< std::vector< cooked_index_entry * >::iterator > range
range find(const std::string &name, bool completing)
const cooked_index_entry * add(sect_offset die_offset, enum dwarf_tag tag, cooked_index_flag flags, const char *name, const cooked_index_entry *parent_entry, dwarf2_per_cu_data *per_cu)
std::vector< cooked_index_entry * > m_entries
DISABLE_COPY_AND_ASSIGN(cooked_index)
bool language_requires_canonicalization(enum language lang)
DEF_ENUM_FLAGS_TYPE(enum cooked_index_flag_enum, cooked_index_flag)
mach_port_t kern_return_t mach_port_t mach_msg_type_name_t msgportsPoly mach_port_t kern_return_t pid_t pid mach_port_t kern_return_t mach_port_t task mach_port_t kern_return_t int flags
std::unique_ptr< quick_symbol_functions > quick_symbol_functions_up
virtual void * find(CORE_ADDR addr) const =0
bool matches(domain_enum domain) const
dwarf2_per_cu_data * per_cu
void write_scope(struct obstack *storage, const char *sep, bool for_name) const
cooked_index_entry(sect_offset die_offset_, enum dwarf_tag tag_, cooked_index_flag flags_, const char *name_, const cooked_index_entry *parent_entry_, dwarf2_per_cu_data *per_cu_)
static int compare(const char *stra, const char *strb, comparison_mode mode)
bool matches(enum search_domain kind) const
const char * full_name(struct obstack *storage, bool for_main=false) const
bool matches(block_search_flags search_flags) const
const cooked_index_entry * parent_entry
bool operator<(const cooked_index_entry &other) const
enum language lang(bool strict_p=true) const
static bool tag_is_type(dwarf_tag tag)