====== Grundlegende Implementierungen ======
Dieser Schritt wird ganz einfach: Wir definieren unsere privaten Strukturen und geben GObject den Namen unseres GObject an.
===== Die private Struktur =====
Zuerst füllen wir unsere ''.c'' mit etwas Inhalt:
tutorial-tier.c
/*
* Copyright- und Lizenzinformationen
*/
#include "tutorial-tier.h"
\\
Das sollte jedem von euch klar sein.
Weiter geht es mit der Definition der privaten Struktur.
Wir erinnern uns: C ist __keine__ objektorientierte Sprache. Daher sind alle Member einer Struktur jederzeit von jedem __veränderbar__. Allerdings gehört //[[cpp:class:private|Information Hiding]]// zu den Grundprinzipien des klassenbasierten Programmierens. Da behilft man sich eines Tricks: Man definiert eine eigene Struktur für die privaten Member static in der .c Datei.
tutorial-tier.c
static struct _TutorialTierPrivate
{
gint alter;
gchar *ruf;
};
\\
Damit hätten wir unsere private Struktur definiert.
Doch ist es damit noch nicht getan:
tutorial-tier.c
#define TUTORIAL_TIER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), TUTORIAL_TYPE_TIER, TutorialTierPrivate))
Dieses Makro werden wir im nächsten Kapitel einsetzen.
===== Das GObject definieren =====
Auch dieser Schritt ist schnell erledigt: 1 Zeile Code.
tutorial-tier.c
G_DEFINE_TYPE(TutorialTier, tutorial_tier, G_TYPE_OBJECT);
Zuerst geben wir den Namen unserer Klasse an, dann das Präfix für Methoden (siehe vorheriges Kapitel). Schließlich bestimmen wir das Basisobjekt.
**Hinweis:** Jede Klasse muss mindestens von GObject abgeleitet werden!
Doch was tut dieses Makro?
* Es definiert die ''tutorial_tier_get_type'' Funktion
* Es setzt einen Pointer auf die Basisklasse (zu finden in der Struktur ''_TutorialTier'' im Header)
Damit wäre dieser (zugegeben sehr kleine) Schritt vollendet. Im nächsten Kapitel definieren wir die Erstellungsroutinen für unser GObject.
====== ======