FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Add a test for creating a callback and passing it to qsort · Issue #1766 · lcompilers/lpython · GitHub

Add a test for creating a callback and passing it to qsort #1766

Description

Here is a rough idea how it can work:

Comparator = Callable[[Any, Any], int]
@ccall
def qsort(arr: Sequence[Any],
          num_elems: int,
          elem_size: int,
          comp: Comparator) -> None:
    pass

The types have to be adjusted. And we want to use it like:

def sort_f16_idx_val_ascending(iv_ptr: CPtr, num_elements: i32) -> None:
    iv = ctypes.cast(iv_ptr, ctypes.POINTER(gd_lab_4_idx_val))
    qsort(iv, num_elements, sizeof(gd_lab_4_idx_val), f16_idx_val_cmp_ascending)

where the f16_idx_val_cmp_ascending function is the comparator. And we want this to call the qsort function in C.

I think we have most of these pieces in LPython/LFortran, we just need to write a test for this and ensure everything works and fix any bugs.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions


      Back | FazBrowse Home | New Git URL