Use const-ref parameter for zeek::val_list_to_args()

It ended up being used a bit more than initially expected and this
is closer to the style we're generally aiming for.
This commit is contained in:
Jon Siwek 2020-03-26 11:29:29 -07:00
parent 599dda9ae9
commit e7e5cf0f89
7 changed files with 17 additions and 18 deletions

View file

@ -488,7 +488,7 @@ void Connection::Event(EventHandlerPtr f, analyzer::Analyzer* analyzer, Val* v1,
void Connection::ConnectionEvent(EventHandlerPtr f, analyzer::Analyzer* a, val_list vl) void Connection::ConnectionEvent(EventHandlerPtr f, analyzer::Analyzer* a, val_list vl)
{ {
auto args = zeek::val_list_to_args(&vl); auto args = zeek::val_list_to_args(vl);
if ( ! f ) if ( ! f )
// This may actually happen if there is no local handler // This may actually happen if there is no local handler
@ -502,13 +502,13 @@ void Connection::ConnectionEvent(EventHandlerPtr f, analyzer::Analyzer* a, val_l
void Connection::ConnectionEventFast(EventHandlerPtr f, analyzer::Analyzer* a, val_list vl) void Connection::ConnectionEventFast(EventHandlerPtr f, analyzer::Analyzer* a, val_list vl)
{ {
// "this" is passed as a cookie for the event // "this" is passed as a cookie for the event
mgr.Enqueue(f, zeek::val_list_to_args(&vl), SOURCE_LOCAL, mgr.Enqueue(f, zeek::val_list_to_args(vl), SOURCE_LOCAL,
a ? a->GetID() : 0, this); a ? a->GetID() : 0, this);
} }
void Connection::ConnectionEvent(EventHandlerPtr f, analyzer::Analyzer* a, val_list* vl) void Connection::ConnectionEvent(EventHandlerPtr f, analyzer::Analyzer* a, val_list* vl)
{ {
auto args = zeek::val_list_to_args(vl); auto args = zeek::val_list_to_args(*vl);
delete vl; delete vl;
if ( f ) if ( f )

View file

@ -99,14 +99,14 @@ void EventMgr::QueueEventFast(const EventHandlerPtr &h, val_list vl,
SourceID src, analyzer::ID aid, TimerMgr* mgr, SourceID src, analyzer::ID aid, TimerMgr* mgr,
BroObj* obj) BroObj* obj)
{ {
QueueEvent(new Event(h, zeek::val_list_to_args(&vl), src, aid, obj)); QueueEvent(new Event(h, zeek::val_list_to_args(vl), src, aid, obj));
} }
void EventMgr::QueueEvent(const EventHandlerPtr &h, val_list vl, void EventMgr::QueueEvent(const EventHandlerPtr &h, val_list vl,
SourceID src, analyzer::ID aid, SourceID src, analyzer::ID aid,
TimerMgr* mgr, BroObj* obj) TimerMgr* mgr, BroObj* obj)
{ {
auto args = zeek::val_list_to_args(&vl); auto args = zeek::val_list_to_args(vl);
if ( h ) if ( h )
Enqueue(h, std::move(args), src, aid, obj); Enqueue(h, std::move(args), src, aid, obj);
@ -116,7 +116,7 @@ void EventMgr::QueueEvent(const EventHandlerPtr &h, val_list* vl,
SourceID src, analyzer::ID aid, SourceID src, analyzer::ID aid,
TimerMgr* mgr, BroObj* obj) TimerMgr* mgr, BroObj* obj)
{ {
auto args = zeek::val_list_to_args(vl); auto args = zeek::val_list_to_args(*vl);
delete vl; delete vl;
if ( h ) if ( h )

View file

@ -296,7 +296,7 @@ int BroFunc::IsPure() const
IntrusivePtr<Val> Func::Call(val_list* args, Frame* parent) const IntrusivePtr<Val> Func::Call(val_list* args, Frame* parent) const
{ {
return Call(zeek::val_list_to_args(args), parent); return Call(zeek::val_list_to_args(*args), parent);
} }
IntrusivePtr<Val> BroFunc::Call(const zeek::Args& args, Frame* parent) const IntrusivePtr<Val> BroFunc::Call(const zeek::Args& args, Frame* parent) const

View file

@ -2,12 +2,12 @@
#include "IntrusivePtr.h" #include "IntrusivePtr.h"
#include "Val.h" #include "Val.h"
zeek::Args zeek::val_list_to_args(const val_list* vl) zeek::Args zeek::val_list_to_args(const val_list& vl)
{ {
zeek::Args rval; zeek::Args rval;
rval.reserve(vl->length()); rval.reserve(vl.length());
for ( auto& v : *vl ) for ( auto& v : vl )
rval.emplace_back(AdoptRef{}, v); rval.emplace_back(AdoptRef{}, v);
return rval; return rval;

View file

@ -17,11 +17,10 @@ using Args = std::vector<IntrusivePtr<Val>>;
* Converts a legacy-style argument list for use in modern Zeek function * Converts a legacy-style argument list for use in modern Zeek function
* calling or event queueing APIs. * calling or event queueing APIs.
* @param vl the argument list to convert, the returned value takes ownership * @param vl the argument list to convert, the returned value takes ownership
* of a reference to each element in the list, but not ownership of the list * of a reference to each element in the list
* itself.
* @return the converted argument list * @return the converted argument list
* *
*/ */
Args val_list_to_args(const val_list* vl); Args val_list_to_args(const val_list& vl);
} // namespace zeek } // namespace zeek

View file

@ -803,7 +803,7 @@ void Analyzer::Event(EventHandlerPtr f, Val* v1, Val* v2)
void Analyzer::ConnectionEvent(EventHandlerPtr f, val_list* vl) void Analyzer::ConnectionEvent(EventHandlerPtr f, val_list* vl)
{ {
auto args = zeek::val_list_to_args(vl); auto args = zeek::val_list_to_args(*vl);
if ( f ) if ( f )
conn->EnqueueEvent(f, this, std::move(args)); conn->EnqueueEvent(f, this, std::move(args));
@ -811,7 +811,7 @@ void Analyzer::ConnectionEvent(EventHandlerPtr f, val_list* vl)
void Analyzer::ConnectionEvent(EventHandlerPtr f, val_list vl) void Analyzer::ConnectionEvent(EventHandlerPtr f, val_list vl)
{ {
auto args = zeek::val_list_to_args(&vl); auto args = zeek::val_list_to_args(vl);
if ( f ) if ( f )
conn->EnqueueEvent(f, this, std::move(args)); conn->EnqueueEvent(f, this, std::move(args));
@ -819,7 +819,7 @@ void Analyzer::ConnectionEvent(EventHandlerPtr f, val_list vl)
void Analyzer::ConnectionEventFast(EventHandlerPtr f, val_list vl) void Analyzer::ConnectionEventFast(EventHandlerPtr f, val_list vl)
{ {
auto args = zeek::val_list_to_args(&vl); auto args = zeek::val_list_to_args(vl);
conn->EnqueueEvent(f, this, std::move(args)); conn->EnqueueEvent(f, this, std::move(args));
} }

View file

@ -626,13 +626,13 @@ void File::FileEvent(EventHandlerPtr h)
void File::FileEvent(EventHandlerPtr h, val_list* vl) void File::FileEvent(EventHandlerPtr h, val_list* vl)
{ {
FileEvent(h, zeek::val_list_to_args(vl)); FileEvent(h, zeek::val_list_to_args(*vl));
delete vl; delete vl;
} }
void File::FileEvent(EventHandlerPtr h, val_list vl) void File::FileEvent(EventHandlerPtr h, val_list vl)
{ {
FileEvent(h, zeek::val_list_to_args(&vl)); FileEvent(h, zeek::val_list_to_args(vl));
} }
void File::FileEvent(EventHandlerPtr h, zeek::Args args) void File::FileEvent(EventHandlerPtr h, zeek::Args args)