from https://developer.gnome.org

원본 문서를 header/source 파일로 나누어서 보기 쉽게 정리해 보았습니다.

Header 파일

Header 파일을 작성해서 외부로 노출되는 새로운 type을 생성하고자 할 때, 아래의 간단한 코드가 사용됩니다.

#define VIEWER_TYPE_FILE viewer_file_get_type ()
G_DECLARE_FINAL_TYPE (ViewerFile, viewer_file, VIEWER, FILE, GObject)

이는 쉬운 코드 작성을 위해 제공되는 macro들을 이용한 것으로, 내부적인 구현은 다음의 표준을 따릅니다.

이름 표준

실제 header에 작성되는 code 표준

이들 매크로들의 구현은 꽤 직관적입니다: 많은 수의 쉬운 사용을 위한 매크로들이 gtype.h에 의해 제공됩니다.

Source 파일

코드에 특별한 요구사항이 없는 한, class를 정의(define)하기 위해 아래와 같이 G_DEFINE_TYPE 매크로를 사용할 수 있습니다.

G_DEFINE_TYPE (ViewerFile, viewer_file, G_TYPE_OBJECT)

그렇지 않은 경우 viewer_file_get_type 함수를 아래와 같이 직접 구현해야 합니다:

GType viewer_file_get_type (void)
{
  static GType type = 0;
  if (type == 0) {
    const GTypeInfo info = {
      /* You fill this structure. */
    };
    type = g_type_register_static (G_TYPE_OBJECT,
                                   "ViewerFile",
                                   &info, 0);
  }
  return type;
}