mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 22:58:20 +00:00
support for rewriting script function bodies
This commit is contained in:
parent
63502e655f
commit
8f001062bf
2 changed files with 20 additions and 0 deletions
15
src/Func.cc
15
src/Func.cc
|
@ -503,6 +503,21 @@ void ScriptFunc::AddBody(StmtPtr new_body,
|
||||||
sort(bodies.begin(), bodies.end());
|
sort(bodies.begin(), bodies.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScriptFunc::ReplaceBody(const StmtPtr& old_body, StmtPtr new_body)
|
||||||
|
{
|
||||||
|
bool found_it = false;
|
||||||
|
|
||||||
|
for ( auto& body : bodies )
|
||||||
|
if ( body.stmts.get() == old_body.get() )
|
||||||
|
{
|
||||||
|
body.stmts = new_body;
|
||||||
|
found_it = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
ASSERT(found_it);
|
||||||
|
current_body = new_body;
|
||||||
|
}
|
||||||
|
|
||||||
void ScriptFunc::AddClosure(IDPList ids, Frame* f)
|
void ScriptFunc::AddClosure(IDPList ids, Frame* f)
|
||||||
{
|
{
|
||||||
if ( ! f )
|
if ( ! f )
|
||||||
|
|
|
@ -196,6 +196,11 @@ public:
|
||||||
const std::vector<IDPtr>& new_inits,
|
const std::vector<IDPtr>& new_inits,
|
||||||
size_t new_frame_size, int priority) override;
|
size_t new_frame_size, int priority) override;
|
||||||
|
|
||||||
|
// Replace the given current instance of a function body with
|
||||||
|
// a new one.
|
||||||
|
void ReplaceBody(const detail::StmtPtr& old_body,
|
||||||
|
detail::StmtPtr new_body);
|
||||||
|
|
||||||
StmtPtr CurrentBody() const { return current_body; }
|
StmtPtr CurrentBody() const { return current_body; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue