Справочное описание 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