MPSolve 3.2.1
Loading...
Searching...
No Matches
list.h
Go to the documentation of this file.
1/*
2 * This file is part of MPSolve 3.2.1
3 *
4 * Copyright (C) 2001-2020, Dipartimento di Matematica "L. Tonelli", Pisa.
5 * License: http://www.gnu.org/licenses/gpl.html GPL version 3 or higher
6 *
7 * Authors:
8 * Leonardo Robol <leonardo.robol@unipi.it>
9 */
10
20#ifndef MPS_LIST_H_
21#define MPS_LIST_H_
22
23MPS_BEGIN_DECLS
24
31 void * value;
32
40
48};
49
50struct mps_list {
55
60
64 int size;
65};
66
67mps_list_element * mps_list_element_new (void * value);
68void mps_list_element_free (mps_list_element * el);
69mps_list_element * mps_list_element_next (mps_list_element * el);
70mps_list_element * mps_list_element_previous (mps_list_element * el);
71void * mps_list_element_value (mps_list_element * el);
72
73mps_list * mps_list_new (void);
74void mps_list_free (mps_list * list);
75int mps_list_size (mps_list * list);
76void mps_list_append (mps_list * list, mps_list_element * el);
77mps_list_element * mps_list_first (mps_list * list);
78mps_list_element * mps_list_last (mps_list * list);
79
84#define MPS_LIST_FOREACH(type, local_var, list) \
85 for (type *__mps_local_iterator = (type*)mps_list_first (list), \
86 *local_var = (type*)mps_list_element_value ((mps_list_element*)__mps_local_iterator); \
87 __mps_local_iterator != NULL; \
88 __mps_local_iterator = (type*)mps_list_element_next ((mps_list_element*)__mps_local_iterator), \
89 local_var = (type*)mps_list_element_value ((mps_list_element*)__mps_local_iterator))
90
91MPS_END_DECLS
92
93#endif /* MPS_LIST_H_ */
94
void mps_list_free(mps_list *list)
Free a list and all the elements inside it.
Definition: list.c:31
mps_list * mps_list_new(void)
Create a new empty list.
Definition: list.c:17
int mps_list_size(mps_list *list)
Return the number of elements in a list.
Definition: list.c:47
Definition: list.h:25
void * value
The value pointed by this list element. Note that holding this pointer in the first field of the stru...
Definition: list.h:31
struct mps_list_element * previous
The previous element in the list.
Definition: list.h:47
struct mps_list_element * next
The next element in the list.
Definition: list.h:39
Definition: list.h:50
mps_list_element * first
A pointer to the first element of the list.
Definition: list.h:54
int size
The number of element of the list.
Definition: list.h:64
mps_list_element * last
A pointer to the last element of the list.
Definition: list.h:59