Skip to content

Commit

Permalink
added active logic to pointer association
Browse files Browse the repository at this point in the history
  • Loading branch information
dustinswales committed Feb 2, 2024
1 parent 9248678 commit 7a0c4c9
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions scripts/suite_objects.py
Original file line number Diff line number Diff line change
Expand Up @@ -1233,7 +1233,7 @@ def analyze(self, phase, group, scheme_library, suite_vars, level):
# If so, declare local target and pointer varaibles. This is needed to
# pass inactive (not present) status through the caps.
if var.get_prop_value('optional'):
self.add_optional_var(var)
self.add_optional_var(var, dict_var)
# end if

# end for
Expand Down Expand Up @@ -1544,12 +1544,18 @@ def write_var_debug_check(self, var, internal_var, cldicts, outfile, errcode, er
outfile.write('',indent)
# end if

def add_optional_var(self, var):
def add_optional_var(self, var, dict_var):
newvar_ptr = var.clone(var.get_prop_value('local_name')+'_local_ptr')
self.add_variable(newvar_ptr, self.run_env, exists_ok=True)
self.__optional_vars.append([var.get_prop_value('local_name')+'_local',
self.__optional_vars.append([dict_var, var.get_prop_value('local_name')+'_local',
newvar_ptr.get_prop_value('local_name')])

def write_optional_var(self, var, cldicts, lname, lname_ptr, indent, outfile):
(conditional, _) = var.conditional(cldicts)
outfile.write(f"if {conditional} then", indent)
outfile.write(f"{lname_ptr} => {lname}", indent+1)
outfile.write(f"end if", indent)

def add_var_transform(self, var, compat_obj, vert_dim):
"""Register any variable transformation needed by <var> for this Scheme.
For any transformation identified in <compat_obj>, create dummy variable
Expand Down Expand Up @@ -1652,8 +1658,8 @@ def write(self, outfile, errcode, errmsg, indent):
outfile.write('',indent+1)
# Associate conditionally allocated variables.
outfile.write('! Associate conditional variables', indent+1)
for (lname, lname_ptr) in self.__optional_vars:
outfile.write(f"{lname_ptr} => {lname}", indent+1)
for (var, lname, lname_ptr) in self.__optional_vars:
tstmt = self.write_optional_var(var, cldicts, lname, lname_ptr, indent+1, outfile)
# end if
# Write the scheme call.
stmt = 'call {}({})'
Expand Down

0 comments on commit 7a0c4c9

Please sign in to comment.