mirror of
https://github.com/zeek/zeek.git
synced 2025-10-08 01:28:20 +00:00
RemoveGlobal() method for Scope class + simplifying interfaces
This commit is contained in:
parent
222f604452
commit
9aff0287f0
2 changed files with 19 additions and 3 deletions
13
src/Scope.cc
13
src/Scope.cc
|
@ -46,6 +46,19 @@ const IDPtr& Scope::Find(std::string_view name) const
|
||||||
return ID::nil;
|
return ID::nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Scope::RemoveGlobal(std::string name, IDPtr /* gid */)
|
||||||
|
{
|
||||||
|
ASSERT(this == global_scope());
|
||||||
|
|
||||||
|
local.erase(name);
|
||||||
|
|
||||||
|
// We could remove the identifier from ordered_vars, but for now
|
||||||
|
// we skip doing so because (1) the only removals we do are for global
|
||||||
|
// scope (per the method name), and the only use of ordered_vars is
|
||||||
|
// for traversing function parameters (i.e., non-global scope), and
|
||||||
|
// (2) it would be a pain to do so given the current data structure.
|
||||||
|
}
|
||||||
|
|
||||||
IDPtr Scope::GenerateTemporary(const char* name)
|
IDPtr Scope::GenerateTemporary(const char* name)
|
||||||
{
|
{
|
||||||
return make_intrusive<ID>(name, SCOPE_FUNCTION, false);
|
return make_intrusive<ID>(name, SCOPE_FUNCTION, false);
|
||||||
|
|
|
@ -37,12 +37,15 @@ public:
|
||||||
|
|
||||||
const IDPtr& Find(std::string_view name) const;
|
const IDPtr& Find(std::string_view name) const;
|
||||||
|
|
||||||
template <typename N, typename I> void Insert(N&& name, I&& id)
|
void Insert(std::string name, IDPtr id)
|
||||||
{
|
{
|
||||||
local[std::forward<N>(name)] = std::forward<I>(id);
|
local[name] = id;
|
||||||
ordered_vars.push_back(std::forward<I>(id));
|
ordered_vars.push_back(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Must only be called for the global scope.
|
||||||
|
void RemoveGlobal(std::string name, IDPtr gid);
|
||||||
|
|
||||||
const IDPtr& GetID() const { return scope_id; }
|
const IDPtr& GetID() const { return scope_id; }
|
||||||
|
|
||||||
const std::unique_ptr<std::vector<AttrPtr>>& Attrs() const { return attrs; }
|
const std::unique_ptr<std::vector<AttrPtr>>& Attrs() const { return attrs; }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue