vhdlpp: Added ScopeBase::transfer_from() method.
This commit is contained in:
parent
7b5470c8a7
commit
747e656a0e
|
|
@ -203,6 +203,27 @@ void ScopeBase::do_use_from(const ScopeBase*that)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScopeBase::transfer_from(ScopeBase&ref)
|
||||||
|
{
|
||||||
|
std::copy(ref.new_signals_.begin(), ref.new_signals_.end(),
|
||||||
|
insert_iterator<map<perm_string, Signal*> >(
|
||||||
|
new_signals_, new_signals_.end())
|
||||||
|
);
|
||||||
|
ref.new_signals_.clear();
|
||||||
|
|
||||||
|
std::copy(ref.new_variables_.begin(), ref.new_variables_.end(),
|
||||||
|
insert_iterator<map<perm_string, Variable*> >(
|
||||||
|
new_variables_, new_variables_.end())
|
||||||
|
);
|
||||||
|
ref.new_variables_.clear();
|
||||||
|
|
||||||
|
std::copy(ref.new_components_.begin(), ref.new_components_.end(),
|
||||||
|
insert_iterator<map<perm_string, ComponentBase*> >(
|
||||||
|
new_components_, new_components_.end())
|
||||||
|
);
|
||||||
|
ref.new_components_.clear();
|
||||||
|
}
|
||||||
|
|
||||||
void ActiveScope::set_package_header(Package*pkg)
|
void ActiveScope::set_package_header(Package*pkg)
|
||||||
{
|
{
|
||||||
assert(package_header_ == 0);
|
assert(package_header_ == 0);
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,9 @@ class ScopeBase {
|
||||||
Signal* find_signal(perm_string by_name) const;
|
Signal* find_signal(perm_string by_name) const;
|
||||||
Variable* find_variable(perm_string by_name) const;
|
Variable* find_variable(perm_string by_name) const;
|
||||||
Subprogram* find_subprogram(perm_string by_name) const;
|
Subprogram* find_subprogram(perm_string by_name) const;
|
||||||
|
// Moves all signals, variables and components from another scope to
|
||||||
|
// this one. After the transfer new_* maps are emptied in the another scope.
|
||||||
|
void transfer_from(ScopeBase&ref);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void cleanup();
|
void cleanup();
|
||||||
|
|
@ -202,7 +205,7 @@ class ActiveScope : public ScopeBase {
|
||||||
{ map<perm_string, Subprogram*>::iterator it;
|
{ map<perm_string, Subprogram*>::iterator it;
|
||||||
if((it = use_subprograms_.find(name)) != use_subprograms_.end() )
|
if((it = use_subprograms_.find(name)) != use_subprograms_.end() )
|
||||||
use_subprograms_.erase(it);
|
use_subprograms_.erase(it);
|
||||||
cur_subprograms_[name] = obj;;
|
cur_subprograms_[name] = obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
void bind(Entity*ent)
|
void bind(Entity*ent)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue