Func: Add std::string name accessors, deprecate const char* versions

This commit is contained in:
Arne Welzel 2024-03-02 20:54:45 +01:00
parent bf2ba626b1
commit 89127722ea
2 changed files with 22 additions and 17 deletions

View file

@ -89,7 +89,7 @@ std::string render_call_stack() {
rval += " | "; rval += " | ";
auto& ci = *it; auto& ci = *it;
auto name = ci.func->Name(); const auto& name = ci.func->GetName();
std::string arg_desc; std::string arg_desc;
for ( const auto& arg : ci.args ) { for ( const auto& arg : ci.args ) {
@ -103,7 +103,7 @@ std::string render_call_stack() {
arg_desc += d.Description(); arg_desc += d.Description();
} }
rval += util::fmt("#%d %s(%s)", lvl, name, arg_desc.data()); rval += util::fmt("#%d %s(%s)", lvl, name.c_str(), arg_desc.data());
if ( ci.call ) { if ( ci.call ) {
auto loc = ci.call->GetLocationInfo(); auto loc = ci.call->GetLocationInfo();
@ -157,7 +157,7 @@ FuncPtr Func::DoClone() {
} }
void Func::DescribeDebug(ODesc* d, const Args* args) const { void Func::DescribeDebug(ODesc* d, const Args* args) const {
d->Add(Name()); d->Add(GetName().c_str());
if ( args ) { if ( args ) {
d->Add("("); d->Add("(");
@ -238,13 +238,13 @@ void Func::CheckPluginResult(bool handled, const ValPtr& hook_result, FunctionFl
switch ( flavor ) { switch ( flavor ) {
case FUNC_FLAVOR_EVENT: case FUNC_FLAVOR_EVENT:
if ( hook_result ) if ( hook_result )
reporter->InternalError("plugin returned non-void result for event %s", this->Name()); reporter->InternalError("plugin returned non-void result for event %s", GetName().c_str());
break; break;
case FUNC_FLAVOR_HOOK: case FUNC_FLAVOR_HOOK:
if ( hook_result->GetType()->Tag() != TYPE_BOOL ) if ( hook_result->GetType()->Tag() != TYPE_BOOL )
reporter->InternalError("plugin returned non-bool for hook %s", this->Name()); reporter->InternalError("plugin returned non-bool for hook %s", GetName().c_str());
break; break;
@ -253,12 +253,12 @@ void Func::CheckPluginResult(bool handled, const ValPtr& hook_result, FunctionFl
if ( (! yt) || yt->Tag() == TYPE_VOID ) { if ( (! yt) || yt->Tag() == TYPE_VOID ) {
if ( hook_result ) if ( hook_result )
reporter->InternalError("plugin returned non-void result for void method %s", this->Name()); reporter->InternalError("plugin returned non-void result for void method %s", GetName().c_str());
} }
else if ( hook_result && hook_result->GetType()->Tag() != yt->Tag() && yt->Tag() != TYPE_ANY ) { else if ( hook_result && hook_result->GetType()->Tag() != yt->Tag() && yt->Tag() != TYPE_ANY ) {
reporter->InternalError("plugin returned wrong type (got %d, expecting %d) for %s", reporter->InternalError("plugin returned wrong type (got %d, expecting %d) for %s",
hook_result->GetType()->Tag(), yt->Tag(), this->Name()); hook_result->GetType()->Tag(), yt->Tag(), GetName().c_str());
} }
break; break;
@ -671,7 +671,7 @@ std::optional<BrokerData> ScriptFunc::SerializeCaptures() const {
} }
void ScriptFunc::Describe(ODesc* d) const { void ScriptFunc::Describe(ODesc* d) const {
d->Add(Name()); d->Add(GetName().c_str());
d->NL(); d->NL();
d->AddCount(frame_size); d->AddCount(frame_size);
@ -699,11 +699,11 @@ BuiltinFunc::BuiltinFunc(built_in_func arg_func, const char* arg_name, bool arg_
name = make_full_var_name(GLOBAL_MODULE_NAME, arg_name); name = make_full_var_name(GLOBAL_MODULE_NAME, arg_name);
is_pure = arg_is_pure; is_pure = arg_is_pure;
const auto& id = lookup_ID(Name(), GLOBAL_MODULE_NAME, false); const auto& id = lookup_ID(GetName().c_str(), GLOBAL_MODULE_NAME, false);
if ( ! id ) if ( ! id )
reporter->InternalError("built-in function %s missing", Name()); reporter->InternalError("built-in function %s missing", GetName().c_str());
if ( id->HasVal() ) if ( id->HasVal() )
reporter->InternalError("built-in function %s multiply defined", Name()); reporter->InternalError("built-in function %s multiply defined", GetName().c_str());
type = id->GetType<FuncType>(); type = id->GetType<FuncType>();
id->SetVal(make_intrusive<FuncVal>(IntrusivePtr{NewRef{}, this})); id->SetVal(make_intrusive<FuncVal>(IntrusivePtr{NewRef{}, this}));
@ -753,7 +753,7 @@ ValPtr BuiltinFunc::Invoke(Args* args, Frame* parent) const {
} }
void BuiltinFunc::Describe(ODesc* d) const { void BuiltinFunc::Describe(ODesc* d) const {
d->Add(Name()); d->Add(GetName().c_str());
d->AddCount(is_pure); d->AddCount(is_pure);
} }
@ -940,7 +940,7 @@ zeek::VectorValPtr get_current_script_backtrace() {
auto args = MakeCallArgumentVector(ci.args, params); auto args = MakeCallArgumentVector(ci.args, params);
auto elem = auto elem =
make_backtrace_element(ci.func->Name(), std::move(args), ci.call ? ci.call->GetLocationInfo() : nullptr); make_backtrace_element(ci.func->GetName(), std::move(args), ci.call ? ci.call->GetLocationInfo() : nullptr);
rval->Append(std::move(elem)); rval->Append(std::move(elem));
} }
@ -996,7 +996,7 @@ static void emit_builtin_error_common(const char* msg, Obj* arg, bool unwind) {
auto starts_with_double_underscore = [](const std::string& name) -> bool { auto starts_with_double_underscore = [](const std::string& name) -> bool {
return name.size() > 2 && name[0] == '_' && name[1] == '_'; return name.size() > 2 && name[0] == '_' && name[1] == '_';
}; };
std::string last_func = last_call.func->Name(); const std::string& last_func = last_call.func->GetName();
auto pos = last_func.find_first_of("::"); auto pos = last_func.find_first_of("::");
std::string wrapper_func; std::string wrapper_func;
@ -1022,7 +1022,7 @@ static void emit_builtin_error_common(const char* msg, Obj* arg, bool unwind) {
} }
auto parent_call = call_stack[call_stack.size() - 2]; auto parent_call = call_stack[call_stack.size() - 2];
auto parent_func = parent_call.func->Name(); const auto& parent_func = parent_call.func->GetName();
if ( wrapper_func == parent_func ) if ( wrapper_func == parent_func )
emit(parent_call.call); emit(parent_call.call);

View file

@ -123,8 +123,13 @@ public:
Kind GetKind() const { return kind; } Kind GetKind() const { return kind; }
const char* Name() const { return name.c_str(); } [[deprecated("Remove with v8.1 - use GetName() instead")]]
void SetName(const char* arg_name) { name = arg_name; } const char* Name() const {
return name.c_str();
}
const std::string& GetName() const { return name; }
void SetName(const std::string& arg_name) { name = arg_name; }
void Describe(ODesc* d) const override = 0; void Describe(ODesc* d) const override = 0;
virtual void DescribeDebug(ODesc* d, const zeek::Args* args) const; virtual void DescribeDebug(ODesc* d, const zeek::Args* args) const;