C Container Collection (CCC)
Loading...
Searching...
No Matches
flat_priority_queue.h
Go to the documentation of this file.
1
59#ifndef CCC_FLAT_PRIORITY_QUEUE_H
60#define CCC_FLAT_PRIORITY_QUEUE_H
61
63#include <stddef.h>
67
68#include "flat_buffer.h" /* IWYU pragma: export */
69#include "types.h" /* IWYU pragma: export */
70
82
96#define CCC_flat_priority_queue_default(type_name, order, comparator...) \
97 CCC_private_flat_priority_queue_default(type_name, order, comparator)
98
108#define CCC_flat_priority_queue_for( \
109 type_name, order, comparator, capacity, data_pointer \
110) \
111 CCC_private_flat_priority_queue_for( \
112 type_name, order, comparator, capacity, data_pointer \
113 )
114
128#define CCC_flat_priority_queue_heapify( \
129 type_name, order, comparator, capacity, count, data_pointer... \
130) \
131 CCC_private_flat_priority_queue_heapify( \
132 type_name, order, comparator, capacity, count, data_pointer \
133 )
134
192#define CCC_flat_priority_queue_from( \
193 order, comparator, allocator, optional_capacity, compound_literal_array... \
194) \
195 CCC_private_flat_priority_queue_from( \
196 order, \
197 comparator, \
198 allocator, \
199 optional_capacity, \
200 compound_literal_array \
201 )
202
235#define CCC_flat_priority_queue_with_capacity( \
236 type_name, order, comparator, allocator, capacity \
237) \
238 CCC_private_flat_priority_queue_with_capacity( \
239 type_name, order, comparator, allocator, capacity \
240 )
241
253#define CCC_flat_priority_queue_with_storage( \
254 order, comparator, compound_literal_array \
255) \
256 CCC_private_flat_priority_queue_with_storage( \
257 order, comparator, compound_literal_array \
258 )
259
320 CCC_Flat_priority_queue *destination,
321 CCC_Flat_priority_queue const *source,
322 CCC_Allocator const *allocator
323);
324
344 CCC_Flat_priority_queue *priority_queue,
345 size_t to_add,
346 CCC_Allocator const *allocator
347);
348
361#define CCC_flat_priority_queue_emplace( \
362 priority_queue_pointer, allocator_pointer, type_compound_literal... \
363) \
364 CCC_private_flat_priority_queue_emplace( \
365 priority_queue_pointer, allocator_pointer, type_compound_literal \
366 )
367
400 CCC_Flat_priority_queue *priority_queue,
401 CCC_Flat_buffer const *buffer,
402 void *temp,
403 CCC_Allocator const *allocator
404);
405
427 void *temp,
430);
431
446 CCC_Flat_priority_queue *priority_queue,
447 void const *type,
448 void *temp,
449 CCC_Allocator const *allocator
450);
451
462 CCC_Flat_priority_queue *priority_queue, void *temp
463);
464
480 CCC_Flat_priority_queue *priority_queue, void *type, void *temp
481);
482
500 CCC_Flat_priority_queue const *priority_queue,
501 void *type,
502 void *temp,
503 CCC_Modifier const *modifier
504);
505
530#define CCC_flat_priority_queue_update_with( \
531 priority_queue_pointer, \
532 closure_parameter, \
533 update_closure_over_closure_parameter... \
534) \
535 CCC_private_flat_priority_queue_update_with( \
536 priority_queue_pointer, \
537 closure_parameter, \
538 update_closure_over_closure_parameter \
539 )
540
558 CCC_Flat_priority_queue const *priority_queue,
559 void *type,
560 void *temp,
561 CCC_Modifier const *modifier
562);
563
586#define CCC_flat_priority_queue_increase_with( \
587 priority_queue_pointer, \
588 closure_parameter, \
589 increase_closure_over_closure_parameter... \
590) \
591 CCC_private_flat_priority_queue_increase_with( \
592 priority_queue_pointer, \
593 closure_parameter, \
594 increase_closure_over_closure_parameter \
595 )
596
614 CCC_Flat_priority_queue const *priority_queue,
615 void *type,
616 void *temp,
617 CCC_Modifier const *modifier
618);
619
641#define CCC_flat_priority_queue_decrease_with( \
642 priority_queue_pointer, \
643 closure_parameter, \
644 decrease_closure_over_closure_parameter... \
645) \
646 CCC_private_flat_priority_queue_decrease_with( \
647 priority_queue_pointer, \
648 closure_parameter, \
649 decrease_closure_over_closure_parameter \
650 )
651
673 CCC_Flat_priority_queue *priority_queue, CCC_Destructor const *destructor
674);
675
692 CCC_Flat_priority_queue *priority_queue,
693 CCC_Destructor const *destructor,
694 CCC_Allocator const *allocator
695);
696
708[[nodiscard]] void *
710
715[[nodiscard]] CCC_Tribool
717
722[[nodiscard]] CCC_Count
724
730[[nodiscard]] CCC_Count
732
742[[nodiscard]] void *
744
749[[nodiscard]] CCC_Tribool
751
755[[nodiscard]] CCC_Order
757
762#ifdef FLAT_PRIORITY_QUEUE_USING_NAMESPACE_CCC
763/* NOLINTBEGIN(readability-identifier-naming) */
764typedef CCC_Flat_priority_queue Flat_priority_queue;
765# define flat_priority_queue_default(arguments...) \
766 CCC_flat_priority_queue_default(arguments)
767# define flat_priority_queue_for(arguments...) \
768 CCC_flat_priority_queue_for(arguments)
769# define flat_priority_queue_from(arguments...) \
770 CCC_flat_priority_queue_from(arguments)
771# define flat_priority_queue_with_capacity(arguments...) \
772 CCC_flat_priority_queue_with_capacity(arguments)
773# define flat_priority_queue_with_storage(arguments...) \
774 CCC_flat_priority_queue_with_storage(arguments)
775# define flat_priority_queue_heapify(arguments...) \
776 CCC_flat_priority_queue_heapify(arguments)
777# define flat_priority_queue_copy(arguments...) \
778 CCC_flat_priority_queue_copy(arguments)
779# define flat_priority_queue_reserve(arguments...) \
780 CCC_flat_priority_queue_reserve(arguments)
781# define flat_priority_queue_copy_heapify(arguments...) \
782 CCC_flat_priority_queue_copy_heapify(arguments)
783# define flat_priority_queue_in_place_heapify(arguments...) \
784 CCC_flat_priority_queue_in_place_heapify(arguments)
785# define flat_priority_queue_emplace(arguments...) \
786 CCC_flat_priority_queue_emplace(arguments)
787# define flat_priority_queue_push(arguments...) \
788 CCC_flat_priority_queue_push(arguments)
789# define flat_priority_queue_front(arguments...) \
790 CCC_flat_priority_queue_front(arguments)
791# define flat_priority_queue_pop(arguments...) \
792 CCC_flat_priority_queue_pop(arguments)
793# define flat_priority_queue_extract(arguments...) \
794 CCC_flat_priority_queue_extract(arguments)
795# define flat_priority_queue_update(arguments...) \
796 CCC_flat_priority_queue_update(arguments)
797# define flat_priority_queue_increase(arguments...) \
798 CCC_flat_priority_queue_increase(arguments)
799# define flat_priority_queue_decrease(arguments...) \
800 CCC_flat_priority_queue_decrease(arguments)
801# define flat_priority_queue_update_with(arguments...) \
802 CCC_flat_priority_queue_update_with(arguments)
803# define flat_priority_queue_increase_with(arguments...) \
804 CCC_flat_priority_queue_increase_with(arguments)
805# define flat_priority_queue_decrease_with(arguments...) \
806 CCC_flat_priority_queue_decrease_with(arguments)
807# define flat_priority_queue_clear(arguments...) \
808 CCC_flat_priority_queue_clear(arguments)
809# define flat_priority_queue_clear_and_free(arguments...) \
810 CCC_flat_priority_queue_clear_and_free(arguments)
811# define flat_priority_queue_is_empty(arguments...) \
812 CCC_flat_priority_queue_is_empty(arguments)
813# define flat_priority_queue_count(arguments...) \
814 CCC_flat_priority_queue_count(arguments)
815# define flat_priority_queue_capacity(arguments...) \
816 CCC_flat_priority_queue_capacity(arguments)
817# define flat_priority_queue_data(arguments...) \
818 CCC_flat_priority_queue_data(arguments)
819# define flat_priority_queue_validate(arguments...) \
820 CCC_flat_priority_queue_validate(arguments)
821# define flat_priority_queue_order(arguments...) \
822 CCC_flat_priority_queue_order(arguments)
823/* NOLINTEND(readability-identifier-naming) */
824#endif /* FLAT_PRIORITY_QUEUE_USING_NAMESPACE_CCC */
825
826#endif /* CCC_FLAT_PRIORITY_QUEUE_H */
The Flat_buffer Interface.
CCC_Result CCC_flat_priority_queue_clear(CCC_Flat_priority_queue *priority_queue, CCC_Destructor const *destructor)
Clears the priority_queue calling destroy on every element if provided. O(1)-O(N).
CCC_Tribool CCC_flat_priority_queue_is_empty(CCC_Flat_priority_queue const *priority_queue)
Returns true if the priority_queue is empty false if not. O(1).
CCC_Count CCC_flat_priority_queue_capacity(CCC_Flat_priority_queue const *priority_queue)
Returns the capacity of the priority_queue representing total possible slots.
CCC_Count CCC_flat_priority_queue_count(CCC_Flat_priority_queue const *priority_queue)
Returns the count of the priority_queue active slots.
CCC_Result CCC_flat_priority_queue_erase(CCC_Flat_priority_queue *priority_queue, void *type, void *temp)
Erase element e that is a handle to the stored flat_priority_queue element.
CCC_Flat_priority_queue CCC_flat_priority_queue_in_place_heapify(CCC_Flat_buffer *buffer, void *temp, CCC_Order order, CCC_Comparator const *comparator)
Order count elements of the input Flat_buffer as a flat priority queue, destroying the input metadata...
CCC_Result CCC_flat_priority_queue_clear_and_free(CCC_Flat_priority_queue *priority_queue, CCC_Destructor const *destructor, CCC_Allocator const *allocator)
Clears the priority_queue calling destroy on every element if provided. O(1)-O(N).
CCC_Result CCC_flat_priority_queue_copy(CCC_Flat_priority_queue *destination, CCC_Flat_priority_queue const *source, CCC_Allocator const *allocator)
Copy the priority_queue from source to newly initialized destination.
CCC_Result CCC_flat_priority_queue_copy_heapify(CCC_Flat_priority_queue *priority_queue, CCC_Flat_buffer const *buffer, void *temp, CCC_Allocator const *allocator)
Copy input buffer into the flat priority queue, organizing into data into heap order in O(N) time.
void * CCC_flat_priority_queue_front(CCC_Flat_priority_queue const *priority_queue)
Return a pointer to the front (min or max) element in the flat_priority_queue. O(1).
CCC_Result CCC_flat_priority_queue_reserve(CCC_Flat_priority_queue *priority_queue, size_t to_add, CCC_Allocator const *allocator)
Reserves space for at least to_add more elements.
void * CCC_flat_priority_queue_increase(CCC_Flat_priority_queue const *priority_queue, void *type, void *temp, CCC_Modifier const *modifier)
Increase type that is a handle to the stored flat_priority_queue element. O(lgN).
void * CCC_flat_priority_queue_data(CCC_Flat_priority_queue const *priority_queue)
Return a pointer to the base of the backing array. O(1).
CCC_Result CCC_flat_priority_queue_pop(CCC_Flat_priority_queue *priority_queue, void *temp)
Pop the front element (min or max) element in the flat_priority_queue. O(lgN).
void * CCC_flat_priority_queue_decrease(CCC_Flat_priority_queue const *priority_queue, void *type, void *temp, CCC_Modifier const *modifier)
Decrease e that is a handle to the stored flat_priority_queue element. O(lgN).
void * CCC_flat_priority_queue_push(CCC_Flat_priority_queue *priority_queue, void const *type, void *temp, CCC_Allocator const *allocator)
Pushes element pointed to at e into flat_priority_queue. O(lgN).
CCC_Tribool CCC_flat_priority_queue_validate(CCC_Flat_priority_queue const *priority_queue)
Verifies the internal invariants of the priority_queue hold.
void * CCC_flat_priority_queue_update(CCC_Flat_priority_queue const *priority_queue, void *type, void *temp, CCC_Modifier const *modifier)
Update e that is a handle to the stored priority_queue element. O(lgN).
CCC_Order CCC_flat_priority_queue_order(CCC_Flat_priority_queue const *priority_queue)
Return the order used to initialize the flat_priority_queue.
The Private Flat Priority Queue Types and Interface.
The type passed by reference to any container function that may need to allocate memory....
Definition: types.h:384
The type passed by reference to any container function that may need to compare elements....
Definition: types.h:424
A type for returning an unsigned integer from a container for counting. Intended to count sizes,...
Definition: types.h:243
The type passed by reference to any container function that may need to destroy elements....
Definition: types.h:472
Definition: private_flat_buffer.h:40
Definition: private_flat_priority_queue.h:45
CCC_Comparator comparator
Definition: private_flat_priority_queue.h:53
CCC_Flat_buffer buffer
Definition: private_flat_priority_queue.h:48
CCC_Order order
Definition: private_flat_priority_queue.h:51
The type passed by reference to any container function that may need to modify elements....
Definition: types.h:444
The C Container Collection Fundamental Types.
CCC_Order
A three-way comparison for comparison functions.
Definition: types.h:213
CCC_Tribool
A three state boolean to allow for an error state. Error is -1, False is 0, and True is 1.
Definition: types.h:178
CCC_Result
A result of actions on containers.
Definition: types.h:192