libpurple/purple-client-example.c

changeset 15987
71d668c3d56d
parent 15884
4de1981757fc
parent 15985
375cc05bf77a
child 16238
33bf2fd32108
child 18068
b6554e3c8224
child 20478
46933dc62880
child 22582
838faa931042
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/purple-client-example.c	Mon Mar 26 01:55:33 2007 +0000
@@ -0,0 +1,39 @@
+#define DBUS_API_SUBJECT_TO_CHANGE
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "purple-client.h"
+
+/*
+   This example demonstrates how to use libpurple-client to communicate
+   with purple.  The names and signatures of functions provided by
+   libpurple-client are the same as those in purple.  However, all
+   structures (such as PurpleAccount) are opaque, that is, you can only
+   use pointer to them.  In fact, these pointers DO NOT actually point
+   to anything, they are just integer identifiers of assigned to these
+   structures by purple.  So NEVER try to dereference these pointers.
+   Integer ids as disguised as pointers to provide type checking and
+   prevent mistakes such as passing an id of PurpleAccount when an id of
+   PurpleBuddy is expected.  According to glib manual, this technique is
+   portable.
+*/
+
+int main (int argc, char **argv)
+{
+	GList *alist, *node;
+
+	purple_init();
+
+	alist = purple_accounts_get_all();
+	for (node = alist; node != NULL; node = node->next)
+	{
+		PurpleAccount *account = (PurpleAccount*) node->data;
+		char *name = purple_account_get_username(account);
+		g_print("Name: %s\n", name);
+		g_free(name);
+	}
+	g_list_free(alist);
+
+	return 0;
+}

mercurial