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"
80 cooked_index_flag flags_,
const char *name_,
93 bool matches (block_search_flags search_flags)
const
121 return tag == DW_TAG_module;
124 return tag == DW_TAG_common_block;
140 return (
tag == DW_TAG_variable
141 ||
tag == DW_TAG_constant
142 ||
tag == DW_TAG_enumerator);
144 return tag == DW_TAG_subprogram;
148 return tag == DW_TAG_module;
160 const char *
full_name (
struct obstack *storage,
bool for_main =
false)
const;
203 static int compare (
const char *stra,
const char *strb,
238 void write_scope (
struct obstack *storage,
const char *sep,
239 bool for_name)
const;
260 cooked_index_flag
flags,
278 void wait (
bool allow_quit =
true)
const;
283 typedef iterator_range<std::vector<cooked_index_entry *>::const_iterator>
319 cooked_index_flag
flags,
350 std::vector<gdb::unique_xmalloc_ptr<char>>
m_names;
368 using vec_type = std::vector<std::unique_ptr<cooked_index_shard>>;
383 using range = range_chain<cooked_index_shard::range>;
393 std::vector<cooked_index_shard::range> result_range;
394 result_range.reserve (
m_vector.size ());
396 result_range.push_back (entry->all_entries ());
397 return range (std::move (result_range));
range all_entries() const
cooked_index_shard()=default
void install_addrmap(addrmap_mutable *map)
gdb::future< void > m_future
iterator_range< std::vector< cooked_index_entry * >::const_iterator > range
DISABLE_COPY_AND_ASSIGN(cooked_index_shard)
std::vector< gdb::unique_xmalloc_ptr< char > > m_names
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)
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)
void wait(bool allow_quit=true) const
cooked_index_entry * m_main
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
range find(const std::string &name, bool completing) const
std::vector< cooked_index_entry * > m_entries
gdb::future< void > m_write_future
void wait_completely() override
void maybe_write_index(dwarf2_per_bfd *per_bfd, const index_cache_store_context &)
dwarf2_per_cu_data * lookup(CORE_ADDR addr)
void start_writing_index(dwarf2_per_bfd *per_bfd)
const cooked_index_entry * get_main() const
cooked_index(vec_type &&vec)
range_chain< cooked_index_shard::range > range
void dump(gdbarch *arch) const
quick_symbol_functions_up make_quick_functions() const override
std::vector< const addrmap * > get_addrmaps() const
cooked_index * index_for_writing() override
range find(const std::string &name, bool completing) const
range all_entries() const
std::vector< std::unique_ptr< cooked_index_shard > > vec_type
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)
std::string to_string(cooked_index_flag flags)
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
const void * find(CORE_ADDR addr) const
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
static bool tag_is_type(dwarf_tag tag)