1 /* GIO - GLib Input, Output and Streaming Library 2 * 3 * Copyright (C) 2009 Red Hat, Inc. 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Lesser General Public 7 * License as published by the Free Software Foundation; either 8 * version 2.1 of the License, or (at your option) any later version. 9 * 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General 16 * Public License along with this library; if not, see <http://www.gnu.org/licenses/>. 17 * 18 * Author: Alexander Larsson <alexl@redhat.com> 19 */ 20 21 #ifndef __G_INITABLE_H__ 22 #define __G_INITABLE_H__ 23 24 #if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) 25 #error "Only <gio/gio.h> can be included directly." 26 #endif 27 28 #include <gio/giotypes.h> 29 30 G_BEGIN_DECLS 31 32 #define G_TYPE_INITABLE (g_initable_get_type ()) 33 #define G_INITABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_INITABLE, GInitable)) 34 #define G_IS_INITABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_INITABLE)) 35 #define G_INITABLE_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_INITABLE, GInitableIface)) 36 #define G_TYPE_IS_INITABLE(type) (g_type_is_a ((type), G_TYPE_INITABLE)) 37 38 /** 39 * GInitable: 40 * 41 * Interface for initializable objects. 42 * 43 * Since: 2.22 44 **/ 45 typedef struct _GInitableIface GInitableIface; 46 47 /** 48 * GInitableIface: 49 * @g_iface: The parent interface. 50 * @init: Initializes the object. 51 * 52 * Provides an interface for initializing object such that initialization 53 * may fail. 54 * 55 * Since: 2.22 56 **/ 57 struct _GInitableIface 58 { 59 GTypeInterface g_iface; 60 61 /* Virtual Table */ 62 63 gboolean (* init) (GInitable *initable, 64 GCancellable *cancellable, 65 GError **error); 66 }; 67 68 69 GLIB_AVAILABLE_IN_ALL 70 GType g_initable_get_type (void) G_GNUC_CONST; 71 72 GLIB_AVAILABLE_IN_ALL 73 gboolean g_initable_init (GInitable *initable, 74 GCancellable *cancellable, 75 GError **error); 76 77 GLIB_AVAILABLE_IN_ALL 78 gpointer g_initable_new (GType object_type, 79 GCancellable *cancellable, 80 GError **error, 81 const gchar *first_property_name, 82 ...); 83 84 G_GNUC_BEGIN_IGNORE_DEPRECATIONS 85 86 GLIB_DEPRECATED_IN_2_54_FOR(g_object_new_with_properties and g_initable_init) 87 gpointer g_initable_newv (GType object_type, 88 guint n_parameters, 89 GParameter *parameters, 90 GCancellable *cancellable, 91 GError **error); 92 93 G_GNUC_END_IGNORE_DEPRECATIONS 94 95 GLIB_AVAILABLE_IN_ALL 96 GObject* g_initable_new_valist (GType object_type, 97 const gchar *first_property_name, 98 va_list var_args, 99 GCancellable *cancellable, 100 GError **error); 101 102 G_END_DECLS 103 104 105 #endif /* __G_INITABLE_H__ */ 106