binpac: Replace delete_list macro uses

This commit is contained in:
Tim Wojtulewicz 2025-08-21 11:10:56 -07:00
parent 64b3265eb8
commit 4dc546f8c8
13 changed files with 32 additions and 31 deletions

View file

@ -34,14 +34,14 @@ AnalyzerDecl::AnalyzerDecl(ID* id, DeclType decl_type, ParamList* params) : Type
} }
AnalyzerDecl::~AnalyzerDecl() { AnalyzerDecl::~AnalyzerDecl() {
delete_list(StateVarList, statevars_); delete_list(statevars_);
delete_list(AnalyzerActionList, actions_); delete_list(actions_);
delete_list(AnalyzerHelperList, helpers_); delete_list(helpers_);
delete_list(FunctionList, functions_); delete_list(functions_);
delete_list(ParamList, params_); delete_list(params_);
delete_list(AnalyzerHelperList, constructor_helpers_); delete_list(constructor_helpers_);
delete_list(AnalyzerHelperList, destructor_helpers_); delete_list(destructor_helpers_);
delete_list(AnalyzerHelperList, eof_helpers_); delete_list(eof_helpers_);
} }
void AnalyzerDecl::AddElements(AnalyzerElementList* elemlist) { void AnalyzerDecl::AddElements(AnalyzerElementList* elemlist) {

View file

@ -219,7 +219,7 @@ CaseField::CaseField(ExprList* index, ID* id, Type* type)
index_var_ = nullptr; index_var_ = nullptr;
} }
CaseField::~CaseField() { delete_list(ExprList, index_); } CaseField::~CaseField() { delete_list(index_); }
void GenCaseStr(ExprList* index_list, Output* out_cc, Env* env, Type* switch_type) { void GenCaseStr(ExprList* index_list, Output* out_cc, Env* env, Type* switch_type) {
if ( index_list ) { if ( index_list ) {

View file

@ -108,12 +108,12 @@ typedef vector<StateVar*> StateVarList;
if ( pc ) \ if ( pc ) \
for ( ct::iterator i = (pc)->begin(); i != (pc)->end(); ++i ) for ( ct::iterator i = (pc)->begin(); i != (pc)->end(); ++i )
#define delete_list(ct, pc) \ template<typename T>
{ \ constexpr void delete_list(T* container) {
foreach (delete_list_i, ct, pc) \ for ( auto& i : *container )
delete *delete_list_i; \ delete i;
delete pc; \
pc = 0; \ delete container;
} }
// Constants // Constants

View file

@ -53,7 +53,7 @@ AnalyzerContextDecl::AnalyzerContextDecl(ID* id, ContextFieldList* context_field
AnalyzerContextDecl::~AnalyzerContextDecl() { AnalyzerContextDecl::~AnalyzerContextDecl() {
delete context_name_id_; delete context_name_id_;
delete param_type_; delete param_type_;
delete_list(ContextFieldList, context_fields_); delete_list(context_fields_);
} }
void AnalyzerContextDecl::GenForwardDeclaration(Output* out_h) { void AnalyzerContextDecl::GenForwardDeclaration(Output* out_h) {

View file

@ -32,7 +32,7 @@ Decl::Decl(ID* id, DeclType decl_type) : id_(id), decl_type_(decl_type), attrlis
Decl::~Decl() { Decl::~Decl() {
delete id_; delete id_;
delete_list(AttrList, attrlist_); delete_list(attrlist_);
} }
void Decl::AddAttrs(AttrList* attrs) { void Decl::AddAttrs(AttrList* attrs) {

View file

@ -20,7 +20,7 @@ string EmbeddedCodeSegment::ToCode(Env* env) {
EmbeddedCode::EmbeddedCode() { segments_ = new EmbeddedCodeSegmentList(); } EmbeddedCode::EmbeddedCode() { segments_ = new EmbeddedCodeSegmentList(); }
EmbeddedCode::~EmbeddedCode() { delete_list(EmbeddedCodeSegmentList, segments_); } EmbeddedCode::~EmbeddedCode() { delete_list(segments_); }
void EmbeddedCode::Append(int atom) { current_segment_ += static_cast<char>(atom); } void EmbeddedCode::Append(int atom) { current_segment_ += static_cast<char>(atom); }

View file

@ -34,7 +34,7 @@ EnumDecl::EnumDecl(ID* id, EnumList* enumlist) : Decl(id, ENUM), enumlist_(enuml
} }
EnumDecl::~EnumDecl() { EnumDecl::~EnumDecl() {
delete_list(EnumList, enumlist_); delete_list(enumlist_);
delete extern_typedecl_; delete extern_typedecl_;
} }

View file

@ -155,8 +155,8 @@ Expr::~Expr() {
delete operand_[0]; delete operand_[0];
delete operand_[1]; delete operand_[1];
delete operand_[2]; delete operand_[2];
delete_list(ExprList, args_); delete_list(args_);
delete_list(CaseExprList, cases_); delete_list(cases_);
} }
void Expr::AddCaseExpr(CaseExpr* case_expr) { void Expr::AddCaseExpr(CaseExpr* case_expr) {
@ -841,7 +841,8 @@ CaseExpr::CaseExpr(ExprList* index, Expr* value)
: DataDepElement(DataDepElement::CASEEXPR), index_(index), value_(value) {} : DataDepElement(DataDepElement::CASEEXPR), index_(index), value_(value) {}
CaseExpr::~CaseExpr() { CaseExpr::~CaseExpr() {
delete_list(ExprList, index_); delete_list(index_);
index_ = nullptr;
delete value_; delete value_;
} }

View file

@ -18,7 +18,7 @@ Field::Field(FieldType tof, int flags, ID* id, Type* type)
Field::~Field() { Field::~Field() {
delete id_; delete id_;
delete type_; delete type_;
delete_list(AttrList, attrs_); delete_list(attrs_);
} }
void Field::AddAttr(AttrList* attrs) { void Field::AddAttr(AttrList* attrs) {

View file

@ -17,7 +17,7 @@ Function::Function(ID* id, Type* type, ParamList* params)
Function::~Function() { Function::~Function() {
delete id_; delete id_;
delete type_; delete type_;
delete_list(ParamList, params_); delete_list(params_);
delete env_; delete env_;
delete expr_; delete expr_;
delete code_; delete code_;

View file

@ -29,7 +29,7 @@ RecordType::RecordType(RecordFieldList* record_fields) : Type(RECORD) {
} }
RecordType::~RecordType() { RecordType::~RecordType() {
// Do not delete_list(RecordFieldList, record_fields_) // Do not delete_list(record_fields_)
// because the fields are also in fields_. // because the fields are also in fields_.
delete record_fields_; delete record_fields_;
delete parsing_dataptr_var_field_; delete parsing_dataptr_var_field_;

View file

@ -75,14 +75,14 @@ Type::~Type() {
delete buffering_state_var_field_; delete buffering_state_var_field_;
delete has_value_field_; delete has_value_field_;
delete[] size_expr_; delete[] size_expr_;
delete_list(FieldList, fields_); delete_list(fields_);
delete attrs_; delete attrs_;
delete attr_byteorder_expr_; delete attr_byteorder_expr_;
delete attr_if_expr_; delete attr_if_expr_;
delete attr_length_expr_; delete attr_length_expr_;
delete_list(ExprList, attr_checks_); delete_list(attr_checks_);
delete_list(ExprList, attr_enforces_); delete_list(attr_enforces_);
delete_list(ExprList, attr_requires_); delete_list(attr_requires_);
} }
Type* Type::Clone() const { Type* Type::Clone() const {

View file

@ -27,7 +27,7 @@ TypeDecl::~TypeDecl() {
delete env_; delete env_;
delete type_; delete type_;
delete_list(ParamList, params_); delete_list(params_);
} }
void TypeDecl::ProcessAttr(Attr* a) { type_->ProcessAttr(a); } void TypeDecl::ProcessAttr(Attr* a) { type_->ProcessAttr(a); }