diff options
| author | Chris Forbes <chrisforbes@google.com> | 2017-10-03 18:11:54 -0700 |
|---|---|---|
| committer | Chris Forbes <chrisf@ijw.co.nz> | 2017-10-04 07:26:55 -0700 |
| commit | 569247a4c5c4f7aa57b61fe563bccada3b8d3d6b (patch) | |
| tree | c0a495c520d056fed6057ddf1c1c491504d5ac22 /scripts | |
| parent | b2e9cb9c3ed05f568bd32d8fd703e56edcffe23d (diff) | |
| download | usermoji-569247a4c5c4f7aa57b61fe563bccada3b8d3d6b.tar.xz | |
scripts: Generate copy assignment operators for safe_*
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/helper_file_generator.py | 3 |
1 files changed, 3 insertions, 0 deletions
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 |
