GLib
  • Initial page
  • I. Концепция
    • Background
    • Типы данных и программирование
  • Динамическая система типов Glib
    • Введение
    • Функции копирования
    • Соглашения
    • Неинстанциируемые не классифицированные базовые типы
    • Инстанциируемые классифицируемые типы: объекты
    • Неинстанциированные классифицированные типы: Интерфейсы.
  • Основной класс GObject
    • Введение
    • Инстанциация объекта
    • Объектное управление памятью
    • Свойства объекта
  • Система сообщений GObject
    • Замыкания
    • Сигналы
  • II. Описание API
    • GType
    • GTypePlugin
    • GTypeModule
    • GObject часть 1
    • GObject часть 2
    • Enums and Flags
    • GBoxed
    • Generic Values
    • Parameters and Values часть 1
    • Parameters and Values часть 2
    • Parameters and Values часть 3, ага
    • Value arrays
  • III. Описание инструментов
    • glib-mkenums
    • glib-genmarshal
    • gobject-query
  • IV. Руководство
    • Как определить и реализовать новый GObject?
    • Объектные методы
    • Как определять и реализовывать Интерфейсы?
    • Как создавать и использовать сигналы
    • Как пользователи могут злоупотреблять сигналами (и почему некоторые думают что это хорошо)
  • V. Об инструментах
    • Об инструментах
  • GTK 4
    • GtkApplication и GtkApplicationWindow
    • Widgets
Powered by GitBook
On this page
  • Краткое описание
  • Описание
  • Детали
  • Смотрите также

Was this helpful?

  1. II. Описание API

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);

Описание

Детали

G_VALUE_HOLDS()

#define G_VALUE_HOLDS(value,type)	(G_TYPE_CHECK_VALUE_TYPE ((value), (type)))

value :

type :

G_VALUE_TYPE()

#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)

Возвращает идентификатор типа value.

value :

G_VALUE_TYPE_NAME()

#define	G_VALUE_TYPE_NAME(value)	(g_type_name (G_VALUE_TYPE (value)))

Возвращает типовое имя value.

value :

G_TYPE_IS_VALUE()

#define	G_TYPE_IS_VALUE(type)		(g_type_check_is_value_type (type))

type :

Возвращает :

G_TYPE_IS_VALUE_ABSTRACT()

#define G_TYPE_IS_VALUE_ABSTRACT(type)          (g_type_test_flags ((type), G_TYPE_FLAG_VALUE_ABSTRACT))

type :

G_IS_VALUE()

#define	G_IS_VALUE(value)		(G_TYPE_CHECK_VALUE (value))

value :

GValue

typedef struct {
} GValue;

G_TYPE_VALUE

#define	G_TYPE_VALUE		(g_value_get_type ())

Возвращает типовой ID типа "GValue" который является упаковочным типом, используемый для размещения указателей на GValues.

G_TYPE_VALUE_ARRAY

#define	G_TYPE_VALUE_ARRAY	(g_value_array_get_type ())

Возвращает типовой ID типа "GValueArray" который является упаковочным типом, используемый для размещения указателей на GValueArrays.

g_value_init ()

GValue*             g_value_init                        (GValue *value,
                                                         GType g_type);

Инициализирует value которое по умолчанию является значением type.

value :

g_type :

Возвращает :

g_value_copy ()

void                g_value_copy                        (const GValue *src_value,
                                                         GValue *dest_value);

Копирует значение src_value в dest_value.

src_value :

dest_value :

g_value_reset ()

GValue*             g_value_reset                       (GValue *value);

Очищает текущее значение в value и сбрасывает его в значение по умолчанию (как будто значение было только что инициализировано).

value :

Возвращает :

g_value_unset ()

void                g_value_unset                       (GValue *value);

value :

g_value_set_instance ()

void                g_value_set_instance                (GValue *value,
                                                         gpointer instance);

Устанавливает value из инстанциируемого типа через value_table's функцию collect_value().

value :

instance :

экземпляр

g_value_fits_pointer ()

gboolean            g_value_fits_pointer                (const GValue *value);

Определяет будет ли value соответствовать размеру значения указателя. Это внутренняя функция введённая главным образом для C маршаллеров.

value :

Возвращает :

g_value_peek_pointer ()

gpointer            g_value_peek_pointer                (const GValue *value);

value :

Возвращает :

g_value_type_compatible ()

gboolean            g_value_type_compatible             (GType src_type,
                                                         GType dest_type);

src_type :

исходный тип для копирования.

dest_type :

целевой тип для копирования.

Возвращает :

g_value_type_transformable ()

gboolean            g_value_type_transformable          (GType src_type,
                                                         GType dest_type);

src_type :

Исходный тип.

dest_type :

Целевой тип.

Возвращает :

g_value_transform ()

gboolean            g_value_transform                   (const GValue *src_value,
                                                         GValue *dest_value);

src_value :

Исходное значение.

dest_value :

Целевое значение.

Возвращает :

Найдено ли правило преобразование и может ли быть применено. После неудачной попытки преобразования, dest_value остаётся нетронутым.

GValueTransform ()

