| |
| Справочное описание GLib | ||||
|---|---|---|---|---|
#include <glib.h>
GQueue;
GQueue* g_queue_new (void);
void g_queue_free (GQueue *queue);
gboolean g_queue_is_empty (GQueue *queue);
guint g_queue_get_length (GQueue *queue);
void g_queue_reverse (GQueue *queue);
GQueue* g_queue_copy (GQueue *queue);
void g_queue_foreach (GQueue *queue,
GFunc func,
gpointer user_data);
GList* g_queue_find (GQueue *queue,
gconstpointer data);
GList* g_queue_find_custom (GQueue *queue,
gconstpointer data,
GCompareFunc func);
void g_queue_sort (GQueue *queue,
GCompareDataFunc compare_func,
gpointer user_data);
void g_queue_push_head (GQueue *queue,
gpointer data);
void g_queue_push_tail (GQueue *queue,
gpointer data);
void g_queue_push_nth (GQueue *queue,
gpointer data,
gint n);
gpointer g_queue_pop_head (GQueue *queue);
gpointer g_queue_pop_tail (GQueue *queue);
gpointer g_queue_pop_nth (GQueue *queue,
guint n);
gpointer g_queue_peek_head (GQueue *queue);
gpointer g_queue_peek_tail (GQueue *queue);
gpointer g_queue_peek_nth (GQueue *queue,
guint n);
gint g_queue_index (GQueue *queue,
gconstpointer data);
void g_queue_remove (GQueue *queue,
gconstpointer data);
void g_queue_remove_all (GQueue *queue,
gconstpointer data);
void g_queue_insert_before (GQueue *queue,
GList *sibling,
gpointer data);
void g_queue_insert_after (GQueue *queue,
GList *sibling,
gpointer data);
void g_queue_insert_sorted (GQueue *queue,
gpointer data,
GCompareDataFunc func,
gpointer user_data);
void g_queue_push_head_link (GQueue *queue,
GList *link_);
void g_queue_push_tail_link (GQueue *queue,
GList *link_);
void g_queue_push_nth_link (GQueue *queue,
gint n,
GList *link_);
GList* g_queue_pop_head_link (GQueue *queue);
GList* g_queue_pop_tail_link (GQueue *queue);
GList* g_queue_pop_nth_link (GQueue *queue,
guint n);
GList* g_queue_peek_head_link (GQueue *queue);
GList* g_queue_peek_tail_link (GQueue *queue);
GList* g_queue_peek_nth_link (GQueue *queue,
guint n);
gint g_queue_link_index (GQueue *queue,
GList *link_);
void g_queue_unlink (GQueue *queue,
GList *link_);
void g_queue_delete_link (GQueue *queue,
GList *link_);
Структура GQueue и связанные с ней функции обеспечивают стандартную очередь структур данных. Внутренне, GQueue использует для хранения элементов те же структуры что и GList.
Данные содержащиеся в каждом элементе могут быть либо целочисленными значениями, используя Type Conversion Macros, или просто указатели на любой тип данных.
Для создания новой GQueue,
используйте g_queue_new().
Для добавления элементов, используйте g_queue_push_head(), g_queue_push_head_link(),
g_queue_push_tail() and g_queue_push_tail_link().
Для удаления элементов, используйте g_queue_pop_head() и g_queue_pop_tail().
Для освобождения элементов очереди, используйте g_queue_free().
typedef struct {
GList *head;
GList *tail;
guint length;
} GQueue;
Содержит общедоступные поля Queue.
void g_queue_free (GQueue *queue);
Освобождает память распределённую для GQueue.
queue : |
GQueue. |
guint g_queue_get_length (GQueue *queue);
Возвращает количество элементов в queue.
queue : |
GQueue |
| Возвращает : | Количество элементов в queue.
|
Начиная с версии 2.4
void g_queue_reverse (GQueue *queue);
Переворачивает направление элементов в queue.
queue : |
GQueue |
Начиная с версии 2.4
GQueue* g_queue_copy (GQueue *queue);
Копирует queue. Помните что это поверхностная копия. Если очередь содержит указатели на данные,
то указатели копируются, а фактические данные нет.
queue : |
GQueue |
| Возвращает : | копия queue
|
Начиная с версии 2.4
void g_queue_foreach (GQueue *queue, GFunc func, gpointer user_data);
Вызывает функцию func для каждого элемента в очереди помещая
user_data в функцию.
queue : |
GQueue |
func : |
функция вызываемая для каждого элемента данных |
user_data : |
пользовательские данные помещаемые в func
|
Начиная с версии 2.4
GList* g_queue_find (GQueue *queue, gconstpointer data);
Находит первую связь в queue которая содержит data.
queue : |
GQueue |
data : |
данные для поиска |
| Возвращает : | Первая связь в queue которая содержит data.
|
Начиная с версии 2.4
GList* g_queue_find_custom (GQueue *queue, gconstpointer data, GCompareFunc func);
Находит элемент в GQueue, используя полученную функцию для поиска желаемого элемента. Она передвигается через очередь, вызывая полученную функцию которая должна вернуть 0 когда желаемый элемент найден. Функция принимает два аргумента gconstpointer, элементы данных GQueue как первый аргумент и полученные пользовательские данные как второй аргумент.
queue : |
GQueue |
data : |
пользовательские данные помещаемые в func
|
func : |
GCompareFunc вызываемая для каждого элемента. Она должна вернуть 0 когда желаемый элемент найден. |
| Возвращает : | Найденный элемент, или NULL если не найден.
|
Начиная с версии 2.4
void g_queue_sort (GQueue *queue, GCompareDataFunc compare_func, gpointer user_data);
Сортирует queue используя compare_func.
queue : |
GQueue |
compare_func : |
GCompareDataFunc используемая для сортировки
queue. В эту функцию помещаются два элемента очереди и она должна вернуть 0 если они равны,
отрицательное значение если первый располагается перед вторым, а положительное если второй располагается перед первым.
|
user_data : |
пользовательские данные помещаемые в compare_func
|
Начиная с версии 2.4
void g_queue_push_head (GQueue *queue, gpointer data);
Добавляет новый элемент первым в очередь.
queue : |
GQueue. |
data : |
данные для нового элемента. |
void g_queue_push_tail (GQueue *queue, gpointer data);
Добавляет новый элемент в конец очереди.
queue : |
GQueue. |
data : |
данные для нового элемента. |
void g_queue_push_nth (GQueue *queue, gpointer data, gint n);
Вставляет новый элемент в queue в указанную позицию.
queue : |
GQueue |
data : |
данные для нового элемента |
n : |
позиция расположения нового элемента. Если n отрицательное или
больше чем число элементов в queue, элемент добавляемый в конец очереди.
|
Начиная с версии 2.4
gpointer g_queue_pop_tail (GQueue *queue);
Удаляет последний элемент из очереди.
gpointer g_queue_pop_nth (GQueue *queue, guint n);
Удаляет n элемент в queue.
queue : |
GQueue |
n : |
позиция элемента. |
| Возвращает : | данные элемента, или NULL
если n выходит за пределы queue.
|
Начиная с версии 2.4
gpointer g_queue_peek_tail (GQueue *queue);
Возвращает последний элемент в очереди.
gpointer g_queue_peek_nth (GQueue *queue, guint n);
Возвращает n элемент в queue.
queue : |
GQueue |
n : |
позиция элемента. |
| Возвращает : | Данные для n элемента в queue,
или NULL если n
выходит за пределы queue.
|
Начиная с версии 2.4
gint g_queue_index (GQueue *queue, gconstpointer data);
Возвращает позицию первого элемента в queue который содержит data.
queue : |
GQueue |
data : |
данные для поиска. |
| Возвращает : | Позиция первого элемента в queue который содержит data,
или -1 если нет элемента в queue содержащего data.
|
Начиная с версии 2.4
void g_queue_remove (GQueue *queue, gconstpointer data);
Удаляет первый элемент в queue который содержит data.
queue : |
GQueue |
data : |
удаляемые данные. |
Начиная с версии 2.4
void g_queue_remove_all (GQueue *queue, gconstpointer data);
Удаляет все элементы в queue которые содержат data.
queue : |
GQueue |
data : |
данные для удаления |
Начиная с версии 2.4
void g_queue_insert_before (GQueue *queue, GList *sibling, gpointer data);
Вставляет data в queue перед
sibling.
sibling должен быть частью queue.
Начиная с версии 2.4
void g_queue_insert_after (GQueue *queue, GList *sibling, gpointer data);
Вставляет data в queue после
sibling
sibling должен быть частью queue
Начиная с версии 2.4
void g_queue_insert_sorted (GQueue *queue, gpointer data, GCompareDataFunc func, gpointer user_data);
Вставляет data в queue используя
func для определения новой позиции.
queue : |
GQueue |
data : |
вставляемые данные |
func : |
GCompareDataFunc используется для сравнения
элементов в очереди. Она вызывается с двумя элементами, queue и
user_data. Должна вернуть 0 если элементы равны, отрицательное значение если первый
элемент располагается перед вторым, а положительное значение если второй элемент располагается перед первым.
|
user_data : |
пользовательские данные помещаемые в func.
|
Начиная с версии 2.4
void g_queue_push_head_link (GQueue *queue, GList *link_);
Добавляет новый элемент первым в очередь.
void g_queue_push_tail_link (GQueue *queue, GList *link_);
Добавляет новый элемент в конец очереди.
void g_queue_push_nth_link (GQueue *queue, gint n, GList *link_);
Вставляет link в полученную позицию queue.
queue : |
GQueue |
n : |
позиция для вставки узла. Если отрицательное или больше чем количество элементов в
queue, узел добавляется в конец
queue.
|
link_ : |
узел добавляемый в queue
|
Начиная с версии 2.4
GList* g_queue_pop_head_link (GQueue *queue);
Удаляет первый элемент в очереди.
GList* g_queue_pop_tail_link (GQueue *queue);
Удаляет последний элемент в очереди.
GList* g_queue_pop_nth_link (GQueue *queue, guint n);
Удаляет и возвращает узел в полученной позиции.
Начиная с версии 2.4
GList* g_queue_peek_head_link (GQueue *queue);
Возвращает первый узел в queue
Начиная с версии 2.4
GList* g_queue_peek_tail_link (GQueue *queue);
Возвращает последний узел queue.
Начиная с версии 2.4
GList* g_queue_peek_nth_link (GQueue *queue, guint n);
Возвращает узел из полученной позиции
queue : |
GQueue |
n : |
позиция узла |
| Возвращает : | узел из n-ной позиции, или
NULL
если n выходит за пределы очереди
|
Начиная с версии 2.4
gint g_queue_link_index (GQueue *queue, GList *link_);
Возвращает позицию link_ в queue.
queue : |
Gqueue |
link_ : |
элемент GList |
| Возвращает : | позиция link_, или -1 если узел не часть queue
|
Начиная с версии 2.4
void g_queue_unlink (GQueue *queue, GList *link_);
Сбрасывает link_ так чтобы он не был больше частью queue.
Узел не освобождается.
link_ должен быть частью queue,
Начиная с версии 2.4
|
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |