shared: introduce opaque type NMUtilsUserData for nm_utils_user_data_pack()

This makes the usage slightly more type safe.

(cherry picked from commit 6e44842dc6)
(cherry picked from commit 2bfe9becd9)
This commit is contained in:
Thomas Haller 2020-10-22 16:25:32 +02:00 committed by Beniamino Galvani
parent e60937c113
commit d0750c29dd
2 changed files with 8 additions and 6 deletions

View file

@ -3885,7 +3885,7 @@ nm_utils_g_slist_strlist_join (const GSList *a, const char *separator)
/*****************************************************************************/
gpointer
NMUtilsUserData *
_nm_utils_user_data_pack (int nargs, gconstpointer *args)
{
int i;
@ -3897,13 +3897,13 @@ _nm_utils_user_data_pack (int nargs, gconstpointer *args)
data = g_slice_alloc (((gsize) nargs) * sizeof (gconstpointer));
for (i = 0; i < nargs; i++)
data[i] = (gpointer) args[i];
return data;
return (NMUtilsUserData *) data;
}
void
_nm_utils_user_data_unpack (gpointer user_data, int nargs, ...)
_nm_utils_user_data_unpack (NMUtilsUserData *user_data, int nargs, ...)
{
gpointer *data = user_data;
gpointer *data = (gpointer *) user_data;
va_list ap;
int i;

View file

@ -1746,12 +1746,14 @@ nm_utils_process_state_is_dead (char pstate)
/*****************************************************************************/
gpointer _nm_utils_user_data_pack (int nargs, gconstpointer *args);
typedef struct _NMUtilsUserData NMUtilsUserData;
NMUtilsUserData *_nm_utils_user_data_pack (int nargs, gconstpointer *args);
#define nm_utils_user_data_pack(...) \
_nm_utils_user_data_pack(NM_NARG (__VA_ARGS__), (gconstpointer[]) { __VA_ARGS__ })
void _nm_utils_user_data_unpack (gpointer user_data, int nargs, ...);
void _nm_utils_user_data_unpack (NMUtilsUserData *user_data, int nargs, ...);
#define nm_utils_user_data_unpack(user_data, ...) \
_nm_utils_user_data_unpack(user_data, NM_NARG (__VA_ARGS__), __VA_ARGS__)