def py_method(type, routine): """Write subroutine as method of Python class""" name = method_name(type, routine) c_name = subroutine_c_names(routine)[0] self_parameter = routine.parameters[routine.self_idx] all_parameters = (routine.parameters[0:routine.self_idx] + routine.parameters[routine.self_idx + 1:]) (pre_code, py_args, swig_args) = process_parameters(all_parameters) # Add in self parameter to pass to swig swig_args.insert(routine.self_idx, self_parameter.name) py_args = (['self'] + py_args) docstring = [remove_doxygen_commands( '\n '.join(routine.comment_lines))] docstring.append('\n\n') docstring.append(' ' * 8) docstring.append("\n ".join( parameters_docstring(all_parameters).splitlines())) docstring = ''.join(docstring).strip() method = [" def %s(%s):" % (name, ', '.join(py_args))] method.append(' """%s\n """\n' % docstring) method.append(" %s = self" % self_parameter.name) for line in pre_code: method.append(" %s" % line) method.append(" return _wrap_routine(_opencmiss_swig.%s, [%s])" % (c_name, ', '.join(swig_args))) return '\n'.join(method)
def py_method(swig_module_name, type, routine): """Write subroutine as method of Python class""" name = method_name(type, routine) c_name = subroutine_c_names(routine)[0] self_parameter = routine.parameters[routine.self_idx] all_parameters = (routine.parameters[0:routine.self_idx] + routine.parameters[routine.self_idx + 1:]) (pre_code, py_args, swig_args) = process_parameters(all_parameters) # Add in self parameter to pass to swig swig_args.insert(routine.self_idx, self_parameter.name) py_args = (['self'] + py_args) docstring = [ remove_doxygen_commands('\n '.join(routine.comment_lines)) ] docstring.append('\n\n') docstring.append(' ' * 8) docstring.append("\n ".join( parameters_docstring(all_parameters).splitlines())) docstring = ''.join(docstring).strip() method = [" def %s(%s):" % (name, ', '.join(py_args))] method.append(' """%s\n """\n' % docstring) method.append(" %s = self" % self_parameter.name) for line in pre_code: method.append(" %s" % line) method.append(" return _wrap_routine(_%s.%s, [%s])" % (swig_module_name, c_name, ', '.join(swig_args))) return '\n'.join(method)
def method_name(type, routine): "Return the name of a method of an object""" c_name = subroutine_c_names(routine)[0] name = c_name[len(type.name) - len('Type'):] if name == 'TypeFinalise': name = 'Finalise' return name
def py_method(type, routine): """Write subroutine as method of Python class""" if type.name == 'CMISSFieldMLIOType': type_name = 'CMISSFieldMLType' else: type_name = type.name name = method_name(type, routine) c_name = subroutine_c_names(routine)[0] create_start_name = type_name[:-len('Type')] + 'Create' if c_name.startswith('CMISSFieldMLOutputCreate'): # Have to account for this specifically as it doesn't # match other create start routines is_create_start = True self_parameter = routine.parameters[-1] all_parameters = routine.parameters[0:-1] elif (c_name.startswith(create_start_name) and routine.parameters[-1].var_type == Parameter.CUSTOM_TYPE and routine.parameters[-1].type_name == type.name): is_create_start = True # Last parameter is self parameter self_parameter = routine.parameters[-1] all_parameters = routine.parameters[0:-1] else: is_create_start = False self_parameter = routine.parameters[0] all_parameters = routine.parameters[1:] (pre_code, py_args, swig_args) = process_parameters(all_parameters) if is_create_start: swig_args = swig_args + [self_parameter.name] else: swig_args = [self_parameter.name] + swig_args py_args = (['self'] + py_args) docstring = [remove_doxygen_commands( '\n '.join(routine.comment_lines))] docstring.append('\n\n') docstring.append(' ' * 8) docstring.append("\n ".join( parameters_docstring(all_parameters).splitlines())) docstring = ''.join(docstring).strip() method = [" def %s(%s):" % (name, ', '.join(py_args))] method.append(' """%s\n """\n' % docstring) method.append(" %s = self" % self_parameter.name) for line in pre_code: method.append(" %s" % line) method.append(" return _wrap_routine(_opencmiss_swig.%s, [%s])" % (c_name, ', '.join(swig_args))) return '\n'.join(method)
def method_name(type, routine): "Return the name of a method of an object" "" c_name = subroutine_c_names(routine)[0] if c_name.count('_') > 1: name = c_name.split('_')[-1] elif (c_name.startswith('cmfe_FieldML') and not c_name.startswith('cmfe_FieldMLIO')): # Special case for FieldML routines that start # with FieldML but take a CMFEFieldMLIOType, although # some start with CMFEFieldMLIO... name = c_name[len('cmfe_FieldML'):] else: # Old code style, no underscore after type name name = c_name[len(type.name) - len('Type'):] if name == 'TypeFinalise': name = 'Finalise' return name
def method_name(type, routine): "Return the name of a method of an object""" c_name = subroutine_c_names(routine)[0] if '_' in c_name: name = c_name.split('_')[-1] elif (c_name.startswith('CMISSFieldML') and not c_name.startswith('CMISSFieldMLIO')): # Special case for FieldML routines that start # with FieldML but take a CMISSFieldMLIOType, although # some start with CMISSFieldMLIO... name = c_name[len('CMISSFieldML'):] else: # Old code style name = c_name[len(type.name) - len('Type'):] if name == 'TypeFinalise': name = 'Finalise' return name
def routine_to_py(routine): c_name = subroutine_c_names(routine)[0] name = c_name[len(PREFIX):] docstring = [remove_doxygen_commands('\n '.join(routine.comment_lines))] docstring.append('') docstring.append(' ' * 4 + '\n '.join( parameters_docstring(routine.parameters).splitlines())) docstring = '\n'.join(docstring).strip() (pre_code, py_args, swig_args) = process_parameters(routine.parameters) py_routine = ["def %s(%s):" % (name, ', '.join(py_args))] py_routine.append(' """%s\n """\n' % docstring) for line in pre_code: py_routine.append(" %s" % line) py_routine.append(' return _wrap_routine(_opencmiss_swig.%s, [%s])' % (c_name, ', '.join(swig_args))) return '\n'.join(py_routine)
def routine_to_py(routine): c_name = subroutine_c_names(routine)[0] name = c_name[len(PREFIX):] docstring = [remove_doxygen_commands('\n '.join(routine.comment_lines))] docstring.append('') docstring.append(' ' * 4 + '\n '.join( parameters_docstring(routine.parameters).splitlines())) docstring = '\n'.join(docstring).strip() (pre_code, py_args, swig_args) = process_parameters(routine.parameters) py_routine = ["def %s(%s):" % (name, ', '.join(py_args))] py_routine.append(' """%s\n """\n' % docstring) for line in pre_code: py_routine.append(" %s" % line) py_routine.append(' return _wrap_routine(_iron_swig.%s, [%s])' % (c_name, ', '.join(swig_args))) return '\n'.join(py_routine)
def py_method(type, routine): """Write subroutine as method of Python class""" name = method_name(type, routine) c_name = subroutine_c_names(routine)[0] create_start_name = type.name[:-len('Type')] + 'CreateStart' if c_name.startswith(create_start_name): # Last parameter is self parameter self_parameter = routine.parameters[-1] all_parameters = routine.parameters[0:-1] else: self_parameter = routine.parameters[0] all_parameters = routine.parameters[1:] (pre_code, py_args, swig_args) = process_parameters(all_parameters) if c_name.startswith(create_start_name): swig_args = swig_args + [self_parameter.name] else: swig_args = [self_parameter.name] + swig_args py_args = (['self'] + py_args) docstring = [remove_doxygen_commands( '\n '.join(routine.comment_lines))] docstring.append('\n\n') docstring.append(' ' * 8) docstring.append("\n ".join( parameters_docstring(all_parameters).splitlines())) docstring = ''.join(docstring).strip() method = [" def %s(%s):" % (name, ', '.join(py_args))] method.append(' """%s\n """\n' % docstring) method.append(" %s = self" % self_parameter.name) for line in pre_code: method.append(" %s" % line) method.append(" return _wrap_routine(_opencmiss_swig.%s, [%s])" % (c_name, ', '.join(swig_args))) return '\n'.join(method)