Ruby: pm_list_node Struct Reference

Ruby 3.4.4p34 (2025-05-14 revision a38531fd3f617bf734ef7d6c595325f69985ea1d)

Data Fields
pm_list_node Struct Reference

This struct represents an abstract linked list that provides common functionality. More...

`#include <pm_list.h>`

## Data Fields
struct pm_list_node * | next
| A pointer to the next node in the list.

## Detailed Description

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:

typedef struct {
pm_list_node_t node;
int value;
} pm_int_node_t;
pm_list_t list = { 0 };
pm_int_node_t *node = xmalloc(sizeof(pm_int_node_t));
node->value = 5;
pm_list_append(&list, &node->node);
xmalloc
#define xmalloc
Old name of ruby_xmalloc.
Definition xmalloc.h:53
pm_list_node_t
struct pm_list_node pm_list_node_t
This struct represents an abstract linked list that provides common functionality.
pm_list_append
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
pm_list_t
This represents the overall linked list.
Definition pm_list.h:55

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.

Definition at line 46 of file pm_list.h.

## Field Documentation

## ◆ next

struct pm_list_node* pm_list_node::next

A pointer to the next node in the list.

Definition at line 48 of file pm_list.h.

Referenced by pm_diagnostic_list_free(), pm_list_append(), pm_list_free(), and pm_serialize_comment_list().

The documentation for this struct was generated from the following file:

- prism/util/pm_list.h