void                (*GValueTransform)                  (const GValue *src_value,
                                                         GValue *dest_value);

src_value :

Исходное значение.

dest_value :

Целевое значение.

g_value_register_transform_func ()

void                g_value_register_transform_func     (GType src_type,
                                                         GType dest_type,
                                                         GValueTransform transform_func);

src_type :

Исходное значение.

dest_type :

Целевое значение.

transform_func :

функция которая преобразует значение типа src_type в значение типа dest_type

g_strdup_value_contents ()

gchar*              g_strdup_value_contents             (const GValue *value);

value :

Возвращает :

Вновь распределённая строка.

Смотрите также

PreviousGBoxedNextParameters and Values часть 1

Last updated 4 years ago

Was this helpful?

Структура в общем переменная-контейнер которая содержит идентификатор типа и определённое значение этого типа. Идентификатор типа внутри сструктуры всегда определяет тип связанного с ним значения. Для создания неопределённой сструктуры , просто создаётся структура заполненная нулями. Для инициализации , используйте функцию . не может использоваться пока не инициализирована. Основные типовые операции (такие как копирование и освобождение) определяются в связанной с типовым ID хранящемся в . Другие операции (такие как преобразование значений между типами) обеспечивает этот интерфейс.

Возвращает если value содержит значение type. Этот макрос также проконтролирует value != и выдаст предупреждение если проверка не удалась.

Структура .

Значение .

Структура .

Структура .

Возвращает может ли помещенный типовой ID использоваться для . Таким образом, этот макрос проверяет обеспечивает ли реализация функции необходимые для создания типа .

Значение .

Соответствует ли type типу .

Возвращает если type это абстрактное значение типа. Абстрактное значение типа входит в таблицу значений, но не может использоваться для и обычно используется как абстрактный базовый тип для производных типовых значений.

Значение .

Возвращает если value это допустимая и инициализированная структура .

Структура .

Не прозрачная структура для содержания разных типовых значений. Данные в структуре являются закрытым контекстом: доступ к ним осуществляется только с помощью функций внутри сструктуры , или реализуются g_value_*() API. То есть части кода которые реализуют новые базовые типы. Пользователи не могут предполагать о том как данные хранятся внутри 2 элементов объединения data, а к члену g_type можно обращаться только через макрос .

Заполняет нулями (uninitialized) структуру .

Тип содержащий значения.

Помещённую структуру

Инициализирует структуру .

Инициализируемая структура того же типа что и src_value.

Инициализированная структура .

Помещённую структуру

Очищает текущее значение в value и "отменяет установку" ("unsets") типа, это высвобождает все ресурсы связанные с этой структурой GValue. Сбросить значение тоже самое что заполненить нулями (zero-filled) структуру .

Инициализированная структура .

Инициализированная структура .

Инициализированная структура .

если value будет соответствовать значению указателя.

Возвращает содержимое значения как указатель. Эта функция утверждает что возвратит для помещённого значения. Это внутренняя функция введённая главным образом для C маршаллеров.

Инициализированная структура .

если value будет соответствовать значению указателя.

Возвращает может ли типа src_type быть скопирована в типа dest_type.

если возможно использовать с src_type и dest_type.

Проверяет может ли преобразовать значения типа src_type в значения типа dest_type.

если преобразование возможно, иначе .

Пробует преобразовать содержимое src_value в тип подходящий для сохранения в dest_value, например преобразовать значение в значение . Выполнение преобразования между значениями типов может привести к серьёзной программной ошибке (lossage). Особенно преобразование в строки может привести к непредсказуемым результатам на которые нельзя положиться в производственном коде (такие как значение rcfile или преобразование в последовательную форму свойства объекта).

Функция преобразования типовых значений которая может быть зарегистрирована с помощью .

Регистрирует функцию преобразования значений для использования в . Предварительно зарегистрированная функция для src_type и dest_type будет заменена.

Возвращает вновь рапределённую строку, которая описывает содержимое . Основная цель этой функции состоит в том чтобы описать содержимое для отладочного вывода, способ которым описывается содержимое может меняться в разных версиях GLib.

контекст которой описывается.

Базовые типы которые всегда поддерживают операции и поэтому могут использоваться как тип инициализации для определены отдельным интерфейсом. Детали смотрите в .

GValue
GValue
GValue
GValue
GValue
g_value_init()
GValue
GTypeValueTable
GValue
GValue
TRUE
NULL
g_value_init()
GTypeValueTable
GValue
TRUE
g_value_init()
TRUE
GValue
GTypeValueTable
GValue
G_VALUE_TYPE()
GValue
g_value_fits_pointer()
TRUE
GValue
GValue
g_value_transform()
G_TYPE_INT
G_TYPE_FLOAT
g_value_register_transform_func()
g_value_transform()
GValue
GValue
GValue
g_value_init()
Standard Values API
GValue
GType
GValue
GValue
GType
GValue
GType
GValue
GValue
GValue
GValue
GValue
GValue
GValue
GValue
GValue
GValue
GValue
TRUE
GValue
TRUE
TRUE
g_value_copy()
TRUE
FALSE
GValue