|
C Container Collection (CCC)
|
The Private Priority Queue Types and Interface. More...
#include "../../types.h"

Go to the source code of this file.
The Private Priority Queue Types and Interface.
The intrusive priority queue is relegated to the specialized directory because it is a niche data structure with interesting space and runtime characteristics. It is not very space efficient as an intruder. However, in exchange we get O(1) push and decrease/increase operations when the decreasing on a min heap and increasing on a max heap. This costs us in later slower pop operations, resulting in an amortized little o(log(N)) runtime for decrease/increase, but the operation itself will always take O(1) time. This can have interesting implications for realtime systems with strict runtime requirements.
Data Structures | |
| struct | CCC_Priority_queue_node |
| struct | CCC_Priority_queue |
Macros | |
| #define | CCC_private_priority_queue_for( private_struct_name, private_type_intruder_field, private_priority_queue_order, private_comparator...) |
| #define | CCC_private_priority_queue_default( private_struct_name, private_type_intruder_field, private_priority_queue_order, private_comparator) |
| #define | CCC_private_priority_queue_from( private_type_intruder_field, private_priority_queue_order, private_comparator, private_allocator, private_destructor, private_compound_literal_array...) |
| #define | CCC_private_priority_queue_emplace( priority_queue_pointer, private_allocator_pointer, type_compound_literal...) |
| #define | CCC_private_priority_queue_update_with( priority_queue_pointer, private_closure_parameter, private_update_closure_over_closure_parameter...) |
| #define | CCC_private_priority_queue_increase_with( priority_queue_pointer, private_closure_parameter, private_increase_closure_over_closure_parameter...) |
| #define | CCC_private_priority_queue_decrease_with( priority_queue_pointer, private_closure_parameter, private_decrease_closure_over_closure_parameter...) |
Functions | |
| void | CCC_private_priority_queue_push (struct CCC_Priority_queue *, struct CCC_Priority_queue_node *) |
| struct CCC_Priority_queue_node * | CCC_private_priority_queue_node_in (struct CCC_Priority_queue const *, void const *) |
| void | CCC_private_priority_queue_update_fixup (struct CCC_Priority_queue *, struct CCC_Priority_queue_node *) |
| void | CCC_private_priority_queue_increase_fixup (struct CCC_Priority_queue *, struct CCC_Priority_queue_node *) |
| void | CCC_private_priority_queue_decrease_fixup (struct CCC_Priority_queue *, struct CCC_Priority_queue_node *) |
| #define CCC_private_priority_queue_decrease_with | ( | priority_queue_pointer, | |
| private_closure_parameter, | |||
| private_decrease_closure_over_closure_parameter... | |||
| ) |
| #define CCC_private_priority_queue_default | ( | private_struct_name, | |
| private_type_intruder_field, | |||
| private_priority_queue_order, | |||
| private_comparator | |||
| ) |
| #define CCC_private_priority_queue_emplace | ( | priority_queue_pointer, | |
| private_allocator_pointer, | |||
| type_compound_literal... | |||
| ) |
| #define CCC_private_priority_queue_for | ( | private_struct_name, | |
| private_type_intruder_field, | |||
| private_priority_queue_order, | |||
| private_comparator... | |||
| ) |
| #define CCC_private_priority_queue_from | ( | private_type_intruder_field, | |
| private_priority_queue_order, | |||
| private_comparator, | |||
| private_allocator, | |||
| private_destructor, | |||
| private_compound_literal_array... | |||
| ) |
| #define CCC_private_priority_queue_increase_with | ( | priority_queue_pointer, | |
| private_closure_parameter, | |||
| private_increase_closure_over_closure_parameter... | |||
| ) |
| #define CCC_private_priority_queue_update_with | ( | priority_queue_pointer, | |
| private_closure_parameter, | |||
| private_update_closure_over_closure_parameter... | |||
| ) |
| void CCC_private_priority_queue_decrease_fixup | ( | struct CCC_Priority_queue * | , |
| struct CCC_Priority_queue_node * | |||
| ) |
| void CCC_private_priority_queue_increase_fixup | ( | struct CCC_Priority_queue * | , |
| struct CCC_Priority_queue_node * | |||
| ) |
| struct CCC_Priority_queue_node * CCC_private_priority_queue_node_in | ( | struct CCC_Priority_queue const * | , |
| void const * | |||
| ) |
| void CCC_private_priority_queue_push | ( | struct CCC_Priority_queue * | , |
| struct CCC_Priority_queue_node * | |||
| ) |
| void CCC_private_priority_queue_update_fixup | ( | struct CCC_Priority_queue * | , |
| struct CCC_Priority_queue_node * | |||
| ) |