LINUX.ORG.RU

gtk va_list


0

0

Мне нужно использовать динамический ListStore, т.е. я не знаю до вызова этой моей ф-ции что будет содержать var_args.
Кто нибудь может привести пример использвания этой ф-ции :
void gtk_list_store_set_valist (GtkListStore *list_store, GtkTreeIter *iter, va_list var_args);

anonymous

А gtk здесь при чем, это скорее на знание C?

static void
some_function (GtkTreeModel *model, GtkTreeIter *iter, ...)
{
  va_list args;

  va_start (args, iter);
  gtk_list_store_set_valist (GTK_LIST_STORE(model), iter, args);
  va_end (args);
                                                                             
  return;
}

anonymous
()
Ответ на: комментарий от anonymous

Т.е. получается что эту ф-цию можно вызывать только из ф-ции с переменным числом аргументов? А можно как-нибудь подготовить эту переменную из ф-ции с фиксированным кол-вом аргументов? Просто мне нужно заполнять GtkListStore причем я не знаю заранее сколько колонок и какого типа будет в нем.

anonymous
()
Ответ на: комментарий от anonymous

Можно извратиться, но платформно-независимо сделать это не получиться - va_list можно создать, только с использование внутренних функций gcc, и то это будет не очень корректно.

Способы решения проблемы я вижу такие -

1. Написать свою модель (реализацию GtkTreeModel) с более удобными функциями доступа.

2. Использовать циклы. (Тоже решение, пусть и не красиво, зато работает)

for (i=0; i<n; i++) gtk_list_store_set (model, iter, i, data[i], -1);

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.