libcdio  0.93
ds.h
Go to the documentation of this file.
1 /*
2  $Id: ds_8h_source.html,v 1.4 2014/09/29 15:25:48 rocky Exp $
3 
4  Copyright (C) 2005, 2008 Rocky Bernstein <rocky@gnu.org>
5  Copyright (C) 2000, 2004 Herbert Valerio Riedel <hvr@gnu.org>
6 
7  This program is free software: you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation, either version 3 of the License, or
10  (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20 
28 
29 #ifndef CDIO_DS_H_
30 #define CDIO_DS_H_
31 
32 #include <cdio/types.h>
33 
35 typedef struct _CdioList CdioList_t;
36 typedef struct _CdioListNode CdioListNode_t;
37 
38 typedef int (*_cdio_list_cmp_func_t) (void *p_data1, void *p_data2);
39 typedef int (*_cdio_list_iterfunc_t) (void *p_data, void *p_user_data);
40 
43 #define CdioList CdioList_t
44 #define CdioListNode CdioListNode_t
45 #define _cdio_list_cmp_func _cdio_list_cmp_func_t
46 #define _cdio_list_iterfunc _cdio_list_iterfunc_t
47 
48 #ifdef __cplusplus
49 extern "C" {
50 #endif /* __cplusplus */
51 
54 
55 void _cdio_list_free (CdioList_t *p_list, int free_data);
56 
57 unsigned _cdio_list_length (const CdioList_t *list);
58 
59 void _cdio_list_prepend (CdioList_t *p_list, void *p_data);
60 
61 void _cdio_list_append (CdioList_t *p_list, void *p_data);
62 
64  void *p_user_data);
65 
67  _cdio_list_iterfunc_t cmp_func,
68  void *p_user_data);
69 
70 #define _CDIO_LIST_FOREACH(node, list) \
71  for (node = _cdio_list_begin (list); node; node = _cdio_list_node_next (node))
72 
76 
78 
80 
81 void _cdio_list_node_free (CdioListNode_t *p_node, int i_free_data);
82 
83 void *_cdio_list_node_data (CdioListNode_t *p_node);
84 
85 #ifdef __cplusplus
86 }
87 #endif /* __cplusplus */
88 
89 #endif /* CDIO_DS_H_ */
90 
91 /*
92  * Local variables:
93  * c-file-style: "gnu"
94  * tab-width: 8
95  * indent-tabs-mode: nil
96  * End:
97  */
98 
Common type definitions used pervasively in libcdio.
CdioListNode_t * _cdio_list_end(CdioList_t *p_list)
int(* _cdio_list_iterfunc_t)(void *p_data, void *p_user_data)
Definition: ds.h:39
void _cdio_list_node_free(CdioListNode_t *p_node, int i_free_data)
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)
CdioListNode_t * _cdio_list_node_next(CdioListNode_t *p_node)
CdioList_t * _cdio_list_new(void)
void _cdio_list_append(CdioList_t *p_list, void *p_data)
unsigned _cdio_list_length(const CdioList_t *list)
int(* _cdio_list_cmp_func_t)(void *p_data1, void *p_data2)
Definition: ds.h:38
void * _cdio_list_node_data(CdioListNode_t *p_node)
CdioListNode_t * _cdio_list_find(CdioList_t *p_list, _cdio_list_iterfunc_t cmp_func, void *p_user_data)
void _cdio_list_free(CdioList_t *p_list, int free_data)
struct _CdioListNode CdioListNode_t
Definition: ds.h:36
struct _CdioList CdioList_t
Definition: ds.h:35
void _cdio_list_prepend(CdioList_t *p_list, void *p_data)