* vlc_arrays.h : Arrays and data structures handling
*****************************************************************************
* Copyright (C) 1999-2004 the VideoLAN team
- * $Id: vlc_playlist.h 17108 2006-10-15 15:28:34Z zorglub $
+ * $Id$
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Clément Stenac <zorglub@videolan.org>
} \
}
+#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
/* API */
#define DECL_ARRAY(type) struct { \
memset( p_array, 0, sizeof(vlc_array_t) );
}
+static inline vlc_array_t * vlc_array_new( void )
+{
+ vlc_array_t * ret = (vlc_array_t *)malloc( sizeof(vlc_array_t) );
+ vlc_array_init( ret );
+ return ret;
+}
+
+static inline void vlc_array_destroy( vlc_array_t * p_array )
+{
+ vlc_array_clear( p_array );
+ free( p_array );
+}
+
+
/* Read */
static inline int
vlc_array_count( vlc_array_t * p_array )
}
static inline void *
-vlc_array_object_at_index( vlc_array_t * p_array, int i_index )
+vlc_array_item_at_index( vlc_array_t * p_array, int i_index )
{
return p_array->pp_elems[i_index];
}
+static inline int
+vlc_array_index_of_item( vlc_array_t * p_array, void * item )
+{
+ int i;
+ for( i = 0; i < p_array->i_count; i++)
+ {
+ if( p_array->pp_elems[i] == item )
+ return i;
+ }
+ return -1;
+}
+
/* Write */
static inline void
vlc_array_insert( vlc_array_t * p_array, void * p_elem, int i_index )
{
- TAB_INSERT( p_array->i_count, p_array->pp_elems, p_elem, i_index );
+ TAB_INSERT_CAST( (void **), p_array->i_count, p_array->pp_elems, p_elem, i_index );
}
static inline void
ppsz_ret = (char**)malloc(sizeof(char *) * (count + 1));
assert( ppsz_ret );
-
+
count = 0;
for( i = 0; i < p_dict->i_size; i++ )
{
struct vlc_dictionary_t new_dict;
int i_new_size = ( (p_dict->i_size+2) * 3) / 2; /* XXX: this need tuning */
int i;
-
+
vlc_dictionary_init( &new_dict, i_new_size );
for( i = 0; i < p_dict->i_size; i++ )
{