C Container Collection (CCC)
Loading...
Searching...
No Matches
private_flat_double_ended_queue.h File Reference

The Private Flat Double Ended Queue Types and Interface. More...

#include "../flat_buffer.h"
#include "../types.h"
Include dependency graph for private_flat_double_ended_queue.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Detailed Description

The Private Flat Double Ended Queue Types and Interface.

The flat double ended queue is unique in that it is the only container that is intended for continued use upon capacity exhaustion. Any time the Flat double ended queue capacity is full and a push occurs without an allocator, it will behave as a ring buffer. This has interesting use case implications.

Data Structures

struct  CCC_Flat_double_ended_queue
 

Macros

#define CCC_private_flat_double_ended_queue_default(private_type_name)
 
#define CCC_private_flat_double_ended_queue_for( private_type_name, private_capacity, private_count, private_data_pointer...)
 
#define CCC_private_flat_double_ended_queue_from( private_allocator, private_optional_capacity, private_compound_literal_array...)
 
#define CCC_private_flat_double_ended_queue_with_capacity( private_type_name, private_allocator, private_capacity)
 
#define CCC_private_flat_double_ended_queue_with_storage( private_count, private_compound_literal...)
 
#define CCC_private_flat_double_ended_queue_emplace_back( flat_double_ended_queue_pointer, private_allocator_pointer, value...)
 
#define CCC_private_flat_double_ended_queue_emplace_front( flat_double_ended_queue_pointer, private_allocator_pointer, value...)
 

Functions

void * CCC_private_flat_double_ended_queue_allocate_front (struct CCC_Flat_double_ended_queue *, CCC_Allocator const *)
 
void * CCC_private_flat_double_ended_queue_allocate_back (struct CCC_Flat_double_ended_queue *, CCC_Allocator const *)
 

Macro Definition Documentation

◆ CCC_private_flat_double_ended_queue_default

#define CCC_private_flat_double_ended_queue_default (   private_type_name)
Value:
.buffer = CCC_flat_buffer_default(private_type_name), .front = 0, \
}
#define CCC_flat_buffer_default(type_name)
Initialize a contiguous empty buffer of a type.
Definition: flat_buffer.h:93
Definition: private_flat_double_ended_queue.h:43

◆ CCC_private_flat_double_ended_queue_emplace_back

#define CCC_private_flat_double_ended_queue_emplace_back (   flat_double_ended_queue_pointer,
  private_allocator_pointer,
  value... 
)
Value:
(__extension__({ \
private_flat_double_ended_queue_pointer \
= (flat_double_ended_queue_pointer); \
void *private_flat_double_ended_queue_emplace_ret = NULL; \
if (private_flat_double_ended_queue_pointer) { \
private_flat_double_ended_queue_emplace_ret \
private_flat_double_ended_queue_pointer, \
private_allocator_pointer \
); \
if (private_flat_double_ended_queue_emplace_ret) { \
*((typeof(value) *) \
private_flat_double_ended_queue_emplace_ret) = value; \
} \
} \
private_flat_double_ended_queue_emplace_ret; \
}))
void * CCC_private_flat_double_ended_queue_allocate_back(struct CCC_Flat_double_ended_queue *, CCC_Allocator const *)

◆ CCC_private_flat_double_ended_queue_emplace_front

#define CCC_private_flat_double_ended_queue_emplace_front (   flat_double_ended_queue_pointer,
  private_allocator_pointer,
  value... 
)
Value:
(__extension__({ \
private_flat_double_ended_queue_pointer \
= (flat_double_ended_queue_pointer); \
void *private_flat_double_ended_queue_emplace_ret = NULL; \
if (private_flat_double_ended_queue_pointer) { \
private_flat_double_ended_queue_emplace_ret \
private_flat_double_ended_queue_pointer, \
private_allocator_pointer \
); \
if (private_flat_double_ended_queue_emplace_ret) { \
*((typeof(value) *) \
private_flat_double_ended_queue_emplace_ret) = value; \
} \
} \
private_flat_double_ended_queue_emplace_ret; \
}))
void * CCC_private_flat_double_ended_queue_allocate_front(struct CCC_Flat_double_ended_queue *, CCC_Allocator const *)

◆ CCC_private_flat_double_ended_queue_for

#define CCC_private_flat_double_ended_queue_for (   private_type_name,
  private_capacity,
  private_count,
  private_data_pointer... 
)
Value:
.buffer = CCC_flat_buffer_for( \
private_type_name, \
private_capacity, \
private_count, \
private_data_pointer \
), \
.front = 0, \
}
#define CCC_flat_buffer_for(type_name, capacity, count, data_pointer...)
Initialize a contiguous Flat_buffer of user a specified type, capacity, and optional starting size.
Definition: flat_buffer.h:126

◆ CCC_private_flat_double_ended_queue_from

#define CCC_private_flat_double_ended_queue_from (   private_allocator,
  private_optional_capacity,
  private_compound_literal_array... 
)
Value:
(struct { CCC_Flat_double_ended_queue private; }){(__extension__({ \
struct CCC_Flat_double_ended_queue private_flat_double_ended_queue = { \
private_allocator, \
private_optional_capacity, \
private_compound_literal_array \
), \
.front = 0, \
}; \
private_flat_double_ended_queue; \
}))}.private
#define CCC_flat_buffer_from( allocator, optional_capacity, compound_literal_array...)
Initialize a Flat_buffer from a compound literal array initializer.
Definition: flat_buffer.h:183
CCC_Flat_buffer buffer
Definition: private_flat_double_ended_queue.h:45

Takes a compound literal array to initialize the buffer.

◆ CCC_private_flat_double_ended_queue_with_capacity

#define CCC_private_flat_double_ended_queue_with_capacity (   private_type_name,
  private_allocator,
  private_capacity 
)
Value:
(struct { CCC_Flat_double_ended_queue private; }){(__extension__({ \
struct CCC_Flat_double_ended_queue private_flat_double_ended_queue = { \
private_type_name, private_allocator, private_capacity \
), \
.front = 0, \
}; \
private_flat_double_ended_queue; \
}))}.private
#define CCC_flat_buffer_with_capacity(type_name, allocator, capacity)
Initialize a Flat_buffer with a capacity.
Definition: flat_buffer.h:218

◆ CCC_private_flat_double_ended_queue_with_storage

#define CCC_private_flat_double_ended_queue_with_storage (   private_count,
  private_compound_literal... 
)
Value:
private_count, private_compound_literal \
), \
.front = 0, \
}
#define CCC_flat_buffer_with_storage(count, compound_literal_array...)
Initialize a contiguous Flat_buffer of user a specified type of fixed capacity with no allocation per...
Definition: flat_buffer.h:240

Function Documentation

◆ CCC_private_flat_double_ended_queue_allocate_back()

void * CCC_private_flat_double_ended_queue_allocate_back ( struct CCC_Flat_double_ended_queue ,
CCC_Allocator const *   
)

◆ CCC_private_flat_double_ended_queue_allocate_front()

void * CCC_private_flat_double_ended_queue_allocate_front ( struct CCC_Flat_double_ended_queue ,
CCC_Allocator const *   
)