Example #1
0
File: python.py Project: JeanOrf/cm
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)
Example #2
0
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)
Example #3
0
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
Example #4
0
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)
Example #5
0
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
Example #6
0
File: python.py Project: JeanOrf/cm
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
Example #7
0
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)
Example #8
0
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)
Example #9
0
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)