Quash Shell  0.1
A simple yet powerfull shell program
Classes | Typedefs | Functions
An implementation of a double ended queue

Classes

struct  Example
 A data structure generated by IMPLEMENT_DEQUE_STRUCT() to store the state of a deque. More...
 

Typedefs

typedef char Type
 An example type used for example purposes only.
 
typedef struct Example Example
 

Functions

Example new_Example (size_t)
 Create a new, fully initialized deque structure. More...
 
Example new_destructable_Example (size_t, void(*)(Type))
 Create a new, fully initialized deque structure with a destructor that is applied to every element when the destroy_Example() function is called. More...
 
void destroy_Example (Example *)
 Destroy the deque structure freeing memory if necessary. More...
 
void empty_Example (Example *)
 Quickly empties the deque structure. More...
 
bool is_empty_Example (Example *)
 Checks if the deque is empty. More...
 
size_t length_Example (Example *)
 Query the number of elements in the deque. More...
 
Typeas_array_Example (Example *, size_t *)
 Extract an array based off the deque. More...
 
void apply_Example (Example *, void(*)(Type))
 Calls the function func on every element in the deque. More...
 
void push_front_Example (Example *, Type)
 Insert an element to the front of the deque. More...
 
void push_back_Example (Example *, Type)
 Insert an element to the back of the deque. More...
 
Type pop_front_Example (Example *)
 Remove an element from the front of the deque. More...
 
Type pop_back_Example (Example *)
 Remove an element from the back of the deque. More...
 
Type peek_front_Example (Example *)
 Get a copy of the element at the front of the deque. More...
 
Type peek_back_Example (Example *)
 Remove an element from the back of the deque. More...
 
void update_front_Example (Example *, Type)
 Change the element at the front of the deque to be a copy of element. More...
 
void update_back_Example (Example *, Type)
 Change the element at the front of the deque to be a copy of element. More...
 

Detailed Description

Function Documentation

◆ apply_Example()

void apply_Example ( Example deq,
void(*)(Type func 
)

Calls the function func on every element in the deque.

Note
We will have a lab over function pointers later in the semester. If this doesn't make sense now then skip it or come to your TA for assistance if you really want to use it.
Parameters
deqA pointer to the deque to apply the function func to
funcA pointer to a function that takes an element of type
See also
Example, Type

◆ as_array_Example()

Type * as_array_Example ( Example deq,
size_t *  len 
)

Extract an array based off the deque.

Note
Calling this function on a deque will invalidate the deque. This means no further deque functions can be called on the deq until it is reinitialized with new_Example(). If this function was created with the IMPLEMENT_DEQUE() macro, then the destructor is never called and you will be responsible for freeing the memory of the array. If this function was created with the IMPLEMENT_DEQUE_MEMORY_POOL() then the array will be freed automatically by the call to destroy_memory_pool().
Parameters
deqin A pointer to the deque to extract an array from
[out]lenA pointer to an size_t value. This value will be set to the current length of the deque returned from the length_Example() function. If knowing the length of the array is unnecessary then NULL may be passed as this parameter.
Returns
An array containing the data from the deque
See also
Example, Type

◆ destroy_Example()

void destroy_Example ( Example deq)

Destroy the deque structure freeing memory if necessary.

Parameters
deqA pointer to the deque to destory
See also
Example

◆ empty_Example()

void empty_Example ( Example deq)

Quickly empties the deque structure.

Parameters
deqA pointer to the deque to empty
See also
Example

◆ is_empty_Example()

bool is_empty_Example ( Example deq)

Checks if the deque is empty.

Parameters
deqA pointer to the deque to check if empty
Returns
Returns true if empty and false if not empty
See also
Example

◆ length_Example()

size_t length_Example ( Example deq)

Query the number of elements in the deque.

Parameters
deqA pointer to the deque to calculate the length of
Returns
The number of elements in the deque
See also
Example

◆ new_destructable_Example()

Example new_destructable_Example ( size_t  init_cap,
void(*)(Type destructor 
)

Create a new, fully initialized deque structure with a destructor that is applied to every element when the destroy_Example() function is called.

Specifying the destructor is useful to not have to manually iterate over the deque destroying any malloc'd memory in each element. The destructor function should not free any memory residing in memory pools.

Parameters
init_capInitial capacity of the deque
destructorA function that is run on each element in the deque when destroy_Example() is called
Returns
A copy of the fully initialized struct
See also
Example

◆ new_Example()

Example new_Example ( size_t  init_cap)

Create a new, fully initialized deque structure.

Parameters
init_capInitial capacity of the deque
Returns
A copy of the fully initialized struct
See also
Example

◆ peek_back_Example()

Type peek_back_Example ( Example deq)

Remove an element from the back of the deque.

Parameters
deqA pointer to the deque to view the first element from
Returns
A copy of the element removed from the back of the queue
See also
Example, Type

◆ peek_front_Example()

Type peek_front_Example ( Example deq)

Get a copy of the element at the front of the deque.

Parameters
deqA pointer to the deque to view the first element from
Returns
A copy of the element at the front of the deque
See also
Example, Type

◆ pop_back_Example()

Type pop_back_Example ( Example deq)

Remove an element from the back of the deque.

Parameters
deqA pointer to the deque to remove an element from
Returns
A copy of the element removed from the back of the deque
See also
Example, Type

◆ pop_front_Example()

Type pop_front_Example ( Example deq)

Remove an element from the front of the deque.

Parameters
deqA pointer to the deque to remove an element from
Returns
A copy of the element removed from the front of the deque
See also
Example, Type

◆ push_back_Example()

void push_back_Example ( Example deq,
Type  element 
)

Insert an element to the back of the deque.

Parameters
deqA pointer to the deque to insert the element
elementThe element to copy into the deque
See also
Example, Type

◆ push_front_Example()

void push_front_Example ( Example deq,
Type  element 
)

Insert an element to the front of the deque.

Parameters
deqA pointer to the deque to insert the element
elementThe element to copy into the deque
See also
Example, Type

◆ update_back_Example()

void update_back_Example ( Example deq,
Type  element 
)

Change the element at the front of the deque to be a copy of element.

Parameters
deqA pointer to the deque to update
elementThe element to copy into the current last element in the deque
See also
Example, Type

◆ update_front_Example()

void update_front_Example ( Example deq,
Type  element 
)

Change the element at the front of the deque to be a copy of element.

Parameters
deqA pointer to the deque to update
elementThe element to update the first element to
See also
Example, Type