libcdio 2.1.1
ds.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2005, 2008, 2017 Rocky Bernstein <rocky@gnu.org>
3 Copyright (C) 2000, 2004 Herbert Valerio Riedel <hvr@gnu.org>
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
26
27#ifndef CDIO_DS_H_
28#define CDIO_DS_H_
29
30#include <cdio/types.h>
31
33typedef struct _CdioList CdioList_t;
34typedef struct _CdioListNode CdioListNode_t;
35
36typedef int (*_cdio_list_cmp_func_t) (void *p_data1, void *p_data2);
37typedef int (*_cdio_list_iterfunc_t) (void *p_data, void *p_user_data);
38
39#ifdef __cplusplus
40extern "C" {
41#endif /* __cplusplus */
42
45
46void _cdio_list_free (CdioList_t *p_list, int free_data, CdioDataFree_t free_fn);
47
48unsigned _cdio_list_length (const CdioList_t *list);
49
50void _cdio_list_prepend (CdioList_t *p_list, void *p_data);
51
52void _cdio_list_append (CdioList_t *p_list, void *p_data);
53
55 void *p_user_data);
56
58 _cdio_list_iterfunc_t cmp_func,
59 void *p_user_data);
60
61#define _CDIO_LIST_FOREACH(node, list) \
62 for (node = _cdio_list_begin (list); node; node = _cdio_list_node_next (node))
63
67
69
71
72 void _cdio_list_node_free (CdioListNode_t *p_node, int i_free_data,
73 CdioDataFree_t free_fn);
74
76
77#ifdef __cplusplus
78}
79#endif /* __cplusplus */
80
81#endif /* CDIO_DS_H_ */
82
83/*
84 * Local variables:
85 * c-file-style: "gnu"
86 * tab-width: 8
87 * indent-tabs-mode: nil
88 * End:
89 */
int(* _cdio_list_cmp_func_t)(void *p_data1, void *p_data2)
Definition ds.h:36
CdioListNode_t * _cdio_list_begin(const CdioList_t *p_list)
void _cdio_list_foreach(CdioList_t *p_list, _cdio_list_iterfunc_t func, void *p_user_data)
void * _cdio_list_node_data(CdioListNode_t *p_node)
int(* _cdio_list_iterfunc_t)(void *p_data, void *p_user_data)
Definition ds.h:37
CdioList_t * _cdio_list_new(void)
CdioListNode_t * _cdio_list_find(CdioList_t *p_list, _cdio_list_iterfunc_t cmp_func, void *p_user_data)
unsigned _cdio_list_length(const CdioList_t *list)
void _cdio_list_append(CdioList_t *p_list, void *p_data)
CdioListNode_t * _cdio_list_end(CdioList_t *p_list)
struct _CdioListNode CdioListNode_t
Definition ds.h:34
void _cdio_list_prepend(CdioList_t *p_list, void *p_data)
CdioListNode_t * _cdio_list_node_next(CdioListNode_t *p_node)
void _cdio_list_free(CdioList_t *p_list, int free_data, CdioDataFree_t free_fn)
struct _CdioList CdioList_t
Definition ds.h:33
void _cdio_list_node_free(CdioListNode_t *p_node, int i_free_data, CdioDataFree_t free_fn)
Common type definitions used pervasively in libcdio.
void(* CdioDataFree_t)(void *ptr)
Definition types.h:324