59#ifndef CCC_FLAT_PRIORITY_QUEUE_H
60#define CCC_FLAT_PRIORITY_QUEUE_H
67#include "private/private_flat_priority_queue.h"
95#define CCC_flat_priority_queue_default(type_name, order, comparator...) \
96 CCC_private_flat_priority_queue_default(type_name, order, comparator)
107#define CCC_flat_priority_queue_for( \
108 type_name, order, comparator, capacity, data_pointer \
110 CCC_private_flat_priority_queue_for( \
111 type_name, order, comparator, capacity, data_pointer \
127#define CCC_flat_priority_queue_heapify( \
128 type_name, order, comparator, capacity, count, data_pointer... \
130 CCC_private_flat_priority_queue_heapify( \
131 type_name, order, comparator, capacity, count, data_pointer \
191#define CCC_flat_priority_queue_from( \
192 order, comparator, allocator, optional_capacity, compound_literal_array... \
194 CCC_private_flat_priority_queue_from( \
199 compound_literal_array \
234#define CCC_flat_priority_queue_with_capacity( \
235 type_name, order, comparator, allocator, capacity \
237 CCC_private_flat_priority_queue_with_capacity( \
238 type_name, order, comparator, allocator, capacity \
252#define CCC_flat_priority_queue_with_storage( \
253 order, comparator, compound_literal_array \
255 CCC_private_flat_priority_queue_with_storage( \
256 order, comparator, compound_literal_array \
360#define CCC_flat_priority_queue_emplace( \
361 priority_queue_pointer, allocator_pointer, type_compound_literal... \
363 CCC_private_flat_priority_queue_emplace( \
364 priority_queue_pointer, allocator_pointer, type_compound_literal \
529#define CCC_flat_priority_queue_update_with( \
530 priority_queue_pointer, \
532 update_closure_over_closure_parameter... \
534 CCC_private_flat_priority_queue_update_with( \
535 priority_queue_pointer, \
537 update_closure_over_closure_parameter \
585#define CCC_flat_priority_queue_increase_with( \
586 priority_queue_pointer, \
588 increase_closure_over_closure_parameter... \
590 CCC_private_flat_priority_queue_increase_with( \
591 priority_queue_pointer, \
593 increase_closure_over_closure_parameter \
640#define CCC_flat_priority_queue_decrease_with( \
641 priority_queue_pointer, \
643 decrease_closure_over_closure_parameter... \
645 CCC_private_flat_priority_queue_decrease_with( \
646 priority_queue_pointer, \
648 decrease_closure_over_closure_parameter \
761#ifdef FLAT_PRIORITY_QUEUE_USING_NAMESPACE_CCC
764# define flat_priority_queue_default(arguments...) \
765 CCC_flat_priority_queue_default(arguments)
766# define flat_priority_queue_for(arguments...) \
767 CCC_flat_priority_queue_for(arguments)
768# define flat_priority_queue_from(arguments...) \
769 CCC_flat_priority_queue_from(arguments)
770# define flat_priority_queue_with_capacity(arguments...) \
771 CCC_flat_priority_queue_with_capacity(arguments)
772# define flat_priority_queue_with_storage(arguments...) \
773 CCC_flat_priority_queue_with_storage(arguments)
774# define flat_priority_queue_heapify(arguments...) \
775 CCC_flat_priority_queue_heapify(arguments)
776# define flat_priority_queue_copy(arguments...) \
777 CCC_flat_priority_queue_copy(arguments)
778# define flat_priority_queue_reserve(arguments...) \
779 CCC_flat_priority_queue_reserve(arguments)
780# define flat_priority_queue_copy_heapify(arguments...) \
781 CCC_flat_priority_queue_copy_heapify(arguments)
782# define flat_priority_queue_in_place_heapify(arguments...) \
783 CCC_flat_priority_queue_in_place_heapify(arguments)
784# define flat_priority_queue_emplace(arguments...) \
785 CCC_flat_priority_queue_emplace(arguments)
786# define flat_priority_queue_push(arguments...) \
787 CCC_flat_priority_queue_push(arguments)
788# define flat_priority_queue_front(arguments...) \
789 CCC_flat_priority_queue_front(arguments)
790# define flat_priority_queue_pop(arguments...) \
791 CCC_flat_priority_queue_pop(arguments)
792# define flat_priority_queue_extract(arguments...) \
793 CCC_flat_priority_queue_extract(arguments)
794# define flat_priority_queue_update(arguments...) \
795 CCC_flat_priority_queue_update(arguments)
796# define flat_priority_queue_increase(arguments...) \
797 CCC_flat_priority_queue_increase(arguments)
798# define flat_priority_queue_decrease(arguments...) \
799 CCC_flat_priority_queue_decrease(arguments)
800# define flat_priority_queue_update_with(arguments...) \
801 CCC_flat_priority_queue_update_with(arguments)
802# define flat_priority_queue_increase_with(arguments...) \
803 CCC_flat_priority_queue_increase_with(arguments)
804# define flat_priority_queue_decrease_with(arguments...) \
805 CCC_flat_priority_queue_decrease_with(arguments)
806# define flat_priority_queue_clear(arguments...) \
807 CCC_flat_priority_queue_clear(arguments)
808# define flat_priority_queue_clear_and_free(arguments...) \
809 CCC_flat_priority_queue_clear_and_free(arguments)
810# define flat_priority_queue_is_empty(arguments...) \
811 CCC_flat_priority_queue_is_empty(arguments)
812# define flat_priority_queue_count(arguments...) \
813 CCC_flat_priority_queue_count(arguments)
814# define flat_priority_queue_capacity(arguments...) \
815 CCC_flat_priority_queue_capacity(arguments)
816# define flat_priority_queue_data(arguments...) \
817 CCC_flat_priority_queue_data(arguments)
818# define flat_priority_queue_validate(arguments...) \
819 CCC_flat_priority_queue_validate(arguments)
820# define flat_priority_queue_order(arguments...) \
821 CCC_flat_priority_queue_order(arguments)
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 type passed by reference to any container function that may need to allocate memory....
Definition: types.h:369
The type passed by reference to any container function that may need to compare elements....
Definition: types.h:409
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:457
Definition: private_flat_buffer.h:32
Definition: private_flat_priority_queue.h:34
CCC_Comparator comparator
Definition: private_flat_priority_queue.h:42
CCC_Flat_buffer buffer
Definition: private_flat_priority_queue.h:37
CCC_Order order
Definition: private_flat_priority_queue.h:40
The type passed by reference to any container function that may need to modify elements....
Definition: types.h:429
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