X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_xml.h;h=4dac9492f1fa73ab325e9f163c2400db873c2aa8;hb=12ade3e3bc975d5426ba4af155b7372c31093b31;hp=dd2ec3854f6b3816722830076bc2acf749153837;hpb=af40daabd8b447f367c5ce63e1bec3dde3031c2c;p=vlc diff --git a/include/vlc_xml.h b/include/vlc_xml.h index dd2ec3854f..4dac9492f1 100644 --- a/include/vlc_xml.h +++ b/include/vlc_xml.h @@ -1,28 +1,33 @@ /***************************************************************************** - * xml.h - ***************************************************************************** - * Copyright (C) 2004 VideoLAN - * $Id$ - * - * Author: Gildas Bazin - * - * 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 - * (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. - * - * 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., 59 Temple Place - Suite 330, Boston, MA 02111, USA. - *****************************************************************************/ - -#ifndef _VLC_XML_H -#define _VLC_XML_H +* xml.h: XML abstraction layer +***************************************************************************** +* Copyright (C) 2004-2010 the VideoLAN team +* +* Author: Gildas Bazin +* +* 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 +* (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. +* +* 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. +*****************************************************************************/ + +#ifndef VLC_XML_H +#define VLC_XML_H + +/** +* \file +* This file defines functions and structures to handle xml tags in vlc +* +*/ # ifdef __cplusplus extern "C" { @@ -36,27 +41,34 @@ struct xml_t module_t *p_module; xml_sys_t *p_sys; - xml_reader_t * (*pf_reader_create) ( xml_t *, stream_t * ); - void (*pf_reader_delete) ( xml_reader_t * ); - void (*pf_catalog_load) ( xml_t *, const char * ); void (*pf_catalog_add) ( xml_t *, const char *, const char *, - const char * ); + const char * ); }; -#define xml_Create( a ) __xml_Create( VLC_OBJECT(a) ) -VLC_EXPORT( xml_t *, __xml_Create, ( vlc_object_t * ) ); +VLC_EXPORT( xml_t *, xml_Create, ( vlc_object_t * ) LIBVLC_USED ); +#define xml_Create( a ) xml_Create( VLC_OBJECT(a) ) VLC_EXPORT( void, xml_Delete, ( xml_t * ) ); -#define xml_ReaderCreate( a, b ) a->pf_reader_create( a, b ) -#define xml_ReaderDelete( a, b ) a->pf_reader_delete( b ) -#define xml_CatalogLoad( a, b ) a->pf_catalog_load( a, b ) -#define xml_CatalogAdd( a, b, c, d ) a->pf_catalog_add( a, b, c, d ) +static inline void xml_CatalogLoad( xml_t *xml, const char *catalog ) +{ + xml->pf_catalog_load( xml, catalog ); +} + +static inline void xml_CatalogAdd( xml_t *xml, const char *type, + const char *orig, const char *value ) +{ + xml->pf_catalog_add( xml, type, orig, value ); +} + struct xml_reader_t { - xml_t *p_xml; + VLC_COMMON_MEMBERS + xml_reader_sys_t *p_sys; + stream_t *p_stream; + module_t *p_module; int (*pf_read) ( xml_reader_t * ); int (*pf_node_type) ( xml_reader_t * ); @@ -64,20 +76,50 @@ struct xml_reader_t char * (*pf_value) ( xml_reader_t * ); int (*pf_next_attr) ( xml_reader_t * ); - int (*pf_use_dtd) ( xml_reader_t *, vlc_bool_t ); + int (*pf_use_dtd) ( xml_reader_t * ); }; -#define xml_ReaderRead( a ) a->pf_read( a ) -#define xml_ReaderNodeType( a ) a->pf_node_type( a ) -#define xml_ReaderName( a ) a->pf_name( a ) -#define xml_ReaderValue( a ) a->pf_value( a ) -#define xml_ReaderNextAttr( a ) a->pf_next_attr( a ) -#define xml_ReaderUseDTD( a, b ) a->pf_use_dtd( a, b ) - -#define XML_READER_NONE 0 -#define XML_READER_STARTELEM 1 -#define XML_READER_ENDELEM 2 -#define XML_READER_TEXT 3 +VLC_EXPORT( xml_reader_t *, xml_ReaderCreate, (vlc_object_t *, stream_t *) LIBVLC_USED ); +#define xml_ReaderCreate( a, s ) xml_ReaderCreate(VLC_OBJECT(a), s) +VLC_EXPORT( void, xml_ReaderDelete, (xml_reader_t *) ); +VLC_EXPORT( xml_reader_t *, xml_ReaderReset, (xml_reader_t *, stream_t *) LIBVLC_USED ); + +static inline int xml_ReaderRead( xml_reader_t *reader ) +{ + return reader->pf_read( reader ); +} + +static inline int xml_ReaderNodeType( xml_reader_t *reader ) +{ + return reader->pf_node_type( reader ); +} + +static inline char *xml_ReaderName( xml_reader_t *reader ) +{ + return reader->pf_name( reader ); +} + +static inline char *xml_ReaderValue( xml_reader_t *reader ) +{ + return reader->pf_value( reader ); +} + +static inline int xml_ReaderNextAttr( xml_reader_t *reader ) +{ + return reader->pf_next_attr( reader ); +} + +static inline int xml_ReaderUseDTD( xml_reader_t *reader ) +{ + return reader->pf_use_dtd( reader ); +} + +enum { + XML_READER_NONE=0, + XML_READER_STARTELEM, + XML_READER_ENDELEM, + XML_READER_TEXT, +}; # ifdef __cplusplus }