libpurple/conversation.c

branch
soc.2013.gobjectification
changeset 34667
56e06ab47188
parent 34663
cf9e572853b2
child 34668
173c20427d50
--- a/libpurple/conversation.c	Sat Jun 29 02:15:46 2013 +0530
+++ b/libpurple/conversation.c	Sat Jun 29 03:15:11 2013 +0530
@@ -65,7 +65,7 @@
 	GList *message_history;         /**< Message history, as a GList of PurpleConversationMessage's */
 };
 
-/** TODO GBoxed
+/**
  * Description of a conversation message
  */
 struct _PurpleConversationMessage
@@ -850,6 +850,42 @@
 	return msg->conv;
 }
 
+static PurpleConversationMessage *
+purple_conversation_message_copy(PurpleConversationMessage *msg)
+{
+	PurpleConversationMessage *newmsg = g_new(PurpleConversationMessage, 1);
+	*newmsg = *msg;
+	newmsg->who = g_strdup(msg->who);
+	newmsg->what = g_strdup(msg->what);
+	newmsg->alias = g_strdup(msg->alias);
+
+	return newmsg;
+}
+
+static void
+purple_conversation_message_free(PurpleConversationMessage *msg)
+{
+	g_free(msg->who);
+	g_free(msg->what);
+	g_free(msg->alias);
+
+	g_free(msg);
+}
+
+GType
+purple_conversation_message_get_type(void)
+{
+	static GType type = 0;
+
+	if (type == 0) {
+		type = g_boxed_type_register_static("PurpleConversationMessage",
+				(GBoxedCopyFunc)purple_conversation_message_copy,
+				(GBoxedFreeFunc)purple_conversation_message_free);
+	}
+
+	return type;
+}
+
 void purple_conversation_set_ui_data(PurpleConversation *conv, gpointer ui_data)
 {
 	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);

mercurial