GtkBitset
GtkBitset — Множества целых чисел
Функции
Типы и значения
| GtkBitset | |
| struct | GtkBitsetIter |
Иерархия объектов
GBoxed ╰── GtkBitset
Файлы
#include <gtk/gtk.h>
Описание
GtkBitset — это структура данных для представления множества целых беззнаковых чисел. Другое название этой структуры — «битовая карта».
Текущая реализация основана на роaring битовых картах.
Битовая карта позволяет добавлять множество целых чисел и поддерживает операции над множествами, такие как объединение, пересечение и проверки на равенство или наличие значения в множестве. GtkBitset также содержит различные функции для запроса метаданных о битовой карте, такие как минимальное или максимальное значения или её размер.
Самый быстрый способ итерировать значения в битовой карте — это GtkBitsetIter.
Основной случай использования GtkBitset — реализация сложных выборов для GtkSelectionModel.
Функции
gtk_bitset_ref ()
GtkBitset *
gtk_bitset_ref (GtkBitset *self); Приобретает ссылку на заданный GtkBitset.
Параметры
self | a GtkBitset. | [allow-none] |
gtk_bitset_unref ()
void
gtk_bitset_unref (GtkBitset *self); Освобождает ссылку на заданный GtkBitset.
Если ссылка была последней, то ресурсы, связанные с self, освобождаются.
Параметры
self | a GtkBitset. | [allow-none] |
gtk_bitset_new_empty ()
GtkBitset *
gtk_bitset_new_empty (void); Создаёт новый пустой битовый набор.
Возвращает
Новый пустой битовый набор
gtk_bitset_new_range ()
GtkBitset * gtk_bitset_new_range (guint start,guint n_items);
Создаёт битовый набор с заданным диапазоном.
Параметры
start | начальное значение для добавления | |
n_items | количество последовательных значений для добавления |
Возвращает
Новый битовый набор
gtk_bitset_copy ()
GtkBitset *
gtk_bitset_copy (const GtkBitset *self); Создаёт копию self .
Параметры
self |
Возвращает
Новый битовый набор, содержащий те же значения, что и self .
[transfer full]
gtk_bitset_contains ()
gboolean gtk_bitset_contains (const GtkBitset *self,guint value);
Проверяет, было ли заданное value добавлено в self
Параметры
self | ||
value | значение для проверки |
Возвращает
TRUE если self содержит value
gtk_bitset_is_empty ()
gboolean
gtk_bitset_is_empty (const GtkBitset *self); Проверяет, содержит ли битовый набор какие-либо значения.
Параметры
self |
Возвращает
TRUE если self пуст
gtk_bitset_equals ()
gboolean gtk_bitset_equals (const GtkBitset *self,const GtkBitset *other);
Возвращает TRUE если self и other содержат одинаковые значения.
Возвращает
TRUE если self и other содержат одинаковые значения
gtk_bitset_get_minimum ()
guint
gtk_bitset_get_minimum (const GtkBitset *self); Возвращает наименьшее значение в self . Если self пуст, возвращается G_MAXUINT.
Параметры
self |
Возвращает
Наименьшее значение в self
gtk_bitset_get_maximum ()
guint
gtk_bitset_get_maximum (const GtkBitset *self); Возвращает наибольшее значение в self . Если self пуст, возвращается 0.
Параметры
self |
Возвращает
Наибольшее значение в self
gtk_bitset_get_size ()
guint64
gtk_bitset_get_size (const GtkBitset *self); Получает количество значений, добавленных в набор. Например, если набор пуст, возвращается 0.
Обратите внимание, что эта функция возвращает guint64, потому что, когда все значения установлены, возвращаемое значение равно G_MAXUINT + 1. Убедитесь, что вы используете 64-битный тип, если не уверены, что это не может произойти (в случае с GListModel это невозможно).
Параметры
self |
Возвращает
Количество значений в наборе.
gtk_bitset_get_size_in_range ()
guint64 gtk_bitset_get_size_in_range (const GtkBitset *self,guint first,guint last);
Получает количество значений, которые являются частью набора от first до last (включительно).
Обратите внимание, что эта функция возвращает guint64, потому что, когда все значения установлены, возвращаемое значение равно G_MAXUINT + 1. Убедитесь, что вы используете 64-битный тип, если не уверены, что это не может произойти (в случае с GListModel это невозможно).
Параметры
self | ||
first | первый элемент для включения | |
last | последний элемент для включения |
Возвращает
Количество значений в наборе от first до last .
gtk_bitset_remove_all ()
void
gtk_bitset_remove_all (GtkBitset *self); Удаляет все значения из набора битов, делая его пустым.
Параметры
self |
gtk_bitset_add ()
gboolean gtk_bitset_add (GtkBitset *self,guint value);
Добавляет value в self, если он в нём отсутствовал ранее.
Параметры
self | ||
value | значение для добавления |
Возвращает
TRUE если value отсутствовал в self и self был изменён.
gtk_bitset_remove ()
gboolean gtk_bitset_remove (GtkBitset *self,guint value);
Удаляет value из self, если он в нём присутствовал ранее.
Параметры
self | ||
value | значение для удаления |
Возвращает
TRUE если value присутствовал в self и self был изменён.
gtk_bitset_add_range ()
void gtk_bitset_add_range (GtkBitset *self,guint start,guint n_items);
Добавляет все значения от start (включительно) до start + n_items (исключительно) в self.
Параметры
self | ||
start | первое значение для добавления | |
n_items | количество последовательных значений для добавления |
gtk_bitset_remove_range ()
void gtk_bitset_remove_range (GtkBitset *self,guint start,guint n_items);
Удаляет все значения от start (включительно) до start + n_items (исключительно) в self.
Параметры
self | ||
start | первое значение для удаления | |
n_items | количество последовательных значений для удаления |
gtk_bitset_add_range_closed ()
void gtk_bitset_add_range_closed (GtkBitset *self,guint first,guint last);
Добавляет замкнутый интервал [first , last ], то есть first , last и все значения между ними. first должно быть меньше last.
Параметры
self | ||
first | первое значение для добавления | |
last | последнее значение для добавления |
gtk_bitset_remove_range_closed ()
void gtk_bitset_remove_range_closed (GtkBitset *self,guint first,guint last);
Удаляет замкнутый интервал [first , last ], то есть first , last и все значения между ними. first должно быть меньше last.
Параметры
self | ||
first | первое значение для удаления | |
last | последнее значение для удаления |
gtk_bitset_add_rectangle ()
void gtk_bitset_add_rectangle (GtkBitset *self,guint start,guint width,guint height,guint stride);
Рассматривает значения как двумерную булеву сетку с заданным stride и внутри этой сетки добавляет прямоугольник с заданной width и height.
Параметры
self | ||
start | первое значение для добавления | |
width | ширина прямоугольника | |
height | высота прямоугольника | |
stride | шаг строки сетки |
gtk_bitset-remove-rectangle ()
void gtk_bitset_remove_rectangle (GtkBitset *self,guint start,guint width,guint height,guint stride);
Рассматривает значения как двумерную булеву сетку с заданным stride и внутри этой сетки удаляет прямоугольник с заданной width и height.
Параметры
self | ||
start | первое значение для удаления | |
width | ширина прямоугольника | |
height | высота прямоугольника | |
stride | шаг строки сетки |
gtk_bitset_union ()
void gtk_bitset_union (GtkBitset *self,const GtkBitset *other);
Устанавливает self в объединение self и other, то есть добавляет все значения из other в self, если они там отсутствуют.
Разрешается, чтобы self и other были одним и тем же набором битов. В этом случае ничего не произойдёт.
gtk_bitset_intersect ()
void gtk_bitset_intersect (GtkBitset *self,const GtkBitset *other);
Устанавливает self в пересечение множеств self и other, то есть удаляет из self все значения, которые не являются частью other.
Разрешается, чтобы self и other были одним и тем же набором битов. В этом случае ничего не произойдёт.
gtk_bitset_subtract ()
void gtk_bitset_subtract (GtkBitset *self,const GtkBitset *other);
Устанавливает self в разность множеств other и self, то есть удаляет из self все значения, которые являются частью other.
Разрешается, чтобы self и other были одним и тем же набором битов. В этом случае множество станет пустым.
gtk_bitset_difference ()
void gtk_bitset_difference (GtkBitset *self,const GtkBitset *other);
Устанавливает self в симметрическую разность множеств self и other, то есть устанавливает self так, чтобы он содержал все значения, которые были либо в self, либо в other, но не в обоих. Эта операция также называется XOR.
Разрешается, чтобы self и other были одним и тем же набором битов. В этом случае множество станет пустым.
gtk_bitset_shift_left ()
void gtk_bitset_shift_left (GtkBitset *self,guint amount);
Сдвигает все значения в self влево на amount позиций. Значения, меньшие чем amount, отбрасываются.
Параметры
self | a $GtkBitset | |
amount | количество позиций сдвига влево |
gtk_bitset_shift_right ()
void gtk_bitset_shift_right (GtkBitset *self,guint amount);
Сдвигает все значения в self вправо на amount позиций. Значения, которые становятся слишком большими для хранения в guint, отбрасываются.
Параметры
self | a $GtkBitset | |
amount | количество позиций сдвига вправо |
gtk_bitset_splice ()
void gtk_bitset_splice (GtkBitset *self,guint position,guint removed,guint added);
Это вспомогательная функция для обработки GListModel, дублирующая сигнал “items-changed”.
Сначала она «вырезает» значения от position до removed из множества битов. То есть, она удаляет эти значения и сдвигает все большие значения влево на removed позиций.
Затем она «вставляет» новое пространство в множество, сдвигая все значения, большие чем position, вправо на added позиций. Это освобождает место, которое затем можно заполнить.
Параметры
self | ||
position | позиция для вырезания | |
removed | количество удаляемых значений | |
added | количество добавляемых значений |
gtk_bitset_iter_init_first ()
gboolean gtk_bitset_iter_init_first (GtkBitsetIter *iter,const GtkBitset *set,guint *value);
Инициализирует итератор для set и указывает его на первое значение в set. Если set пусто, возвращает FALSE, и value устанавливается в G_MAXUINT.
Параметры
iter | указатель на неинициализированный GtkBitsetIter. | [out] |
set | ||
value | Устанавливается в первое значение в | [out][optional] |
Возвращаемое значение
TRUE если set не пусто.
gtk_bitset_iter_init_last ()
gboolean gtk_bitset_iter_init_last (GtkBitsetIter *iter,const GtkBitset *set,guint *value);
Инициализирует итератор для set и указывает его на последнее значение в set. Если set пусто, возвращает FALSE.
Параметры
iter | указатель на неинициализированный GtkBitsetIter. | [out] |
set | ||
value | Устанавливается в последнее значение в | [out][optional] |
Возвращаемое значение
TRUE если set не пусто.
gtk_bitset_iter_init_at ()
gboolean gtk_bitset_iter_init_at (GtkBitsetIter *iter,const GtkBitset *set,guint target,guint *value);
Инициализирует iter для указания на target. Если target не найден, находит следующее значение после него. Если в set нет значения, большего или равного target, эта функция возвращает FALSE.
Параметры
iter | указатель на неинициализированный GtkBitsetIter. | [out] |
set | ||
target | целевое значение, с которого начать итерацию | |
value | Присваивается найденному значению в | [out][optional] |
Возвращает
TRUE если значение было найдено.
gtk_bitset_iter_next ()
gboolean gtk_bitset_iter_next (GtkBitsetIter *iter,guint *value);
Перемещает iter к следующему значению в наборе. Если он уже указывает на последнее значение в наборе, возвращается FALSE, и iter становится недействительным.
Параметры
iter | указатель на действительный GtkBitsetIter | |
value | Присваивается следующее значение. | [out][optional] |
Возвращает
TRUE если следующее значение существовало
gtk_bitset_iter_previous ()
gboolean gtk_bitset_iter_previous (GtkBitsetIter *iter,guint *value);
Перемещает iter к предыдущему значению в наборе. Если он уже указывает на первое значение в наборе, возвращается FALSE, и iter становится недействительным.
Параметры
iter | указатель на действительный GtkBitsetIter | |
value | Присваивается предыдущее значение. | [out][optional] |
Возвращает
TRUE если предыдущее значение существовало
gtk_bitset_iter_get_value ()
guint
gtk_bitset_iter_get_value (const GtkBitsetIter *iter); Возвращает текущее значение, на которое указывает iter.
Если iter недействителен и gtk_bitset_iter_is_valid() возвращает FALSE, эта функция возвращает 0.
Параметры
iter |
Возвращает
Текущее значение, на которое указывает iter
gtk_bitset_iter_is_valid ()
gboolean
gtk_bitset_iter_is_valid (const GtkBitsetIter *iter); Проверяет, указывает ли iter на действительное значение.
Параметры
iter |
Возвращает
TRUE если iter указывает на действительное значение
Типы и значения
GtkBitset
typedef struct _GtkBitset GtkBitset;
Структура GtkBitset содержит только данные, предназначенные для внутреннего использования.
struct GtkBitsetIter
struct GtkBitsetIter {
};
Непрозрачная, размещаемая в стеке структура для итерации по элементам GtkBitset. Прежде чем использовать GtkBitsetIter, её необходимо инициализировать с помощью gtk_bitset_iter_init_first(), gtk_bitset_iter_init_last() или gtk_bitset_iter_init_at().
См. также
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer-old.gnome.org/gtk4/4.0/GtkBitset.html