C Container Collection (CCC)
Loading...
Searching...
No Matches
sort.h
Go to the documentation of this file.
1
27#ifndef CCC_SORT_H
28#define CCC_SORT_H
29
30#include "buffer.h"
31#include "doubly_linked_list.h"
32#include "singly_linked_list.h"
33#include "types.h"
34
64 CCC_Buffer *buffer,
65 void *temp,
66 CCC_Order order,
67 CCC_Comparator const *comparator
68);
69
85 CCC_Order order,
86 CCC_Comparator const *comparator
87);
88
104 CCC_Order order,
105 CCC_Comparator const *comparator
106);
107
121#define CCC_sort_mergesort(list_pointer, order, comparator_pointer) \
122 _Generic((list_pointer), CCC_Singly_linked_list *: CCC_sort_singly_linked_list_mergesort, CCC_Doubly_linked_list *: CCC_sort_doubly_linked_list_mergesort)( \
123 list_pointer, order, comparator_pointer \
124 )
125
130#ifdef SORT_USING_NAMESPACE_CCC
131/* NOLINTBEGIN(readability-identifier-naming) */
132# define sort_heapsort(args...) CCC_sort_heapsort(args)
133# define sort_singly_linked_list_mergesort(args...) \
134 CCC_sort_singly_linked_list_mergesort(args)
135# define sort_doubly_linked_list_mergesort(args...) \
136 CCC_sort_doubly_linked_list_mergesort(args)
137# define sort_mergesort(args...) CCC_sort_mergesort(args)
138/* NOLINTEND(readability-identifier-naming) */
139#endif /* SORT_USING_NAMESPACE_CCC */
140
141#endif /* CCC_SORT_H */
The Buffer Interface.
The Doubly Linked List Interface.
The Singly Linked List Interface.
CCC_Result CCC_sort_doubly_linked_list_mergesort(CCC_Doubly_linked_list *list, CCC_Order order, CCC_Comparator const *comparator)
Sorts the doubly linked list in user specified order as defined by the provided order and comparator....
CCC_Result CCC_sort_heapsort(CCC_Buffer *buffer, void *temp, CCC_Order order, CCC_Comparator const *comparator)
Sorts the input buffer in O(N * log(N)) time and O(1) space according to the desired input order.
CCC_Result CCC_sort_singly_linked_list_mergesort(CCC_Singly_linked_list *list, CCC_Order order, CCC_Comparator const *comparator)
Sorts the singly linked list in user specified order as defined by the provided order and comparator....
Definition: private_buffer.h:32
The type passed by reference to any container function that may need to compare elements....
Definition: types.h:416
Definition: private_doubly_linked_list.h:66
Definition: private_singly_linked_list.h:63
The C Container Collection Fundamental Types.
CCC_Order
A three-way comparison for comparison functions.
Definition: types.h:214
CCC_Result
A result of actions on containers.
Definition: types.h:192