mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
bifcl: Switch namespacing in generated code to C++-17-style nested namespaces
This commit is contained in:
parent
d2edc334ad
commit
2f97833acd
1 changed files with 41 additions and 41 deletions
|
@ -96,20 +96,17 @@ void set_decl_name(const char *name)
|
||||||
|
|
||||||
switch ( definition_type ) {
|
switch ( definition_type ) {
|
||||||
case TYPE_DEF:
|
case TYPE_DEF:
|
||||||
decl.c_namespace_start = "namespace BifType { namespace " + type_name + "{ ";
|
decl.c_namespace_start = "BifType::" + type_name + "";
|
||||||
decl.c_namespace_end = " } }";
|
|
||||||
decl.c_fullname = "BifType::" + type_name + "::";
|
decl.c_fullname = "BifType::" + type_name + "::";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CONST_DEF:
|
case CONST_DEF:
|
||||||
decl.c_namespace_start = "namespace BifConst { ";
|
decl.c_namespace_start = "BifConst";
|
||||||
decl.c_namespace_end = " } ";
|
|
||||||
decl.c_fullname = "BifConst::";
|
decl.c_fullname = "BifConst::";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FUNC_DEF:
|
case FUNC_DEF:
|
||||||
decl.c_namespace_start = "namespace BifFunc { ";
|
decl.c_namespace_start = "BifFunc";
|
||||||
decl.c_namespace_end = " } ";
|
|
||||||
decl.c_fullname = "BifFunc::";
|
decl.c_fullname = "BifFunc::";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -117,8 +114,7 @@ void set_decl_name(const char *name)
|
||||||
decl.c_namespace_start = "";
|
decl.c_namespace_start = "";
|
||||||
decl.c_namespace_end = "";
|
decl.c_namespace_end = "";
|
||||||
decl.c_fullname = "::"; // need this for namespace qualified events due do event_c_body
|
decl.c_fullname = "::"; // need this for namespace qualified events due do event_c_body
|
||||||
decl.enqueue_c_namespace_start = "namespace BifEvent { ";
|
decl.enqueue_c_namespace_start = "BifEvent";
|
||||||
decl.enqueue_c_namespace_end = " } ";
|
|
||||||
decl.enqueue_c_fullname = "zeek::BifEvent::";
|
decl.enqueue_c_fullname = "zeek::BifEvent::";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -128,13 +124,25 @@ void set_decl_name(const char *name)
|
||||||
|
|
||||||
if ( decl.module_name != GLOBAL_MODULE_NAME )
|
if ( decl.module_name != GLOBAL_MODULE_NAME )
|
||||||
{
|
{
|
||||||
decl.c_namespace_start += "namespace " + decl.module_name + " { ";
|
if ( decl.c_namespace_start.empty() ) {
|
||||||
decl.c_namespace_end += string(" }");
|
decl.c_namespace_start += "namespace " + decl.module_name + " { ";
|
||||||
|
decl.c_namespace_end += " }";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
decl.c_namespace_start += "::" + decl.module_name;
|
||||||
|
decl.c_namespace_end = "";
|
||||||
|
}
|
||||||
decl.c_fullname += decl.module_name + "::";
|
decl.c_fullname += decl.module_name + "::";
|
||||||
decl.zeek_fullname += decl.module_name + "::";
|
decl.zeek_fullname += decl.module_name + "::";
|
||||||
|
|
||||||
decl.enqueue_c_namespace_start += "namespace " + decl.module_name + " { ";
|
if ( decl.enqueue_c_namespace_start.empty() ) {
|
||||||
decl.enqueue_c_namespace_end += " } ";
|
decl.enqueue_c_namespace_start += "namespace " + decl.module_name + " { ";
|
||||||
|
decl.enqueue_c_namespace_end += " } ";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
decl.enqueue_c_namespace_start += "::" + decl.module_name;
|
||||||
|
decl.enqueue_c_namespace_end = "";
|
||||||
|
}
|
||||||
decl.enqueue_c_fullname += decl.module_name + "::";
|
decl.enqueue_c_fullname += decl.module_name + "::";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -212,7 +220,7 @@ static void print_event_c_prototype_args(FILE* fp)
|
||||||
|
|
||||||
static void print_event_c_prototype_header(FILE* fp)
|
static void print_event_c_prototype_header(FILE* fp)
|
||||||
{
|
{
|
||||||
fprintf(fp, "namespace zeek { %s void %s(zeek::analyzer::Analyzer* analyzer%s",
|
fprintf(fp, "namespace zeek::%s { void %s(zeek::analyzer::Analyzer* analyzer%s",
|
||||||
decl.enqueue_c_namespace_start.c_str(),
|
decl.enqueue_c_namespace_start.c_str(),
|
||||||
decl.enqueue_c_barename.c_str(),
|
decl.enqueue_c_barename.c_str(),
|
||||||
args.size() ? ", " : "" );
|
args.size() ? ", " : "" );
|
||||||
|
@ -359,16 +367,13 @@ type_def: TOK_TYPE opt_ws TOK_ID opt_ws ':' opt_ws type_def_types opt_ws ';'
|
||||||
{
|
{
|
||||||
set_decl_name($3);
|
set_decl_name($3);
|
||||||
|
|
||||||
fprintf(fp_netvar_h, "namespace zeek { %s extern zeek::IntrusivePtr<zeek::%sType> %s; %s}\n",
|
fprintf(fp_netvar_h, "namespace zeek::%s { extern zeek::IntrusivePtr<zeek::%sType> %s; }\n",
|
||||||
decl.c_namespace_start.c_str(), type_name.c_str(),
|
decl.c_namespace_start.c_str(), type_name.c_str(), decl.bare_name.c_str());
|
||||||
decl.bare_name.c_str(), decl.c_namespace_end.c_str());
|
|
||||||
|
|
||||||
fprintf(fp_netvar_def, "namespace zeek { %s zeek::IntrusivePtr<zeek::%sType> %s; %s}\n",
|
fprintf(fp_netvar_def, "namespace zeek::%s { zeek::IntrusivePtr<zeek::%sType> %s; }\n",
|
||||||
decl.c_namespace_start.c_str(), type_name.c_str(),
|
decl.c_namespace_start.c_str(), type_name.c_str(), decl.bare_name.c_str());
|
||||||
decl.bare_name.c_str(), decl.c_namespace_end.c_str());
|
fprintf(fp_netvar_def, "namespace %s { zeek::%sType * %s; }\n",
|
||||||
fprintf(fp_netvar_def, "%s zeek::%sType * %s; %s\n",
|
decl.c_namespace_start.c_str(), type_name.c_str(), decl.bare_name.c_str());
|
||||||
decl.c_namespace_start.c_str(), type_name.c_str(),
|
|
||||||
decl.bare_name.c_str(), decl.c_namespace_end.c_str());
|
|
||||||
|
|
||||||
fprintf(fp_netvar_init,
|
fprintf(fp_netvar_init,
|
||||||
"\tzeek::%s = zeek::id::find_type<zeek::%sType>(\"%s\");\n",
|
"\tzeek::%s = zeek::id::find_type<zeek::%sType>(\"%s\");\n",
|
||||||
|
@ -417,17 +422,14 @@ enum_def: enum_def_1 enum_list TOK_RPB opt_attr_list
|
||||||
fprintf(fp_zeek_init, "} ");
|
fprintf(fp_zeek_init, "} ");
|
||||||
fprintf(fp_zeek_init, "%s", $4);
|
fprintf(fp_zeek_init, "%s", $4);
|
||||||
fprintf(fp_zeek_init, ";\n");
|
fprintf(fp_zeek_init, ";\n");
|
||||||
if ( decl.module_name != GLOBAL_MODULE_NAME )
|
fprintf(fp_netvar_h, "}; }\n");
|
||||||
fprintf(fp_netvar_h, "}; } }\n");
|
|
||||||
else
|
|
||||||
fprintf(fp_netvar_h, "}; }\n");
|
|
||||||
|
|
||||||
// Now generate the netvar's.
|
// Now generate the netvar's.
|
||||||
fprintf(fp_netvar_h, "namespace zeek { %s extern zeek::IntrusivePtr<zeek::EnumType> %s; %s}\n",
|
fprintf(fp_netvar_h, "namespace zeek::%s { extern zeek::IntrusivePtr<zeek::EnumType> %s; %s}\n",
|
||||||
decl.c_namespace_start.c_str(), decl.bare_name.c_str(), decl.c_namespace_end.c_str());
|
decl.c_namespace_start.c_str(), decl.bare_name.c_str(), decl.c_namespace_end.c_str());
|
||||||
fprintf(fp_netvar_def, "namespace zeek { %s zeek::IntrusivePtr<zeek::EnumType> %s; %s}\n",
|
fprintf(fp_netvar_def, "namespace zeek::%s { zeek::IntrusivePtr<zeek::EnumType> %s; %s}\n",
|
||||||
decl.c_namespace_start.c_str(), decl.bare_name.c_str(), decl.c_namespace_end.c_str());
|
decl.c_namespace_start.c_str(), decl.bare_name.c_str(), decl.c_namespace_end.c_str());
|
||||||
fprintf(fp_netvar_def, "%s zeek::EnumType * %s; %s\n",
|
fprintf(fp_netvar_def, "namespace %s { zeek::EnumType * %s; %s }\n",
|
||||||
decl.c_namespace_start.c_str(), decl.bare_name.c_str(), decl.c_namespace_end.c_str());
|
decl.c_namespace_start.c_str(), decl.bare_name.c_str(), decl.c_namespace_end.c_str());
|
||||||
|
|
||||||
fprintf(fp_netvar_init,
|
fprintf(fp_netvar_init,
|
||||||
|
@ -447,9 +449,10 @@ enum_def_1: TOK_ENUM opt_ws TOK_ID opt_ws TOK_LPB opt_ws
|
||||||
// this is the namespace were the enumerators are defined, not where
|
// this is the namespace were the enumerators are defined, not where
|
||||||
// the type is defined.
|
// the type is defined.
|
||||||
// We don't support fully qualified names as enumerators. Use a module name
|
// We don't support fully qualified names as enumerators. Use a module name
|
||||||
fprintf(fp_netvar_h, "namespace BifEnum { ");
|
|
||||||
if ( decl.module_name != GLOBAL_MODULE_NAME )
|
if ( decl.module_name != GLOBAL_MODULE_NAME )
|
||||||
fprintf(fp_netvar_h, "namespace %s { ", decl.module_name.c_str());
|
fprintf(fp_netvar_h, "namespace BifEnum::%s { ", decl.module_name.c_str());
|
||||||
|
else
|
||||||
|
fprintf(fp_netvar_h, "namespace BifEnum { ");
|
||||||
fprintf(fp_netvar_h, "enum %s {\n", $3);
|
fprintf(fp_netvar_h, "enum %s {\n", $3);
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
@ -480,19 +483,16 @@ const_def: TOK_CONST opt_ws TOK_ID opt_ws ':' opt_ws TOK_ID opt_ws ';'
|
||||||
snprintf(accessor_smart, sizeof(accessor_smart), builtin_types[typeidx].accessor_smart, "");
|
snprintf(accessor_smart, sizeof(accessor_smart), builtin_types[typeidx].accessor_smart, "");
|
||||||
|
|
||||||
|
|
||||||
fprintf(fp_netvar_h, "namespace zeek { %s extern %s %s; %s }\n",
|
fprintf(fp_netvar_h, "namespace zeek::%s { extern %s %s; }\n",
|
||||||
decl.c_namespace_start.c_str(),
|
decl.c_namespace_start.c_str(),
|
||||||
builtin_types[typeidx].c_type_smart, decl.bare_name.c_str(),
|
builtin_types[typeidx].c_type_smart, decl.bare_name.c_str());
|
||||||
decl.c_namespace_end.c_str());
|
|
||||||
|
|
||||||
fprintf(fp_netvar_def, "namespace zeek { %s %s %s; %s }\n",
|
fprintf(fp_netvar_def, "namespace zeek::%s { %s %s; }\n",
|
||||||
decl.c_namespace_start.c_str(),
|
decl.c_namespace_start.c_str(),
|
||||||
builtin_types[typeidx].c_type_smart, decl.bare_name.c_str(),
|
builtin_types[typeidx].c_type_smart, decl.bare_name.c_str());
|
||||||
decl.c_namespace_end.c_str());
|
fprintf(fp_netvar_def, "namespace %s { %s %s; } \n",
|
||||||
fprintf(fp_netvar_def, "%s %s %s; %s\n",
|
|
||||||
decl.c_namespace_start.c_str(),
|
decl.c_namespace_start.c_str(),
|
||||||
builtin_types[typeidx].c_type, decl.bare_name.c_str(),
|
builtin_types[typeidx].c_type, decl.bare_name.c_str());
|
||||||
decl.c_namespace_end.c_str());
|
|
||||||
|
|
||||||
if ( alternative_mode && ! plugin )
|
if ( alternative_mode && ! plugin )
|
||||||
fprintf(fp_netvar_init, "\tzeek::detail::bif_initializers.emplace_back([]()\n");
|
fprintf(fp_netvar_init, "\tzeek::detail::bif_initializers.emplace_back([]()\n");
|
||||||
|
@ -594,7 +594,7 @@ head_1: TOK_ID opt_ws arg_begin
|
||||||
// (e.g. ones at global scope that may be used to implement
|
// (e.g. ones at global scope that may be used to implement
|
||||||
// the BIF itself).
|
// the BIF itself).
|
||||||
fprintf(fp_func_h,
|
fprintf(fp_func_h,
|
||||||
"namespace zeek { %sextern zeek::ValPtr %s_bif(zeek::detail::Frame* frame, const zeek::Args*);%s }\n",
|
"namespace zeek::%s { extern zeek::ValPtr %s_bif(zeek::detail::Frame* frame, const zeek::Args*);%s }\n",
|
||||||
decl.c_namespace_start.c_str(), decl.bare_name.c_str(), decl.c_namespace_end.c_str());
|
decl.c_namespace_start.c_str(), decl.bare_name.c_str(), decl.c_namespace_end.c_str());
|
||||||
|
|
||||||
fprintf(fp_func_def,
|
fprintf(fp_func_def,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue