Use G_DEFINE_TYPE_WITH_PRIVATE on PurpleBuddy.

Thu, 07 Feb 2019 04:01:22 -0500

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Thu, 07 Feb 2019 04:01:22 -0500
changeset 39432
4c9808e30b3e
parent 39431
86688eb3f593
child 39433
f033955d125a

Use G_DEFINE_TYPE_WITH_PRIVATE on PurpleBuddy.

libpurple/buddy.c file | annotate | diff | comparison | revisions
libpurple/buddy.h file | annotate | diff | comparison | revisions
libpurple/protocols/bonjour/bonjour_ft.c file | annotate | diff | comparison | revisions
libpurple/protocols/facebook/util.c file | annotate | diff | comparison | revisions
--- a/libpurple/buddy.c	Thu Feb 07 03:21:21 2019 -0500
+++ b/libpurple/buddy.c	Thu Feb 07 04:01:22 2019 -0500
@@ -24,9 +24,6 @@
 #include "glibcompat.h"
 #include "util.h"
 
-#define PURPLE_BUDDY_GET_PRIVATE(obj) \
-	(G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_BUDDY, PurpleBuddyPrivate))
-
 typedef struct _PurpleBuddyPrivate      PurpleBuddyPrivate;
 
 struct _PurpleBuddyPrivate {
@@ -60,9 +57,10 @@
 /******************************************************************************
  * Globals
  *****************************************************************************/
-static PurpleBlistNode *parent_class;
 static GParamSpec *properties[PROP_LAST];
 
+G_DEFINE_TYPE_WITH_PRIVATE(PurpleBuddy, purple_buddy, PURPLE_TYPE_BLIST_NODE)
+
 /******************************************************************************
  * API
  *****************************************************************************/
@@ -70,7 +68,7 @@
 purple_buddy_set_icon(PurpleBuddy *buddy, PurpleBuddyIcon *icon)
 {
 	PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 
 	g_return_if_fail(priv != NULL);
 
@@ -90,9 +88,9 @@
 }
 
 PurpleBuddyIcon *
-purple_buddy_get_icon(const PurpleBuddy *buddy)
+purple_buddy_get_icon(PurpleBuddy *buddy)
 {
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 
 	g_return_val_if_fail(priv != NULL, NULL);
 
@@ -100,9 +98,9 @@
 }
 
 PurpleAccount *
-purple_buddy_get_account(const PurpleBuddy *buddy)
+purple_buddy_get_account(PurpleBuddy *buddy)
 {
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 
 	g_return_val_if_fail(priv != NULL, NULL);
 
@@ -112,7 +110,7 @@
 void
 purple_buddy_set_name(PurpleBuddy *buddy, const char *name)
 {
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 	PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
 
 	g_return_if_fail(priv != NULL);
@@ -133,9 +131,9 @@
 }
 
 const char *
-purple_buddy_get_name(const PurpleBuddy *buddy)
+purple_buddy_get_name(PurpleBuddy *buddy)
 {
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 
 	g_return_val_if_fail(priv != NULL, NULL);
 
@@ -143,9 +141,9 @@
 }
 
 gpointer
-purple_buddy_get_protocol_data(const PurpleBuddy *buddy)
+purple_buddy_get_protocol_data(PurpleBuddy *buddy)
 {
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 
 	g_return_val_if_fail(priv != NULL, NULL);
 
@@ -155,7 +153,7 @@
 void
 purple_buddy_set_protocol_data(PurpleBuddy *buddy, gpointer data)
 {
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 
 	g_return_if_fail(priv != NULL);
 
@@ -164,7 +162,7 @@
 
 const char *purple_buddy_get_alias_only(PurpleBuddy *buddy)
 {
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 
 	g_return_val_if_fail(priv != NULL, NULL);
 
@@ -182,7 +180,7 @@
 const char *purple_buddy_get_contact_alias(PurpleBuddy *buddy)
 {
 	PurpleContact *c;
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 
 	g_return_val_if_fail(priv != NULL, NULL);
 
@@ -206,7 +204,7 @@
 
 const char *purple_buddy_get_alias(PurpleBuddy *buddy)
 {
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 
 	g_return_val_if_fail(priv != NULL, NULL);
 
@@ -230,7 +228,7 @@
 	PurpleIMConversation *im;
 	char *old_alias;
 	char *new_alias = NULL;
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 
 	g_return_if_fail(priv != NULL);
 
@@ -272,7 +270,7 @@
 
 const char *purple_buddy_get_local_alias(PurpleBuddy *buddy)
 {
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 
 	g_return_val_if_fail(priv != NULL, NULL);
 
@@ -286,7 +284,7 @@
 	PurpleIMConversation *im;
 	char *old_alias;
 	char *new_alias = NULL;
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 
 	g_return_if_fail(priv != NULL);
 
@@ -329,7 +327,7 @@
 
 const char *purple_buddy_get_server_alias(PurpleBuddy *buddy)
 {
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 
 	g_return_val_if_fail(priv != NULL, NULL);
 
@@ -346,9 +344,9 @@
 	return PURPLE_CONTACT(PURPLE_BLIST_NODE(buddy)->parent);
 }
 
-PurplePresence *purple_buddy_get_presence(const PurpleBuddy *buddy)
+PurplePresence *purple_buddy_get_presence(PurpleBuddy *buddy)
 {
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 
 	g_return_val_if_fail(priv != NULL, NULL);
 
@@ -363,7 +361,7 @@
 	PurpleContact *contact;
 	PurpleCountingNode *contact_counter, *group_counter;
 	PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 
 	g_return_if_fail(priv != NULL);
 
@@ -421,9 +419,9 @@
 		ops->update(purple_blist_get_buddy_list(), PURPLE_BLIST_NODE(buddy));
 }
 
-PurpleMediaCaps purple_buddy_get_media_caps(const PurpleBuddy *buddy)
+PurpleMediaCaps purple_buddy_get_media_caps(PurpleBuddy *buddy)
 {
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 
 	g_return_val_if_fail(priv != NULL, 0);
 
@@ -432,7 +430,7 @@
 
 void purple_buddy_set_media_caps(PurpleBuddy *buddy, PurpleMediaCaps media_caps)
 {
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 
 	g_return_if_fail(priv != NULL);
 
@@ -460,7 +458,7 @@
                           GParamSpec *pspec)
 {
 	PurpleBuddy *buddy = PURPLE_BUDDY(obj);
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 
 	switch (param_id) {
 		case PROP_NAME:
@@ -530,16 +528,17 @@
 }
 
 static void
-purple_buddy_init(GTypeInstance *instance, gpointer klass) {
+purple_buddy_init(PurpleBuddy *buddy)
+{
 }
 
 static void
 purple_buddy_constructed(GObject *object) {
 	PurpleBuddy *buddy = PURPLE_BUDDY(object);
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 	PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
 
-	G_OBJECT_CLASS(parent_class)->constructed(object);
+	G_OBJECT_CLASS(purple_buddy_parent_class)->constructed(object);
 
 	priv->presence = PURPLE_PRESENCE(purple_buddy_presence_new(buddy));
 	purple_presence_set_status_active(priv->presence, "offline", TRUE);
@@ -552,7 +551,7 @@
 
 static void
 purple_buddy_dispose(GObject *object) {
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(object);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(PURPLE_BUDDY(object));
 
 	if (priv->icon) {
 		purple_buddy_icon_unref(priv->icon);
@@ -564,13 +563,13 @@
 		priv->presence = NULL;
 	}
 
-	G_OBJECT_CLASS(parent_class)->dispose(object);
+	G_OBJECT_CLASS(purple_buddy_parent_class)->dispose(object);
 }
 
 static void
 purple_buddy_finalize(GObject *object) {
 	PurpleBuddy *buddy = PURPLE_BUDDY(object);
-	PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
+	PurpleBuddyPrivate *priv = purple_buddy_get_instance_private(buddy);
 	PurpleProtocol *protocol;
 
 	/*
@@ -585,14 +584,12 @@
 	g_free(priv->local_alias);
 	g_free(priv->server_alias);
 
-	G_OBJECT_CLASS(parent_class)->finalize(object);
+	G_OBJECT_CLASS(purple_buddy_parent_class)->finalize(object);
 }
 
 static void purple_buddy_class_init(PurpleBuddyClass *klass) {
 	GObjectClass *obj_class = G_OBJECT_CLASS(klass);
 
-	parent_class = g_type_class_peek_parent(klass);
-
 	obj_class->dispose = purple_buddy_dispose;
 	obj_class->finalize = purple_buddy_finalize;
 
@@ -601,8 +598,6 @@
 	obj_class->set_property = purple_buddy_set_property;
 	obj_class->constructed = purple_buddy_constructed;
 
-	g_type_class_add_private(klass, sizeof(PurpleBuddyPrivate));
-
 	properties[PROP_NAME] = g_param_spec_string(
 		"name",
 		"Name",
@@ -661,32 +656,6 @@
 	g_object_class_install_properties(obj_class, PROP_LAST, properties);
 }
 
-GType
-purple_buddy_get_type(void) {
-	static GType type = 0;
-
-	if(type == 0) {
-		static const GTypeInfo info = {
-			sizeof(PurpleBuddyClass),
-			NULL,
-			NULL,
-			(GClassInitFunc)purple_buddy_class_init,
-			NULL,
-			NULL,
-			sizeof(PurpleBuddy),
-			0,
-			(GInstanceInitFunc)purple_buddy_init,
-			NULL,
-		};
-
-		type = g_type_register_static(PURPLE_TYPE_BLIST_NODE,
-				"PurpleBuddy",
-				&info, 0);
-	}
-
-	return type;
-}
-
 PurpleBuddy *
 purple_buddy_new(PurpleAccount *account, const char *name, const char *alias)
 {
--- a/libpurple/buddy.h	Thu Feb 07 03:21:21 2019 -0500
+++ b/libpurple/buddy.h	Thu Feb 07 04:01:22 2019 -0500
@@ -133,7 +133,7 @@
  *
  * Returns: The buddy icon.
  */
-PurpleBuddyIcon *purple_buddy_get_icon(const PurpleBuddy *buddy);
+PurpleBuddyIcon *purple_buddy_get_icon(PurpleBuddy *buddy);
 
 /**
  * purple_buddy_get_account:
@@ -143,7 +143,7 @@
  *
  * Returns: The account
  */
-PurpleAccount *purple_buddy_get_account(const PurpleBuddy *buddy);
+PurpleAccount *purple_buddy_get_account(PurpleBuddy *buddy);
 
 /**
  * purple_buddy_set_name:
@@ -162,7 +162,7 @@
  *
  * Returns: The name.
  */
-const char *purple_buddy_get_name(const PurpleBuddy *buddy);
+const char *purple_buddy_get_name(PurpleBuddy *buddy);
 
 /**
  * purple_buddy_get_protocol_data:
@@ -176,7 +176,7 @@
  *
  * Returns:      The protocol data.
  */
-gpointer purple_buddy_get_protocol_data(const PurpleBuddy *buddy);
+gpointer purple_buddy_get_protocol_data(PurpleBuddy *buddy);
 
 /**
  * purple_buddy_set_protocol_data:
@@ -209,7 +209,7 @@
  *
  * Returns: The buddy's presence.
  */
-PurplePresence *purple_buddy_get_presence(const PurpleBuddy *buddy);
+PurplePresence *purple_buddy_get_presence(PurpleBuddy *buddy);
 
 /**
  * purple_buddy_update_status:
@@ -230,7 +230,7 @@
  *
  * Returns:      The media caps.
  */
-PurpleMediaCaps purple_buddy_get_media_caps(const PurpleBuddy *buddy);
+PurpleMediaCaps purple_buddy_get_media_caps(PurpleBuddy *buddy);
 
 /**
  * purple_buddy_set_media_caps:
--- a/libpurple/protocols/bonjour/bonjour_ft.c	Thu Feb 07 03:21:21 2019 -0500
+++ b/libpurple/protocols/bonjour/bonjour_ft.c	Thu Feb 07 04:01:22 2019 -0500
@@ -627,7 +627,8 @@
  */
 static gboolean
 add_ipv6_link_local_ifaces(PurpleXmlNode *cur_streamhost, const char *host,
-			   const PurpleBuddy *pb) {
+			   PurpleBuddy *pb)
+{
 	PurpleXmlNode *new_streamhost = NULL;
 	struct in6_addr in6_addr;
 	BonjourBuddy *bb;
--- a/libpurple/protocols/facebook/util.c	Thu Feb 07 03:21:21 2019 -0500
+++ b/libpurple/protocols/facebook/util.c	Thu Feb 07 04:01:22 2019 -0500
@@ -345,19 +345,23 @@
 static gint
 fb_buddy_cmp(gconstpointer a, gconstpointer b)
 {
+	PurpleBuddy *pba, *pbb;
 	gint alias_verdict, name_verdict;
 	gchar *astr, *bstr;
 
-	astr = g_utf8_casefold(purple_buddy_get_alias(PURPLE_BUDDY(a)), -1);
-	bstr = g_utf8_casefold(purple_buddy_get_alias(PURPLE_BUDDY(b)), -1);
+	pba = PURPLE_BUDDY(a);
+	pbb = PURPLE_BUDDY(b);
+
+	astr = g_utf8_casefold(purple_buddy_get_alias(pba), -1);
+	bstr = g_utf8_casefold(purple_buddy_get_alias(pbb), -1);
 	alias_verdict = g_utf8_collate(astr, bstr);
 	g_free(astr);
 	g_free(bstr);
 	if (alias_verdict != 0) {
 		return alias_verdict;
 	}
-	astr = g_utf8_casefold(purple_buddy_get_name(a), -1);
-	bstr = g_utf8_casefold(purple_buddy_get_name(b), -1);
+	astr = g_utf8_casefold(purple_buddy_get_name(pba), -1);
+	bstr = g_utf8_casefold(purple_buddy_get_name(pbb), -1);
 	name_verdict = g_utf8_collate(astr, bstr);
 	g_free(astr);
 	g_free(bstr);

mercurial