/soc/2013/ankitkv/gobjectification: 0e96218aa13a: Refactored the...

Ankit Vani a at nevitus.org
Thu Aug 29 20:20:35 EDT 2013


Changeset: 0e96218aa13afc77e1f3b229507924c22b1c32e5
Author:	 Ankit Vani <a at nevitus.org>
Date:	 2013-08-30 05:50 +0530
Branch:	 soc.2013.gobjectification.plugins
URL: https://hg.pidgin.im/soc/2013/ankitkv/gobjectification/rev/0e96218aa13a

Description:

Refactored the protocols to use the new macros, to allow for static or dynamic loading of types as configured

diffstat:

 libpurple/internal.h                     |   1 -
 libpurple/protocol.h                     |   2 ++
 libpurple/protocols/bonjour/bonjour.c    |   6 ++++--
 libpurple/protocols/gg/gg.c              |   5 +++--
 libpurple/protocols/irc/irc.c            |   6 ++++--
 libpurple/protocols/jabber/jabber.c      |   8 ++++++--
 libpurple/protocols/jabber/jabber.h      |   3 +++
 libpurple/protocols/jabber/libfacebook.c |  28 ++++++++++++++++------------
 libpurple/protocols/jabber/libgtalk.c    |  28 ++++++++++++++++------------
 libpurple/protocols/jabber/libxmpp.c     |  14 +++++++-------
 libpurple/protocols/jabber/libxmpp.h     |   4 +---
 libpurple/protocols/msn/msn.c            |   6 ++++--
 libpurple/protocols/mxit/mxit.c          |   7 +++++--
 libpurple/protocols/myspace/myspace.c    |   6 ++++--
 libpurple/protocols/novell/novell.c      |   6 ++++--
 libpurple/protocols/null/nullprotocol.c  |   6 ++++--
 libpurple/protocols/oscar/libaim.c       |   7 +++++--
 libpurple/protocols/oscar/libaim.h       |   2 --
 libpurple/protocols/oscar/libicq.c       |  28 ++++++++++++++++------------
 libpurple/protocols/oscar/oscar.c        |   6 ++++--
 libpurple/protocols/oscar/oscar.h        |   3 +++
 libpurple/protocols/sametime/sametime.c  |   7 ++++---
 libpurple/protocols/silc/silc.c          |   6 ++++--
 libpurple/protocols/simple/simple.c      |   6 ++++--
 libpurple/protocols/yahoo/libyahoo.c     |   6 ++++--
 libpurple/protocols/yahoo/libyahoojp.c   |   7 +++++--
 libpurple/protocols/zephyr/zephyr.c      |   7 ++++---
 27 files changed, 136 insertions(+), 85 deletions(-)

diffs (truncated from 491 to 300 lines):

diff --git a/libpurple/internal.h b/libpurple/internal.h
--- a/libpurple/internal.h
+++ b/libpurple/internal.h
@@ -156,7 +156,6 @@
 
 #include "accounts.h"
 #include "connection.h"
-#include "prefs.h"
 
 /* This is for the accounts code to notify the buddy icon code that
  * it's done loading.  We may want to replace this with a signal. */
diff --git a/libpurple/protocol.h b/libpurple/protocol.h
--- a/libpurple/protocol.h
+++ b/libpurple/protocol.h
@@ -48,10 +48,12 @@ typedef struct _PurpleProtocolInterface 
 #include "buddylist.h"
 #include "connection.h"
 #include "conversations.h"
+#include "debug.h"
 #include "ft.h"
 #include "imgstore.h"
 #include "media.h"
 #include "notify.h"
+#include "plugins.h"
 #include "roomlist.h"
 #include "status.h"
 #include "whiteboard.h"
diff --git a/libpurple/protocols/bonjour/bonjour.c b/libpurple/protocols/bonjour/bonjour.c
--- a/libpurple/protocols/bonjour/bonjour.c
+++ b/libpurple/protocols/bonjour/bonjour.c
@@ -741,5 +741,7 @@ plugin_unload(PurplePlugin *plugin, GErr
 	return TRUE;
 }
 
-PURPLE_PROTOCOL_DEFINE (BonjourProtocol, bonjour_protocol);
-PURPLE_PLUGIN_INIT     (bonjour, plugin_query, plugin_load, plugin_unload);
+static PurplePlugin *my_plugin;
+PURPLE_PROTOCOL_DEFINE(my_plugin, BonjourProtocol, bonjour_protocol);
+PURPLE_PLUGIN_INIT_VAL(my_plugin, bonjour, plugin_query, plugin_load,
+                       plugin_unload);
diff --git a/libpurple/protocols/gg/gg.c b/libpurple/protocols/gg/gg.c
--- a/libpurple/protocols/gg/gg.c
+++ b/libpurple/protocols/gg/gg.c
@@ -1542,7 +1542,8 @@ plugin_unload(PurplePlugin *plugin, GErr
 	return TRUE;
 }
 
-PURPLE_PROTOCOL_DEFINE (GaduGaduProtocol, ggp_protocol);
-PURPLE_PLUGIN_INIT     (gg, plugin_query, plugin_load, plugin_unload);
+static PurplePlugin *my_plugin;
+PURPLE_PROTOCOL_DEFINE(my_plugin, GaduGaduProtocol, ggp_protocol);
+PURPLE_PLUGIN_INIT_VAL(my_plugin, gg, plugin_query, plugin_load, plugin_unload);
 
 /* vim: set ts=8 sts=0 sw=8 noet: */
diff --git a/libpurple/protocols/irc/irc.c b/libpurple/protocols/irc/irc.c
--- a/libpurple/protocols/irc/irc.c
+++ b/libpurple/protocols/irc/irc.c
@@ -1060,5 +1060,7 @@ plugin_unload(PurplePlugin *plugin, GErr
 	return TRUE;
 }
 
-PURPLE_PROTOCOL_DEFINE (IRCProtocol, irc_protocol);
-PURPLE_PLUGIN_INIT     (irc, plugin_query, plugin_load, plugin_unload);
+static PurplePlugin *my_plugin;
+PURPLE_PROTOCOL_DEFINE(my_plugin, IRCProtocol, irc_protocol);
+PURPLE_PLUGIN_INIT_VAL(my_plugin, irc, plugin_query, plugin_load,
+                       plugin_unload);
diff --git a/libpurple/protocols/jabber/jabber.c b/libpurple/protocols/jabber/jabber.c
--- a/libpurple/protocols/jabber/jabber.c
+++ b/libpurple/protocols/jabber/jabber.c
@@ -4065,6 +4065,8 @@ jabber_protocol_base_init(JabberProtocol
 {
 	PurpleProtocolClass *proto_class = PURPLE_PROTOCOL_CLASS(klass);
 
+	proto_class->id        = JABBER_ID;
+	proto_class->name      = JABBER_NAME;
 	proto_class->options   = OPT_PROTO_CHAT_TOPIC | OPT_PROTO_UNIQUE_CHATNAME |
 	                         OPT_PROTO_MAIL_CHECK |
 #ifdef HAVE_CYRUS_SASL
@@ -4136,5 +4138,7 @@ jabber_protocol_interface_init(PurplePro
 
 static void jabber_protocol_base_finalize(JabberProtocolClass *klass) { }
 
-PURPLE_PROTOCOL_DEFINE_EXTENDED (JabberProtocol, jabber_protocol,
-                                 PURPLE_TYPE_PROTOCOL, G_TYPE_FLAG_ABSTRACT);
+PurplePlugin *_jabber_plugin = NULL;
+
+PURPLE_PROTOCOL_DEFINE_EXTENDED(_jabber_plugin, JabberProtocol, jabber_protocol,
+                                PURPLE_TYPE_PROTOCOL, G_TYPE_FLAG_ABSTRACT);
diff --git a/libpurple/protocols/jabber/jabber.h b/libpurple/protocols/jabber/jabber.h
--- a/libpurple/protocols/jabber/jabber.h
+++ b/libpurple/protocols/jabber/jabber.h
@@ -82,6 +82,9 @@ typedef struct _JabberStream JabberStrea
 
 #define CAPS0115_NODE "https://pidgin.im/"
 
+#define JABBER_ID    "prpl-jabber"
+#define JABBER_NAME  "XMPP"
+
 #define JABBER_TYPE_PROTOCOL             (jabber_protocol_get_type())
 #define JABBER_PROTOCOL(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj), JABBER_TYPE_PROTOCOL, JabberProtocol))
 #define JABBER_PROTOCOL_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass), JABBER_TYPE_PROTOCOL, JabberProtocolClass))
diff --git a/libpurple/protocols/jabber/libfacebook.c b/libpurple/protocols/jabber/libfacebook.c
--- a/libpurple/protocols/jabber/libfacebook.c
+++ b/libpurple/protocols/jabber/libfacebook.c
@@ -204,16 +204,17 @@ static PurplePluginInfo *
 plugin_query(GError **error)
 {
 	return purple_plugin_info_new(
-		"id",           FACEBOOK_ID,
-		"name",         FACEBOOK_NAME,
-		"version",      DISPLAY_VERSION,
-		"category",     N_("Protocol"),
-		"summary",      N_("Facebook XMPP Protocol Plugin"),
-		"description",  N_("Facebook XMPP Protocol Plugin"),
-		"website",      PURPLE_WEBSITE,
-		"abi-version",  PURPLE_ABI_VERSION,
-		"flags",        GPLUGIN_PLUGIN_INFO_FLAGS_INTERNAL |
-		                GPLUGIN_PLUGIN_INFO_FLAGS_LOAD_ON_QUERY,
+		"id",            FACEBOOK_ID,
+		"name",          FACEBOOK_NAME,
+		"version",       DISPLAY_VERSION,
+		"category",      N_("Protocol"),
+		"summary",       N_("Facebook XMPP Protocol Plugin"),
+		"description",   N_("Facebook XMPP Protocol Plugin"),
+		"website",       PURPLE_WEBSITE,
+		"abi-version",   PURPLE_ABI_VERSION,
+		"dependencies",  JABBER_ID,
+		"flags",         GPLUGIN_PLUGIN_INFO_FLAGS_INTERNAL |
+		                 GPLUGIN_PLUGIN_INFO_FLAGS_LOAD_ON_QUERY,
 		NULL
 	);
 }
@@ -246,7 +247,10 @@ plugin_unload(PurplePlugin *plugin, GErr
 	return TRUE;
 }
 
-PURPLE_PROTOCOL_DEFINE_EXTENDED(FacebookProtocol, facebook_protocol,
+static PurplePlugin *my_plugin;
+
+PURPLE_PROTOCOL_DEFINE_EXTENDED(my_plugin, FacebookProtocol, facebook_protocol,
                                 JABBER_TYPE_PROTOCOL, 0);
 
-PURPLE_PLUGIN_INIT(facebookxmpp, plugin_query, plugin_load, plugin_unload);
+PURPLE_PLUGIN_INIT_VAL(my_plugin, facebookxmpp, plugin_query, plugin_load,
+                       plugin_unload);
diff --git a/libpurple/protocols/jabber/libgtalk.c b/libpurple/protocols/jabber/libgtalk.c
--- a/libpurple/protocols/jabber/libgtalk.c
+++ b/libpurple/protocols/jabber/libgtalk.c
@@ -197,16 +197,17 @@ static PurplePluginInfo *
 plugin_query(GError **error)
 {
 	return purple_plugin_info_new(
-		"id",           GTALK_ID,
-		"name",         GTALK_NAME,
-		"version",      DISPLAY_VERSION,
-		"category",     N_("Protocol"),
-		"summary",      N_("Google Talk Protocol Plugin"),
-		"description",  N_("Google Talk Protocol Plugin"),
-		"website",      PURPLE_WEBSITE,
-		"abi-version",  PURPLE_ABI_VERSION,
-		"flags",        GPLUGIN_PLUGIN_INFO_FLAGS_INTERNAL |
-		                GPLUGIN_PLUGIN_INFO_FLAGS_LOAD_ON_QUERY,
+		"id",            GTALK_ID,
+		"name",          GTALK_NAME,
+		"version",       DISPLAY_VERSION,
+		"category",      N_("Protocol"),
+		"summary",       N_("Google Talk Protocol Plugin"),
+		"description",   N_("Google Talk Protocol Plugin"),
+		"website",       PURPLE_WEBSITE,
+		"abi-version",   PURPLE_ABI_VERSION,
+		"dependencies",  JABBER_ID,
+		"flags",         GPLUGIN_PLUGIN_INFO_FLAGS_INTERNAL |
+		                 GPLUGIN_PLUGIN_INFO_FLAGS_LOAD_ON_QUERY,
 		NULL
 	);
 }
@@ -239,7 +240,10 @@ plugin_unload(PurplePlugin *plugin, GErr
 	return TRUE;
 }
 
-PURPLE_PROTOCOL_DEFINE_EXTENDED(GTalkProtocol, gtalk_protocol,
+static PurplePlugin *my_plugin;
+
+PURPLE_PROTOCOL_DEFINE_EXTENDED(my_plugin, GTalkProtocol, gtalk_protocol,
                                 JABBER_TYPE_PROTOCOL, 0);
 
-PURPLE_PLUGIN_INIT(gtalk, plugin_query, plugin_load, plugin_unload);
+PURPLE_PLUGIN_INIT_VAL(my_plugin, gtalk, plugin_query, plugin_load,
+                       plugin_unload);
diff --git a/libpurple/protocols/jabber/libxmpp.c b/libpurple/protocols/jabber/libxmpp.c
--- a/libpurple/protocols/jabber/libxmpp.c
+++ b/libpurple/protocols/jabber/libxmpp.c
@@ -106,9 +106,6 @@ xmpp_protocol_base_init(XMPPProtocolClas
 	PurpleAccountOption *option;
 	GList *encryption_values = NULL;
 
-	proto_class->id        = XMPP_ID;
-	proto_class->name      = XMPP_NAME;
-
 	/* Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im */
 	split = purple_account_user_split_new(_("Domain"), NULL, '@');
 	purple_account_user_split_set_reverse(split, FALSE);
@@ -184,8 +181,8 @@ static PurplePluginInfo *
 plugin_query(GError **error)
 {
 	return purple_plugin_info_new(
-		"id",           XMPP_ID,
-		"name",         XMPP_NAME,
+		"id",           JABBER_ID,
+		"name",         JABBER_NAME,
 		"version",      DISPLAY_VERSION,
 		"category",     N_("Protocol"),
 		"summary",      N_("XMPP Protocol Plugin"),
@@ -226,7 +223,10 @@ plugin_unload(PurplePlugin *plugin, GErr
 	return TRUE;
 }
 
-PURPLE_PROTOCOL_DEFINE_EXTENDED(XMPPProtocol, xmpp_protocol,
+extern PurplePlugin *_jabber_plugin;
+
+PURPLE_PROTOCOL_DEFINE_EXTENDED(_jabber_plugin, XMPPProtocol, xmpp_protocol,
                                 JABBER_TYPE_PROTOCOL, 0);
 
-PURPLE_PLUGIN_INIT(jabber, plugin_query, plugin_load, plugin_unload);
+PURPLE_PLUGIN_INIT_VAL(_jabber_plugin, jabber, plugin_query, plugin_load,
+                       plugin_unload);
diff --git a/libpurple/protocols/jabber/libxmpp.h b/libpurple/protocols/jabber/libxmpp.h
--- a/libpurple/protocols/jabber/libxmpp.h
+++ b/libpurple/protocols/jabber/libxmpp.h
@@ -24,9 +24,7 @@
 
 #include "jabber.h"
 
-#define XMPP_ID     "prpl-jabber"
-#define XMPP_NAME   "XMPP"
-#define XMPP_DOMAIN (g_quark_from_static_string(XMPP_ID))
+#define XMPP_DOMAIN (g_quark_from_static_string(JABBER_ID))
 
 #define XMPP_TYPE_PROTOCOL             (xmpp_protocol_get_type())
 #define XMPP_PROTOCOL(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj), XMPP_TYPE_PROTOCOL, XMPPProtocol))
diff --git a/libpurple/protocols/msn/msn.c b/libpurple/protocols/msn/msn.c
--- a/libpurple/protocols/msn/msn.c
+++ b/libpurple/protocols/msn/msn.c
@@ -3030,5 +3030,7 @@ plugin_unload(PurplePlugin *plugin, GErr
 	return TRUE;
 }
 
-PURPLE_PROTOCOL_DEFINE (MSNProtocol, msn_protocol);
-PURPLE_PLUGIN_INIT     (msn, plugin_query, plugin_load, plugin_unload);
+static PurplePlugin *my_plugin;
+PURPLE_PROTOCOL_DEFINE(my_plugin, MSNProtocol, msn_protocol);
+PURPLE_PLUGIN_INIT_VAL(my_plugin, msn, plugin_query, plugin_load,
+                       plugin_unload);
diff --git a/libpurple/protocols/mxit/mxit.c b/libpurple/protocols/mxit/mxit.c
--- a/libpurple/protocols/mxit/mxit.c
+++ b/libpurple/protocols/mxit/mxit.c
@@ -883,6 +883,9 @@ plugin_unload( PurplePlugin *plugin, GEr
 }
 
 
-PURPLE_PROTOCOL_DEFINE ( MXitProtocol, mxit_protocol );
-PURPLE_PLUGIN_INIT     ( mxit, plugin_query, plugin_load, plugin_unload );
+static PurplePlugin *my_plugin;
 
+PURPLE_PROTOCOL_DEFINE( my_plugin, MXitProtocol, mxit_protocol );
+
+PURPLE_PLUGIN_INIT_VAL( my_plugin, mxit, plugin_query, plugin_load,
+                        plugin_unload);
diff --git a/libpurple/protocols/myspace/myspace.c b/libpurple/protocols/myspace/myspace.c
--- a/libpurple/protocols/myspace/myspace.c
+++ b/libpurple/protocols/myspace/myspace.c
@@ -3518,5 +3518,7 @@ plugin_unload(PurplePlugin *plugin, GErr
 	return TRUE;
 }
 
-PURPLE_PROTOCOL_DEFINE (MySpaceProtocol, msim_protocol);
-PURPLE_PLUGIN_INIT     (myspace, plugin_query, plugin_load, plugin_unload);
+static PurplePlugin *my_plugin;
+PURPLE_PROTOCOL_DEFINE(my_plugin, MySpaceProtocol, msim_protocol);
+PURPLE_PLUGIN_INIT_VAL(my_plugin, myspace, plugin_query, plugin_load,
+                       plugin_unload);
diff --git a/libpurple/protocols/novell/novell.c b/libpurple/protocols/novell/novell.c
--- a/libpurple/protocols/novell/novell.c
+++ b/libpurple/protocols/novell/novell.c
@@ -3581,5 +3581,7 @@ plugin_unload(PurplePlugin *plugin, GErr
 	return TRUE;
 }
 
-PURPLE_PROTOCOL_DEFINE (NovellProtocol, novell_protocol);
-PURPLE_PLUGIN_INIT     (novell, plugin_query, plugin_load, plugin_unload);
+static PurplePlugin *my_plugin;
+PURPLE_PROTOCOL_DEFINE(my_plugin, NovellProtocol, novell_protocol);
+PURPLE_PLUGIN_INIT_VAL(my_plugin, novell, plugin_query, plugin_load,
+                       plugin_unload);
diff --git a/libpurple/protocols/null/nullprotocol.c b/libpurple/protocols/null/nullprotocol.c
--- a/libpurple/protocols/null/nullprotocol.c
+++ b/libpurple/protocols/null/nullprotocol.c
@@ -1210,5 +1210,7 @@ plugin_unload(PurplePlugin *plugin, GErr
   return TRUE;



More information about the Commits mailing list