[vlc-commits] vlc_arrays: alias (INSERT|REMOVE)_ELEM to TAB_(INSERT|ERASE)

Rémi Denis-Courmont git at videolan.org
Tue Feb 21 21:02:50 CET 2017


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Tue Feb 21 22:00:28 2017 +0200| [7e1aa4fb31be60cde48e28bd2b6088fbf4cc9b44] | committer: Rémi Denis-Courmont

vlc_arrays: alias (INSERT|REMOVE)_ELEM to TAB_(INSERT|ERASE)

At this point, the two sets of helpers did essentially the same thing.
The only difference was that REMOVE_ELEM systematically shrinks the
table allocation, while TAB_ERASE waits for the table to become empty.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7e1aa4fb31be60cde48e28bd2b6088fbf4cc9b44
---

 include/vlc_arrays.h | 45 ++++++---------------------------------------
 1 file changed, 6 insertions(+), 39 deletions(-)

diff --git a/include/vlc_arrays.h b/include/vlc_arrays.h
index c94e1de..dcdfa7a 100644
--- a/include/vlc_arrays.h
+++ b/include/vlc_arrays.h
@@ -37,45 +37,6 @@ static inline void *realloc_down( void *ptr, size_t size )
     return ret ? ret : ptr;
 }
 
-/**
- * Simple dynamic array handling. Array is realloced at each insert/removal
- */
-#define INSERT_ELEM( p_ar, i_oldsize, i_pos, elem )                           \
-    do                                                                        \
-    {                                                                         \
-        if( !(i_oldsize) ) (p_ar) = NULL;                                       \
-        (p_ar) = 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;                                                 \
-        (i_oldsize)++;                                                        \
-    }                                                                         \
-    while( 0 )
-
-#define REMOVE_ELEM( p_ar, i_size, i_pos )                                    \
-    do                                                                        \
-    {                                                                         \
-        if( (i_size) - (i_pos) - 1 )                                          \
-        {                                                                     \
-            memmove( (p_ar) + (i_pos),                                        \
-                     (p_ar) + (i_pos) + 1,                                    \
-                     ((i_size) - (i_pos) - 1) * sizeof( *(p_ar) ) );          \
-        }                                                                     \
-        if( i_size > 1 )                                                      \
-            (p_ar) = realloc_down( p_ar, ((i_size) - 1) * sizeof( *(p_ar) ) );\
-        else                                                                  \
-        {                                                                     \
-            free( p_ar );                                                     \
-            (p_ar) = NULL;                                                    \
-        }                                                                     \
-        (i_size)--;                                                           \
-    }                                                                         \
-    while( 0 )
-
 #define TAB_INIT( count, tab )                  \
   do {                                          \
     (count) = 0;                                \
@@ -152,6 +113,12 @@ static inline void *realloc_down( void *ptr, size_t size )
 #define TAB_INSERT( count, tab, p, index )      \
     TAB_INSERT_CAST( , count, tab, p, index )
 
+#define INSERT_ELEM( p_ar, i_oldsize, i_pos, elem ) \
+    TAB_INSERT( i_oldsize, p_ar, elem, i_pos )
+
+#define REMOVE_ELEM( p_ar, i_size, i_pos )  \
+    TAB_ERASE( i_size, p_ar, i_pos )
+
 /**
  * Binary search in a sorted array. The key must be comparable by < and >
  * \param entries array of entries



More information about the vlc-commits mailing list