Lely core libraries  2.2.5
sllist.h File Reference

This header file is part of the utilities library; it contains the singly-linked list declarations. More...

#include <lely/features.h>
#include <stddef.h>
Include dependency graph for sllist.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  slnode
 A node in a singly-linked list. More...
 
struct  sllist
 A singly-linked list. More...
 

Macros

#define SLNODE_INIT
 The static initializer for slnode.
 
#define slnode_foreach(first, node)   slnode_foreach_(__LINE__, first, node)
 Iterates in order over each node in a singly-linked list. More...
 
#define sllist_foreach(list, node)   slnode_foreach (sllist_first(list), node)
 Iterates in order over each node in a singly-linked list. More...
 

Functions

void slnode_init (struct slnode *node)
 Initializes a node in a singly-linked list.
 
void sllist_init (struct sllist *list)
 Initializes a singly-linked list.
 
int sllist_empty (const struct sllist *list)
 Returns 1 if the singly-linked list is empty, and 0 if not. More...
 
size_t sllist_size (const struct sllist *list)
 Returns the size (in number of nodes) of a singly-linked list. More...
 
void sllist_push_front (struct sllist *list, struct slnode *node)
 Pushes a node to the front of a singly-linked list. More...
 
void sllist_push_back (struct sllist *list, struct slnode *node)
 Pushes a node to the back of a singly-linked list. More...
 
struct slnodesllist_pop_front (struct sllist *list)
 Pops a node from the front of a singly-linked list. More...
 
struct slnodesllist_pop_back (struct sllist *list)
 Pops a node from the back of a singly-linked list. More...
 
struct slnodesllist_remove (struct sllist *list, struct slnode *node)
 Removes a node from a singly-linked list. More...
 
struct sllistsllist_append (struct sllist *dst, struct sllist *src)
 Appends the singly-linked list at src to the one at dst. More...
 
struct slnodesllist_first (const struct sllist *list)
 Returns a pointer to the first node in a singly-linked list. More...
 
struct slnodesllist_last (const struct sllist *list)
 Returns a pointer to the last node in a singly-linked list. More...
 

Detailed Description

This header file is part of the utilities library; it contains the singly-linked list declarations.

Author
J. S. Seldenthuis jseld.nosp@m.enth.nosp@m.uis@l.nosp@m.ely..nosp@m.com

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Definition in file sllist.h.

Macro Definition Documentation

◆ slnode_foreach

#define slnode_foreach (   first,
  node 
)    slnode_foreach_(__LINE__, first, node)

Iterates in order over each node in a singly-linked list.

It is safe to remove the current node during the iteration.

Parameters
firsta pointer to the first node in the list.
nodethe name of the pointer to the nodes. This variable is declared in the scope of the loop.

Definition at line 76 of file sllist.h.

◆ sllist_foreach

#define sllist_foreach (   list,
  node 
)    slnode_foreach (sllist_first(list), node)

Iterates in order over each node in a singly-linked list.

It is safe to remove the current node during the iteration.

Parameters
lista pointer to a singly-linked list.
nodethe name of the pointer to the nodes. This variable is declared in the scope of the loop.

Definition at line 175 of file sllist.h.

Function Documentation

◆ sllist_empty()

int sllist_empty ( const struct sllist list)
inline

Returns 1 if the singly-linked list is empty, and 0 if not.

This is an O(1) operation.

Definition at line 190 of file sllist.h.

◆ sllist_size()

size_t sllist_size ( const struct sllist list)
inline

Returns the size (in number of nodes) of a singly-linked list.

This is an O(n) operation.

Definition at line 196 of file sllist.h.

◆ sllist_push_front()

void sllist_push_front ( struct sllist list,
struct slnode node 
)
inline

Pushes a node to the front of a singly-linked list.

This is an O(1) operation.

See also
sllist_pop_front()

Definition at line 205 of file sllist.h.

◆ sllist_push_back()

void sllist_push_back ( struct sllist list,
struct slnode node 
)
inline

Pushes a node to the back of a singly-linked list.

This is an O(1) operation.

See also
sllist_pop_back()

Definition at line 213 of file sllist.h.

◆ sllist_pop_front()

struct slnode * sllist_pop_front ( struct sllist list)

Pops a node from the front of a singly-linked list.

This is an O(1) operation.

See also
sllist_push_front()

Definition at line 221 of file sllist.h.

◆ sllist_pop_back()

struct slnode* sllist_pop_back ( struct sllist list)

Pops a node from the back of a singly-linked list.

This is an O(n) operation.

See also
sllist_push_back()

Definition at line 32 of file sllist.c.

◆ sllist_remove()

struct slnode* sllist_remove ( struct sllist list,
struct slnode node 
)

Removes a node from a singly-linked list.

This is an O(n) operation.

Returns
node on success, or NULL if the node was not part of the list.

Definition at line 46 of file sllist.c.

◆ sllist_append()

struct sllist * sllist_append ( struct sllist dst,
struct sllist src 
)

Appends the singly-linked list at src to the one at dst.

After the operation, the list at src is empty.

Returns
dst.

Definition at line 233 of file sllist.h.

◆ sllist_first()

struct slnode * sllist_first ( const struct sllist list)

Returns a pointer to the first node in a singly-linked list.

This is an O(1) operation.

See also
sllist_last()

Definition at line 244 of file sllist.h.

◆ sllist_last()

struct slnode* sllist_last ( const struct sllist list)

Returns a pointer to the last node in a singly-linked list.

This is an O(1) operation.

See also
sllist_first()

Definition at line 64 of file sllist.c.