def move(
    library,
    session,
    source_space,
    source_offset,
    source_width,
    destination_space,
    destination_offset,
    destination_width,
    length,
):
    """Moves a block of data.

    Corresponds to viMove function of the VISA library.

    Parameters
    ----------
    library : ctypes.WinDLL or ctypes.CDLL
        ctypes wrapped library.
    session : VISASession
        Unique logical identifier to a session.
    source_space : constants.AddressSpace
        Specifies the address space of the source.
    source_offset : int
        Offset of the starting address or register from which to read.
    source_width : constants.DataWidth
        Specifies the data width of the source.
    destination_space : constants.AddressSpace
        Specifies the address space of the destination.
    destination_offset : int
        Offset of the starting address or register to which to write.
    destination_width : constants.DataWidth
        Specifies the data width of the destination.
    length: int
        Number of elements to transfer, where the data width of the
        elements to transfer is identical to the source data width.

    Returns
    -------
    constants.StatusCode
        Return value of the library call.

    """
    return library.viMove(
        session,
        source_space,
        source_offset,
        source_width,
        destination_space,
        destination_offset,
        destination_width,
        length,
    )