X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_epg.h;h=25d8ed275d918e16bf5b12ba494d234ed379cb19;hb=7c5514122d6af663412113aaabb4ebd34d02bd3f;hp=58e4d9588fd41c12cad01849faaeb8f86da80f53;hpb=6ee1e193fd896ab9a4729fde14f009d9ce629815;p=vlc diff --git a/include/vlc_epg.h b/include/vlc_epg.h index 58e4d9588f..25d8ed275d 100644 --- a/include/vlc_epg.h +++ b/include/vlc_epg.h @@ -1,32 +1,33 @@ /***************************************************************************** * vlc_epg.h: Electronic Program Guide ***************************************************************************** - * Copyright (C) 2007 the VideoLAN team - * $Id: vlc_meta.h 18214 2006-12-03 13:48:21Z zorglub $ + * Copyright (C) 2007 VLC authors and VideoLAN + * $Id$ * * Authors: Laurent Aimar * - * This program 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 + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * This program 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. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser 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-1301, USA. + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ -#if !defined( __LIBVLC__ ) - #error You are not libvlc or one of its plugins. You cannot include this file -#endif +#ifndef VLC_EPG_H +#define VLC_EPG_H 1 -#ifndef _VLC_EPG_H -#define _VLC_EPG_H 1 +/** + * \file + * This file defines functions and structures for storing dvb epg information + */ typedef struct { @@ -48,72 +49,48 @@ typedef struct vlc_epg_event_t **pp_event; } vlc_epg_t; -static inline void vlc_epg_Init( vlc_epg_t *p_epg, const char *psz_name ) -{ - p_epg->psz_name = psz_name ? strdup( psz_name ) : NULL; - p_epg->p_current = NULL; - TAB_INIT( p_epg->i_event, p_epg->pp_event ); -} -static inline void vlc_epg_Clean( vlc_epg_t *p_epg ) -{ - int i; - for( i = 0; i < p_epg->i_event; i++ ) - { - vlc_epg_event_t *p_evt = p_epg->pp_event[i]; - if( p_evt->psz_name ) - free( p_evt->psz_name ); - if( p_evt->psz_short_description ) - free( p_evt->psz_short_description ); - if( p_evt->psz_description ) - free( p_evt->psz_description ); - free( p_evt ); - } - TAB_CLEAN( p_epg->i_event, p_epg->pp_event ); - if( p_epg->psz_name ) - free( p_epg->psz_name ); -} -static inline void vlc_epg_AddEvent( vlc_epg_t *p_epg, int64_t i_start, int i_duration, - const char *psz_name, const char *psz_short_description, const char *psz_description ) -{ - vlc_epg_event_t *p_evt = (vlc_epg_event_t*)malloc( sizeof(vlc_epg_event_t) ); - if( !p_evt ) - return; - p_evt->i_start = i_start; - p_evt->i_duration = i_duration; - p_evt->psz_name = psz_name ? strdup( psz_name ) : NULL; - p_evt->psz_short_description = psz_short_description ? strdup( psz_short_description ) : NULL; - p_evt->psz_description = psz_description ? strdup( psz_description ) : NULL; - TAB_APPEND_CPP( vlc_epg_event_t, p_epg->i_event, p_epg->pp_event, p_evt ); -} - -static inline vlc_epg_t *vlc_epg_New( const char *psz_name ) -{ - vlc_epg_t *p_epg = (vlc_epg_t*)malloc( sizeof(vlc_epg_t) ); - if( p_epg ) - vlc_epg_Init( p_epg, psz_name ); - return p_epg; -} -static inline void vlc_epg_Delete( vlc_epg_t *p_epg ) -{ - vlc_epg_Clean( p_epg ); - free( p_epg ); -} -static inline void vlc_epg_SetCurrent( vlc_epg_t *p_epg, int64_t i_start ) -{ - int i; - p_epg->p_current = NULL; - if( i_start < 0 ) - return; - - for( i = 0; i < p_epg->i_event; i++ ) - { - if( p_epg->pp_event[i]->i_start == i_start ) - { - p_epg->p_current = p_epg->pp_event[i]; - break; - } - } -} +/** + * It initializes a vlc_epg_t. + * + * You must call vlc_epg_Clean to release the associated resource. + */ +VLC_API void vlc_epg_Init(vlc_epg_t *p_epg, const char *psz_name); + +/** + * It releases all resources associated to a vlc_epg_t + */ +VLC_API void vlc_epg_Clean(vlc_epg_t *p_epg); + +/** + * It creates and appends a new vlc_epg_event_t to a vlc_epg_t. + * + * \see vlc_epg_t for the definitions of the parameters. + */ +VLC_API void vlc_epg_AddEvent(vlc_epg_t *p_epg, int64_t i_start, int i_duration, const char *psz_name, const char *psz_short_description, const char *psz_description); + +/** + * It creates a new vlc_epg_t* + * + * You must call vlc_epg_Delete to release the associated resource. + */ +VLC_API vlc_epg_t * vlc_epg_New(const char *psz_name) VLC_USED; + +/** + * It releases a vlc_epg_t*. + */ +VLC_API void vlc_epg_Delete(vlc_epg_t *p_epg); + +/** + * It set the current event of a vlc_epg_t given a start time + */ +VLC_API void vlc_epg_SetCurrent(vlc_epg_t *p_epg, int64_t i_start); + +/** + * It merges all the event of \p p_src and \p p_dst into \p p_dst. + * + * \p p_src is not modified. + */ +VLC_API void vlc_epg_Merge(vlc_epg_t *p_dst, const vlc_epg_t *p_src); #endif