Тип, которым манипулирует система типов Glib, намного более общий, чем тот который обычно подразумевается как объектный тип (Object type). Это лучше всего демонстрирует ниже показанная структура и функции используемые для регистрации типа в системе типов.
и являются C функциями, определёнными в gtype.h и реализованными в gtype.c которые вы должны использовать для регистрации новых в программной системе типов. Маловероятно что вам потребуется использовать (вы должны бить Tim Janik, чтобы делать это) но если вам это нужно, последний раздел разъясняет как создаются новые базовые типы данных. []
Базовые типы данных являются высшим уровнем типов которые не происходят от других типов в то время как обычные типы происходят из других типов. После инициализации , система типов не только инициализирует внутренние сструктуры данных, но и регистрирует множество основных типов: некоторые из них являются базовыми типами данных. Остальные являются типами полученными из этих базовых типов.
размер класса: поле class_size в .
функции инициализации класса (C++ конструктор): поля base_init и class_init в .
функции уничтожения класса (C++ деструктор): поля base_finalize и class_finalize в .
размер экземпляра (C++ параметр нового): поле instance_size в .
instanciation policy (C++ тип нового оператора): поле n_preallocs в .
функции копирования (C++ операторы копирования): поле value_table в .
флаги характеризующие тип: .
Базовые типы данных определяются так же набором которые хранятся в . Небазовые типы кроме всего прочего определяются их родителем, который помещается как параметр parent_type в и .