История изменений
Исправление Lrrr, (текущая версия) :
Задача: обернуть эту функцию в другую функцию, принимающую в себя тип переменной и саму переменную.
В Си это делается с помощью tagged union, примерно так:
struct v {
union {
int i;
long j;
};
int type;
} v1;
void my_function (v1 *data) {
if (data->type == TYPE_INT) {
dbus_message_append_args(connection, type, data->i, DBUS_TYPE_INT);
} else if (data->type == TYPE_LONG) {
dbus_message_append_args(connection, type, data->j, DBUS_TYPE_LONG);
}
}
либо, если тег у тебя уже есть, то простой union.
Исправление Lrrr, :
Задача: обернуть эту функцию в другую функцию, принимающую в себя тип переменной и саму переменную.
В Си это делается с помощью tagged union, примерно так:
struct v {
union {
int i;
long j;
};
int type;
} v1;
void function my_function (v1 *data) {
if (data->type == TYPE_INT) {
dbus_message_append_args(connection, type, data->i, DBUS_TYPE_INT);
} else if (data->type == TYPE_LONG) {
dbus_message_append_args(connection, type, data->j, DBUS_TYPE_LONG);
}
}
либо, если тег у тебя уже есть, то простой union.
Исправление Lrrr, :
Задача: обернуть эту функцию в другую функцию, принимающую в себя тип переменной и саму переменную.
В Си это делается с помощью tagged union, примерно так:
struct v {
union {
int i;
long j;
};
int type;
} v1;
void function my_function (v1 *data) {
if (data->type == TYPE_INT) {
dbus_message_append_args(connection, type, data->i, DBUS_TYPE_INT);
} else if (data->type == TYPE_LONG) {
dbus_message_append_args(connection, type, data->j, DBUS_TYPE_LONG);
}
}
Исходная версия Lrrr, :
Задача: обернуть эту функцию в другую функцию, принимающую в себя тип переменной и саму переменную.
В Си это делается с помощью tagged union, примерно так:
struct v {
union {
int i;
long j;
};
int type;
} v1;
void function my_function (int type, v1 *data) {
if (data->type == TYPE_INT) {
dbus_message_append_args(connection, type, data->i, DBUS_TYPE_INT);
} else if (data->type == TYPE_LONG) {
dbus_message_append_args(connection, type, data->j, DBUS_TYPE_LONG);
}
}