Macros de GObject
Cada clase de GObject proporciona un conjunto de macros estándar. La macro G_APPLICATION()
como se demostró en la sección anterior es una de las macros estándar proporcionadas por la clase GApplication
.
No todas las macros estándar de GObject se explicarán aquí, solo las macros útiles para usar un GObject de una manera básica. Las otras macros son más avanzadas y generalmente son útiles solo cuando se subclasifica una clase GObject, cuando se crea una propiedad o una señal, o cuando se reemplaza una función virtual.
Cada clase GObject define una macro de la forma NAMESPACE_CLASSNAME(object)
, que convierte la variable al tipo "NamespaceClassname *
" y comprueba en tiempo de ejecución si la variable contiene correctamente un NamespaceClassname
objeto o una subclase del mismo. Si la variable es NULL
o contiene un objeto incompatible, la macro imprime un mensaje de advertencia crítico en la consola y devuelve NULL.
Un elenco estándar también funciona, pero la mayoría de las veces no se recomienda porque no hay comprobaciones de tiempo de ejecución:
GtkApplication *app;
/* No recomendado */
g_application_mark_busy ((GApplication *) app);
Otra macro útil cuando se usa un GObject es NAMESPACE_IS_CLASSNAME(object)
, que devuelve TRUE
si la variable es un objeto NamespaceClassname
o una subclase del mismo.