From ef962376bcbe41acfbea968012f350b2062246f7 Mon Sep 17 00:00:00 2001 From: Tim Wojtulewicz Date: Tue, 10 Jun 2025 10:34:15 -0700 Subject: [PATCH] binpac: Add 'override' to virtual methods in generated code --- tools/binpac/lib/binpac_analyzer.h | 4 ++-- tools/binpac/src/pac_conn.cc | 2 +- tools/binpac/src/pac_flow.cc | 2 +- tools/binpac/src/pac_typedecl.cc | 8 +++++++- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/tools/binpac/lib/binpac_analyzer.h b/tools/binpac/lib/binpac_analyzer.h index 23931eeb27..e3e4a9ffd5 100644 --- a/tools/binpac/lib/binpac_analyzer.h +++ b/tools/binpac/lib/binpac_analyzer.h @@ -8,14 +8,14 @@ namespace binpac { // The interface for a connection analyzer class ConnectionAnalyzer { public: - virtual ~ConnectionAnalyzer() {} + virtual ~ConnectionAnalyzer() = default; virtual void NewData(bool is_orig, const unsigned char* begin_of_data, const unsigned char* end_of_data) = 0; }; // The interface for a flow analyzer class FlowAnalyzer { public: - virtual ~FlowAnalyzer() {} + virtual ~FlowAnalyzer() = default; virtual void NewData(const unsigned char* begin_of_data, const unsigned char* end_of_data) = 0; }; diff --git a/tools/binpac/src/pac_conn.cc b/tools/binpac/src/pac_conn.cc index 4e7bc01cfe..deb8a77a6e 100644 --- a/tools/binpac/src/pac_conn.cc +++ b/tools/binpac/src/pac_conn.cc @@ -110,7 +110,7 @@ void ConnDecl::GenGapFunc(Output* out_h, Output* out_cc) { void ConnDecl::GenProcessFunc(Output* out_h, Output* out_cc) { string proto = strfmt("%s(bool is_orig, const_byteptr begin, const_byteptr end)", kNewData); - out_h->println("void %s;", proto.c_str()); + out_h->println("void %s override;", proto.c_str()); out_cc->println("void %s::%s {", class_name().c_str(), proto.c_str()); out_cc->inc_indent(); diff --git a/tools/binpac/src/pac_flow.cc b/tools/binpac/src/pac_flow.cc index 2138acb573..7b72979b38 100644 --- a/tools/binpac/src/pac_flow.cc +++ b/tools/binpac/src/pac_flow.cc @@ -151,7 +151,7 @@ void FlowDecl::GenProcessFunc(Output* out_h, Output* out_cc) { string proto = strfmt("%s(const_byteptr %s, const_byteptr %s)", kNewData, env_->LValue(begin_of_data), env_->LValue(end_of_data)); - out_h->println("void %s;", proto.c_str()); + out_h->println("void %s override;", proto.c_str()); out_cc->println("void %s::%s {", class_name().c_str(), proto.c_str()); out_cc->inc_indent(); diff --git a/tools/binpac/src/pac_typedecl.cc b/tools/binpac/src/pac_typedecl.cc index 5488490911..268fdc3344 100644 --- a/tools/binpac/src/pac_typedecl.cc +++ b/tools/binpac/src/pac_typedecl.cc @@ -178,9 +178,15 @@ void TypeDecl::GenConstructorFunc(Output* out_h, Output* out_cc) { } void TypeDecl::GenDestructorFunc(Output* out_h, Output* out_cc) { + vector base_classes; + AddBaseClass(&base_classes); + string proto = strfmt("~%s()", class_name().c_str()); - out_h->println("%s;", proto.c_str()); + if ( base_classes.empty() ) + out_h->println("%s;", proto.c_str()); + else + out_h->println("%s override;", proto.c_str()); out_cc->println("%s::%s {", class_name().c_str(), proto.c_str()); out_cc->inc_indent();