diff options
author | Diego 'Flameeyes' Pettenò <flameeyes@gmail.com> | 2007-12-23 00:37:48 +0100 |
---|---|---|
committer | Diego 'Flameeyes' Pettenò <flameeyes@gmail.com> | 2007-12-23 00:37:48 +0100 |
commit | 1dda55c79b90c27303628a42c7ad8d948d613146 (patch) | |
tree | fad68e0e7513130582e28cf05d4ceff413f5343c /include/xine/list.h | |
parent | d23cc6dbac6f2b212d99453fddc0f20ccd178ab4 (diff) | |
parent | dca820a7cb6f1087f6d29482a1ee6d4916fc9f71 (diff) | |
download | xine-lib-1dda55c79b90c27303628a42c7ad8d948d613146.tar.gz xine-lib-1dda55c79b90c27303628a42c7ad8d948d613146.tar.bz2 |
Merge from 1.2 main branch.
--HG--
rename : src/xine-utils/xineutils.h => include/xine/xineutils.h
rename : src/libxineadec/Makefile.am => src/audio_dec/Makefile.am
rename : src/libxineadec/xine_a52_decoder.c => src/audio_dec/xine_a52_decoder.c
rename : src/libffmpeg/Makefile.am => src/combined/ffmpeg/Makefile.am
rename : src/libffmpeg/ff_audio_decoder.c => src/combined/ffmpeg/ff_audio_decoder.c
rename : src/libffmpeg/ff_dvaudio_decoder.c => src/combined/ffmpeg/ff_dvaudio_decoder.c
rename : src/libffmpeg/ff_dvdata.h => src/combined/ffmpeg/ff_dvdata.h
rename : src/libffmpeg/ff_video_decoder.c => src/combined/ffmpeg/ff_video_decoder.c
rename : src/libffmpeg/ffmpeg_encoder.c => src/combined/ffmpeg/ffmpeg_encoder.c
rename : src/libmpeg2/Makefile.am => src/video_dec/libmpeg2/Makefile.am
rename : src/libmpeg2/decode.c => src/video_dec/libmpeg2/decode.c
Diffstat (limited to 'include/xine/list.h')
-rw-r--r-- | include/xine/list.h | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/include/xine/list.h b/include/xine/list.h new file mode 100644 index 000000000..e00e30d6c --- /dev/null +++ b/include/xine/list.h @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2000-2006 the xine project + * + * This file is part of xine, a free video player. + * + * xine is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * xine is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA + * + * Doubly-linked linked list. + * + * Exemples: + * + * Create a list: + * xine_list_t *list = xine_list_new(); + * + * Delete a list: + * xine_list_delete(list); + * + * Walk thru a list: + * xine_list_iterator_t ite = xine_list_front(list); + * while (ite) { + * _useful code here_ + * ite = xine_list_next(list, ite); + * } + * + * The list elements are managed using memory chunks and a free list. The first + * chunk contains 32 elements, each following chunk is two time as big as the + * previous one, with a limit of 64K elements. + */ +#ifndef XINE_LIST_H +#define XINE_LIST_H + +/* Doubly-linked list type */ +typedef struct xine_list_s xine_list_t; + +/* List iterator */ +typedef void* xine_list_iterator_t; + +/* Constructor */ +xine_list_t *xine_list_new(void) XINE_PROTECTED; + +/* Destructor */ +void xine_list_delete(xine_list_t *list) XINE_PROTECTED; + +/* Returns the number of element stored in the list */ +unsigned int xine_list_size(xine_list_t *list) XINE_PROTECTED; + +/* Returns true if the number of elements is zero, false otherwise */ +unsigned int xine_list_empty(xine_list_t *list) XINE_PROTECTED; + +/* Adds the element at the beginning of the list */ +void xine_list_push_front(xine_list_t *list, void *value) XINE_PROTECTED; + +/* Adds the element at the end of the list */ +void xine_list_push_back(xine_list_t *list, void *value) XINE_PROTECTED; + +/* Remove all elements from a list */ +void xine_list_clear(xine_list_t *list) XINE_PROTECTED; + +/* Insert the element elem into the list at the position specified by the + iterator (before the element, if any, that was previously at the iterator's + position). The return value is an iterator that specifies the position of + the inserted element. */ +xine_list_iterator_t xine_list_insert(xine_list_t *list, + xine_list_iterator_t position, + void *value) XINE_PROTECTED; + +/* Remove one element from a list.*/ +void xine_list_remove(xine_list_t *list, xine_list_iterator_t position) XINE_PROTECTED; + +/* Returns an iterator that references the first element of the list */ +xine_list_iterator_t xine_list_front(xine_list_t *list) XINE_PROTECTED; + +/* Returns an iterator that references the last element of the list */ +xine_list_iterator_t xine_list_back(xine_list_t *list) XINE_PROTECTED; + +/* Perform a linear search of a given value, and returns an iterator that + references this value or NULL if not found */ +xine_list_iterator_t xine_list_find(xine_list_t *list, void *value) XINE_PROTECTED; + +/* Increments the iterator's value, so it specifies the next element in the list + or NULL at the end of the list */ +xine_list_iterator_t xine_list_next(xine_list_t *list, xine_list_iterator_t ite) XINE_PROTECTED; + +/* Increments the iterator's value, so it specifies the previous element in the list + or NULL at the beginning of the list */ +xine_list_iterator_t xine_list_prev(xine_list_t *list, xine_list_iterator_t ite) XINE_PROTECTED; + +/* Returns the value at the position specified by the iterator */ +void *xine_list_get_value(xine_list_t *list, xine_list_iterator_t ite) XINE_PROTECTED; + +#endif + |