shared: introduce opaque type NMUtilsUserData for nm_utils_user_data_pack()

This makes the usage slightly more type safe.

(cherry picked from commit 6e44842dc6)
This commit is contained in:
Thomas Haller 2020-10-22 16:25:32 +02:00
parent 50adaf7414
commit 2bfe9becd9
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728
2 changed files with 8 additions and 6 deletions

View file

@ -4115,7 +4115,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;
@ -4127,13 +4127,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

@ -1737,12 +1737,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__)