libpurple/conversation.c

changeset 39380
3088866c22f4
parent 39352
62bca2fe2e91
child 39423
6b457e717666
--- a/libpurple/conversation.c	Sun Dec 09 03:56:30 2018 +0000
+++ b/libpurple/conversation.c	Thu Dec 06 19:33:29 2018 -0600
@@ -35,9 +35,6 @@
 #include "smiley-list.h"
 #include "util.h"
 
-#define PURPLE_CONVERSATION_GET_PRIVATE(obj) \
-	(G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_CONVERSATION, PurpleConversationPrivate))
-
 typedef struct _PurpleConversationPrivate  PurpleConversationPrivate;
 
 /* General private data for a conversation */
@@ -77,15 +74,18 @@
 	PROP_LAST
 };
 
-static GObjectClass *parent_class;
 static GParamSpec *properties[PROP_LAST];
 
+G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(PurpleConversation, purple_conversation,
+		G_TYPE_OBJECT);
+
 static void
 common_send(PurpleConversation *conv, const char *message, PurpleMessageFlags msgflags)
 {
 	PurpleAccount *account;
 	PurpleConnection *gc;
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 	PurpleMessage *msg;
 	char *displayed = NULL;
 	const char *sent;
@@ -195,7 +195,8 @@
 static void
 open_log(PurpleConversation *conv)
 {
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 	GDateTime *dt;
 
 	g_return_if_fail(priv != NULL);
@@ -212,7 +213,8 @@
 static void
 add_message_to_history(PurpleConversation *conv, PurpleMessage *msg)
 {
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 
 	g_return_if_fail(priv != NULL);
 	g_return_if_fail(msg != NULL);
@@ -238,7 +240,8 @@
 void
 purple_conversation_set_features(PurpleConversation *conv, PurpleConnectionFlags features)
 {
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 
 	g_return_if_fail(priv != NULL);
 
@@ -252,7 +255,8 @@
 PurpleConnectionFlags
 purple_conversation_get_features(PurpleConversation *conv)
 {
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 
 	g_return_val_if_fail(priv != NULL, 0);
 
@@ -290,7 +294,8 @@
 purple_conversation_set_ui_ops(PurpleConversation *conv,
 							 PurpleConversationUiOps *ops)
 {
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 
 	g_return_if_fail(priv != NULL);
 
@@ -304,9 +309,10 @@
 }
 
 PurpleConversationUiOps *
-purple_conversation_get_ui_ops(const PurpleConversation *conv)
+purple_conversation_get_ui_ops(PurpleConversation *conv)
 {
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 
 	g_return_val_if_fail(priv != NULL, NULL);
 
@@ -316,7 +322,8 @@
 void
 purple_conversation_set_account(PurpleConversation *conv, PurpleAccount *account)
 {
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 
 	g_return_if_fail(priv != NULL);
 
@@ -332,9 +339,10 @@
 }
 
 PurpleAccount *
-purple_conversation_get_account(const PurpleConversation *conv)
+purple_conversation_get_account(PurpleConversation *conv)
 {
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 
 	g_return_val_if_fail(priv != NULL, NULL);
 
@@ -342,7 +350,7 @@
 }
 
 PurpleConnection *
-purple_conversation_get_connection(const PurpleConversation *conv)
+purple_conversation_get_connection(PurpleConversation *conv)
 {
 	PurpleAccount *account;
 
@@ -359,7 +367,8 @@
 void
 purple_conversation_set_title(PurpleConversation *conv, const char *title)
 {
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 
 	g_return_if_fail(priv  != NULL);
 	g_return_if_fail(title != NULL);
@@ -374,9 +383,10 @@
 }
 
 const char *
-purple_conversation_get_title(const PurpleConversation *conv)
+purple_conversation_get_title(PurpleConversation *conv)
 {
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 
 	g_return_val_if_fail(priv != NULL, NULL);
 
@@ -413,7 +423,8 @@
 void
 purple_conversation_set_name(PurpleConversation *conv, const char *name)
 {
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 
 	g_return_if_fail(priv != NULL);
 
@@ -429,9 +440,10 @@
 }
 
 const char *
-purple_conversation_get_name(const PurpleConversation *conv)
+purple_conversation_get_name(PurpleConversation *conv)
 {
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 
 	g_return_val_if_fail(priv != NULL, NULL);
 
@@ -442,7 +454,8 @@
 purple_conversation_set_e2ee_state(PurpleConversation *conv,
 	PurpleE2eeState *state)
 {
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 
 	g_return_if_fail(priv != NULL);
 
@@ -469,7 +482,8 @@
 PurpleE2eeState *
 purple_conversation_get_e2ee_state(PurpleConversation *conv)
 {
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 	PurpleE2eeProvider *provider;
 
 	g_return_val_if_fail(priv != NULL, NULL);
@@ -493,7 +507,8 @@
 void
 purple_conversation_set_logging(PurpleConversation *conv, gboolean log)
 {
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 
 	g_return_if_fail(priv != NULL);
 
@@ -510,9 +525,10 @@
 }
 
 gboolean
-purple_conversation_is_logging(const PurpleConversation *conv)
+purple_conversation_is_logging(PurpleConversation *conv)
 {
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 
 	g_return_val_if_fail(priv != NULL, FALSE);
 
@@ -522,7 +538,8 @@
 void
 purple_conversation_close_logs(PurpleConversation *conv)
 {
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 
 	g_return_if_fail(priv != NULL);
 
@@ -540,7 +557,8 @@
 	PurpleConversationUiOps *ops;
 	PurpleBuddy *b;
 	int plugin_return;
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 	/* int logging_font_options = 0; */
 
 	g_return_if_fail(priv != NULL);
@@ -743,7 +761,8 @@
 {
 	char *text;
 	gpointer *data;
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 
 	g_return_if_fail(priv != NULL);
 	g_return_if_fail(message != NULL);
@@ -781,7 +800,8 @@
 void purple_conversation_clear_message_history(PurpleConversation *conv)
 {
 	GList *list;
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 
 	g_return_if_fail(priv != NULL);
 
@@ -795,7 +815,8 @@
 
 GList *purple_conversation_get_message_history(PurpleConversation *conv)
 {
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 
 	g_return_val_if_fail(priv != NULL, NULL);
 
@@ -849,7 +870,7 @@
 	g_return_if_fail(PURPLE_IS_CONVERSATION(conv));
 	g_return_if_fail(smiley);
 
-	priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	priv = purple_conversation_get_instance_private(conv);
 
 	if (priv->remote_smileys == NULL) {
 		priv->remote_smileys = purple_smiley_list_new();
@@ -878,7 +899,7 @@
 	g_return_val_if_fail(PURPLE_IS_CONVERSATION(conv), NULL);
 	g_return_val_if_fail(shortcut, NULL);
 
-	priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	priv = purple_conversation_get_instance_private(conv);
 
 	if (priv->remote_smileys == NULL)
 		return NULL;
@@ -889,7 +910,8 @@
 PurpleSmileyList *
 purple_conversation_get_remote_smileys(PurpleConversation *conv)
 {
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 
 	g_return_val_if_fail(priv != NULL, NULL);
 
@@ -907,7 +929,8 @@
 		GParamSpec *pspec)
 {
 	PurpleConversation *conv = PURPLE_CONVERSATION(obj);
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 
 	switch (param_id) {
 		case PROP_ACCOUNT:
@@ -962,6 +985,11 @@
 	}
 }
 
+static void
+purple_conversation_init(PurpleConversation *conv)
+{
+}
+
 /* Called when done constructing */
 static void
 purple_conversation_constructed(GObject *object)
@@ -971,7 +999,7 @@
 	PurpleConnection *gc;
 	PurpleConversationUiOps *ops;
 
-	parent_class->constructed(object);
+	G_OBJECT_CLASS(purple_conversation_parent_class)->constructed(object);
 
 	g_object_get(object, "account", &account, NULL);
 	gc = purple_account_get_connection(account);
@@ -1011,7 +1039,8 @@
 purple_conversation_finalize(GObject *object)
 {
 	PurpleConversation *conv = PURPLE_CONVERSATION(object);
-	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleConversationPrivate *priv =
+			purple_conversation_get_instance_private(conv);
 	PurpleConversationUiOps *ops  = purple_conversation_get_ui_ops(conv);
 
 	purple_request_close_with_handle(conv);
@@ -1037,7 +1066,7 @@
 	priv->name = NULL;
 	priv->title = NULL;
 
-	parent_class->finalize(object);
+	G_OBJECT_CLASS(purple_conversation_parent_class)->finalize(object);
 }
 
 /* Class initializer function */
@@ -1046,8 +1075,6 @@
 {
 	GObjectClass *obj_class = G_OBJECT_CLASS(klass);
 
-	parent_class = g_type_class_peek_parent(klass);
-
 	obj_class->dispose = purple_conversation_dispose;
 	obj_class->finalize = purple_conversation_finalize;
 	obj_class->constructed = purple_conversation_constructed;
@@ -1056,8 +1083,6 @@
 	obj_class->get_property = purple_conversation_get_property;
 	obj_class->set_property = purple_conversation_set_property;
 
-	g_type_class_add_private(klass, sizeof(PurpleConversationPrivate));
-
 	properties[PROP_ACCOUNT] = g_param_spec_object("account", "Account",
 				"The account for the conversation.", PURPLE_TYPE_ACCOUNT,
 				G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS);
@@ -1082,30 +1107,3 @@
 
 	g_object_class_install_properties(obj_class, PROP_LAST, properties);
 }
-
-GType
-purple_conversation_get_type(void)
-{
-	static GType type = 0;
-
-	if(type == 0) {
-		static const GTypeInfo info = {
-			sizeof(PurpleConversationClass),
-			NULL,
-			NULL,
-			(GClassInitFunc)purple_conversation_class_init,
-			NULL,
-			NULL,
-			sizeof(PurpleConversation),
-			0,
-			NULL,
-			NULL,
-		};
-
-		type = g_type_register_static(G_TYPE_OBJECT,
-				"PurpleConversation",
-				&info, G_TYPE_FLAG_ABSTRACT);
-	}
-
-	return type;
-}

mercurial