Prism Ruby parser
|
An abstract linked list. More...
#include "prism/defines.h"
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
Go to the source code of this file.
Data Structures | |
struct | pm_list_node |
This struct represents an abstract linked list that provides common functionality. More... | |
struct | pm_list_t |
This represents the overall linked list. More... | |
Typedefs | |
typedef struct pm_list_node | pm_list_node_t |
This struct represents an abstract linked list that provides common functionality. | |
Functions | |
PRISM_EXPORTED_FUNCTION bool | pm_list_empty_p (pm_list_t *list) |
Returns true if the given list is empty. | |
PRISM_EXPORTED_FUNCTION size_t | pm_list_size (pm_list_t *list) |
Returns the size of the list. | |
void | pm_list_append (pm_list_t *list, pm_list_node_t *node) |
Append a node to the given list. | |
PRISM_EXPORTED_FUNCTION void | pm_list_free (pm_list_t *list) |
Deallocate the internal state of the given list. | |
An abstract linked list.
typedef struct pm_list_node pm_list_node_t |
This struct represents an abstract linked list that provides common functionality.
It is meant to be used any time a linked list is necessary to store data.
The linked list itself operates off a set of pointers. Because the pointers are not necessarily sequential, they can be of any size. We use this fact to allow the consumer of this linked list to extend the node struct to include any data they want. This is done by using the pm_list_node_t as the first member of the struct.
For example, if we want to store a list of integers, we can do the following:
The pm_list_t struct is used to represent the overall linked list. It contains a pointer to the head and tail of the list. This allows for easy iteration and appending of new nodes.
PRISM_EXPORTED_FUNCTION bool pm_list_empty_p | ( | pm_list_t * | list | ) |
Returns true if the given list is empty.
list | The list to check. |
PRISM_EXPORTED_FUNCTION size_t pm_list_size | ( | pm_list_t * | list | ) |
Returns the size of the list.
list | The list to check. |
void pm_list_append | ( | pm_list_t * | list, |
pm_list_node_t * | node | ||
) |
Append a node to the given list.
list | The list to append to. |
node | The node to append. |
PRISM_EXPORTED_FUNCTION void pm_list_free | ( | pm_list_t * | list | ) |
Deallocate the internal state of the given list.
list | The list to free. |