parameters: (self, writer, parm)
docstring: Writes the argument reconstruction for in-out parameters
          and array parameters.
  
          Since calling the implementation function can alter the
          arguments passed, the client arguments must be reconstructed
          from the implementation objects. After the implementation
          function is called, the implementation arguments must be
          transformed back into client objects, which must then be
          assigned to the client arguments. Effectively, the
          generated code undoes what the code generated by
          `write_arg_setup()` does.
docstring_summary: Writes the argument reconstruction for in-out parameters
          and array parameters.
docstring_tokens: Writes the argument reconstruction for in - out parameters and array parameters .
function: def write_arg_return(self, writer, parm):
          """
          Writes the argument reconstruction for in-out parameters
          and array parameters.
  
          Since calling the implementation function can alter the
          arguments passed, the client arguments must be reconstructed
          from the implementation objects. After the implementation
          function is called, the implementation arguments must be
          transformed back into client objects, which must then be
          assigned to the client arguments. Effectively, the
          generated code undoes what the code generated by
          `write_arg_setup()` does.
          """
          if parm.is_in_out():
              assert parm.type().is_class()
              t = self.get_class_name(parm.type().as_class())
              writer.write("ARG_RETURN({t}, {n}Impl, {n});\n".format(t=t, n=parm.name()))
          elif parm.is_array():
              assert parm.type().is_class()
              t = self.get_class_name(parm.type().as_class())
              writer.write("ARRAY_ARG_RETURN({t}, {s}, {n}Arg, {n});\n".format(t=t, n=parm.name(), s=parm.array_len()))
function_tokens: def write_arg_return ( self , writer , parm ) : if parm . is_in_out ( ) : assert parm . type ( ) . is_class ( ) t = self . get_class_name ( parm . type ( ) . as_class ( ) ) writer . write ( "ARG_RETURN({t}, {n}Impl, {n});\n" . format ( t = t , n = parm . name ( ) ) ) elif parm . is_array ( ) : assert parm . type ( ) . is_class ( ) t = self . get_class_name ( parm . type ( ) . as_class ( ) ) writer . write ( "ARRAY_ARG_RETURN({t}, {s}, {n}Arg, {n});\n" . format ( t = t , n = parm . name ( ) , s = parm . array_len ( ) ) )