]> git.sesse.net Git - vlc/blobdiff - include/vlc_arrays.h
Missing #include
[vlc] / include / vlc_arrays.h
index 90ef202247651ad6ea44bb50440ae3ae93d32fda..14db10b93eba1b0dfe51eae51190fe8defefd375 100644 (file)
@@ -48,14 +48,15 @@ static inline void *realloc_down( void *ptr, size_t size )
 #define INSERT_ELEM( p_ar, i_oldsize, i_pos, elem )                           \
     do                                                                        \
     {                                                                         \
-        if( !i_oldsize ) (p_ar) = NULL;                                       \
+        if( !(i_oldsize) ) (p_ar) = NULL;                                       \
         (p_ar) = VLCCVP realloc( p_ar, ((i_oldsize) + 1) * sizeof(*(p_ar)) ); \
+        if( !(p_ar) ) abort();                                                \
         if( (i_oldsize) - (i_pos) )                                           \
         {                                                                     \
             memmove( (p_ar) + (i_pos) + 1, (p_ar) + (i_pos),                  \
                      ((i_oldsize) - (i_pos)) * sizeof( *(p_ar) ) );           \
         }                                                                     \
-        (p_ar)[i_pos] = elem;                                                 \
+        (p_ar)[(i_pos)] = elem;                                                 \
         (i_oldsize)++;                                                        \
     }                                                                         \
     while( 0 )
@@ -99,41 +100,37 @@ static inline void *realloc_down( void *ptr, size_t size )
         (tab) = cast realloc( tab, sizeof( void ** ) * ( (count) + 1 ) ); \
     else                                        \
         (tab) = cast malloc( sizeof( void ** ) );    \
+    if( !(tab) ) abort();                       \
     (tab)[count] = (p);                         \
     (count)++;                                  \
   } while(0)
 
 #define TAB_APPEND( count, tab, p )             \
     TAB_APPEND_CAST( , count, tab, p )
-#define TAB_APPEND_CPP( type, count, tab, p )   \
-    TAB_APPEND_CAST( (type**), count, tab, p )
 
 #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 )                  \
@@ -149,6 +146,7 @@ static inline void *realloc_down( void *ptr, size_t size )
         (tab) = cast realloc( tab, sizeof( void ** ) * ( (count) + 1 ) ); \
     else                                        \
         (tab) = cast malloc( sizeof( void ** ) );       \
+    if( !(tab) ) abort();                       \
     if( (count) - (index) > 0 )                 \
         memmove( (void**)(tab) + (index) + 1,   \
                  (void**)(tab) + (index),       \
@@ -197,6 +195,7 @@ static inline void *realloc_down( void *ptr, size_t size )
     (array).i_alloc = newsize;                                              \
     (array).p_elems = VLCCVP realloc( (array).p_elems, (array).i_alloc *    \
                                     sizeof(*(array).p_elems) );             \
+    if( !(array).p_elems ) abort();                                         \
 }
 
 #define _ARRAY_GROW1(array) {                                               \
@@ -206,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 */
@@ -267,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 )                                        \
@@ -613,4 +600,20 @@ vlc_dictionary_remove_value_for_key( const vlc_dictionary_t * p_dict, const char
     /* No key was found */
 }
 
+#ifdef __cplusplus
+// C++ helpers
+template <typename T>
+void vlc_delete_all( T &container )
+{
+    typename T::iterator it = container.begin();
+    while ( it != container.end() )
+    {
+        delete *it;
+        ++it;
+    }
+    container.clear();
+}
+
+#endif
+
 #endif