Ich habe hier folgendes GLib-C-Code-Fragment:
Code: Alles auswählen
typedef struct SomeObject SomeObject;
typedef struct SomeObjectClass SomeObjectClass;
GType some_object_get_type (void);
struct SomeObject
{
GObject parent;
};
struct SomeObjectClass
{
GObjectClass parent;
};
#define SOME_TYPE_OBJECT (some_object_get_type ())
#define SOME_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST
((object), SOME_TYPE_OBJECT, SomeObject))
#define SOME_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),
SOME_TYPE_OBJECT, SomeObjectClass))
#define SOME_IS_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE
((object), SOME_TYPE_OBJECT))
#define SOME_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass),
SOME_TYPE_OBJECT))
#define SOME_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),
SOME_TYPE_OBJECT, SomeObjectClass))
G_DEFINE_TYPE(SomeObject, some_object, G_TYPE_OBJECT)
gboolean some_object_hello_world (SomeObject *obj, const char
*hello_message, char ***ret, GError **error);
Wie kann ich jetzt einen eigenen G_TYPE für die Klasse "SomeObject", die ich nach Pascal übersetzt habe, erstellen?
Die funktion GType some_object_get_type (void); hängt ja komplett in der Luft. Was liefert die? Einen Zufallswert, weil sie nirgendwo implementiert und aus keiner lib importiert wird?
G_DEFINE_TYPE ist eine Kurzfassung von folgender Deklaration:
Code: Alles auswählen
#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_) _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
Ich verstehe das irgendwie nicht ganz... Kennt sich zufällig wer mit GLib-Programmierung aus?