Ruby  3.4.0dev (2024-11-22 revision 0989400a925cd201defdca9eb28eb87200b30785)
pm_list.h
Go to the documentation of this file.
1 
6 #ifndef PRISM_LIST_H
7 #define PRISM_LIST_H
8 
9 #include "prism/defines.h"
10 
11 #include <stdbool.h>
12 #include <stddef.h>
13 #include <stdint.h>
14 #include <stdlib.h>
15 
46 typedef struct pm_list_node {
48  struct pm_list_node *next;
50 
55 typedef struct {
57  size_t size;
58 
61 
64 } pm_list_t;
65 
73 
81 
88 void pm_list_append(pm_list_t *list, pm_list_node_t *node);
89 
96 
97 #endif
PRISM_EXPORTED_FUNCTION bool pm_list_empty_p(pm_list_t *list)
Returns true if the given list is empty.
Definition: pm_list.c:7
struct pm_list_node pm_list_node_t
This struct represents an abstract linked list that provides common functionality.
PRISM_EXPORTED_FUNCTION size_t pm_list_size(pm_list_t *list)
Returns the size of the list.
Definition: pm_list.c:15
void pm_list_append(pm_list_t *list, pm_list_node_t *node)
Append a node to the given list.
Definition: pm_list.c:23
PRISM_EXPORTED_FUNCTION void pm_list_free(pm_list_t *list)
Deallocate the internal state of the given list.
Definition: pm_list.c:38
Macro definitions used throughout the prism library.
#define PRISM_EXPORTED_FUNCTION
By default, we compile with -fvisibility=hidden.
Definition: defines.h:50
C99 shim for <stdbool.h>
This struct represents an abstract linked list that provides common functionality.
Definition: pm_list.h:46
struct pm_list_node * next
A pointer to the next node in the list.
Definition: pm_list.h:48
This represents the overall linked list.
Definition: pm_list.h:55
pm_list_node_t * tail
A pointer to the tail of the list.
Definition: pm_list.h:63
pm_list_node_t * head
A pointer to the head of the list.
Definition: pm_list.h:60
size_t size
The size of the list.
Definition: pm_list.h:57