From 569247a4c5c4f7aa57b61fe563bccada3b8d3d6b Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Tue, 3 Oct 2017 18:11:54 -0700 Subject: scripts: Generate copy assignment operators for safe_* --- scripts/helper_file_generator.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'scripts') diff --git a/scripts/helper_file_generator.py b/scripts/helper_file_generator.py index a9d9390f..4cdea71b 100644 --- a/scripts/helper_file_generator.py +++ b/scripts/helper_file_generator.py @@ -559,6 +559,7 @@ class HelperFileOutputGenerator(OutputGenerator): safe_struct_header += '%s;\n' % member.cdecl safe_struct_header += ' safe_%s(const %s* in_struct);\n' % (item.name, item.name) safe_struct_header += ' safe_%s(const safe_%s& src);\n' % (item.name, item.name) + safe_struct_header += ' safe_%s& operator=(const safe_%s& src);\n' % (item.name, item.name) safe_struct_header += ' safe_%s();\n' % item.name safe_struct_header += ' ~safe_%s();\n' % item.name safe_struct_header += ' void initialize(const %s* in_struct);\n' % item.name @@ -883,7 +884,9 @@ class HelperFileOutputGenerator(OutputGenerator): copy_construct_txt = construct_txt.replace(' (in_struct->', ' (src.') # Exclude 'if' blocks from next line copy_construct_txt = copy_construct_txt.replace('(in_struct->', '(*src.') # Pass object to copy constructors copy_construct_txt = copy_construct_txt.replace('in_struct->', 'src.') # Modify remaining struct refs for src object + copy_assign_txt = ' if (&src == this) return *this;\n\n' + destruct_txt + '\n' + copy_construct_init + copy_construct_txt + '\n return *this;' safe_struct_body.append("\n%s::%s(const %s& src)\n{\n%s%s}" % (ss_name, ss_name, ss_name, copy_construct_init, copy_construct_txt)) # Copy constructor + safe_struct_body.append("\n%s& %s::operator=(const %s& src)\n{\n%s\n}" % (ss_name, ss_name, ss_name, copy_assign_txt)) # Copy assignment operator safe_struct_body.append("\n%s::~%s()\n{\n%s}" % (ss_name, ss_name, destruct_txt)) safe_struct_body.append("\nvoid %s::initialize(const %s* in_struct)\n{\n%s%s}" % (ss_name, item.name, init_func_txt, construct_txt)) # Copy initializer uses same txt as copy constructor but has a ptr and not a reference -- cgit v1.2.3