]> git.sesse.net Git - vlc/blobdiff - include/vlc_arrays.h
Adding gd Gaelic to languages list
[vlc] / include / vlc_arrays.h
index e2f7b30e5e846ebbe5c5586f09c5d9e4e6714aca..c06136de984a835d1e9dd0a332d372b8778ec657 100644 (file)
@@ -1,25 +1,25 @@
 /*****************************************************************************
  * vlc_arrays.h : Arrays and data structures handling
  *****************************************************************************
- * Copyright (C) 1999-2004 the VideoLAN team
+ * Copyright (C) 1999-2004 VLC authors and VideoLAN
  * $Id$
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          ClĂ©ment Stenac <zorglub@videolan.org>
  *
- * 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.
  *****************************************************************************/
 
 #ifndef VLC_ARRAYS_H_
@@ -110,30 +110,27 @@ static inline void *realloc_down( void *ptr, size_t size )
 
 #define TAB_FIND( count, tab, p, index )        \
   do {                                          \
-        int _i_;                                \
-        (index) = -1;                           \
-        for( _i_ = 0; _i_ < (count); _i_++ )    \
+    (index) = -1;                               \
+    for( int i = 0; i < (count); i++ )          \
+        if( (tab)[i] == (p) )                   \
         {                                       \
-            if( (tab)[_i_] == (p) )             \
-            {                                   \
-                (index) = _i_;                  \
-                break;                          \
-            }                                   \
+            (index) = i;                        \
+            break;                              \
         }                                       \
   } while(0)
 
 
 #define TAB_REMOVE( count, tab, p )             \
   do {                                          \
-        int _i_index_;                          \
-        TAB_FIND( count, tab, p, _i_index_ );   \
-        if( _i_index_ >= 0 )                    \
+        int i_index;                            \
+        TAB_FIND( count, tab, p, i_index );     \
+        if( i_index >= 0 )                      \
         {                                       \
             if( (count) > 1 )                   \
             {                                   \
-                memmove( ((void**)(tab) + _i_index_),    \
-                         ((void**)(tab) + _i_index_+1),  \
-                         ( (count) - _i_index_ - 1 ) * sizeof( void* ) );\
+                memmove( ((void**)(tab) + i_index),    \
+                         ((void**)(tab) + i_index+1),  \
+                         ( (count) - i_index - 1 ) * sizeof( void* ) );\
             }                                   \
             (count)--;                          \
             if( (count) == 0 )                  \
@@ -208,24 +205,6 @@ static inline void *realloc_down( void *ptr, size_t size )
         _ARRAY_ALLOC(array, (int)(array.i_alloc * 1.5) )                    \
 }
 
-#define _ARRAY_GROW(array,additional) {                                     \
-     int i_first = (array).i_alloc;                                         \
-     while( (array).i_alloc - i_first < additional )                        \
-     {                                                                      \
-         if( (array).i_alloc < 10 )                                         \
-            _ARRAY_ALLOC(array, 10 )                                        \
-        else if( (array).i_alloc == (array).i_size )                        \
-            _ARRAY_ALLOC(array, (int)((array).i_alloc * 1.5) )              \
-        else break;                                                         \
-     }                                                                      \
-}
-
-#define _ARRAY_SHRINK(array) {                                              \
-    if( (array).i_size > 10 && (array).i_size < (int)((array).i_alloc / 1.5) ) {  \
-        _ARRAY_ALLOC(array, (array).i_size + 5);                            \
-    }                                                                       \
-}
-
 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
 
 /* API */
@@ -269,6 +248,12 @@ static inline void *realloc_down( void *ptr, size_t size )
     (array).i_size++;                                                       \
   } while(0)
 
+#define _ARRAY_SHRINK(array) {                                              \
+    if( (array).i_size > 10 && (array).i_size < (int)((array).i_alloc / 1.5) ) {  \
+        _ARRAY_ALLOC(array, (array).i_size + 5);                            \
+    }                                                                       \
+}
+
 #define ARRAY_REMOVE(array,pos)                                             \
   do {                                                                      \
     if( (array).i_size - (pos) - 1 )                                        \
@@ -466,7 +451,15 @@ static inline void vlc_dictionary_clear( vlc_dictionary_t * p_dict,
     p_dict->i_size = 0;
 }
 
+static inline int
+vlc_dictionary_has_key( const vlc_dictionary_t * p_dict, const char * psz_key )
+{
+    if( !p_dict->p_entries )
+        return 0;
 
+    int i_pos = DictHash( psz_key, p_dict->i_size );
+    return p_dict->p_entries[i_pos] != NULL;
+}
 
 static inline void *
 vlc_dictionary_value_for_key( const vlc_dictionary_t * p_dict, const char * psz_key )
@@ -514,6 +507,8 @@ vlc_dictionary_all_keys( const vlc_dictionary_t * p_dict )
     int i, count = vlc_dictionary_keys_count( p_dict );
 
     ppsz_ret = (char**)malloc(sizeof(char *) * (count + 1));
+    if( unlikely(!ppsz_ret) )
+        return NULL;
 
     count = 0;
     for( i = 0; i < p_dict->i_size; i++ )