Generic Values
Generic Values — Полиморфный тип который может содержать значения любых других типов
Краткое описание
#include <glib-object.h>
#define G_VALUE_HOLDS (value,type)
#define G_VALUE_TYPE (value)
#define G_VALUE_TYPE_NAME (value)
#define G_TYPE_IS_VALUE (type)
#define G_TYPE_IS_VALUE_ABSTRACT (type)
#define G_IS_VALUE (value)
GValue;
#define G_TYPE_VALUE
#define G_TYPE_VALUE_ARRAY
GValue* g_value_init (GValue *value,
GType g_type);
void g_value_copy (const GValue *src_value,
GValue *dest_value);
GValue* g_value_reset (GValue *value);
void g_value_unset (GValue *value);
void g_value_set_instance (GValue *value,
gpointer instance);
gboolean g_value_fits_pointer (const GValue *value);
gpointer g_value_peek_pointer (const GValue *value);
gboolean g_value_type_compatible (GType src_type,
GType dest_type);
gboolean g_value_type_transformable (GType src_type,
GType dest_type);
gboolean g_value_transform (const GValue *src_value,
GValue *dest_value);
void (*GValueTransform) (const GValue *src_value,
GValue *dest_value);
void g_value_register_transform_func (GType src_type,
GType dest_type,
GValueTransform transform_func);
gchar* g_strdup_value_contents (const GValue *value);
Описание
Структура GValue в общем переменная-контейнер которая содержит идентификатор типа и определённое значение этого типа. Идентификатор типа внутри сструктуры GValue всегда определяет тип связанного с ним значения. Для создания неопределённой сструктуры GValue, просто создаётся структура GValue заполненная нулями. Для инициализации GValue, используйте функцию g_value_init(). GValue не может использоваться пока не инициализирована. Основные типовые операции (такие как копирование и освобождение) определяются в GTypeValueTable связанной с типовым ID хранящемся в GValue. Другие GValue операции (такие как преобразование значений между типами) обеспечивает этот интерфейс.
Детали
G_VALUE_HOLDS()
Возвращает TRUE если value содержит значение type. Этот макрос также проконтролирует value != NULL и выдаст предупреждение если проверка не удалась.
G_VALUE_TYPE()
Возвращает идентификатор типа value.
value :
Структура GValue.
G_VALUE_TYPE_NAME()
Возвращает типовое имя value.
value :
Структура GValue.
G_TYPE_IS_VALUE()
Возвращает может ли помещенный типовой ID использоваться для g_value_init(). Таким образом, этот макрос проверяет обеспечивает ли реализация функции GTypeValueTableнеобходимые для создания типа GValue.
G_TYPE_IS_VALUE_ABSTRACT()
Возвращает TRUE если type это абстрактное значение типа. Абстрактное значение типа входит в таблицу значений, но не может использоваться для g_value_init() и обычно используется как абстрактный базовый тип для производных типовых значений.
type :
Значение GType.
G_IS_VALUE()
Возвращает TRUE если value это допустимая и инициализированная структура GValue.
value :
Структура GValue.
GValue
Не прозрачная структура для содержания разных типовых значений. Данные в структуре являются закрытым контекстом: доступ к ним осуществляется только с помощью функций внутри сструктуры GTypeValueTable, или реализуются g_value_*() API. То есть части кода которые реализуют новые базовые типы. Пользователи GValue не могут предполагать о том как данные хранятся внутри 2 элементов объединения data, а к члену g_type можно обращаться только через макрос G_VALUE_TYPE().
G_TYPE_VALUE
Возвращает типовой ID типа "GValue" который является упаковочным типом, используемый для размещения указателей на GValues.
G_TYPE_VALUE_ARRAY
Возвращает типовой ID типа "GValueArray" который является упаковочным типом, используемый для размещения указателей на GValueArrays.
g_value_init ()
Инициализирует value которое по умолчанию является значением type.
g_value_copy ()
Копирует значение src_value в dest_value.
g_value_reset ()
Очищает текущее значение в value и сбрасывает его в значение по умолчанию (как будто значение было только что инициализировано).
g_value_unset ()
Очищает текущее значение в value и "отменяет установку" ("unsets") типа, это высвобождает все ресурсы связанные с этой структурой GValue. Сбросить значение тоже самое что заполненить нулями (zero-filled) структуру GValue.
value :
Инициализированная структура GValue.
g_value_set_instance ()
Устанавливает value из инстанциируемого типа через value_table's функцию collect_value().
value :
Инициализированная структура GValue.
instance :
экземпляр
g_value_fits_pointer ()
Определяет будет ли value соответствовать размеру значения указателя. Это внутренняя функция введённая главным образом для C маршаллеров.
g_value_peek_pointer ()
Возвращает содержимое значения как указатель. Эта функция утверждает что g_value_fits_pointer() возвратит TRUE для помещённого значения. Это внутренняя функция введённая главным образом для C маршаллеров.
g_value_type_compatible ()
Возвращает может ли GValue типа src_type быть скопирована в GValue типа dest_type.
src_type :
исходный тип для копирования.
dest_type :
целевой тип для копирования.
Возвращает :
TRUE если g_value_copy() возможно использовать с src_type и dest_type.
g_value_type_transformable ()
Проверяет может ли g_value_transform() преобразовать значения типа src_type в значения типа dest_type.
g_value_transform ()
Пробует преобразовать содержимое src_value в тип подходящий для сохранения в dest_value, например преобразовать значение G_TYPE_INT в значение G_TYPE_FLOAT. Выполнение преобразования между значениями типов может привести к серьёзной программной ошибке (lossage). Особенно преобразование в строки может привести к непредсказуемым результатам на которые нельзя положиться в производственном коде (такие как значение rcfile или преобразование в последовательную форму свойства объекта).
src_value :
Исходное значение.
dest_value :
Целевое значение.
Возвращает :
Найдено ли правило преобразование и может ли быть применено. После неудачной попытки преобразования, dest_value остаётся нетронутым.
GValueTransform ()
Функция преобразования типовых значений которая может быть зарегистрирована с помощью g_value_register_transform_func().
src_value :
Исходное значение.
dest_value :
Целевое значение.
g_value_register_transform_func ()
Регистрирует функцию преобразования значений для использования в g_value_transform(). Предварительно зарегистрированная функция для src_type и dest_type будет заменена.
src_type :
Исходное значение.
dest_type :
Целевое значение.
transform_func :
функция которая преобразует значение типа src_type в значение типа dest_type
g_strdup_value_contents ()
Возвращает вновь рапределённую строку, которая описывает содержимое GValue. Основная цель этой функции состоит в том чтобы описать содержимое GValue для отладочного вывода, способ которым описывается содержимое может меняться в разных версиях GLib.
value :
GValue контекст которой описывается.
Возвращает :
Вновь распределённая строка.
Смотрите также
Базовые типы которые всегда поддерживают GValue операции и поэтому могут использоваться как тип инициализации для g_value_init() определены отдельным интерфейсом. Детали смотрите в Standard Values API.
Last updated
Was this helpful?