case of C) is the STATIC_BLOCK. The superblock of the
STATIC_BLOCK is the GLOBAL_BLOCK. */
- struct block *superblock;
+ const struct block *superblock;
/* This is used to store the symbols in the block. */
- struct dictionary *dict;
+ struct multidictionary *multidict;
/* Contains information about namespace-related info relevant to this block:
using directives and the current namespace scope. */
#define BLOCK_END(bl) (bl)->endaddr
#define BLOCK_FUNCTION(bl) (bl)->function
#define BLOCK_SUPERBLOCK(bl) (bl)->superblock
-#define BLOCK_DICT(bl) (bl)->dict
+#define BLOCK_MULTIDICT(bl) (bl)->multidict
#define BLOCK_NAMESPACE(bl) (bl)->namespace_info
/* Accessor for ranges field within block BL. */
extern int block_inlined_p (const struct block *block);
-extern int contained_in (const struct block *, const struct block *);
+/* Return true if block A is lexically nested within block B, or if a
+ and b have the same pc range. Return false otherwise. If
+ ALLOW_NESTED is true, then block A is considered to be in block B
+ if A is in a nested function in B's function. If ALLOW_NESTED is
+ false (the default), then blocks in nested functions are not
+ considered to be contained. */
+
+extern bool contained_in (const struct block *a, const struct block *b,
+ bool allow_nested = false);
extern const struct blockvector *blockvector_for_pc (CORE_ADDR,
const struct block **);
enum block_enum which;
- /* The underlying dictionary iterator. */
+ /* The underlying multidictionary iterator. */
- struct dict_iterator dict_iter;
+ struct mdict_iterator mdict_iter;
};
/* Initialize ITERATOR to point at the first symbol in BLOCK, and
extern struct symbol *block_iterator_next (struct block_iterator *iterator);
/* Initialize ITERATOR to point at the first symbol in BLOCK whose
- SYMBOL_SEARCH_NAME matches NAME, and return that first symbol, or
+ search_name () matches NAME, and return that first symbol, or
NULL if there are no such symbols. */
extern struct symbol *block_iter_match_first (const struct block *block,
struct block_iterator *iterator);
/* Advance ITERATOR to point at the next symbol in BLOCK whose
- SYMBOL_SEARCH_NAME matches NAME, or NULL if there are no more such
+ search_name () matches NAME, or NULL if there are no more such
symbols. Don't call this if you've previously received NULL from
block_iterator_match_first or block_iterator_match_next on this
iteration. And don't call it unless ITERATOR was created by a