mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-10-06 16:21:50 +00:00
libnm: hide NMVpnPluginInfo structs from public API
The NMVpnPluginInfo class is not intended to be subclassed. An API that allows to be subclassed needs to be designed in a certain manner for that to be useful. NMVpnPluginInfo does not want to support that. Only because a user technically could do that (as the structs were in the public headers), it does not make it supported. Not everything that is possible in C is guaranteed to work. Also, of course there exist no users in practice that would rely on this. So, hide the structs. Also, this allows to embed the private data in the GObject struct itself, which is useful for debugging and for performance.
This commit is contained in:
parent
67c00353d3
commit
6b07b40c46
|
@ -42,14 +42,26 @@ typedef struct {
|
|||
NMVpnEditorPlugin *editor_plugin;
|
||||
} NMVpnPluginInfoPrivate;
|
||||
|
||||
/**
|
||||
* NMVpnPluginInfo:
|
||||
*/
|
||||
struct _NMVpnPluginInfo {
|
||||
GObject parent;
|
||||
NMVpnPluginInfoPrivate _priv;
|
||||
};
|
||||
|
||||
struct _NMVpnPluginInfoClass {
|
||||
GObjectClass parent;
|
||||
};
|
||||
|
||||
#define NM_VPN_PLUGIN_INFO_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMVpnPluginInfo, NM_IS_VPN_PLUGIN_INFO)
|
||||
|
||||
static void nm_vpn_plugin_info_initable_iface_init (GInitableIface *iface);
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE (NMVpnPluginInfo, nm_vpn_plugin_info, G_TYPE_OBJECT,
|
||||
G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, nm_vpn_plugin_info_initable_iface_init);
|
||||
)
|
||||
|
||||
#define NM_VPN_PLUGIN_INFO_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_VPN_PLUGIN_INFO, NMVpnPluginInfoPrivate))
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static NMVpnPluginInfo *_list_find_by_service (GSList *list,
|
||||
|
@ -1261,8 +1273,6 @@ nm_vpn_plugin_info_class_init (NMVpnPluginInfoClass *plugin_class)
|
|||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (plugin_class);
|
||||
|
||||
g_type_class_add_private (object_class, sizeof (NMVpnPluginInfoPrivate));
|
||||
|
||||
object_class->set_property = set_property;
|
||||
object_class->get_property = get_property;
|
||||
object_class->dispose = dispose;
|
||||
|
|
|
@ -29,24 +29,7 @@ G_BEGIN_DECLS
|
|||
#define NM_VPN_PLUGIN_INFO_KF_GROUP_LIBNM "libnm"
|
||||
#define NM_VPN_PLUGIN_INFO_KF_GROUP_GNOME "GNOME"
|
||||
|
||||
struct _NMVpnPluginInfo;
|
||||
|
||||
/**
|
||||
* NMVpnPluginInfo:
|
||||
*/
|
||||
struct _NMVpnPluginInfo {
|
||||
NM_AVAILABLE_IN_1_2
|
||||
GObject parent;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
NM_AVAILABLE_IN_1_2
|
||||
GObjectClass parent;
|
||||
|
||||
/*< private >*/
|
||||
NM_AVAILABLE_IN_1_2
|
||||
gpointer padding[8];
|
||||
} NMVpnPluginInfoClass NM_AVAILABLE_IN_1_2;
|
||||
typedef struct _NMVpnPluginInfoClass NMVpnPluginInfoClass;
|
||||
|
||||
NM_AVAILABLE_IN_1_2
|
||||
GType nm_vpn_plugin_info_get_type (void);
|
||||
|
|
Loading…
Reference in a new issue