Blame include/cdio/ds.h

Packit dd8086
/*
Packit dd8086
    Copyright (C) 2005, 2008, 2017 Rocky Bernstein <rocky@gnu.org>
Packit dd8086
    Copyright (C) 2000, 2004 Herbert Valerio Riedel <hvr@gnu.org>
Packit dd8086
Packit dd8086
    This program is free software: you can redistribute it and/or modify
Packit dd8086
    it under the terms of the GNU General Public License as published by
Packit dd8086
    the Free Software Foundation, either version 3 of the License, or
Packit dd8086
    (at your option) any later version.
Packit dd8086
Packit dd8086
    This program is distributed in the hope that it will be useful,
Packit dd8086
    but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit dd8086
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit dd8086
    GNU General Public License for more details.
Packit dd8086
Packit dd8086
    You should have received a copy of the GNU General Public License
Packit dd8086
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit dd8086
*/
Packit dd8086
Packit dd8086
/** \file ds.h
Packit dd8086
 *  \brief  The top-level header for list-related data structures.
Packit dd8086
Packit dd8086
    Note: this header will is slated to get removed and libcdio will use
Packit dd8086
    glib.h routines instead.
Packit dd8086
*/
Packit dd8086
Packit dd8086

Packit dd8086
#ifndef CDIO_DS_H_
Packit dd8086
#define CDIO_DS_H_
Packit dd8086
Packit dd8086
#include <cdio/types.h>
Packit dd8086
Packit dd8086
/** opaque types... */
Packit dd8086
typedef struct _CdioList CdioList_t;
Packit dd8086
typedef struct _CdioListNode CdioListNode_t;
Packit dd8086
Packit dd8086
typedef int (*_cdio_list_cmp_func_t) (void *p_data1, void *p_data2);
Packit dd8086
typedef int (*_cdio_list_iterfunc_t) (void *p_data, void *p_user_data);
Packit dd8086
Packit dd8086
#ifdef __cplusplus
Packit dd8086
extern "C" {
Packit dd8086
#endif /* __cplusplus */
Packit dd8086
Packit dd8086
/** methods */
Packit dd8086
CdioList_t *_cdio_list_new (void);
Packit dd8086
Packit dd8086
void _cdio_list_free (CdioList_t *p_list, int free_data, CdioDataFree_t free_fn);
Packit dd8086
Packit dd8086
unsigned _cdio_list_length (const CdioList_t *list);
Packit dd8086
Packit dd8086
void _cdio_list_prepend (CdioList_t *p_list, void *p_data);
Packit dd8086
Packit dd8086
void _cdio_list_append (CdioList_t *p_list, void *p_data);
Packit dd8086
Packit dd8086
void _cdio_list_foreach (CdioList_t *p_list, _cdio_list_iterfunc_t func,
Packit dd8086
                         void *p_user_data);
Packit dd8086
Packit dd8086
CdioListNode_t *_cdio_list_find (CdioList_t *p_list,
Packit dd8086
                                 _cdio_list_iterfunc_t cmp_func,
Packit dd8086
                                 void *p_user_data);
Packit dd8086
Packit dd8086
#define _CDIO_LIST_FOREACH(node, list) \
Packit dd8086
 for (node = _cdio_list_begin (list); node; node = _cdio_list_node_next (node))
Packit dd8086
Packit dd8086
/** node operations */
Packit dd8086
Packit dd8086
CdioListNode_t *_cdio_list_begin (const CdioList_t *p_list);
Packit dd8086
Packit dd8086
CdioListNode_t *_cdio_list_end (CdioList_t *p_list);
Packit dd8086
Packit dd8086
CdioListNode_t *_cdio_list_node_next (CdioListNode_t *p_node);
Packit dd8086
Packit dd8086
  void _cdio_list_node_free (CdioListNode_t *p_node, int i_free_data,
Packit dd8086
                             CdioDataFree_t free_fn);
Packit dd8086
Packit dd8086
void *_cdio_list_node_data (CdioListNode_t *p_node);
Packit dd8086
Packit dd8086
#ifdef __cplusplus
Packit dd8086
}
Packit dd8086
#endif /* __cplusplus */
Packit dd8086
Packit dd8086
#endif /* CDIO_DS_H_ */
Packit dd8086

Packit dd8086
/*
Packit dd8086
 * Local variables:
Packit dd8086
 *  c-file-style: "gnu"
Packit dd8086
 *  tab-width: 8
Packit dd8086
 *  indent-tabs-mode: nil
Packit dd8086
 * End:
Packit dd8086
 */