[vlc-devel] [RFC PATCH 01/13] input: Move attachment functions in their own source file

Hugo Beauzée-Luyssen hugo at beauzee.fr
Fri Nov 6 10:22:16 CET 2020


---
 include/vlc_input.h    | 49 +++++------------------------
 src/Makefile.am        |  1 +
 src/input/attachment.c | 71 ++++++++++++++++++++++++++++++++++++++++++
 src/libvlccore.sym     |  3 ++
 4 files changed, 82 insertions(+), 42 deletions(-)
 create mode 100644 src/input/attachment.c

diff --git a/include/vlc_input.h b/include/vlc_input.h
index 21186f5239..2c0c4b1718 100644
--- a/include/vlc_input.h
+++ b/include/vlc_input.h
@@ -165,50 +165,15 @@ struct input_attachment_t
     void *p_data;
 };
 
-static inline void vlc_input_attachment_Delete( input_attachment_t *a )
-{
-    if( !a )
-        return;
-
-    free( a->p_data );
-    free( a->psz_description );
-    free( a->psz_mime );
-    free( a->psz_name );
-    free( a );
-}
-
-static inline input_attachment_t *vlc_input_attachment_New( const char *psz_name,
-                                                            const char *psz_mime,
-                                                            const char *psz_description,
-                                                            const void *p_data,
-                                                            size_t i_data )
-{
-    input_attachment_t *a = (input_attachment_t *)malloc( sizeof (*a) );
-    if( unlikely(a == NULL) )
-        return NULL;
+VLC_API void vlc_input_attachment_Delete( input_attachment_t *a );
 
-    a->psz_name = strdup( psz_name ? psz_name : "" );
-    a->psz_mime = strdup( psz_mime ? psz_mime : "" );
-    a->psz_description = strdup( psz_description ? psz_description : "" );
-    a->i_data = i_data;
-    a->p_data = malloc( i_data );
-    if( i_data > 0 && likely(a->p_data != NULL) )
-        memcpy( a->p_data, p_data, i_data );
+VLC_API input_attachment_t *vlc_input_attachment_New( const char *psz_name,
+                                                      const char *psz_mime,
+                                                      const char *psz_description,
+                                                      const void *p_data,
+                                                      size_t i_data );
 
-    if( unlikely(a->psz_name == NULL || a->psz_mime == NULL
-              || a->psz_description == NULL || (i_data > 0 && a->p_data == NULL)) )
-    {
-        vlc_input_attachment_Delete( a );
-        a = NULL;
-    }
-    return a;
-}
-
-static inline input_attachment_t *vlc_input_attachment_Duplicate( const input_attachment_t *a )
-{
-    return vlc_input_attachment_New( a->psz_name, a->psz_mime, a->psz_description,
-                                     a->p_data, a->i_data );
-}
+VLC_API input_attachment_t *vlc_input_attachment_Duplicate( const input_attachment_t *a );
 
 /**
  * Input rate.
diff --git a/src/Makefile.am b/src/Makefile.am
index 5e691b1b01..49947dc6be 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -265,6 +265,7 @@ libvlccore_la_SOURCES = \
 	input/input.c \
 	input/info.h \
 	input/meta.c \
+	input/attachment.c \
 	player/player.c \
 	player/player.h \
 	player/input.c \
diff --git a/src/input/attachment.c b/src/input/attachment.c
new file mode 100644
index 0000000000..1f9f2faf45
--- /dev/null
+++ b/src/input/attachment.c
@@ -0,0 +1,71 @@
+/*****************************************************************************
+ * attachment.c: Input attachments
+ *****************************************************************************
+ * Copyright (C) 1999-2020 VLC authors and VideoLAN
+ *
+ * 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 Lesser General Public License for more details.
+ *
+ * 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.
+ *****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <vlc_common.h>
+#include <vlc_input.h>
+
+void vlc_input_attachment_Delete( input_attachment_t *a )
+{
+    if( !a )
+        return;
+
+    free( a->p_data );
+    free( a->psz_description );
+    free( a->psz_mime );
+    free( a->psz_name );
+    free( a );
+}
+
+input_attachment_t *vlc_input_attachment_New( const char *psz_name,
+                                              const char *psz_mime,
+                                              const char *psz_description,
+                                              const void *p_data,
+                                              size_t i_data )
+{
+    input_attachment_t *a = (input_attachment_t *)malloc( sizeof (*a) );
+    if( unlikely(a == NULL) )
+        return NULL;
+
+    a->psz_name = strdup( psz_name ? psz_name : "" );
+    a->psz_mime = strdup( psz_mime ? psz_mime : "" );
+    a->psz_description = strdup( psz_description ? psz_description : "" );
+    a->i_data = i_data;
+    a->p_data = malloc( i_data );
+    if( i_data > 0 && likely(a->p_data != NULL) )
+        memcpy( a->p_data, p_data, i_data );
+
+    if( unlikely(a->psz_name == NULL || a->psz_mime == NULL
+              || a->psz_description == NULL || (i_data > 0 && a->p_data == NULL)) )
+    {
+        vlc_input_attachment_Delete( a );
+        a = NULL;
+    }
+    return a;
+}
+
+input_attachment_t *vlc_input_attachment_Duplicate( const input_attachment_t *a )
+{
+    return vlc_input_attachment_New( a->psz_name, a->psz_mime, a->psz_description,
+                                     a->p_data, a->i_data );
+}
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index c4d5273dbd..5bda357ef0 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -981,3 +981,6 @@ vlc_executor_Delete
 vlc_executor_Submit
 vlc_executor_Cancel
 vlc_executor_WaitIdle
+vlc_input_attachment_Delete
+vlc_input_attachment_New
+vlc_input_attachment_Duplicate
-- 
2.28.0



More information about the vlc-devel mailing list