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>
66#include "flat_buffer.h"
67#include "private/private_flat_priority_queue.h"
68#include "types.h"
69
81
95#define CCC_flat_priority_queue_default(type_name, order, comparator...) \
96 CCC_private_flat_priority_queue_default(type_name, order, comparator)
97
107#define CCC_flat_priority_queue_for( \
108 type_name, order, comparator, capacity, data_pointer \
109) \
110 CCC_private_flat_priority_queue_for( \
111 type_name, order, comparator, capacity, data_pointer \
112 )
113
127#define CCC_flat_priority_queue_heapify( \
128 type_name, order, comparator, capacity, count, data_pointer... \
129) \
130 CCC_private_flat_priority_queue_heapify( \
131 type_name, order, comparator, capacity, count, data_pointer \
132 )
133
191#define CCC_flat_priority_queue_from( \
192 order, comparator, allocator, optional_capacity, compound_literal_array... \
193) \
194 CCC_private_flat_priority_queue_from( \
195 order, \
196 comparator, \
197 allocator, \
198 optional_capacity, \
199 compound_literal_array \
200 )
201
234#define CCC_flat_priority_queue_with_capacity( \
235 type_name, order, comparator, allocator, capacity \
236) \
237 CCC_private_flat_priority_queue_with_capacity( \
238 type_name, order, comparator, allocator, capacity \
239 )
240
252#define CCC_flat_priority_queue_with_storage( \
253 order, comparator, compound_literal_array \
254) \
255 CCC_private_flat_priority_queue_with_storage( \
256 order, comparator, compound_literal_array \
257 )
258
319 CCC_Flat_priority_queue *destination,
320 CCC_Flat_priority_queue const *source,
321 CCC_Allocator const *allocator
322);
323
343 CCC_Flat_priority_queue *priority_queue,
344 size_t to_add,
345 CCC_Allocator const *allocator
346);
347
360#define CCC_flat_priority_queue_emplace( \
361 priority_queue_pointer, allocator_pointer, type_compound_literal... \
362) \
363 CCC_private_flat_priority_queue_emplace( \
364 priority_queue_pointer, allocator_pointer, type_compound_literal \
365 )
366
399 CCC_Flat_priority_queue *priority_queue,
400 CCC_Flat_buffer const *buffer,
401 void *temp,
402 CCC_Allocator const *allocator
403);
404
426 void *temp,
429);
430
445 CCC_Flat_priority_queue *priority_queue,
446 void const *type,
447 void *temp,
448 CCC_Allocator const *allocator
449);
450
461 CCC_Flat_priority_queue *priority_queue, void *temp
462);
463
479 CCC_Flat_priority_queue *priority_queue, void *type, void *temp
480);
481
499 CCC_Flat_priority_queue const *priority_queue,
500 void *type,
501 void *temp,
502 CCC_Modifier const *modifier
503);
504
529#define CCC_flat_priority_queue_update_with( \
530 priority_queue_pointer, \
531 closure_parameter, \
532 update_closure_over_closure_parameter... \
533) \
534 CCC_private_flat_priority_queue_update_with( \
535 priority_queue_pointer, \
536 closure_parameter, \
537 update_closure_over_closure_parameter \
538 )
539
557 CCC_Flat_priority_queue const *priority_queue,
558 void *type,
559 void *temp,
560 CCC_Modifier const *modifier
561);
562
585#define CCC_flat_priority_queue_increase_with( \
586 priority_queue_pointer, \
587 closure_parameter, \
588 increase_closure_over_closure_parameter... \
589) \
590 CCC_private_flat_priority_queue_increase_with( \
591 priority_queue_pointer, \
592 closure_parameter, \
593 increase_closure_over_closure_parameter \
594 )
595
613 CCC_Flat_priority_queue const *priority_queue,
614 void *type,
615 void *temp,
616 CCC_Modifier const *modifier
617);
618
640#define CCC_flat_priority_queue_decrease_with( \
641 priority_queue_pointer, \
642 closure_parameter, \
643 decrease_closure_over_closure_parameter... \
644) \
645 CCC_private_flat_priority_queue_decrease_with( \
646 priority_queue_pointer, \
647 closure_parameter, \
648 decrease_closure_over_closure_parameter \
649 )
650
672 CCC_Flat_priority_queue *priority_queue, CCC_Destructor const *destructor
673);
674
691 CCC_Flat_priority_queue *priority_queue,
692 CCC_Destructor const *destructor,
693 CCC_Allocator const *allocator
694);
695
707[[nodiscard]] void *
709
714[[nodiscard]] CCC_Tribool
716
721[[nodiscard]] CCC_Count
723
729[[nodiscard]] CCC_Count
731
741[[nodiscard]] void *
743
748[[nodiscard]] CCC_Tribool
750
754[[nodiscard]] CCC_Order
756
761#ifdef FLAT_PRIORITY_QUEUE_USING_NAMESPACE_CCC
762/* NOLINTBEGIN(readability-identifier-naming) */
763typedef CCC_Flat_priority_queue Flat_priority_queue;
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)
822/* NOLINTEND(readability-identifier-naming) */
823#endif /* FLAT_PRIORITY_QUEUE_USING_NAMESPACE_CCC */
824
825#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 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