@@ -307,14 +307,17 @@ def generate_new_datatype_convert_fn_intern_to_abi(self):
307307 self .dump ('}' )
308308
309309 def generic_convert (self , fn_name , param_name , type_ , value_names , offset = None ):
310- if type_ not in c_intrinsic_types :
311- if (type_ [- 1 ] == '*' ):
312- intern_type = self .mangle_name (type_ [:- 1 ].strip ())
313- intern_type = intern_type + ' *'
314- else :
315- intern_type = self .mangle_name (type_ )
310+ is_ptr_arg = False
311+ tmp_type = type_
312+ if (tmp_type [- 1 ] == '*' ):
313+ is_ptr_arg = True
314+ tmp_type = tmp_type [:- 1 ].strip ()
315+ if tmp_type not in c_intrinsic_types :
316+ intern_type = self .mangle_name (tmp_type )
316317 else :
317- intern_type = type_
318+ intern_type = tmp_type
319+ if (is_ptr_arg == True ):
320+ intern_type = intern_type + ' *'
318321 self .dump (f'{ consts .INLINE_ATTRS } { type_ } { fn_name } ({ intern_type } { param_name } )' )
319322 self .dump ('{' )
320323 lines = []
@@ -447,6 +450,9 @@ def generate_tag_convert_fn_intern_to_abi(self):
447450 def generate_source_convert_fn (self ):
448451 self .generic_convert (ConvertFuncs .SOURCE , 'source' , 'int' , consts .RESERVED_SOURCE )
449452
453+ def generate_source_convert_fn_intern_to_abi (self ):
454+ self .generic_convert_reverse (ConvertOMPIToStandard .SOURCE , 'tag' , 'int' , consts .RESERVED_SOURCE )
455+
450456 def generate_root_convert_fn (self ):
451457 self .generic_convert (ConvertFuncs .ROOT , 'root' , 'int' , consts .RESERVED_ROOT )
452458
@@ -504,6 +510,9 @@ def generate_t_cb_safety_convert_fn(self):
504510 def generate_comm_split_type_convert_fn (self ):
505511 self .generic_convert (ConvertFuncs .SPLIT_TYPE , 'split_type' , 'int' , consts .COMMUNICATOR_SPLIT_TYPES )
506512
513+ def generate_weight_convert_fn (self ):
514+ self .generic_convert (ConvertFuncs .WEIGHTS , 'weights' , 'int *' , consts .RESERVED_WEIGHTS )
515+
507516 def generate_pointer_convert_fn (self , type_ , fn_name , constants ):
508517 abi_type = self .mangle_name (type_ )
509518 self .dump (f'{ consts .INLINE_ATTRS } void { fn_name } ({ abi_type } *ptr)' )
@@ -636,19 +645,21 @@ def dump_code(self):
636645 self .generate_t_source_order_convert_fn_intern_to_abi ()
637646 self .generate_pvar_class_convert_fn ()
638647 self .generate_pvar_class_convert_fn_intern_to_abi ()
648+ self .generate_source_convert_fn ()
649+ self .generate_source_convert_fn_intern_to_abi ()
639650
640651 #
641652 # the following only need abi to intern converters
642653 #
643654 self .generate_comm_copy_attr_convert_fn ()
644655 self .generate_comm_delete_attr_convert_fn ()
645656 self .generate_comm_split_type_convert_fn ()
657+ self .generate_weight_convert_fn ()
646658
647659 #
648660 # the following only need intern to abi converters
649661 #
650662 self .generate_comm_cmp_convert_fn_intern_to_abi ()
651- self .generate_source_convert_fn ()
652663 self .generate_root_convert_fn ()
653664 self .generate_t_cb_safety_convert_fn ()
654665
0 commit comments