GObject
オブジェクトシステムとの関連で何らかの形で使われる列挙型や整数ベースのビットフィールド型(すなわち、全ての enum 型)。例えば、オブジェクトのプロパティの型など。一般にこれらの型の登録を行う初期化コードは glib-mkenumsというツールで自動生成され、別ファイルに格納される。
GObjectのマニュアル等はGLibとは別にあり、ライブラリファイルとしても別になっているが、ソースコードはGLibのソースツリー内にあって、GLibと共に配布されている。このため、GObjectのバージョン番号はGLibのものを使っており、GLibパッケージの一部とされることが多い(例えば、DebianではGObjectを libglib2.0 パッケージファミリに入れている)。
クラスと関連のない型を non-classed と称する。そのような型と何らかの rootクラスに対応した全ての型を総称して「基本型」と呼び、それ以外の型を「派生型」と呼ぶ。これらは比較的閉じた体系であり、一般ユーザーが独自の基本型を生成することはないものと想定されているが、生成は可能であり、GObject クラスに基づかないクラス階層を独自に作ることもできる。
GLib 2.9.2では、non-classed の基本型は以下の通りである。
空の型、C言語の void に対応。(G_TYPE_NONE)
C言語の char、int、long、64ビット整数に対応した型。(G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_INT64, G_TYPE_UINT64)
ブーリアン型。(G_TYPE_BOOLEAN)
列挙型とフラグ型。C言語の enum に対応するが、後者はビットフィールドにのみ使われる。(G_TYPE_ENUM, G_TYPE_FLAGS)
IEEE 754の単精度および倍精度の浮動小数点数。C言語の float と double に対応。(G_TYPE_FLOAT, G_TYPE_DOUBLE)
文字列型。C言語の char * に対応。
GObjectフレームワークの基盤として、汎用の動的型システム GType がある。GTypeシステムは全オブジェクトの実行時記述を保持し、各種言語バインディングを実現するグルーコードからそれを使うことができる。型システムは任意の単一継承クラス階層を扱え、同時にクラスでないデータ型も扱える(不透明ポインタ、文字列、各種サイズの整数と浮動小数点数など)。
GTypeは登録されている型に属する値のコピー、代入、破棄の方法を知っている。整数などの型ではこれらは自明だが、複雑なオブジェクトには参照カウントがあるものもあれば、(一部だが)参照カウントのないものもある。型システムが参照カウントのあるオブジェクトを「コピー」するとき、一般に単に参照カウントをインクリメントするだけである。しかし、参照カウントのないオブジェクト(例えば文字列)のコピーでは、メモリを確保して実際にコピーを生成する。
この基本機能を使って GValue が実装されている。これは汎用コンテナ型であり、型システムが把握している任意の型の値を保持できる。このようなコンテナは、全てのネイティブ値をそのような型タグコンテナに格納する動的型付き言語とやりとりする際に特に便利である。