X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmisc%2Fvariables.h;h=b0de92de2d943e2149f58713bfa59d41a9c4022f;hb=f90eeab1ee15fdcc7c4121d877c44eacf5cea3fb;hp=ecb20854a06c72e0afcdf0727f620d438efd79a7;hpb=d3fe7f28797d4dba65ffcdd60bf932e758a48a9e;p=vlc diff --git a/src/misc/variables.h b/src/misc/variables.h index ecb20854a0..b0de92de2d 100644 --- a/src/misc/variables.h +++ b/src/misc/variables.h @@ -1,30 +1,60 @@ +/***************************************************************************** + * variables.h: object variables typedefs + ***************************************************************************** + * Copyright (C) 2002-2006 the VideoLAN team + * $Id$ + * + * Authors: Samuel Hocevar + * + * 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. + *****************************************************************************/ + +#if defined(__PLUGIN__) || defined(__BUILTIN__) || !defined(__LIBVLC__) +# error This header file can only be included from LibVLC. +#endif + +#ifndef LIBVLC_VARIABLES_H +# define LIBVLC_VARIABLES_H 1 + typedef struct callback_entry_t callback_entry_t; +typedef struct variable_ops_t +{ + int (*pf_cmp) ( vlc_value_t, vlc_value_t ); + void (*pf_dup) ( vlc_value_t * ); + void (*pf_free) ( vlc_value_t * ); +} variable_ops_t; + /** * The structure describing a variable. * \note vlc_value_t is the common union for variable values */ struct variable_t { + char * psz_name; /**< The variable unique name (must be first) */ + /** The variable's exported value */ vlc_value_t val; - char * psz_name; /**< The variable unique name */ - uint32_t i_hash; /**< (almost) unique hashed value */ - int i_type; /**< The type of the variable */ - /** The variable display name, mainly for use by the interfaces */ char * psz_text; - /** A pointer to a comparison function */ - int ( * pf_cmp ) ( vlc_value_t, vlc_value_t ); - /** A pointer to a duplication function */ - void ( * pf_dup ) ( vlc_value_t * ); - /** A pointer to a deallocation function */ - void ( * pf_free ) ( vlc_value_t * ); + const variable_ops_t *ops; - /** Creation count: we only destroy the variable if it reaches 0 */ - int i_usage; + int i_type; /**< The type of the variable */ + unsigned i_usage; /**< Reference count */ /** If the variable has min/max/step values */ vlc_value_t min, max, step; @@ -38,7 +68,7 @@ struct variable_t vlc_list_t choices_text; /** Set to TRUE if the variable is in a callback */ - vlc_bool_t b_incallback; + bool b_incallback; /** Number of registered callbacks */ int i_entries; @@ -46,3 +76,6 @@ struct variable_t callback_entry_t * p_entries; }; +extern void var_DestroyAll( vlc_object_t * ); + +#endif