Updated python-purple's debianization.
[python-purple] / purple.c
1 /* Generated by Cython 0.10 on Tue Dec  9 09:17:03 2008 */
2
3 #define PY_SSIZE_T_CLEAN
4 #include "Python.h"
5 #include "structmember.h"
6 #ifndef PY_LONG_LONG
7   #define PY_LONG_LONG LONG_LONG
8 #endif
9 #ifndef DL_EXPORT
10   #define DL_EXPORT(t) t
11 #endif
12 #if PY_VERSION_HEX < 0x02040000
13   #define METH_COEXIST 0
14 #endif
15 #if PY_VERSION_HEX < 0x02050000
16   typedef int Py_ssize_t;
17   #define PY_SSIZE_T_MAX INT_MAX
18   #define PY_SSIZE_T_MIN INT_MIN
19   #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
20   #define PyInt_AsSsize_t(o)   PyInt_AsLong(o)
21   #define PyNumber_Index(o)    PyNumber_Int(o)
22   #define PyIndex_Check(o)     PyNumber_Check(o)
23 #endif
24 #if PY_VERSION_HEX < 0x02060000
25   #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
26   #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
27   #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
28   #define PyVarObject_HEAD_INIT(type, size) \
29           PyObject_HEAD_INIT(type) size,
30   #define PyType_Modified(t)
31
32   typedef struct {
33        void *buf;
34        PyObject *obj;
35        Py_ssize_t len;
36        Py_ssize_t itemsize;
37        int readonly;
38        int ndim;
39        char *format;
40        Py_ssize_t *shape;
41        Py_ssize_t *strides;
42        Py_ssize_t *suboffsets;
43        void *internal;
44   } Py_buffer;
45
46   #define PyBUF_SIMPLE 0
47   #define PyBUF_WRITABLE 0x0001
48   #define PyBUF_LOCK 0x0002
49   #define PyBUF_FORMAT 0x0004
50   #define PyBUF_ND 0x0008
51   #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
52   #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
53   #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
54   #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
55   #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
56
57 #endif
58 #if PY_MAJOR_VERSION < 3
59   #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
60 #else
61   #define __Pyx_BUILTIN_MODULE_NAME "builtins"
62 #endif
63 #if PY_MAJOR_VERSION >= 3
64   #define Py_TPFLAGS_CHECKTYPES 0
65   #define Py_TPFLAGS_HAVE_INDEX 0
66 #endif
67 #if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
68   #define Py_TPFLAGS_HAVE_NEWBUFFER 0
69 #endif
70 #if PY_MAJOR_VERSION >= 3
71   #define PyBaseString_Type            PyUnicode_Type
72   #define PyString_Type                PyBytes_Type
73   #define PyInt_Type                   PyLong_Type
74   #define PyInt_Check(op)              PyLong_Check(op)
75   #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
76   #define PyInt_FromString             PyLong_FromString
77   #define PyInt_FromUnicode            PyLong_FromUnicode
78   #define PyInt_FromLong               PyLong_FromLong
79   #define PyInt_FromSize_t             PyLong_FromSize_t
80   #define PyInt_FromSsize_t            PyLong_FromSsize_t
81   #define PyInt_AsLong                 PyLong_AsLong
82   #define PyInt_AS_LONG                PyLong_AS_LONG
83   #define PyInt_AsSsize_t              PyLong_AsSsize_t
84   #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
85   #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
86   #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
87 #else
88   #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
89   #define PyBytes_Type                 PyString_Type
90 #endif
91 #if PY_MAJOR_VERSION >= 3
92   #define PyMethod_New(func, self, klass) PyInstanceMethod_New(func)
93 #endif
94 #if !defined(WIN32) && !defined(MS_WINDOWS)
95   #ifndef __stdcall
96     #define __stdcall
97   #endif
98   #ifndef __cdecl
99     #define __cdecl
100   #endif
101 #else
102   #define _USE_MATH_DEFINES
103 #endif
104 #ifdef __cplusplus
105 #define __PYX_EXTERN_C extern "C"
106 #else
107 #define __PYX_EXTERN_C extern
108 #endif
109 #include <math.h>
110 #define __PYX_HAVE_API__purple
111 #include "libpurple/purple.h"
112 #include "c_purple.h"
113 #include "glib.h"
114 #include "libpurple/blist.h"
115 #include "libpurple/connection.h"
116 #include "libpurple/log.h"
117 #include "libpurple/proxy.h"
118 #include "libpurple/status.h"
119 #include "libpurple/account.h"
120 #include "libpurple/prefs.h"
121 #include "libpurple/accountopt.h"
122 #include "libpurple/buddyicon.h"
123 #include "libpurple/plugin.h"
124 #include "libpurple/prpl.h"
125 #include "time.h"
126 #include "libpurple/conversation.h"
127 #include "libpurple/core.h"
128 #include "libpurple/debug.h"
129 #include "libpurple/eventloop.h"
130 #include "libpurple/ft.h"
131 #include "libpurple/idle.h"
132 #include "libpurple/notify.h"
133 #include "libpurple/pounce.h"
134 #include "libpurple/privacy.h"
135 #include "libpurple/request.h"
136 #include "libpurple/roomlist.h"
137 #include "libpurple/server.h"
138 #include "libpurple/signals.h"
139 #include "libpurple/value.h"
140 #include "libpurple/savedstatuses.h"
141 #include "libpurple/xmlnode.h"
142 #include "libpurple/util.h"
143
144
145 #ifdef __GNUC__
146 #define INLINE __inline__
147 #elif _WIN32
148 #define INLINE __inline
149 #else
150 #define INLINE 
151 #endif
152
153 typedef struct {PyObject **p; char *s; long n; char is_unicode; char intern; char is_identifier;} __Pyx_StringTabEntry; /*proto*/
154
155
156
157 static int __pyx_skip_dispatch = 0;
158
159
160 /* Type Conversion Predeclarations */
161
162 #if PY_MAJOR_VERSION < 3
163 #define __Pyx_PyBytes_FromString PyString_FromString
164 #define __Pyx_PyBytes_AsString   PyString_AsString
165 #else
166 #define __Pyx_PyBytes_FromString PyBytes_FromString
167 #define __Pyx_PyBytes_AsString   PyBytes_AsString
168 #endif
169
170 #define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
171 static INLINE int __Pyx_PyObject_IsTrue(PyObject* x);
172 static INLINE PY_LONG_LONG __pyx_PyInt_AsLongLong(PyObject* x);
173 static INLINE unsigned PY_LONG_LONG __pyx_PyInt_AsUnsignedLongLong(PyObject* x);
174 static INLINE Py_ssize_t __pyx_PyIndex_AsSsize_t(PyObject* b);
175
176 #define __pyx_PyInt_AsLong(x) (PyInt_CheckExact(x) ? PyInt_AS_LONG(x) : PyInt_AsLong(x))
177 #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
178
179 static INLINE unsigned char __pyx_PyInt_unsigned_char(PyObject* x);
180 static INLINE unsigned short __pyx_PyInt_unsigned_short(PyObject* x);
181 static INLINE char __pyx_PyInt_char(PyObject* x);
182 static INLINE short __pyx_PyInt_short(PyObject* x);
183 static INLINE int __pyx_PyInt_int(PyObject* x);
184 static INLINE long __pyx_PyInt_long(PyObject* x);
185 static INLINE signed char __pyx_PyInt_signed_char(PyObject* x);
186 static INLINE signed short __pyx_PyInt_signed_short(PyObject* x);
187 static INLINE signed int __pyx_PyInt_signed_int(PyObject* x);
188 static INLINE signed long __pyx_PyInt_signed_long(PyObject* x);
189 static INLINE long double __pyx_PyInt_long_double(PyObject* x);
190 #ifdef __GNUC__
191 /* Test for GCC > 2.95 */
192 #if __GNUC__ > 2 ||               (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)) 
193 #define likely(x)   __builtin_expect(!!(x), 1)
194 #define unlikely(x) __builtin_expect(!!(x), 0)
195 #else /* __GNUC__ > 2 ... */
196 #define likely(x)   (x)
197 #define unlikely(x) (x)
198 #endif /* __GNUC__ > 2 ... */
199 #else /* __GNUC__ */
200 #define likely(x)   (x)
201 #define unlikely(x) (x)
202 #endif /* __GNUC__ */
203     
204 static PyObject *__pyx_m;
205 static PyObject *__pyx_b;
206 static PyObject *__pyx_empty_tuple;
207 static int __pyx_lineno;
208 static int __pyx_clineno = 0;
209 static const char * __pyx_cfilenm= __FILE__;
210 static const char *__pyx_filename;
211 static const char **__pyx_f;
212
213 static INLINE PyObject *__Pyx_GetItemInt(PyObject *o, Py_ssize_t i, int is_unsigned) {
214     PyObject *r;
215     if (PyList_CheckExact(o) && 0 <= i && i < PyList_GET_SIZE(o)) {
216         r = PyList_GET_ITEM(o, i);
217         Py_INCREF(r);
218     }
219     else if (PyTuple_CheckExact(o) && 0 <= i && i < PyTuple_GET_SIZE(o)) {
220         r = PyTuple_GET_ITEM(o, i);
221         Py_INCREF(r);
222     }
223     else if (Py_TYPE(o)->tp_as_sequence && Py_TYPE(o)->tp_as_sequence->sq_item && (likely(i >= 0) || !is_unsigned))
224         r = PySequence_GetItem(o, i);
225     else {
226         PyObject *j = (likely(i >= 0) || !is_unsigned) ? PyInt_FromLong(i) : PyLong_FromUnsignedLongLong((sizeof(unsigned long long) > sizeof(Py_ssize_t) ? (1ULL << (sizeof(Py_ssize_t)*8)) : 0) + i);
227         if (!j)
228             return 0;
229         r = PyObject_GetItem(o, j);
230         Py_DECREF(j);
231     }
232     return r;
233 }
234
235 static void __Pyx_RaiseDoubleKeywordsError(
236     const char* func_name, PyObject* kw_name); /*proto*/
237
238 static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
239     Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
240
241 static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],     PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,     const char* function_name); /*proto*/
242
243 static INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict,
244     const char* function_name, int kw_allowed); /*proto*/
245
246 static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
247     const char *name, int exact); /*proto*/
248
249 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list); /*proto*/
250
251 static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
252
253 static INLINE PyObject* __Pyx_PyObject_Append(PyObject* L, PyObject* x) {
254     if (likely(PyList_CheckExact(L))) {
255         if (PyList_Append(L, x) < 0) return NULL;
256         Py_INCREF(Py_None);
257         return Py_None; // this is just to have an accurate signature
258     }
259     else {
260         return PyObject_CallMethod(L, "append", "(O)", x);
261     }
262 }
263
264 static void __Pyx_WriteUnraisable(const char *name); /*proto*/
265
266 static INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
267 static INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
268
269 static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/
270
271 static void __Pyx_AddTraceback(const char *funcname); /*proto*/
272
273 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
274
275 /* Type declarations */
276
277 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/buddy.pyx":22
278  * cimport purple
279  * 
280  * cdef class Buddy:             # <<<<<<<<<<<<<<
281  *     """
282  *     Buddy class
283  */
284
285 struct __pyx_obj_6purple_Buddy {
286   PyObject_HEAD
287   struct __pyx_vtabstruct_6purple_Buddy *__pyx_vtab;
288   PyObject *__account;
289   PyObject *__name;
290   PyObject *__exists;
291 };
292
293 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/purple.pyx":61
294  * include "util.pxd"
295  * 
296  * cdef class Purple:             # <<<<<<<<<<<<<<
297  *     """ Purple class.
298  * 
299  */
300
301 struct __pyx_obj_6purple_Purple {
302   PyObject_HEAD
303   struct __pyx_vtabstruct_6purple_Purple *__pyx_vtab;
304 };
305
306 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/proxy.pyx":56
307  *     USE_ENVVAR = property(get_USE_ENVVAR)
308  * 
309  * cdef class ProxyInfo:             # <<<<<<<<<<<<<<
310  * 
311  *     cdef proxy.PurpleProxyInfo *c_proxyinfo
312  */
313
314 struct __pyx_obj_6purple_ProxyInfo {
315   PyObject_HEAD
316   PurpleProxyInfo *c_proxyinfo;
317   PyObject *types;
318 };
319
320 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/protocol.pyx":22
321  * cimport purple
322  * 
323  * cdef class Protocol:             # <<<<<<<<<<<<<<
324  *     """
325  *     Protocol class
326  */
327
328 struct __pyx_obj_6purple_Protocol {
329   PyObject_HEAD
330   struct __pyx_vtabstruct_6purple_Protocol *__pyx_vtab;
331   PyObject *__id;
332   PyObject *__exists;
333 };
334
335 struct __pyx_obj_6purple_ProxyInfoType {
336   PyObject_HEAD
337   PurpleProxyType c_type;
338 };
339
340 struct __pyx_obj_6purple_Conversation {
341   PyObject_HEAD
342   struct __pyx_vtabstruct_6purple_Conversation *__pyx_vtab;
343   PyObject *__account;
344   PyObject *__name;
345   PyObject *__type;
346   PyObject *__exists;
347 };
348
349 struct __pyx_obj_6purple_Account {
350   PyObject_HEAD
351   struct __pyx_vtabstruct_6purple_Account *__pyx_vtab;
352   PyObject *__username;
353   PyObject *__protocol;
354   PyObject *__core;
355   PyObject *__exists;
356 };
357
358
359 struct __pyx_vtabstruct_6purple_Protocol {
360   PurplePlugin *(*_get_structure)(struct __pyx_obj_6purple_Protocol *);
361 };
362 static struct __pyx_vtabstruct_6purple_Protocol *__pyx_vtabptr_6purple_Protocol;
363
364
365 struct __pyx_vtabstruct_6purple_Buddy {
366   PurpleBuddy *(*_get_structure)(struct __pyx_obj_6purple_Buddy *);
367 };
368 static struct __pyx_vtabstruct_6purple_Buddy *__pyx_vtabptr_6purple_Buddy;
369
370
371 struct __pyx_vtabstruct_6purple_Conversation {
372   PurpleConversation *(*_get_structure)(struct __pyx_obj_6purple_Conversation *);
373 };
374 static struct __pyx_vtabstruct_6purple_Conversation *__pyx_vtabptr_6purple_Conversation;
375
376
377 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/purple.pyx":61
378  * include "util.pxd"
379  * 
380  * cdef class Purple:             # <<<<<<<<<<<<<<
381  *     """ Purple class.
382  * 
383  */
384
385 struct __pyx_vtabstruct_6purple_Purple {
386   void (*__core_ui_ops_ui_prefs_init)(struct __pyx_obj_6purple_Purple *);
387   void (*__core_ui_ops_debug_init)(struct __pyx_obj_6purple_Purple *);
388   void (*__core_ui_ops_ui_init)(struct __pyx_obj_6purple_Purple *);
389   void (*__core_ui_ops_quit)(struct __pyx_obj_6purple_Purple *);
390   GHashTable *(*__core_ui_ops_get_ui_info)(struct __pyx_obj_6purple_Purple *);
391 };
392 static struct __pyx_vtabstruct_6purple_Purple *__pyx_vtabptr_6purple_Purple;
393
394
395 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account.pyx":22
396  * cimport purple
397  * 
398  * cdef class Account:             # <<<<<<<<<<<<<<
399  *     """
400  *     Account class
401  */
402
403 struct __pyx_vtabstruct_6purple_Account {
404   PurpleAccount *(*_get_structure)(struct __pyx_obj_6purple_Account *);
405 };
406 static struct __pyx_vtabstruct_6purple_Account *__pyx_vtabptr_6purple_Account;
407 /* Module declarations from glib */
408
409 /* Module declarations from account */
410
411 /* Module declarations from prefs */
412
413 /* Module declarations from accountopt */
414
415 /* Module declarations from buddyicon */
416
417 /* Module declarations from blist */
418
419 /* Module declarations from prpl */
420
421 /* Module declarations from plugin */
422
423 /* Module declarations from connection */
424
425 /* Module declarations from conversation */
426
427 /* Module declarations from core */
428
429 /* Module declarations from debug */
430
431 /* Module declarations from eventloop */
432
433 /* Module declarations from ft */
434
435 /* Module declarations from idle */
436
437 /* Module declarations from notify */
438
439 /* Module declarations from pounce */
440
441 /* Module declarations from privacy */
442
443 /* Module declarations from proxy */
444
445 /* Module declarations from request */
446
447 /* Module declarations from roomlist */
448
449 /* Module declarations from server */
450
451 /* Module declarations from signals */
452
453 /* Module declarations from value */
454
455 /* Module declarations from status */
456
457 /* Module declarations from savedstatuses */
458
459 /* Module declarations from xmlnode */
460
461 /* Module declarations from util */
462
463 /* Module declarations from purple */
464
465 static PyTypeObject *__pyx_ptype_6purple_Purple = 0;
466 static PyTypeObject *__pyx_ptype_6purple_Protocol = 0;
467 static PyTypeObject *__pyx_ptype_6purple_ProxyInfoType = 0;
468 static PyTypeObject *__pyx_ptype_6purple_ProxyInfo = 0;
469 static PyTypeObject *__pyx_ptype_6purple_Account = 0;
470 static PyTypeObject *__pyx_ptype_6purple_Buddy = 0;
471 static PyTypeObject *__pyx_ptype_6purple_Conversation = 0;
472 static GHashTable *__pyx_v_6purple_c_ui_info;
473 static char *__pyx_v_6purple_c_ui_name;
474 static char *__pyx_v_6purple_c_ui_version;
475 static char *__pyx_v_6purple_c_ui_website;
476 static char *__pyx_v_6purple_c_ui_dev_website;
477 static PurpleAccountUiOps __pyx_v_6purple_c_account_ui_ops;
478 static PurpleBlistUiOps __pyx_v_6purple_c_blist_ui_ops;
479 static PurpleConnectionUiOps __pyx_v_6purple_c_conn_ui_ops;
480 static PurpleConversationUiOps __pyx_v_6purple_c_conv_ui_ops;
481 static PurpleCoreUiOps __pyx_v_6purple_c_core_ui_ops;
482 static PurpleEventLoopUiOps __pyx_v_6purple_c_eventloop_ui_ops;
483 static PurpleNotifyUiOps __pyx_v_6purple_c_notify_ui_ops;
484 static PurpleRequestUiOps __pyx_v_6purple_c_request_ui_ops;
485 static PurpleAccountRequestAuthorizationCb __pyx_v_6purple_c_request_authorize_authorize_cb;
486 static PurpleAccountRequestAuthorizationCb __pyx_v_6purple_c_request_authorize_deny_cb;
487 static void *__pyx_v_6purple_c_request_authorize_user_data;
488 static void __pyx_f_6purple_notify_added(PurpleAccount *, const char *, const char *, const char *, const char *); /*proto*/
489 static void __pyx_f_6purple_status_changed(PurpleAccount *, PurpleStatus *); /*proto*/
490 static void __pyx_f_6purple_request_add(PurpleAccount *, const char *, const char *, const char *, const char *); /*proto*/
491 static void *__pyx_f_6purple_request_authorize(PurpleAccount *, const char *, const char *, const char *, const char *, gboolean, PurpleAccountRequestAuthorizationCb, PurpleAccountRequestAuthorizationCb, void *); /*proto*/
492 static void __pyx_f_6purple_close_account_request(void *); /*proto*/
493 static void __pyx_f_6purple___group_node_cb(PurpleBlistNode *, PyObject *); /*proto*/
494 static void __pyx_f_6purple___contact_node_cb(PurpleBlistNode *, PyObject *); /*proto*/
495 static void __pyx_f_6purple___buddy_node_cb(PurpleBlistNode *, PyObject *); /*proto*/
496 static void __pyx_f_6purple___chat_node_cb(PurpleBlistNode *, PyObject *); /*proto*/
497 static void __pyx_f_6purple___other_node_cb(PurpleBlistNode *, PyObject *); /*proto*/
498 static void __pyx_f_6purple_new_list(PurpleBuddyList *); /*proto*/
499 static void __pyx_f_6purple_new_node(PurpleBlistNode *); /*proto*/
500 static void __pyx_f_6purple_show(PurpleBuddyList *); /*proto*/
501 static void __pyx_f_6purple_update(PurpleBuddyList *, PurpleBlistNode *); /*proto*/
502 static void __pyx_f_6purple_remove(PurpleBuddyList *, PurpleBlistNode *); /*proto*/
503 static void __pyx_f_6purple_destroy(PurpleBuddyList *); /*proto*/
504 static void __pyx_f_6purple_set_visible(PurpleBuddyList *, gboolean); /*proto*/
505 static void __pyx_f_6purple_request_add_buddy(PurpleAccount *, const char *, const char *, const char *); /*proto*/
506 static void __pyx_f_6purple_request_add_chat(PurpleAccount *, PurpleGroup *, const char *, const char *); /*proto*/
507 static void __pyx_f_6purple_request_add_group(void); /*proto*/
508 static void __pyx_f_6purple_connect_progress(PurpleConnection *, const char *, size_t, size_t); /*proto*/
509 static void __pyx_f_6purple_connected(PurpleConnection *); /*proto*/
510 static void __pyx_f_6purple_disconnected(PurpleConnection *); /*proto*/
511 static void __pyx_f_6purple_notice(PurpleConnection *, const char *); /*proto*/
512 static void __pyx_f_6purple_report_disconnect(PurpleConnection *, const char *); /*proto*/
513 static void __pyx_f_6purple_network_connected(void); /*proto*/
514 static void __pyx_f_6purple_network_disconnected(void); /*proto*/
515 static void __pyx_f_6purple_report_disconnect_reason(PurpleConnection *, PurpleConnectionError, const char *); /*proto*/
516 static void __pyx_f_6purple_create_conversation(PurpleConversation *); /*proto*/
517 static void __pyx_f_6purple_destroy_conversation(PurpleConversation *); /*proto*/
518 static void __pyx_f_6purple_write_chat(PurpleConversation *, const char *, const char *, PurpleMessageFlags, time_t); /*proto*/
519 static void __pyx_f_6purple_write_im(PurpleConversation *, const char *, const char *, PurpleMessageFlags, time_t); /*proto*/
520 static void __pyx_f_6purple_write_conv(PurpleConversation *, const char *, const char *, const char *, PurpleMessageFlags, time_t); /*proto*/
521 static void __pyx_f_6purple_chat_add_users(PurpleConversation *, GList *, gboolean); /*proto*/
522 static void __pyx_f_6purple_chat_rename_user(PurpleConversation *, const char *, const char *, const char *); /*proto*/
523 static void __pyx_f_6purple_chat_remove_users(PurpleConversation *, GList *); /*proto*/
524 static void __pyx_f_6purple_chat_update_user(PurpleConversation *, const char *); /*proto*/
525 static void __pyx_f_6purple_present(PurpleConversation *); /*proto*/
526 static gboolean __pyx_f_6purple_has_focus(PurpleConversation *); /*proto*/
527 static gboolean __pyx_f_6purple_custom_smiley_add(PurpleConversation *, const char *, gboolean); /*proto*/
528 static void __pyx_f_6purple_custom_smiley_write(PurpleConversation *, const char *, const guchar *, gsize); /*proto*/
529 static void __pyx_f_6purple_custom_smiley_close(PurpleConversation *, const char *); /*proto*/
530 static void __pyx_f_6purple_send_confirm(PurpleConversation *, const char *); /*proto*/
531 static void *__pyx_f_6purple_notify_message(PurpleNotifyMsgType, const char *, const char *, const char *); /*proto*/
532 static void *__pyx_f_6purple_notify_email(PurpleConnection *, const char *, const char *, const char *, const char *); /*proto*/
533 static void *__pyx_f_6purple_notify_emails(PurpleConnection *, size_t, gboolean, const char **, const char **, const char **, const char **); /*proto*/
534 static void *__pyx_f_6purple_notify_formatted(const char *, const char *, const char *, const char *); /*proto*/
535 static void *__pyx_f_6purple_notify_searchresults(PurpleConnection *, const char *, const char *, const char *, PurpleNotifySearchResults *, gpointer); /*proto*/
536 static void __pyx_f_6purple_notify_searchresults_new_rows(PurpleConnection *, PurpleNotifySearchResults *, void *); /*proto*/
537 static void *__pyx_f_6purple_notify_userinfo(PurpleConnection *, const char *, PurpleNotifyUserInfo *); /*proto*/
538 static void *__pyx_f_6purple_notify_uri(const char *); /*proto*/
539 static void __pyx_f_6purple_close_notify(PurpleNotifyType, void *); /*proto*/
540 static void *__pyx_f_6purple_request_input(const char *, const char *, const char *, const char *, gboolean, gboolean, gchar *, const char *, GCallback, const char *, GCallback, PurpleAccount *, const char *, PurpleConversation *, void *); /*proto*/
541 static void *__pyx_f_6purple_request_choice(const char *, const char *, const char *, int, const char *, GCallback, const char *, GCallback, PurpleAccount *, const char *, PurpleConversation *, void *, va_list); /*proto*/
542 static void *__pyx_f_6purple_request_action(const char *, const char *, const char *, int, PurpleAccount *, const char *, PurpleConversation *, void *, size_t, va_list); /*proto*/
543 static void *__pyx_f_6purple_request_fields(const char *, const char *, const char *, PurpleRequestFields *, const char *, GCallback, const char *, GCallback, PurpleAccount *, const char *, PurpleConversation *, void *); /*proto*/
544 static void *__pyx_f_6purple_request_file(const char *, const char *, gboolean, GCallback, GCallback, PurpleAccount *, const char *, PurpleConversation *, void *); /*proto*/
545 static void __pyx_f_6purple_close_request(PurpleRequestType, void *); /*proto*/
546 static void *__pyx_f_6purple_request_folder(const char *, const char *, GCallback, GCallback, PurpleAccount *, const char *, PurpleConversation *, void *); /*proto*/
547 static void __pyx_f_6purple_signal_signed_on_cb(PurpleConnection *, gpointer); /*proto*/
548 static void __pyx_f_6purple_signal_signed_off_cb(PurpleConnection *, gpointer); /*proto*/
549 static void __pyx_f_6purple_signal_connection_error_cb(PurpleConnection *, PurpleConnectionError, const gchar *); /*proto*/
550 static void __pyx_f_6purple_signal_buddy_signed_on_cb(PurpleBuddy *); /*proto*/
551 static void __pyx_f_6purple_signal_buddy_signed_off_cb(PurpleBuddy *); /*proto*/
552 static gboolean __pyx_f_6purple_signal_receiving_im_msg_cb(PurpleAccount *, char **, char **, PurpleConversation *, PurpleMessageFlags *); /*proto*/
553 static void __pyx_f_6purple_jabber_receiving_xmlnode_cb(PurpleConnection *, xmlnode **, gpointer); /*proto*/
554
555
556 /* Implementation of purple */
557 static PyObject *__pyx_int_0;
558 static PyObject *__pyx_int_1;
559 static PyObject *__pyx_int_2;
560 static PyObject *__pyx_int_3;
561 static PyObject *__pyx_int_4;
562 static PyObject *__pyx_int_5;
563 static PyObject *__pyx_int_6;
564 static PyObject *__pyx_int_7;
565 static PyObject *__pyx_int_8;
566 static PyObject *__pyx_int_9;
567 static PyObject *__pyx_int_10;
568 static PyObject *__pyx_int_11;
569 static PyObject *__pyx_int_12;
570 static PyObject *__pyx_int_13;
571 static PyObject *__pyx_int_14;
572 static PyObject *__pyx_int_15;
573 static PyObject *__pyx_int_16;
574 static char __pyx_k___init__[] = "__init__";
575 static PyObject *__pyx_kp___init__;
576 static char __pyx_k_destroy[] = "destroy";
577 static PyObject *__pyx_kp_destroy;
578 static char __pyx_k___get_ui_name[] = "__get_ui_name";
579 static PyObject *__pyx_kp___get_ui_name;
580 static char __pyx_k_ui_name[] = "ui_name";
581 static PyObject *__pyx_kp_ui_name;
582 static char __pyx_k_1[] = "__glib_iteration_when_idle";
583 static PyObject *__pyx_kp_1;
584 static char __pyx_k_purple_init[] = "purple_init";
585 static PyObject *__pyx_kp_purple_init;
586 static char __pyx_k_add_callback[] = "add_callback";
587 static PyObject *__pyx_kp_add_callback;
588 static char __pyx_k_signal_connect[] = "signal_connect";
589 static PyObject *__pyx_kp_signal_connect;
590 static char __pyx_k_accounts_get_all[] = "accounts_get_all";
591 static PyObject *__pyx_kp_accounts_get_all;
592 static char __pyx_k_2[] = "accounts_get_all_active";
593 static PyObject *__pyx_kp_2;
594 static char __pyx_k_protocols_get_all[] = "protocols_get_all";
595 static PyObject *__pyx_kp_protocols_get_all;
596 static char __pyx_k___get_exists[] = "__get_exists";
597 static PyObject *__pyx_kp___get_exists;
598 static char __pyx_k_exists[] = "exists";
599 static PyObject *__pyx_kp_exists;
600 static char __pyx_k___get_id[] = "__get_id";
601 static PyObject *__pyx_kp___get_id;
602 static char __pyx_k_id[] = "id";
603 static PyObject *__pyx_kp_id;
604 static char __pyx_k___get_name[] = "__get_name";
605 static PyObject *__pyx_kp___get_name;
606 static char __pyx_k_name[] = "name";
607 static PyObject *__pyx_kp_name;
608 static char __pyx_k_3[] = "__get_options_labels";
609 static PyObject *__pyx_kp_3;
610 static char __pyx_k_options_labels[] = "options_labels";
611 static PyObject *__pyx_kp_options_labels;
612 static char __pyx_k_4[] = "__get_options_values";
613 static PyObject *__pyx_kp_4;
614 static char __pyx_k_options_values[] = "options_values";
615 static PyObject *__pyx_kp_options_values;
616 static char __pyx_k_get_NONE[] = "get_NONE";
617 static PyObject *__pyx_kp_get_NONE;
618 static char __pyx_k_NONE[] = "NONE";
619 static PyObject *__pyx_kp_NONE;
620 static char __pyx_k_get_USE_GLOBAL[] = "get_USE_GLOBAL";
621 static PyObject *__pyx_kp_get_USE_GLOBAL;
622 static char __pyx_k_USE_GLOBAL[] = "USE_GLOBAL";
623 static PyObject *__pyx_kp_USE_GLOBAL;
624 static char __pyx_k_get_HTTP[] = "get_HTTP";
625 static PyObject *__pyx_kp_get_HTTP;
626 static char __pyx_k_HTTP[] = "HTTP";
627 static PyObject *__pyx_kp_HTTP;
628 static char __pyx_k_5[] = "get_SOCKS4";
629 static PyObject *__pyx_kp_5;
630 static char __pyx_k_6[] = "get_SOCKS5";
631 static PyObject *__pyx_kp_6;
632 static char __pyx_k_get_USE_ENVVAR[] = "get_USE_ENVVAR";
633 static PyObject *__pyx_kp_get_USE_ENVVAR;
634 static char __pyx_k_USE_ENVVAR[] = "USE_ENVVAR";
635 static PyObject *__pyx_kp_USE_ENVVAR;
636 static char __pyx_k_set_type[] = "set_type";
637 static PyObject *__pyx_kp_set_type;
638 static char __pyx_k_set_host[] = "set_host";
639 static PyObject *__pyx_kp_set_host;
640 static char __pyx_k_set_port[] = "set_port";
641 static PyObject *__pyx_kp_set_port;
642 static char __pyx_k_set_username[] = "set_username";
643 static PyObject *__pyx_kp_set_username;
644 static char __pyx_k_set_password[] = "set_password";
645 static PyObject *__pyx_kp_set_password;
646 static char __pyx_k_get_types[] = "get_types";
647 static PyObject *__pyx_kp_get_types;
648 static char __pyx_k_set_info[] = "set_info";
649 static PyObject *__pyx_kp_set_info;
650 static char __pyx_k___is_connected[] = "__is_connected";
651 static PyObject *__pyx_kp___is_connected;
652 static char __pyx_k_is_connected[] = "is_connected";
653 static PyObject *__pyx_kp_is_connected;
654 static char __pyx_k___is_connecting[] = "__is_connecting";
655 static PyObject *__pyx_kp___is_connecting;
656 static char __pyx_k_is_connecting[] = "is_connecting";
657 static PyObject *__pyx_kp_is_connecting;
658 static char __pyx_k___is_disconnected[] = "__is_disconnected";
659 static PyObject *__pyx_kp___is_disconnected;
660 static char __pyx_k_is_disconnected[] = "is_disconnected";
661 static PyObject *__pyx_kp_is_disconnected;
662 static char __pyx_k___get_core[] = "__get_core";
663 static PyObject *__pyx_kp___get_core;
664 static char __pyx_k_core[] = "core";
665 static PyObject *__pyx_kp_core;
666 static char __pyx_k___get_username[] = "__get_username";
667 static PyObject *__pyx_kp___get_username;
668 static char __pyx_k_username[] = "username";
669 static PyObject *__pyx_kp_username;
670 static char __pyx_k___get_protocol[] = "__get_protocol";
671 static PyObject *__pyx_kp___get_protocol;
672 static char __pyx_k_protocol[] = "protocol";
673 static PyObject *__pyx_kp_protocol;
674 static char __pyx_k_7[] = "_get_protocol_options";
675 static PyObject *__pyx_kp_7;
676 static char __pyx_k_protocol_options[] = "protocol_options";
677 static PyObject *__pyx_kp_protocol_options;
678 static char __pyx_k___get_password[] = "__get_password";
679 static PyObject *__pyx_kp___get_password;
680 static char __pyx_k_password[] = "password";
681 static PyObject *__pyx_kp_password;
682 static char __pyx_k___get_alias[] = "__get_alias";
683 static PyObject *__pyx_kp___get_alias;
684 static char __pyx_k_alias[] = "alias";
685 static PyObject *__pyx_kp_alias;
686 static char __pyx_k___get_user_info[] = "__get_user_info";
687 static PyObject *__pyx_kp___get_user_info;
688 static char __pyx_k_user_info[] = "user_info";
689 static PyObject *__pyx_kp_user_info;
690 static char __pyx_k_8[] = "__get_remember_password";
691 static PyObject *__pyx_kp_8;
692 static char __pyx_k_remember_password[] = "remember_password";
693 static PyObject *__pyx_kp_remember_password;
694 static char __pyx_k___get_enabled[] = "__get_enabled";
695 static PyObject *__pyx_kp___get_enabled;
696 static char __pyx_k_enabled[] = "enabled";
697 static PyObject *__pyx_kp_enabled;
698 static char __pyx_k___get_status_types[] = "__get_status_types";
699 static PyObject *__pyx_kp___get_status_types;
700 static char __pyx_k_status_types[] = "status_types";
701 static PyObject *__pyx_kp_status_types;
702 static char __pyx_k___get_active_status[] = "__get_active_status";
703 static PyObject *__pyx_kp___get_active_status;
704 static char __pyx_k_active_status[] = "active_status";
705 static PyObject *__pyx_kp_active_status;
706 static char __pyx_k_set_protocol[] = "set_protocol";
707 static PyObject *__pyx_kp_set_protocol;
708 static char __pyx_k_9[] = "set_protocol_options";
709 static PyObject *__pyx_kp_9;
710 static char __pyx_k_set_alias[] = "set_alias";
711 static PyObject *__pyx_kp_set_alias;
712 static char __pyx_k_set_user_info[] = "set_user_info";
713 static PyObject *__pyx_kp_set_user_info;
714 static char __pyx_k_10[] = "set_remember_password";
715 static PyObject *__pyx_kp_10;
716 static char __pyx_k_set_enabled[] = "set_enabled";
717 static PyObject *__pyx_kp_set_enabled;
718 static char __pyx_k_new[] = "new";
719 static PyObject *__pyx_kp_new;
720 static char __pyx_k_remove[] = "remove";
721 static PyObject *__pyx_kp_remove;
722 static char __pyx_k_connect[] = "connect";
723 static PyObject *__pyx_kp_connect;
724 static char __pyx_k_disconnect[] = "disconnect";
725 static PyObject *__pyx_kp_disconnect;
726 static char __pyx_k_add_buddy[] = "add_buddy";
727 static PyObject *__pyx_kp_add_buddy;
728 static char __pyx_k_remove_buddy[] = "remove_buddy";
729 static PyObject *__pyx_kp_remove_buddy;
730 static char __pyx_k_get_buddies_online[] = "get_buddies_online";
731 static PyObject *__pyx_kp_get_buddies_online;
732 static char __pyx_k_request_add_buddy[] = "request_add_buddy";
733 static PyObject *__pyx_kp_request_add_buddy;
734 static char __pyx_k_set_active_status[] = "set_active_status";
735 static PyObject *__pyx_kp_set_active_status;
736 static char __pyx_k_set_status_message[] = "set_status_message";
737 static PyObject *__pyx_kp_set_status_message;
738 static char __pyx_k___get_account[] = "__get_account";
739 static PyObject *__pyx_kp___get_account;
740 static char __pyx_k_account[] = "account";
741 static PyObject *__pyx_kp_account;
742 static char __pyx_k___get_group[] = "__get_group";
743 static PyObject *__pyx_kp___get_group;
744 static char __pyx_k_group[] = "group";
745 static PyObject *__pyx_kp_group;
746 static char __pyx_k___get_server_alias[] = "__get_server_alias";
747 static PyObject *__pyx_kp___get_server_alias;
748 static char __pyx_k_server_alias[] = "server_alias";
749 static PyObject *__pyx_kp_server_alias;
750 static char __pyx_k___get_contact_alias[] = "__get_contact_alias";
751 static PyObject *__pyx_kp___get_contact_alias;
752 static char __pyx_k_contact_alias[] = "contact_alias";
753 static PyObject *__pyx_kp_contact_alias;
754 static char __pyx_k___get_local_alias[] = "__get_local_alias";
755 static PyObject *__pyx_kp___get_local_alias;
756 static char __pyx_k_local_alias[] = "local_alias";
757 static PyObject *__pyx_kp_local_alias;
758 static char __pyx_k___get_available[] = "__get_available";
759 static PyObject *__pyx_kp___get_available;
760 static char __pyx_k_available[] = "available";
761 static PyObject *__pyx_kp_available;
762 static char __pyx_k___get_online[] = "__get_online";
763 static PyObject *__pyx_kp___get_online;
764 static char __pyx_k_online[] = "online";
765 static PyObject *__pyx_kp_online;
766 static char __pyx_k___get_idle[] = "__get_idle";
767 static PyObject *__pyx_kp___get_idle;
768 static char __pyx_k_idle[] = "idle";
769 static PyObject *__pyx_kp_idle;
770 static char __pyx_k_set_group[] = "set_group";
771 static PyObject *__pyx_kp_set_group;
772 static char __pyx_k_set_ui_ops[] = "set_ui_ops";
773 static PyObject *__pyx_kp_set_ui_ops;
774 static char __pyx_k_im_send[] = "im_send";
775 static PyObject *__pyx_kp_im_send;
776 static char __pyx_k_message[] = "message";
777 static PyObject *__pyx_kp_message;
778 static char __pyx_k_ui_version[] = "ui_version";
779 static PyObject *__pyx_kp_ui_version;
780 static char __pyx_k_ui_website[] = "ui_website";
781 static PyObject *__pyx_kp_ui_website;
782 static char __pyx_k_ui_dev_website[] = "ui_dev_website";
783 static PyObject *__pyx_kp_ui_dev_website;
784 static char __pyx_k_debug_enabled[] = "debug_enabled";
785 static PyObject *__pyx_kp_debug_enabled;
786 static char __pyx_k_default_path[] = "default_path";
787 static PyObject *__pyx_kp_default_path;
788 static char __pyx_k_type[] = "type";
789 static PyObject *__pyx_kp_type;
790 static char __pyx_k_callback[] = "callback";
791 static PyObject *__pyx_kp_callback;
792 static char __pyx_k_cb[] = "cb";
793 static PyObject *__pyx_kp_cb;
794 static char __pyx_k_host[] = "host";
795 static PyObject *__pyx_kp_host;
796 static char __pyx_k_port[] = "port";
797 static PyObject *__pyx_kp_port;
798 static char __pyx_k_acc[] = "acc";
799 static PyObject *__pyx_kp_acc;
800 static char __pyx_k_info[] = "info";
801 static PyObject *__pyx_kp_info;
802 static char __pyx_k_po[] = "po";
803 static PyObject *__pyx_kp_po;
804 static char __pyx_k_value[] = "value";
805 static PyObject *__pyx_kp_value;
806 static char __pyx_k_buddy_username[] = "buddy_username";
807 static PyObject *__pyx_kp_buddy_username;
808 static char __pyx_k_buddy_alias[] = "buddy_alias";
809 static PyObject *__pyx_kp_buddy_alias;
810 static char __pyx_k_msg[] = "msg";
811 static PyObject *__pyx_kp_msg;
812 static char __pyx_k_cbs[] = "cbs";
813 static PyObject *__pyx_kp_cbs;
814 static char __pyx_k_ecore[] = "ecore";
815 static PyObject *__pyx_kp_ecore;
816 static char __pyx_k_account_cbs[] = "account_cbs";
817 static PyObject *__pyx_kp_account_cbs;
818 static char __pyx_k_blist_cbs[] = "blist_cbs";
819 static PyObject *__pyx_kp_blist_cbs;
820 static char __pyx_k_connection_cbs[] = "connection_cbs";
821 static PyObject *__pyx_kp_connection_cbs;
822 static char __pyx_k_conversation_cbs[] = "conversation_cbs";
823 static PyObject *__pyx_kp_conversation_cbs;
824 static char __pyx_k_notify_cbs[] = "notify_cbs";
825 static PyObject *__pyx_kp_notify_cbs;
826 static char __pyx_k_request_cbs[] = "request_cbs";
827 static PyObject *__pyx_kp_request_cbs;
828 static char __pyx_k_signal_cbs[] = "signal_cbs";
829 static PyObject *__pyx_kp_signal_cbs;
830 static char __pyx_k_property[] = "property";
831 static PyObject *__pyx_kp_property;
832 static char __pyx_k_has_key[] = "has_key";
833 static PyObject *__pyx_kp_has_key;
834 static char __pyx_k_call_authorize_cb[] = "call_authorize_cb";
835 static PyObject *__pyx_kp_call_authorize_cb;
836 static char __pyx_k_call_deny_cb[] = "call_deny_cb";
837 static PyObject *__pyx_kp_call_deny_cb;
838 static char __pyx_k_54[] = "show";
839 static PyObject *__pyx_kp_54;
840 static char __pyx_k_55[] = "show";
841 static PyObject *__pyx_kp_55;
842 static char __pyx_k_60[] = "update";
843 static PyObject *__pyx_kp_60;
844 static char __pyx_k_61[] = "update";
845 static PyObject *__pyx_kp_61;
846 static char __pyx_k_62[] = "update";
847 static PyObject *__pyx_kp_62;
848 static char __pyx_k_63[] = "update";
849 static PyObject *__pyx_kp_63;
850 static char __pyx_k_64[] = "update";
851 static PyObject *__pyx_kp_64;
852 static char __pyx_k_65[] = "update";
853 static PyObject *__pyx_kp_65;
854 static char __pyx_k_69[] = "remove";
855 static PyObject *__pyx_kp_69;
856 static char __pyx_k_70[] = "remove";
857 static PyObject *__pyx_kp_70;
858 static char __pyx_k_71[] = "remove";
859 static PyObject *__pyx_kp_71;
860 static char __pyx_k_72[] = "remove";
861 static PyObject *__pyx_kp_72;
862 static char __pyx_k_73[] = "remove";
863 static PyObject *__pyx_kp_73;
864 static char __pyx_k_74[] = "remove";
865 static PyObject *__pyx_kp_74;
866 static char __pyx_k_78[] = "destroy";
867 static PyObject *__pyx_kp_78;
868 static char __pyx_k_79[] = "destroy";
869 static PyObject *__pyx_kp_79;
870 static char __pyx_k_112[] = "connected";
871 static PyObject *__pyx_kp_112;
872 static char __pyx_k_113[] = "connected";
873 static PyObject *__pyx_kp_113;
874 static char __pyx_k_118[] = "disconnected";
875 static PyObject *__pyx_kp_118;
876 static char __pyx_k_119[] = "disconnected";
877 static PyObject *__pyx_kp_119;
878 static char __pyx_k_124[] = "notice";
879 static PyObject *__pyx_kp_124;
880 static char __pyx_k_125[] = "notice";
881 static PyObject *__pyx_kp_125;
882 static char __pyx_k_185[] = "SEND";
883 static PyObject *__pyx_kp_185;
884 static char __pyx_k_186[] = "RECV";
885 static PyObject *__pyx_kp_186;
886 static char __pyx_k_222[] = "present";
887 static PyObject *__pyx_kp_222;
888 static char __pyx_k_223[] = "present";
889 static PyObject *__pyx_kp_223;
890 static char __pyx_k_timer_add[] = "timer_add";
891 static PyObject *__pyx_kp_timer_add;
892 static char __pyx_k_c_ui_info[] = "c_ui_info";
893 static PyObject *__pyx_kp_c_ui_info;
894 static char __pyx_k_405[] = "account";
895 static PyObject *__pyx_kp_405;
896 static char __pyx_k_406[] = "blist";
897 static PyObject *__pyx_kp_406;
898 static char __pyx_k_407[] = "connection";
899 static PyObject *__pyx_kp_407;
900 static char __pyx_k_408[] = "conversation";
901 static PyObject *__pyx_kp_408;
902 static char __pyx_k_409[] = "notify";
903 static PyObject *__pyx_kp_409;
904 static char __pyx_k_410[] = "request";
905 static PyObject *__pyx_kp_410;
906 static char __pyx_k_append[] = "append";
907 static PyObject *__pyx_kp_append;
908 static char __pyx_k_427[] = "HTTP";
909 static PyObject *__pyx_kp_427;
910 static char __pyx_k_428[] = "USER_GLOBAL";
911 static PyObject *__pyx_kp_428;
912 static char __pyx_k_429[] = "USE_ENVVAR";
913 static PyObject *__pyx_kp_429;
914 static char __pyx_k_430[] = "SOCKS4";
915 static PyObject *__pyx_kp_430;
916 static char __pyx_k_431[] = "SOCKS5";
917 static PyObject *__pyx_kp_431;
918 static char __pyx_k_432[] = "NONE";
919 static PyObject *__pyx_kp_432;
920 static char __pyx_k_keys[] = "keys";
921 static PyObject *__pyx_kp_keys;
922 static char __pyx_k_433[] = "type";
923 static PyObject *__pyx_kp_433;
924 static char __pyx_k_434[] = "type";
925 static PyObject *__pyx_kp_434;
926 static char __pyx_k_435[] = "type";
927 static PyObject *__pyx_kp_435;
928 static char __pyx_k_436[] = "HTTP";
929 static PyObject *__pyx_kp_436;
930 static char __pyx_k_437[] = "host";
931 static PyObject *__pyx_kp_437;
932 static char __pyx_k_438[] = "host";
933 static PyObject *__pyx_kp_438;
934 static char __pyx_k_439[] = "host";
935 static PyObject *__pyx_kp_439;
936 static char __pyx_k_440[] = "port";
937 static PyObject *__pyx_kp_440;
938 static char __pyx_k_441[] = "port";
939 static PyObject *__pyx_kp_441;
940 static char __pyx_k_442[] = "port";
941 static PyObject *__pyx_kp_442;
942 static char __pyx_k_443[] = "username";
943 static PyObject *__pyx_kp_443;
944 static char __pyx_k_444[] = "username";
945 static PyObject *__pyx_kp_444;
946 static char __pyx_k_445[] = "username";
947 static PyObject *__pyx_kp_445;
948 static char __pyx_k_446[] = "password";
949 static PyObject *__pyx_kp_446;
950 static char __pyx_k_447[] = "password";
951 static PyObject *__pyx_kp_447;
952 static char __pyx_k_448[] = "password";
953 static PyObject *__pyx_kp_448;
954 static char __pyx_k_451[] = "type";
955 static PyObject *__pyx_kp_451;
956 static char __pyx_k_452[] = "name";
957 static PyObject *__pyx_kp_452;
958 static char __pyx_k_453[] = "message";
959 static PyObject *__pyx_kp_453;
960 static char __pyx_k_459[] = "type";
961 static PyObject *__pyx_kp_459;
962 static char __pyx_k_460[] = "name";
963 static PyObject *__pyx_kp_460;
964 static char __pyx_k_461[] = "message";
965 static PyObject *__pyx_kp_461;
966 static char __pyx_k_462[] = "UNKNOWN";
967 static PyObject *__pyx_kp_462;
968 static char __pyx_k_463[] = "IM";
969 static PyObject *__pyx_kp_463;
970 static char __pyx_k_464[] = "CHAT";
971 static PyObject *__pyx_kp_464;
972 static char __pyx_k_465[] = "MISC";
973 static PyObject *__pyx_kp_465;
974 static char __pyx_k_466[] = "ANY";
975 static PyObject *__pyx_kp_466;
976 static PyObject *__pyx_builtin_property;
977 static PyObject *__pyx_kp_14;
978 static PyObject *__pyx_kp_15;
979 static char __pyx_k_11[] = "account";
980 static char __pyx_k_12[] = "%s";
981 static char __pyx_k_13[] = "notify-added\n";
982 static char __pyx_k_14[] = "notify-added";
983 static char __pyx_k_15[] = "notify-added";
984 static PyObject *__pyx_kp_19;
985 static PyObject *__pyx_kp_20;
986 static char __pyx_k_16[] = "account";
987 static char __pyx_k_17[] = "%s";
988 static char __pyx_k_18[] = "status-changed\n";
989 static char __pyx_k_19[] = "status-changed";
990 static char __pyx_k_20[] = "status-changed";
991 static PyObject *__pyx_kp_24;
992 static PyObject *__pyx_kp_25;
993 static char __pyx_k_21[] = "account";
994 static char __pyx_k_22[] = "%s";
995 static char __pyx_k_23[] = "request-add\n";
996 static char __pyx_k_24[] = "request-add";
997 static char __pyx_k_25[] = "request-add";
998 static PyObject *__pyx_kp_29;
999 static PyObject *__pyx_kp_30;
1000 static char __pyx_k_26[] = "account";
1001 static char __pyx_k_27[] = "%s";
1002 static char __pyx_k_28[] = "request-authorize\n";
1003 static char __pyx_k_29[] = "request-authorize";
1004 static char __pyx_k_30[] = "request-authorize";
1005 static PyObject *__pyx_kp_34;
1006 static PyObject *__pyx_kp_35;
1007 static char __pyx_k_31[] = "account";
1008 static char __pyx_k_32[] = "%s";
1009 static char __pyx_k_33[] = "close-account-request\n";
1010 static char __pyx_k_34[] = "close-account-request";
1011 static char __pyx_k_35[] = "close-account-request";
1012 static PyObject *__pyx_kp_39;
1013 static PyObject *__pyx_kp_40;
1014 static PyObject *__pyx_kp_41;
1015 static char __pyx_k_36[] = "blist";
1016 static char __pyx_k_37[] = "%s";
1017 static char __pyx_k_38[] = "new-list\n";
1018 static char __pyx_k_39[] = "new-list";
1019 static char __pyx_k_40[] = "new-list";
1020 static char __pyx_k_41[] = "new-list: TODO";
1021 static PyObject *__pyx_kp_45;
1022 static PyObject *__pyx_kp_46;
1023 static PyObject *__pyx_kp_47;
1024 static PyObject *__pyx_kp_48;
1025 static PyObject *__pyx_kp_49;
1026 static PyObject *__pyx_kp_50;
1027 static char __pyx_k_42[] = "blist";
1028 static char __pyx_k_43[] = "%s";
1029 static char __pyx_k_44[] = "new-node\n";
1030 static char __pyx_k_45[] = "new-node";
1031 static char __pyx_k_46[] = "new-node";
1032 static char __pyx_k_47[] = "new-node";
1033 static char __pyx_k_48[] = "new-node";
1034 static char __pyx_k_49[] = "new-node";
1035 static char __pyx_k_50[] = "new-node";
1036 static PyObject *__pyx_kp_56;
1037 static char __pyx_k_51[] = "blist";
1038 static char __pyx_k_52[] = "%s";
1039 static char __pyx_k_53[] = "show\n";
1040 static char __pyx_k_56[] = "show: TODO";
1041 static char __pyx_k_57[] = "blist";
1042 static char __pyx_k_58[] = "%s";
1043 static char __pyx_k_59[] = "update\n";
1044 static char __pyx_k_66[] = "blist";
1045 static char __pyx_k_67[] = "%s";
1046 static char __pyx_k_68[] = "remove\n";
1047 static PyObject *__pyx_kp_80;
1048 static char __pyx_k_75[] = "blist";
1049 static char __pyx_k_76[] = "%s";
1050 static char __pyx_k_77[] = "destroy\n";
1051 static char __pyx_k_80[] = "destroy: TODO";
1052 static PyObject *__pyx_kp_84;
1053 static PyObject *__pyx_kp_85;
1054 static PyObject *__pyx_kp_86;
1055 static char __pyx_k_81[] = "blist";
1056 static char __pyx_k_82[] = "%s";
1057 static char __pyx_k_83[] = "set-visible\n";
1058 static char __pyx_k_84[] = "set-visible";
1059 static char __pyx_k_85[] = "set-visible";
1060 static char __pyx_k_86[] = "set-visible: TODO";
1061 static PyObject *__pyx_kp_90;
1062 static PyObject *__pyx_kp_91;
1063 static char __pyx_k_87[] = "blist";
1064 static char __pyx_k_88[] = "%s";
1065 static char __pyx_k_89[] = "request-add-buddy\n";
1066 static char __pyx_k_90[] = "request-add-buddy";
1067 static char __pyx_k_91[] = "request-add-buddy";
1068 static PyObject *__pyx_kp_95;
1069 static PyObject *__pyx_kp_96;
1070 static PyObject *__pyx_kp_97;
1071 static char __pyx_k_92[] = "blist";
1072 static char __pyx_k_93[] = "%s";
1073 static char __pyx_k_94[] = "request-add-chat\n";
1074 static char __pyx_k_95[] = "request-add-chat";
1075 static char __pyx_k_96[] = "request-add-chat";
1076 static char __pyx_k_97[] = "request-add-chat: TODO";
1077 static PyObject *__pyx_kp_101;
1078 static PyObject *__pyx_kp_102;
1079 static PyObject *__pyx_kp_103;
1080 static char __pyx_k_98[] = "blist";
1081 static char __pyx_k_99[] = "%s";
1082 static char __pyx_k_100[] = "request-add-group\n";
1083 static char __pyx_k_101[] = "request-add-chat";
1084 static char __pyx_k_102[] = "request-add-chat";
1085 static char __pyx_k_103[] = "request-add-group: TODO";
1086 static PyObject *__pyx_kp_107;
1087 static PyObject *__pyx_kp_108;
1088 static char __pyx_k_104[] = "connection";
1089 static char __pyx_k_105[] = "%s";
1090 static char __pyx_k_106[] = "connect-progress\n";
1091 static char __pyx_k_107[] = "connect-progress";
1092 static char __pyx_k_108[] = "connect-progress";
1093 static PyObject *__pyx_kp_114;
1094 static char __pyx_k_109[] = "connection";
1095 static char __pyx_k_110[] = "%s";
1096 static char __pyx_k_111[] = "connected\n";
1097 static char __pyx_k_114[] = "connected: TODO";
1098 static PyObject *__pyx_kp_120;
1099 static char __pyx_k_115[] = "connection";
1100 static char __pyx_k_116[] = "%s";
1101 static char __pyx_k_117[] = "disconnected\n";
1102 static char __pyx_k_120[] = "disconnected: TODO";
1103 static PyObject *__pyx_kp_126;
1104 static char __pyx_k_121[] = "connection";
1105 static char __pyx_k_122[] = "%s";
1106 static char __pyx_k_123[] = "notice\n";
1107 static char __pyx_k_126[] = "notice: TODO";
1108 static PyObject *__pyx_kp_130;
1109 static PyObject *__pyx_kp_131;
1110 static char __pyx_k_127[] = "connection";
1111 static char __pyx_k_128[] = "%s";
1112 static char __pyx_k_129[] = "report-disconnect\n";
1113 static char __pyx_k_130[] = "report-disconnect";
1114 static char __pyx_k_131[] = "report-disconnect";
1115 static PyObject *__pyx_kp_135;
1116 static PyObject *__pyx_kp_136;
1117 static char __pyx_k_132[] = "connection";
1118 static char __pyx_k_133[] = "%s";
1119 static char __pyx_k_134[] = "network-connected\n";
1120 static char __pyx_k_135[] = "network-connected";
1121 static char __pyx_k_136[] = "network-connected";
1122 static PyObject *__pyx_kp_140;
1123 static PyObject *__pyx_kp_141;
1124 static char __pyx_k_137[] = "connection";
1125 static char __pyx_k_138[] = "%s";
1126 static char __pyx_k_139[] = "network-disconnected\n";
1127 static char __pyx_k_140[] = "network-disconnected";
1128 static char __pyx_k_141[] = "network-disconnected";
1129 static PyObject *__pyx_kp_145;
1130 static PyObject *__pyx_kp_146;
1131 static PyObject *__pyx_kp_147;
1132 static PyObject *__pyx_kp_148;
1133 static PyObject *__pyx_kp_149;
1134 static PyObject *__pyx_kp_150;
1135 static PyObject *__pyx_kp_151;
1136 static PyObject *__pyx_kp_152;
1137 static PyObject *__pyx_kp_153;
1138 static PyObject *__pyx_kp_154;
1139 static PyObject *__pyx_kp_155;
1140 static PyObject *__pyx_kp_156;
1141 static PyObject *__pyx_kp_157;
1142 static PyObject *__pyx_kp_158;
1143 static PyObject *__pyx_kp_159;
1144 static PyObject *__pyx_kp_160;
1145 static PyObject *__pyx_kp_161;
1146 static PyObject *__pyx_kp_162;
1147 static PyObject *__pyx_kp_163;
1148 static char __pyx_k_142[] = "connection";
1149 static char __pyx_k_143[] = "%s";
1150 static char __pyx_k_144[] = "report-disconnect-reason\n";
1151 static char __pyx_k_145[] = "Network error";
1152 static char __pyx_k_146[] = "Invalid username";
1153 static char __pyx_k_147[] = "Authentication failed";
1154 static char __pyx_k_148[] = "Authentication impossible";
1155 static char __pyx_k_149[] = "No SSL support";
1156 static char __pyx_k_150[] = "Encryption error";
1157 static char __pyx_k_151[] = "Name in use";
1158 static char __pyx_k_152[] = "Invalid settings";
1159 static char __pyx_k_153[] = "Certificate not provided";
1160 static char __pyx_k_154[] = "Certificate untrusted";
1161 static char __pyx_k_155[] = "Certificate expired";
1162 static char __pyx_k_156[] = "Certificate not activated";
1163 static char __pyx_k_157[] = "Certificate hostname mismatch";
1164 static char __pyx_k_158[] = "Certificate fingerprint mismatch";
1165 static char __pyx_k_159[] = "Certificate self signed";
1166 static char __pyx_k_160[] = "Certificate error (other)";
1167 static char __pyx_k_161[] = "Other error";
1168 static char __pyx_k_162[] = "report-disconnect-reason";
1169 static char __pyx_k_163[] = "report-disconnect-reason";
1170 static PyObject *__pyx_kp_167;
1171 static PyObject *__pyx_kp_168;
1172 static char __pyx_k_164[] = "conversation";
1173 static char __pyx_k_165[] = "%s";
1174 static char __pyx_k_166[] = "create-conversation\n";
1175 static char __pyx_k_167[] = "create-conversation";
1176 static char __pyx_k_168[] = "create-conversation";
1177 static PyObject *__pyx_kp_172;
1178 static PyObject *__pyx_kp_173;
1179 static PyObject *__pyx_kp_174;
1180 static char __pyx_k_169[] = "conversation";
1181 static char __pyx_k_170[] = "%s";
1182 static char __pyx_k_171[] = "destroy-conversation\n";
1183 static char __pyx_k_172[] = "destroy-conversation";
1184 static char __pyx_k_173[] = "destroy-conversation";
1185 static char __pyx_k_174[] = "destroy-conversation: TODO";
1186 static PyObject *__pyx_kp_178;
1187 static PyObject *__pyx_kp_179;
1188 static PyObject *__pyx_kp_180;
1189 static char __pyx_k_175[] = "conversation";
1190 static char __pyx_k_176[] = "%s";
1191 static char __pyx_k_177[] = "write-chat\n";
1192 static char __pyx_k_178[] = "write-chat";
1193 static char __pyx_k_179[] = "write-chat";
1194 static char __pyx_k_180[] = "write-chat: TODO";
1195 static PyObject *__pyx_kp_184;
1196 static PyObject *__pyx_kp_187;
1197 static PyObject *__pyx_kp_188;
1198 static char __pyx_k_181[] = "conversation";
1199 static char __pyx_k_182[] = "%s";
1200 static char __pyx_k_183[] = "write-im\n";
1201 static char __pyx_k_184[] = "utf-8";
1202 static char __pyx_k_187[] = "write-im";
1203 static char __pyx_k_188[] = "write-im";
1204 static PyObject *__pyx_kp_192;
1205 static PyObject *__pyx_kp_193;
1206 static PyObject *__pyx_kp_194;
1207 static char __pyx_k_189[] = "conversation";
1208 static char __pyx_k_190[] = "%s";
1209 static char __pyx_k_191[] = "write-conv\n";
1210 static char __pyx_k_192[] = "write-conv";
1211 static char __pyx_k_193[] = "write-conv";
1212 static char __pyx_k_194[] = "write-conv: TODO";
1213 static PyObject *__pyx_kp_198;
1214 static PyObject *__pyx_kp_199;
1215 static PyObject *__pyx_kp_200;
1216 static char __pyx_k_195[] = "conversation";
1217 static char __pyx_k_196[] = "%s";
1218 static char __pyx_k_197[] = "chat-add-users\n";
1219 static char __pyx_k_198[] = "chat-add-users";
1220 static char __pyx_k_199[] = "chat-add-users";
1221 static char __pyx_k_200[] = "chat-add-users: TODO";
1222 static PyObject *__pyx_kp_204;
1223 static PyObject *__pyx_kp_205;
1224 static PyObject *__pyx_kp_206;
1225 static char __pyx_k_201[] = "conversation";
1226 static char __pyx_k_202[] = "%s";
1227 static char __pyx_k_203[] = "chat-rename-user\n";
1228 static char __pyx_k_204[] = "chat-rename-user";
1229 static char __pyx_k_205[] = "chat-rename-user";
1230 static char __pyx_k_206[] = "chat-rename-user: TODO";
1231 static PyObject *__pyx_kp_210;
1232 static PyObject *__pyx_kp_211;
1233 static PyObject *__pyx_kp_212;
1234 static char __pyx_k_207[] = "conversation";
1235 static char __pyx_k_208[] = "%s";
1236 static char __pyx_k_209[] = "chat-remove-users\n";
1237 static char __pyx_k_210[] = "chat-remove-users";
1238 static char __pyx_k_211[] = "chat-remove-users";
1239 static char __pyx_k_212[] = "chat-remove-users: TODO";
1240 static PyObject *__pyx_kp_216;
1241 static PyObject *__pyx_kp_217;
1242 static PyObject *__pyx_kp_218;
1243 static char __pyx_k_213[] = "conversation";
1244 static char __pyx_k_214[] = "%s";
1245 static char __pyx_k_215[] = "chat-update-user\n";
1246 static char __pyx_k_216[] = "chat-update-user";
1247 static char __pyx_k_217[] = "chat-update-user";
1248 static char __pyx_k_218[] = "chat-update-user: TODO";
1249 static PyObject *__pyx_kp_224;
1250 static char __pyx_k_219[] = "conversation";
1251 static char __pyx_k_220[] = "%s";
1252 static char __pyx_k_221[] = "present\n";
1253 static char __pyx_k_224[] = "present: TODO";
1254 static PyObject *__pyx_kp_228;
1255 static PyObject *__pyx_kp_229;
1256 static PyObject *__pyx_kp_230;
1257 static char __pyx_k_225[] = "conversation";
1258 static char __pyx_k_226[] = "%s";
1259 static char __pyx_k_227[] = "has-focus\n";
1260 static char __pyx_k_228[] = "has-focus";
1261 static char __pyx_k_229[] = "has-focus";
1262 static char __pyx_k_230[] = "has-focus: TODO";
1263 static PyObject *__pyx_kp_234;
1264 static PyObject *__pyx_kp_235;
1265 static PyObject *__pyx_kp_236;
1266 static char __pyx_k_231[] = "conversation";
1267 static char __pyx_k_232[] = "%s";
1268 static char __pyx_k_233[] = "custom-smiley-add\n";
1269 static char __pyx_k_234[] = "custom-smiley-add";
1270 static char __pyx_k_235[] = "custom-smiley-add";
1271 static char __pyx_k_236[] = "custom-smiley-add: TODO";
1272 static PyObject *__pyx_kp_240;
1273 static PyObject *__pyx_kp_241;
1274 static PyObject *__pyx_kp_242;
1275 static char __pyx_k_237[] = "conversation";
1276 static char __pyx_k_238[] = "%s";
1277 static char __pyx_k_239[] = "custom-smiley-write\n";
1278 static char __pyx_k_240[] = "custom-smiley-write";
1279 static char __pyx_k_241[] = "custom-smiley-write";
1280 static char __pyx_k_242[] = "custom-smiley-write: TODO";
1281 static PyObject *__pyx_kp_246;
1282 static PyObject *__pyx_kp_247;
1283 static PyObject *__pyx_kp_248;
1284 static char __pyx_k_243[] = "conversation";
1285 static char __pyx_k_244[] = "%s";
1286 static char __pyx_k_245[] = "custom-smiley-close\n";
1287 static char __pyx_k_246[] = "custom-smiley-close";
1288 static char __pyx_k_247[] = "custom-smiley-close";
1289 static char __pyx_k_248[] = "custom-smiley-close: TODO";
1290 static PyObject *__pyx_kp_252;
1291 static PyObject *__pyx_kp_253;
1292 static PyObject *__pyx_kp_254;
1293 static char __pyx_k_249[] = "conversation";
1294 static char __pyx_k_250[] = "%s";
1295 static char __pyx_k_251[] = "send-confirm\n";
1296 static char __pyx_k_252[] = "send-confirm";
1297 static char __pyx_k_253[] = "send-confirm";
1298 static char __pyx_k_254[] = "send-confirm: TODO";
1299 static PyObject *__pyx_kp_258;
1300 static PyObject *__pyx_kp_259;
1301 static PyObject *__pyx_kp_260;
1302 static char __pyx_k_255[] = "notify";
1303 static char __pyx_k_256[] = "%s";
1304 static char __pyx_k_257[] = "notify-message\n";
1305 static char __pyx_k_258[] = "notif-message";
1306 static char __pyx_k_259[] = "notify-message";
1307 static char __pyx_k_260[] = "notify-message: TODO";
1308 static PyObject *__pyx_kp_264;
1309 static PyObject *__pyx_kp_265;
1310 static PyObject *__pyx_kp_266;
1311 static char __pyx_k_261[] = "notify";
1312 static char __pyx_k_262[] = "%s";
1313 static char __pyx_k_263[] = "notify-email\n";
1314 static char __pyx_k_264[] = "notify-email";
1315 static char __pyx_k_265[] = "notify-email";
1316 static char __pyx_k_266[] = "notify-email: TODO";
1317 static PyObject *__pyx_kp_270;
1318 static PyObject *__pyx_kp_271;
1319 static PyObject *__pyx_kp_272;
1320 static char __pyx_k_267[] = "notify";
1321 static char __pyx_k_268[] = "%s";
1322 static char __pyx_k_269[] = "notify-emails\n";
1323 static char __pyx_k_270[] = "notify-emails";
1324 static char __pyx_k_271[] = "notify-emails";
1325 static char __pyx_k_272[] = "notify-emails: TODO";
1326 static PyObject *__pyx_kp_276;
1327 static PyObject *__pyx_kp_277;
1328 static PyObject *__pyx_kp_278;
1329 static char __pyx_k_273[] = "notify";
1330 static char __pyx_k_274[] = "%s";
1331 static char __pyx_k_275[] = "notify-formatted\n";
1332 static char __pyx_k_276[] = "notify-formatted";
1333 static char __pyx_k_277[] = "notify-formatted";
1334 static char __pyx_k_278[] = "notify-formatted: TODO";
1335 static PyObject *__pyx_kp_282;
1336 static PyObject *__pyx_kp_283;
1337 static PyObject *__pyx_kp_284;
1338 static char __pyx_k_279[] = "notify";
1339 static char __pyx_k_280[] = "%s";
1340 static char __pyx_k_281[] = "notify-searchresults\n";
1341 static char __pyx_k_282[] = "notify-searchresults";
1342 static char __pyx_k_283[] = "notify-searchresults";
1343 static char __pyx_k_284[] = "notify-searchresults: TODO";
1344 static PyObject *__pyx_kp_288;
1345 static PyObject *__pyx_kp_289;
1346 static PyObject *__pyx_kp_290;
1347 static char __pyx_k_285[] = "notify";
1348 static char __pyx_k_286[] = "%s";
1349 static char __pyx_k_287[] = "notify-searchresults-new-rows\n";
1350 static char __pyx_k_288[] = "notify-searchresults-new-rows";
1351 static char __pyx_k_289[] = "notify-searchresults-new-rows";
1352 static char __pyx_k_290[] = "notify-searchresults-new-rows: TODO";
1353 static PyObject *__pyx_kp_294;
1354 static PyObject *__pyx_kp_295;
1355 static PyObject *__pyx_kp_296;
1356 static char __pyx_k_291[] = "notify";
1357 static char __pyx_k_292[] = "%s";
1358 static char __pyx_k_293[] = "notify-userinfo\n";
1359 static char __pyx_k_294[] = "notify-userinfo";
1360 static char __pyx_k_295[] = "notify-userinfo";
1361 static char __pyx_k_296[] = "notify-userinfo: TODO";
1362 static PyObject *__pyx_kp_300;
1363 static PyObject *__pyx_kp_301;
1364 static PyObject *__pyx_kp_302;
1365 static char __pyx_k_297[] = "notify";
1366 static char __pyx_k_298[] = "%s";
1367 static char __pyx_k_299[] = "notify-uri\n";
1368 static char __pyx_k_300[] = "notify-uri";
1369 static char __pyx_k_301[] = "notify-uri";
1370 static char __pyx_k_302[] = "notify-uri: TODO";
1371 static PyObject *__pyx_kp_306;
1372 static PyObject *__pyx_kp_307;
1373 static PyObject *__pyx_kp_308;
1374 static char __pyx_k_303[] = "notify";
1375 static char __pyx_k_304[] = "%s";
1376 static char __pyx_k_305[] = "close-notify\n";
1377 static char __pyx_k_306[] = "close-notify";
1378 static char __pyx_k_307[] = "close-notify";
1379 static char __pyx_k_308[] = "close-notify: TODO";
1380 static PyObject *__pyx_kp_312;
1381 static PyObject *__pyx_kp_313;
1382 static PyObject *__pyx_kp_314;
1383 static char __pyx_k_309[] = "request";
1384 static char __pyx_k_310[] = "%s";
1385 static char __pyx_k_311[] = "request-input\n";
1386 static char __pyx_k_312[] = "request-input";
1387 static char __pyx_k_313[] = "request-input";
1388 static char __pyx_k_314[] = "request-input: TODO";
1389 static PyObject *__pyx_kp_318;
1390 static PyObject *__pyx_kp_319;
1391 static PyObject *__pyx_kp_320;
1392 static char __pyx_k_315[] = "request";
1393 static char __pyx_k_316[] = "%s";
1394 static char __pyx_k_317[] = "request-choice\n";
1395 static char __pyx_k_318[] = "request-choice";
1396 static char __pyx_k_319[] = "request-choice";
1397 static char __pyx_k_320[] = "request-choice: TODO";
1398 static PyObject *__pyx_kp_324;
1399 static PyObject *__pyx_kp_325;
1400 static PyObject *__pyx_kp_326;
1401 static char __pyx_k_321[] = "request";
1402 static char __pyx_k_322[] = "%s";
1403 static char __pyx_k_323[] = "request-action\n";
1404 static char __pyx_k_324[] = "request-action";
1405 static char __pyx_k_325[] = "request-action";
1406 static char __pyx_k_326[] = "request-action: TODo";
1407 static PyObject *__pyx_kp_330;
1408 static PyObject *__pyx_kp_331;
1409 static PyObject *__pyx_kp_332;
1410 static char __pyx_k_327[] = "request";
1411 static char __pyx_k_328[] = "%s";
1412 static char __pyx_k_329[] = "request-fields\n";
1413 static char __pyx_k_330[] = "request-fields";
1414 static char __pyx_k_331[] = "request-fields";
1415 static char __pyx_k_332[] = "request-fields: TODO";
1416 static PyObject *__pyx_kp_336;
1417 static PyObject *__pyx_kp_337;
1418 static PyObject *__pyx_kp_338;
1419 static char __pyx_k_333[] = "request";
1420 static char __pyx_k_334[] = "%s";
1421 static char __pyx_k_335[] = "request-file\n";
1422 static char __pyx_k_336[] = "request-file";
1423 static char __pyx_k_337[] = "request-file";
1424 static char __pyx_k_338[] = "request-file: TODO";
1425 static PyObject *__pyx_kp_342;
1426 static PyObject *__pyx_kp_343;
1427 static PyObject *__pyx_kp_344;
1428 static char __pyx_k_339[] = "request";
1429 static char __pyx_k_340[] = "%s";
1430 static char __pyx_k_341[] = "close-request\n";
1431 static char __pyx_k_342[] = "close-request";
1432 static char __pyx_k_343[] = "close-request";
1433 static char __pyx_k_344[] = "close-request: TODO";
1434 static PyObject *__pyx_kp_348;
1435 static PyObject *__pyx_kp_349;
1436 static PyObject *__pyx_kp_350;
1437 static char __pyx_k_345[] = "request";
1438 static char __pyx_k_346[] = "%s";
1439 static char __pyx_k_347[] = "request-folder\n";
1440 static char __pyx_k_348[] = "request-folder";
1441 static char __pyx_k_349[] = "request-folder";
1442 static char __pyx_k_350[] = "request-folder: TODO";
1443 static PyObject *__pyx_kp_351;
1444 static PyObject *__pyx_kp_352;
1445 static char __pyx_k_351[] = "signed-on";
1446 static char __pyx_k_352[] = "signed-on";
1447 static PyObject *__pyx_kp_353;
1448 static PyObject *__pyx_kp_354;
1449 static char __pyx_k_353[] = "signed-off";
1450 static char __pyx_k_354[] = "signed-off";
1451 static PyObject *__pyx_kp_355;
1452 static PyObject *__pyx_kp_356;
1453 static PyObject *__pyx_kp_357;
1454 static PyObject *__pyx_kp_358;
1455 static PyObject *__pyx_kp_359;
1456 static PyObject *__pyx_kp_360;
1457 static PyObject *__pyx_kp_361;
1458 static PyObject *__pyx_kp_362;
1459 static PyObject *__pyx_kp_363;
1460 static PyObject *__pyx_kp_364;
1461 static PyObject *__pyx_kp_365;
1462 static PyObject *__pyx_kp_366;
1463 static PyObject *__pyx_kp_367;
1464 static PyObject *__pyx_kp_368;
1465 static PyObject *__pyx_kp_369;
1466 static PyObject *__pyx_kp_370;
1467 static PyObject *__pyx_kp_371;
1468 static PyObject *__pyx_kp_372;
1469 static PyObject *__pyx_kp_373;
1470 static char __pyx_k_355[] = "Network error";
1471 static char __pyx_k_356[] = "Invalid username";
1472 static char __pyx_k_357[] = "Authentication failed";
1473 static char __pyx_k_358[] = "Authentication impossible";
1474 static char __pyx_k_359[] = "No SSL support";
1475 static char __pyx_k_360[] = "Encryption error";
1476 static char __pyx_k_361[] = "Name in use";
1477 static char __pyx_k_362[] = "Invalid settings";
1478 static char __pyx_k_363[] = "SSL certificate not provided";
1479 static char __pyx_k_364[] = "SSL certificate untrusted";
1480 static char __pyx_k_365[] = "SSL certificate expired";
1481 static char __pyx_k_366[] = "SSL certificate not activated";
1482 static char __pyx_k_367[] = "SSL certificate hostname mismatch";
1483 static char __pyx_k_368[] = "SSL certificate fingerprint mismatch";
1484 static char __pyx_k_369[] = "SSL certificate self signed";
1485 static char __pyx_k_370[] = "SSL certificate other error";
1486 static char __pyx_k_371[] = "Other error";
1487 static char __pyx_k_372[] = "connection-error";
1488 static char __pyx_k_373[] = "connection-error";
1489 static PyObject *__pyx_kp_374;
1490 static PyObject *__pyx_kp_375;
1491 static char __pyx_k_374[] = "buddy-signed-on";
1492 static char __pyx_k_375[] = "buddy-signed-on";
1493 static PyObject *__pyx_kp_376;
1494 static PyObject *__pyx_kp_377;
1495 static char __pyx_k_376[] = "buddy-signed-off";
1496 static char __pyx_k_377[] = "buddy-signed-off";
1497 static PyObject *__pyx_kp_378;
1498 static PyObject *__pyx_kp_379;
1499 static char __pyx_k_378[] = "receiving-im-msg";
1500 static char __pyx_k_379[] = "receiving-im-msg";
1501 static PyObject *__pyx_kp_380;
1502 static PyObject *__pyx_kp_381;
1503 static char __pyx_k_380[] = "jabber-receiving-xmlnode";
1504 static char __pyx_k_381[] = "jabber-receiving-xmlnode";
1505 static char __pyx_k_382[] = "core_ui_ops";
1506 static char __pyx_k_383[] = "%s";
1507 static char __pyx_k_384[] = "ui_prefs_init\n";
1508 static char __pyx_k_385[] = "/carman";
1509 static char __pyx_k_386[] = "core_ui_ops";
1510 static char __pyx_k_387[] = "%s";
1511 static char __pyx_k_388[] = "debug_ui_init\n";
1512 static char __pyx_k_389[] = "core_ui_ops";
1513 static char __pyx_k_390[] = "%s";
1514 static char __pyx_k_391[] = "ui_init\n";
1515 static char __pyx_k_392[] = "core_ui_ops";
1516 static char __pyx_k_393[] = "%s";
1517 static char __pyx_k_394[] = "quit\n";
1518 static char __pyx_k_395[] = "name";
1519 static char __pyx_k_396[] = "version";
1520 static char __pyx_k_397[] = "website";
1521 static char __pyx_k_398[] = "dev_website";
1522 static char __pyx_k_399[] = "main";
1523 static char __pyx_k_400[] = "%s";
1524 static char __pyx_k_401[] = "libpurple initialization failed.\n";
1525 static char __pyx_k_402[] = "main";
1526 static char __pyx_k_403[] = "%s";
1527 static char __pyx_k_404[] = "Another instance of libpurple is already running.\n";
1528 static PyObject *__pyx_kp_412;
1529 static PyObject *__pyx_kp_414;
1530 static PyObject *__pyx_kp_416;
1531 static PyObject *__pyx_kp_418;
1532 static PyObject *__pyx_kp_420;
1533 static PyObject *__pyx_kp_422;
1534 static PyObject *__pyx_kp_424;
1535 static char __pyx_k_411[] = "prpl-jabber";
1536 static char __pyx_k_412[] = "signed-on";
1537 static char __pyx_k_413[] = "signed-on";
1538 static char __pyx_k_414[] = "signed-off";
1539 static char __pyx_k_415[] = "signed-off";
1540 static char __pyx_k_416[] = "connection-error";
1541 static char __pyx_k_417[] = "connection-error";
1542 static char __pyx_k_418[] = "buddy-signed-on";
1543 static char __pyx_k_419[] = "buddy-signed-on";
1544 static char __pyx_k_420[] = "buddy-signed-off";
1545 static char __pyx_k_421[] = "buddy-signed-off";
1546 static char __pyx_k_422[] = "receiving-im-msg";
1547 static char __pyx_k_423[] = "receiving-im-msg";
1548 static char __pyx_k_424[] = "jabber-receiving-xmlnode";
1549 static char __pyx_k_425[] = "jabber-receiving-xmlnode";
1550 static char __pyx_k_426[] = "";
1551 static char __pyx_k_449[] = "";
1552 static char __pyx_k_450[] = "message";
1553 static char __pyx_k_454[] = "message";
1554 static char __pyx_k_455[] = "/purple/savedstatus/idleaway";
1555 static char __pyx_k_456[] = "message";
1556 static PyObject *__pyx_kp_457;
1557 static char __pyx_k_457[] = "utf-8";
1558 static char __pyx_k_458[] = "message";
1559
1560 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":31
1561  * cdef void *c_request_authorize_user_data = NULL
1562  * 
1563  * def call_authorize_cb():             # <<<<<<<<<<<<<<
1564  *     global c_request_authorize_authorize_cb
1565  *     global c_request_authorize_deny_cb
1566  */
1567
1568 static PyObject *__pyx_pf_6purple_call_authorize_cb(PyObject *__pyx_self, PyObject *unused); /*proto*/
1569 static PyObject *__pyx_pf_6purple_call_authorize_cb(PyObject *__pyx_self, PyObject *unused) {
1570   PyObject *__pyx_r;
1571   int __pyx_1;
1572   __pyx_self = __pyx_self;
1573
1574   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":36
1575  *     global c_request_authorize_user_data
1576  * 
1577  *     if c_request_authorize_authorize_cb:             # <<<<<<<<<<<<<<
1578  *         c_request_authorize_authorize_cb(c_request_authorize_user_data)
1579  *     c_request_authorize_authorize_cb = NULL
1580  */
1581   __pyx_1 = (__pyx_v_6purple_c_request_authorize_authorize_cb != 0);
1582   if (__pyx_1) {
1583
1584     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":37
1585  * 
1586  *     if c_request_authorize_authorize_cb:
1587  *         c_request_authorize_authorize_cb(c_request_authorize_user_data)             # <<<<<<<<<<<<<<
1588  *     c_request_authorize_authorize_cb = NULL
1589  *     c_request_authorize_deny_cb = NULL
1590  */
1591     __pyx_v_6purple_c_request_authorize_authorize_cb(__pyx_v_6purple_c_request_authorize_user_data);
1592     goto __pyx_L5;
1593   }
1594   __pyx_L5:;
1595
1596   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":38
1597  *     if c_request_authorize_authorize_cb:
1598  *         c_request_authorize_authorize_cb(c_request_authorize_user_data)
1599  *     c_request_authorize_authorize_cb = NULL             # <<<<<<<<<<<<<<
1600  *     c_request_authorize_deny_cb = NULL
1601  *     c_request_authorize_user_data = NULL
1602  */
1603   __pyx_v_6purple_c_request_authorize_authorize_cb = NULL;
1604
1605   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":39
1606  *         c_request_authorize_authorize_cb(c_request_authorize_user_data)
1607  *     c_request_authorize_authorize_cb = NULL
1608  *     c_request_authorize_deny_cb = NULL             # <<<<<<<<<<<<<<
1609  *     c_request_authorize_user_data = NULL
1610  * 
1611  */
1612   __pyx_v_6purple_c_request_authorize_deny_cb = NULL;
1613
1614   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":40
1615  *     c_request_authorize_authorize_cb = NULL
1616  *     c_request_authorize_deny_cb = NULL
1617  *     c_request_authorize_user_data = NULL             # <<<<<<<<<<<<<<
1618  * 
1619  * def call_deny_cb():
1620  */
1621   __pyx_v_6purple_c_request_authorize_user_data = NULL;
1622
1623   __pyx_r = Py_None; Py_INCREF(Py_None);
1624   return __pyx_r;
1625 }
1626
1627 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":42
1628  *     c_request_authorize_user_data = NULL
1629  * 
1630  * def call_deny_cb():             # <<<<<<<<<<<<<<
1631  *     global c_request_authorize_authorize_cb
1632  *     global c_request_authorize_deny_cb
1633  */
1634
1635 static PyObject *__pyx_pf_6purple_call_deny_cb(PyObject *__pyx_self, PyObject *unused); /*proto*/
1636 static PyObject *__pyx_pf_6purple_call_deny_cb(PyObject *__pyx_self, PyObject *unused) {
1637   PyObject *__pyx_r;
1638   int __pyx_1;
1639   __pyx_self = __pyx_self;
1640
1641   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":47
1642  *     global c_request_authorize_user_data
1643  * 
1644  *     if c_request_authorize_deny_cb:             # <<<<<<<<<<<<<<
1645  *         c_request_authorize_deny_cb(c_request_authorize_user_data)
1646  *     c_request_authorize_authorize_cb = NULL
1647  */
1648   __pyx_1 = (__pyx_v_6purple_c_request_authorize_deny_cb != 0);
1649   if (__pyx_1) {
1650
1651     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":48
1652  * 
1653  *     if c_request_authorize_deny_cb:
1654  *         c_request_authorize_deny_cb(c_request_authorize_user_data)             # <<<<<<<<<<<<<<
1655  *     c_request_authorize_authorize_cb = NULL
1656  *     c_request_authorize_deny_cb = NULL
1657  */
1658     __pyx_v_6purple_c_request_authorize_deny_cb(__pyx_v_6purple_c_request_authorize_user_data);
1659     goto __pyx_L5;
1660   }
1661   __pyx_L5:;
1662
1663   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":49
1664  *     if c_request_authorize_deny_cb:
1665  *         c_request_authorize_deny_cb(c_request_authorize_user_data)
1666  *     c_request_authorize_authorize_cb = NULL             # <<<<<<<<<<<<<<
1667  *     c_request_authorize_deny_cb = NULL
1668  *     c_request_authorize_user_data = NULL
1669  */
1670   __pyx_v_6purple_c_request_authorize_authorize_cb = NULL;
1671
1672   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":50
1673  *         c_request_authorize_deny_cb(c_request_authorize_user_data)
1674  *     c_request_authorize_authorize_cb = NULL
1675  *     c_request_authorize_deny_cb = NULL             # <<<<<<<<<<<<<<
1676  *     c_request_authorize_user_data = NULL
1677  * 
1678  */
1679   __pyx_v_6purple_c_request_authorize_deny_cb = NULL;
1680
1681   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":51
1682  *     c_request_authorize_authorize_cb = NULL
1683  *     c_request_authorize_deny_cb = NULL
1684  *     c_request_authorize_user_data = NULL             # <<<<<<<<<<<<<<
1685  * 
1686  * cdef void notify_added(account.PurpleAccount *c_account, \
1687  */
1688   __pyx_v_6purple_c_request_authorize_user_data = NULL;
1689
1690   __pyx_r = Py_None; Py_INCREF(Py_None);
1691   return __pyx_r;
1692 }
1693
1694 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":53
1695  *     c_request_authorize_user_data = NULL
1696  * 
1697  * cdef void notify_added(account.PurpleAccount *c_account, \             # <<<<<<<<<<<<<<
1698  *         const_char *remote_user, const_char *id, const_char *alias, \
1699  *         const_char *c_message):
1700  */
1701
1702 static  void __pyx_f_6purple_notify_added(PurpleAccount *__pyx_v_c_account, const char *__pyx_v_remote_user, const char *__pyx_v_id, const char *__pyx_v_alias, const char *__pyx_v_c_message) {
1703   PurpleConnection *__pyx_v_gc;
1704   PyObject *__pyx_v_remote_alias;
1705   PyObject *__pyx_v_username;
1706   PyObject *__pyx_v_protocol_id;
1707   PyObject *__pyx_v_message;
1708   int __pyx_1;
1709   PyObject *__pyx_2 = 0;
1710   PyObject *__pyx_3 = 0;
1711   PyObject *__pyx_4 = 0;
1712   PyObject *__pyx_5 = 0;
1713   __pyx_v_remote_alias = Py_None; Py_INCREF(Py_None);
1714   __pyx_v_username = Py_None; Py_INCREF(Py_None);
1715   __pyx_v_protocol_id = Py_None; Py_INCREF(Py_None);
1716   __pyx_v_message = Py_None; Py_INCREF(Py_None);
1717
1718   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":61
1719  *     """
1720  *     cdef connection.PurpleConnection *gc = \
1721  *             account.purple_account_get_connection(c_account)             # <<<<<<<<<<<<<<
1722  * 
1723  *     debug.purple_debug_info("account", "%s", "notify-added\n")
1724  */
1725   __pyx_v_gc = purple_account_get_connection(__pyx_v_c_account);
1726
1727   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":63
1728  *             account.purple_account_get_connection(c_account)
1729  * 
1730  *     debug.purple_debug_info("account", "%s", "notify-added\n")             # <<<<<<<<<<<<<<
1731  * 
1732  *     if alias:
1733  */
1734   purple_debug_info(__pyx_k_11, __pyx_k_12, __pyx_k_13);
1735
1736   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":65
1737  *     debug.purple_debug_info("account", "%s", "notify-added\n")
1738  * 
1739  *     if alias:             # <<<<<<<<<<<<<<
1740  *         remote_alias = <char *> alias
1741  *     else:
1742  */
1743   __pyx_1 = (__pyx_v_alias != 0);
1744   if (__pyx_1) {
1745
1746     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":66
1747  * 
1748  *     if alias:
1749  *         remote_alias = <char *> alias             # <<<<<<<<<<<<<<
1750  *     else:
1751  *         remote_alias = None
1752  */
1753     __pyx_2 = __Pyx_PyBytes_FromString(((char *)__pyx_v_alias)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1754     Py_DECREF(__pyx_v_remote_alias);
1755     __pyx_v_remote_alias = __pyx_2;
1756     __pyx_2 = 0;
1757     goto __pyx_L3;
1758   }
1759   /*else*/ {
1760
1761     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":68
1762  *         remote_alias = <char *> alias
1763  *     else:
1764  *         remote_alias = None             # <<<<<<<<<<<<<<
1765  * 
1766  *     if id:
1767  */
1768     Py_INCREF(Py_None);
1769     Py_DECREF(__pyx_v_remote_alias);
1770     __pyx_v_remote_alias = Py_None;
1771   }
1772   __pyx_L3:;
1773
1774   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":70
1775  *         remote_alias = None
1776  * 
1777  *     if id:             # <<<<<<<<<<<<<<
1778  *         username = <char *> id
1779  *     elif connection.purple_connection_get_display_name(gc) != NULL:
1780  */
1781   __pyx_1 = (__pyx_v_id != 0);
1782   if (__pyx_1) {
1783
1784     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":71
1785  * 
1786  *     if id:
1787  *         username = <char *> id             # <<<<<<<<<<<<<<
1788  *     elif connection.purple_connection_get_display_name(gc) != NULL:
1789  *         username = connection.purple_connection_get_display_name(gc)
1790  */
1791     __pyx_2 = __Pyx_PyBytes_FromString(((char *)__pyx_v_id)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1792     Py_DECREF(__pyx_v_username);
1793     __pyx_v_username = __pyx_2;
1794     __pyx_2 = 0;
1795     goto __pyx_L4;
1796   }
1797
1798   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":72
1799  *     if id:
1800  *         username = <char *> id
1801  *     elif connection.purple_connection_get_display_name(gc) != NULL:             # <<<<<<<<<<<<<<
1802  *         username = connection.purple_connection_get_display_name(gc)
1803  *     else:
1804  */
1805   __pyx_1 = (purple_connection_get_display_name(__pyx_v_gc) != NULL);
1806   if (__pyx_1) {
1807
1808     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":73
1809  *         username = <char *> id
1810  *     elif connection.purple_connection_get_display_name(gc) != NULL:
1811  *         username = connection.purple_connection_get_display_name(gc)             # <<<<<<<<<<<<<<
1812  *     else:
1813  *         username = account.purple_account_get_username(c_account)
1814  */
1815     __pyx_2 = __Pyx_PyBytes_FromString(purple_connection_get_display_name(__pyx_v_gc)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1816     Py_DECREF(__pyx_v_username);
1817     __pyx_v_username = __pyx_2;
1818     __pyx_2 = 0;
1819     goto __pyx_L4;
1820   }
1821   /*else*/ {
1822
1823     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":75
1824  *         username = connection.purple_connection_get_display_name(gc)
1825  *     else:
1826  *         username = account.purple_account_get_username(c_account)             # <<<<<<<<<<<<<<
1827  * 
1828  *     protocol_id = account.purple_account_get_protocol_id(c_account)
1829  */
1830     __pyx_2 = __Pyx_PyBytes_FromString(purple_account_get_username(__pyx_v_c_account)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1831     Py_DECREF(__pyx_v_username);
1832     __pyx_v_username = __pyx_2;
1833     __pyx_2 = 0;
1834   }
1835   __pyx_L4:;
1836
1837   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":77
1838  *         username = account.purple_account_get_username(c_account)
1839  * 
1840  *     protocol_id = account.purple_account_get_protocol_id(c_account)             # <<<<<<<<<<<<<<
1841  * 
1842  *     if c_message:
1843  */
1844   __pyx_2 = __Pyx_PyBytes_FromString(purple_account_get_protocol_id(__pyx_v_c_account)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1845   Py_DECREF(__pyx_v_protocol_id);
1846   __pyx_v_protocol_id = __pyx_2;
1847   __pyx_2 = 0;
1848
1849   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":79
1850  *     protocol_id = account.purple_account_get_protocol_id(c_account)
1851  * 
1852  *     if c_message:             # <<<<<<<<<<<<<<
1853  *         message = <char *> c_message
1854  *     else:
1855  */
1856   __pyx_1 = (__pyx_v_c_message != 0);
1857   if (__pyx_1) {
1858
1859     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":80
1860  * 
1861  *     if c_message:
1862  *         message = <char *> c_message             # <<<<<<<<<<<<<<
1863  *     else:
1864  *         message = None
1865  */
1866     __pyx_2 = __Pyx_PyBytes_FromString(((char *)__pyx_v_c_message)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1867     Py_DECREF(__pyx_v_message);
1868     __pyx_v_message = __pyx_2;
1869     __pyx_2 = 0;
1870     goto __pyx_L5;
1871   }
1872   /*else*/ {
1873
1874     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":82
1875  *         message = <char *> c_message
1876  *     else:
1877  *         message = None             # <<<<<<<<<<<<<<
1878  * 
1879  *     if account_cbs.has_key("notify-added"):
1880  */
1881     Py_INCREF(Py_None);
1882     Py_DECREF(__pyx_v_message);
1883     __pyx_v_message = Py_None;
1884   }
1885   __pyx_L5:;
1886
1887   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":84
1888  *         message = None
1889  * 
1890  *     if account_cbs.has_key("notify-added"):             # <<<<<<<<<<<<<<
1891  *         (<object> account_cbs["notify-added"])( \
1892  *                 (<char *> remote_user, remote_alias), \
1893  */
1894   __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_account_cbs); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1895   __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_kp_has_key); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1896   Py_DECREF(__pyx_2); __pyx_2 = 0;
1897   __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1898   Py_INCREF(__pyx_kp_14);
1899   PyTuple_SET_ITEM(__pyx_2, 0, __pyx_kp_14);
1900   __pyx_4 = PyObject_Call(__pyx_3, ((PyObject *)__pyx_2), NULL); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1901   Py_DECREF(__pyx_3); __pyx_3 = 0;
1902   Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0;
1903   __pyx_1 = __Pyx_PyObject_IsTrue(__pyx_4); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1904   Py_DECREF(__pyx_4); __pyx_4 = 0;
1905   if (__pyx_1) {
1906
1907     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":85
1908  * 
1909  *     if account_cbs.has_key("notify-added"):
1910  *         (<object> account_cbs["notify-added"])( \             # <<<<<<<<<<<<<<
1911  *                 (<char *> remote_user, remote_alias), \
1912  *                 (username, protocol_id), message)
1913  */
1914     __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_kp_account_cbs); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1915     __pyx_2 = PyObject_GetItem(__pyx_3, __pyx_kp_15); if (!__pyx_2) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1916     Py_DECREF(__pyx_3); __pyx_3 = 0;
1917
1918     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":86
1919  *     if account_cbs.has_key("notify-added"):
1920  *         (<object> account_cbs["notify-added"])( \
1921  *                 (<char *> remote_user, remote_alias), \             # <<<<<<<<<<<<<<
1922  *                 (username, protocol_id), message)
1923  * 
1924  */
1925     __pyx_4 = __Pyx_PyBytes_FromString(((char *)__pyx_v_remote_user)); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1926     __pyx_3 = PyTuple_New(2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1927     PyTuple_SET_ITEM(__pyx_3, 0, __pyx_4);
1928     Py_INCREF(__pyx_v_remote_alias);
1929     PyTuple_SET_ITEM(__pyx_3, 1, __pyx_v_remote_alias);
1930     __pyx_4 = 0;
1931
1932     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":87
1933  *         (<object> account_cbs["notify-added"])( \
1934  *                 (<char *> remote_user, remote_alias), \
1935  *                 (username, protocol_id), message)             # <<<<<<<<<<<<<<
1936  * 
1937  * cdef void status_changed(account.PurpleAccount *c_account, \
1938  */
1939     __pyx_4 = PyTuple_New(2); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1940     Py_INCREF(__pyx_v_username);
1941     PyTuple_SET_ITEM(__pyx_4, 0, __pyx_v_username);
1942     Py_INCREF(__pyx_v_protocol_id);
1943     PyTuple_SET_ITEM(__pyx_4, 1, __pyx_v_protocol_id);
1944     __pyx_5 = PyTuple_New(3); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1945     PyTuple_SET_ITEM(__pyx_5, 0, ((PyObject *)__pyx_3));
1946     PyTuple_SET_ITEM(__pyx_5, 1, ((PyObject *)__pyx_4));
1947     Py_INCREF(__pyx_v_message);
1948     PyTuple_SET_ITEM(__pyx_5, 2, __pyx_v_message);
1949     __pyx_3 = 0;
1950     __pyx_4 = 0;
1951     __pyx_3 = PyObject_Call(__pyx_2, ((PyObject *)__pyx_5), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1952     Py_DECREF(__pyx_2); __pyx_2 = 0;
1953     Py_DECREF(((PyObject *)__pyx_5)); __pyx_5 = 0;
1954     Py_DECREF(__pyx_3); __pyx_3 = 0;
1955     goto __pyx_L6;
1956   }
1957   __pyx_L6:;
1958
1959   goto __pyx_L0;
1960   __pyx_L1_error:;
1961   Py_XDECREF(__pyx_2);
1962   Py_XDECREF(__pyx_3);
1963   Py_XDECREF(__pyx_4);
1964   Py_XDECREF(__pyx_5);
1965   __Pyx_WriteUnraisable("purple.notify_added");
1966   __pyx_L0:;
1967   Py_DECREF(__pyx_v_remote_alias);
1968   Py_DECREF(__pyx_v_username);
1969   Py_DECREF(__pyx_v_protocol_id);
1970   Py_DECREF(__pyx_v_message);
1971 }
1972
1973 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":89
1974  *                 (username, protocol_id), message)
1975  * 
1976  * cdef void status_changed(account.PurpleAccount *c_account, \             # <<<<<<<<<<<<<<
1977  *         status.PurpleStatus *c_status):
1978  *     """
1979  */
1980
1981 static  void __pyx_f_6purple_status_changed(PurpleAccount *__pyx_v_c_account, PurpleStatus *__pyx_v_c_status) {
1982   PyObject *__pyx_v_username;
1983   PyObject *__pyx_v_protocol_id;
1984   PyObject *__pyx_v_status_id;
1985   PyObject *__pyx_v_status_name;
1986   PyObject *__pyx_1 = 0;
1987   PyObject *__pyx_2 = 0;
1988   PyObject *__pyx_3 = 0;
1989   int __pyx_4;
1990   __pyx_v_username = Py_None; Py_INCREF(Py_None);
1991   __pyx_v_protocol_id = Py_None; Py_INCREF(Py_None);
1992   __pyx_v_status_id = Py_None; Py_INCREF(Py_None);
1993   __pyx_v_status_name = Py_None; Py_INCREF(Py_None);
1994
1995   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":94
1996  *     This account's status changed.
1997  *     """
1998  *     debug.purple_debug_info("account", "%s", "status-changed\n")             # <<<<<<<<<<<<<<
1999  * 
2000  *     username = account.purple_account_get_username(c_account)
2001  */
2002   purple_debug_info(__pyx_k_16, __pyx_k_17, __pyx_k_18);
2003
2004   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":96
2005  *     debug.purple_debug_info("account", "%s", "status-changed\n")
2006  * 
2007  *     username = account.purple_account_get_username(c_account)             # <<<<<<<<<<<<<<
2008  *     protocol_id = account.purple_account_get_protocol_id(c_account)
2009  * 
2010  */
2011   __pyx_1 = __Pyx_PyBytes_FromString(purple_account_get_username(__pyx_v_c_account)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2012   Py_DECREF(__pyx_v_username);
2013   __pyx_v_username = __pyx_1;
2014   __pyx_1 = 0;
2015
2016   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":97
2017  * 
2018  *     username = account.purple_account_get_username(c_account)
2019  *     protocol_id = account.purple_account_get_protocol_id(c_account)             # <<<<<<<<<<<<<<
2020  * 
2021  *     status_id = status.purple_status_get_id(c_status)
2022  */
2023   __pyx_1 = __Pyx_PyBytes_FromString(purple_account_get_protocol_id(__pyx_v_c_account)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2024   Py_DECREF(__pyx_v_protocol_id);
2025   __pyx_v_protocol_id = __pyx_1;
2026   __pyx_1 = 0;
2027
2028   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":99
2029  *     protocol_id = account.purple_account_get_protocol_id(c_account)
2030  * 
2031  *     status_id = status.purple_status_get_id(c_status)             # <<<<<<<<<<<<<<
2032  *     status_name = status.purple_status_get_name(c_status)
2033  * 
2034  */
2035   __pyx_1 = __Pyx_PyBytes_FromString(purple_status_get_id(__pyx_v_c_status)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2036   Py_DECREF(__pyx_v_status_id);
2037   __pyx_v_status_id = __pyx_1;
2038   __pyx_1 = 0;
2039
2040   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":100
2041  * 
2042  *     status_id = status.purple_status_get_id(c_status)
2043  *     status_name = status.purple_status_get_name(c_status)             # <<<<<<<<<<<<<<
2044  * 
2045  *     if account_cbs.has_key("status-changed"):
2046  */
2047   __pyx_1 = __Pyx_PyBytes_FromString(purple_status_get_name(__pyx_v_c_status)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2048   Py_DECREF(__pyx_v_status_name);
2049   __pyx_v_status_name = __pyx_1;
2050   __pyx_1 = 0;
2051
2052   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":102
2053  *     status_name = status.purple_status_get_name(c_status)
2054  * 
2055  *     if account_cbs.has_key("status-changed"):             # <<<<<<<<<<<<<<
2056  *         (<object> account_cbs["status-changed"])( \
2057  *                 (username, protocol_id), status_id, status_name)
2058  */
2059   __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_account_cbs); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2060   __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_has_key); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2061   Py_DECREF(__pyx_1); __pyx_1 = 0;
2062   __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2063   Py_INCREF(__pyx_kp_19);
2064   PyTuple_SET_ITEM(__pyx_1, 0, __pyx_kp_19);
2065   __pyx_3 = PyObject_Call(__pyx_2, ((PyObject *)__pyx_1), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2066   Py_DECREF(__pyx_2); __pyx_2 = 0;
2067   Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
2068   __pyx_4 = __Pyx_PyObject_IsTrue(__pyx_3); if (unlikely(__pyx_4 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2069   Py_DECREF(__pyx_3); __pyx_3 = 0;
2070   if (__pyx_4) {
2071
2072     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":103
2073  * 
2074  *     if account_cbs.has_key("status-changed"):
2075  *         (<object> account_cbs["status-changed"])( \             # <<<<<<<<<<<<<<
2076  *                 (username, protocol_id), status_id, status_name)
2077  * 
2078  */
2079     __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_account_cbs); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2080     __pyx_1 = PyObject_GetItem(__pyx_2, __pyx_kp_20); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2081     Py_DECREF(__pyx_2); __pyx_2 = 0;
2082
2083     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":104
2084  *     if account_cbs.has_key("status-changed"):
2085  *         (<object> account_cbs["status-changed"])( \
2086  *                 (username, protocol_id), status_id, status_name)             # <<<<<<<<<<<<<<
2087  * 
2088  * cdef void request_add(account.PurpleAccount *c_account, \
2089  */
2090     __pyx_3 = PyTuple_New(2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2091     Py_INCREF(__pyx_v_username);
2092     PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_username);
2093     Py_INCREF(__pyx_v_protocol_id);
2094     PyTuple_SET_ITEM(__pyx_3, 1, __pyx_v_protocol_id);
2095     __pyx_2 = PyTuple_New(3); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2096     PyTuple_SET_ITEM(__pyx_2, 0, ((PyObject *)__pyx_3));
2097     Py_INCREF(__pyx_v_status_id);
2098     PyTuple_SET_ITEM(__pyx_2, 1, __pyx_v_status_id);
2099     Py_INCREF(__pyx_v_status_name);
2100     PyTuple_SET_ITEM(__pyx_2, 2, __pyx_v_status_name);
2101     __pyx_3 = 0;
2102     __pyx_3 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_2), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2103     Py_DECREF(__pyx_1); __pyx_1 = 0;
2104     Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0;
2105     Py_DECREF(__pyx_3); __pyx_3 = 0;
2106     goto __pyx_L3;
2107   }
2108   __pyx_L3:;
2109
2110   goto __pyx_L0;
2111   __pyx_L1_error:;
2112   Py_XDECREF(__pyx_1);
2113   Py_XDECREF(__pyx_2);
2114   Py_XDECREF(__pyx_3);
2115   __Pyx_WriteUnraisable("purple.status_changed");
2116   __pyx_L0:;
2117   Py_DECREF(__pyx_v_username);
2118   Py_DECREF(__pyx_v_protocol_id);
2119   Py_DECREF(__pyx_v_status_id);
2120   Py_DECREF(__pyx_v_status_name);
2121 }
2122
2123 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":106
2124  *                 (username, protocol_id), status_id, status_name)
2125  * 
2126  * cdef void request_add(account.PurpleAccount *c_account, \             # <<<<<<<<<<<<<<
2127  *         const_char *remote_user, const_char *id, const_char *alias, \
2128  *         const_char *c_message):
2129  */
2130
2131 static  void __pyx_f_6purple_request_add(PurpleAccount *__pyx_v_c_account, const char *__pyx_v_remote_user, const char *__pyx_v_id, const char *__pyx_v_alias, const char *__pyx_v_c_message) {
2132   PurpleConnection *__pyx_v_gc;
2133   PyObject *__pyx_v_remote_alias;
2134   PyObject *__pyx_v_username;
2135   PyObject *__pyx_v_protocol_id;
2136   PyObject *__pyx_v_message;
2137   int __pyx_1;
2138   PyObject *__pyx_2 = 0;
2139   PyObject *__pyx_3 = 0;
2140   PyObject *__pyx_4 = 0;
2141   PyObject *__pyx_5 = 0;
2142   __pyx_v_remote_alias = Py_None; Py_INCREF(Py_None);
2143   __pyx_v_username = Py_None; Py_INCREF(Py_None);
2144   __pyx_v_protocol_id = Py_None; Py_INCREF(Py_None);
2145   __pyx_v_message = Py_None; Py_INCREF(Py_None);
2146
2147   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":113
2148  *     """
2149  *     cdef connection.PurpleConnection *gc = \
2150  *             account.purple_account_get_connection(c_account)             # <<<<<<<<<<<<<<
2151  * 
2152  *     debug.purple_debug_info("account", "%s", "request-add\n")
2153  */
2154   __pyx_v_gc = purple_account_get_connection(__pyx_v_c_account);
2155
2156   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":115
2157  *             account.purple_account_get_connection(c_account)
2158  * 
2159  *     debug.purple_debug_info("account", "%s", "request-add\n")             # <<<<<<<<<<<<<<
2160  * 
2161  *     if alias:
2162  */
2163   purple_debug_info(__pyx_k_21, __pyx_k_22, __pyx_k_23);
2164
2165   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":117
2166  *     debug.purple_debug_info("account", "%s", "request-add\n")
2167  * 
2168  *     if alias:             # <<<<<<<<<<<<<<
2169  *         remote_alias = <char *> alias
2170  *     else:
2171  */
2172   __pyx_1 = (__pyx_v_alias != 0);
2173   if (__pyx_1) {
2174
2175     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":118
2176  * 
2177  *     if alias:
2178  *         remote_alias = <char *> alias             # <<<<<<<<<<<<<<
2179  *     else:
2180  *         remote_alias = None
2181  */
2182     __pyx_2 = __Pyx_PyBytes_FromString(((char *)__pyx_v_alias)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2183     Py_DECREF(__pyx_v_remote_alias);
2184     __pyx_v_remote_alias = __pyx_2;
2185     __pyx_2 = 0;
2186     goto __pyx_L3;
2187   }
2188   /*else*/ {
2189
2190     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":120
2191  *         remote_alias = <char *> alias
2192  *     else:
2193  *         remote_alias = None             # <<<<<<<<<<<<<<
2194  * 
2195  *     if id:
2196  */
2197     Py_INCREF(Py_None);
2198     Py_DECREF(__pyx_v_remote_alias);
2199     __pyx_v_remote_alias = Py_None;
2200   }
2201   __pyx_L3:;
2202
2203   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":122
2204  *         remote_alias = None
2205  * 
2206  *     if id:             # <<<<<<<<<<<<<<
2207  *         username = <char *> id
2208  *     elif connection.purple_connection_get_display_name(gc) != NULL:
2209  */
2210   __pyx_1 = (__pyx_v_id != 0);
2211   if (__pyx_1) {
2212
2213     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":123
2214  * 
2215  *     if id:
2216  *         username = <char *> id             # <<<<<<<<<<<<<<
2217  *     elif connection.purple_connection_get_display_name(gc) != NULL:
2218  *         username = connection.purple_connection_get_display_name(gc)
2219  */
2220     __pyx_2 = __Pyx_PyBytes_FromString(((char *)__pyx_v_id)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2221     Py_DECREF(__pyx_v_username);
2222     __pyx_v_username = __pyx_2;
2223     __pyx_2 = 0;
2224     goto __pyx_L4;
2225   }
2226
2227   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":124
2228  *     if id:
2229  *         username = <char *> id
2230  *     elif connection.purple_connection_get_display_name(gc) != NULL:             # <<<<<<<<<<<<<<
2231  *         username = connection.purple_connection_get_display_name(gc)
2232  *     else:
2233  */
2234   __pyx_1 = (purple_connection_get_display_name(__pyx_v_gc) != NULL);
2235   if (__pyx_1) {
2236
2237     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":125
2238  *         username = <char *> id
2239  *     elif connection.purple_connection_get_display_name(gc) != NULL:
2240  *         username = connection.purple_connection_get_display_name(gc)             # <<<<<<<<<<<<<<
2241  *     else:
2242  *         username = account.purple_account_get_username(c_account)
2243  */
2244     __pyx_2 = __Pyx_PyBytes_FromString(purple_connection_get_display_name(__pyx_v_gc)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2245     Py_DECREF(__pyx_v_username);
2246     __pyx_v_username = __pyx_2;
2247     __pyx_2 = 0;
2248     goto __pyx_L4;
2249   }
2250   /*else*/ {
2251
2252     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":127
2253  *         username = connection.purple_connection_get_display_name(gc)
2254  *     else:
2255  *         username = account.purple_account_get_username(c_account)             # <<<<<<<<<<<<<<
2256  * 
2257  *     protocol_id = account.purple_account_get_protocol_id(c_account)
2258  */
2259     __pyx_2 = __Pyx_PyBytes_FromString(purple_account_get_username(__pyx_v_c_account)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2260     Py_DECREF(__pyx_v_username);
2261     __pyx_v_username = __pyx_2;
2262     __pyx_2 = 0;
2263   }
2264   __pyx_L4:;
2265
2266   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":129
2267  *         username = account.purple_account_get_username(c_account)
2268  * 
2269  *     protocol_id = account.purple_account_get_protocol_id(c_account)             # <<<<<<<<<<<<<<
2270  * 
2271  *     if c_message:
2272  */
2273   __pyx_2 = __Pyx_PyBytes_FromString(purple_account_get_protocol_id(__pyx_v_c_account)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2274   Py_DECREF(__pyx_v_protocol_id);
2275   __pyx_v_protocol_id = __pyx_2;
2276   __pyx_2 = 0;
2277
2278   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":131
2279  *     protocol_id = account.purple_account_get_protocol_id(c_account)
2280  * 
2281  *     if c_message:             # <<<<<<<<<<<<<<
2282  *         message = <char *> c_message
2283  *     else:
2284  */
2285   __pyx_1 = (__pyx_v_c_message != 0);
2286   if (__pyx_1) {
2287
2288     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":132
2289  * 
2290  *     if c_message:
2291  *         message = <char *> c_message             # <<<<<<<<<<<<<<
2292  *     else:
2293  *         message = None
2294  */
2295     __pyx_2 = __Pyx_PyBytes_FromString(((char *)__pyx_v_c_message)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2296     Py_DECREF(__pyx_v_message);
2297     __pyx_v_message = __pyx_2;
2298     __pyx_2 = 0;
2299     goto __pyx_L5;
2300   }
2301   /*else*/ {
2302
2303     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":134
2304  *         message = <char *> c_message
2305  *     else:
2306  *         message = None             # <<<<<<<<<<<<<<
2307  * 
2308  *     if account_cbs.has_key("request-add"):
2309  */
2310     Py_INCREF(Py_None);
2311     Py_DECREF(__pyx_v_message);
2312     __pyx_v_message = Py_None;
2313   }
2314   __pyx_L5:;
2315
2316   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":136
2317  *         message = None
2318  * 
2319  *     if account_cbs.has_key("request-add"):             # <<<<<<<<<<<<<<
2320  *         (<object> account_cbs["request-add"])( \
2321  *                 (<char *> remote_user, remote_alias), \
2322  */
2323   __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_account_cbs); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2324   __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_kp_has_key); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2325   Py_DECREF(__pyx_2); __pyx_2 = 0;
2326   __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2327   Py_INCREF(__pyx_kp_24);
2328   PyTuple_SET_ITEM(__pyx_2, 0, __pyx_kp_24);
2329   __pyx_4 = PyObject_Call(__pyx_3, ((PyObject *)__pyx_2), NULL); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2330   Py_DECREF(__pyx_3); __pyx_3 = 0;
2331   Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0;
2332   __pyx_1 = __Pyx_PyObject_IsTrue(__pyx_4); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2333   Py_DECREF(__pyx_4); __pyx_4 = 0;
2334   if (__pyx_1) {
2335
2336     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":137
2337  * 
2338  *     if account_cbs.has_key("request-add"):
2339  *         (<object> account_cbs["request-add"])( \             # <<<<<<<<<<<<<<
2340  *                 (<char *> remote_user, remote_alias), \
2341  *                 (username, protocol_id), message)
2342  */
2343     __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_kp_account_cbs); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2344     __pyx_2 = PyObject_GetItem(__pyx_3, __pyx_kp_25); if (!__pyx_2) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2345     Py_DECREF(__pyx_3); __pyx_3 = 0;
2346
2347     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":138
2348  *     if account_cbs.has_key("request-add"):
2349  *         (<object> account_cbs["request-add"])( \
2350  *                 (<char *> remote_user, remote_alias), \             # <<<<<<<<<<<<<<
2351  *                 (username, protocol_id), message)
2352  * 
2353  */
2354     __pyx_4 = __Pyx_PyBytes_FromString(((char *)__pyx_v_remote_user)); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2355     __pyx_3 = PyTuple_New(2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2356     PyTuple_SET_ITEM(__pyx_3, 0, __pyx_4);
2357     Py_INCREF(__pyx_v_remote_alias);
2358     PyTuple_SET_ITEM(__pyx_3, 1, __pyx_v_remote_alias);
2359     __pyx_4 = 0;
2360
2361     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":139
2362  *         (<object> account_cbs["request-add"])( \
2363  *                 (<char *> remote_user, remote_alias), \
2364  *                 (username, protocol_id), message)             # <<<<<<<<<<<<<<
2365  * 
2366  * cdef void *request_authorize(account.PurpleAccount *c_account, \
2367  */
2368     __pyx_4 = PyTuple_New(2); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2369     Py_INCREF(__pyx_v_username);
2370     PyTuple_SET_ITEM(__pyx_4, 0, __pyx_v_username);
2371     Py_INCREF(__pyx_v_protocol_id);
2372     PyTuple_SET_ITEM(__pyx_4, 1, __pyx_v_protocol_id);
2373     __pyx_5 = PyTuple_New(3); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2374     PyTuple_SET_ITEM(__pyx_5, 0, ((PyObject *)__pyx_3));
2375     PyTuple_SET_ITEM(__pyx_5, 1, ((PyObject *)__pyx_4));
2376     Py_INCREF(__pyx_v_message);
2377     PyTuple_SET_ITEM(__pyx_5, 2, __pyx_v_message);
2378     __pyx_3 = 0;
2379     __pyx_4 = 0;
2380     __pyx_3 = PyObject_Call(__pyx_2, ((PyObject *)__pyx_5), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2381     Py_DECREF(__pyx_2); __pyx_2 = 0;
2382     Py_DECREF(((PyObject *)__pyx_5)); __pyx_5 = 0;
2383     Py_DECREF(__pyx_3); __pyx_3 = 0;
2384     goto __pyx_L6;
2385   }
2386   __pyx_L6:;
2387
2388   goto __pyx_L0;
2389   __pyx_L1_error:;
2390   Py_XDECREF(__pyx_2);
2391   Py_XDECREF(__pyx_3);
2392   Py_XDECREF(__pyx_4);
2393   Py_XDECREF(__pyx_5);
2394   __Pyx_WriteUnraisable("purple.request_add");
2395   __pyx_L0:;
2396   Py_DECREF(__pyx_v_remote_alias);
2397   Py_DECREF(__pyx_v_username);
2398   Py_DECREF(__pyx_v_protocol_id);
2399   Py_DECREF(__pyx_v_message);
2400 }
2401
2402 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":141
2403  *                 (username, protocol_id), message)
2404  * 
2405  * cdef void *request_authorize(account.PurpleAccount *c_account, \             # <<<<<<<<<<<<<<
2406  *         const_char *remote_user, const_char *id, const_char *alias, \
2407  *         const_char *c_message, glib.gboolean on_list, \
2408  */
2409
2410 static  void *__pyx_f_6purple_request_authorize(PurpleAccount *__pyx_v_c_account, const char *__pyx_v_remote_user, const char *__pyx_v_id, const char *__pyx_v_alias, const char *__pyx_v_c_message, gboolean __pyx_v_on_list, PurpleAccountRequestAuthorizationCb __pyx_v_authorize_cb, PurpleAccountRequestAuthorizationCb __pyx_v_deny_cb, void *__pyx_v_user_data) {
2411   PurpleConnection *__pyx_v_gc;
2412   PyObject *__pyx_v_remote_alias;
2413   PyObject *__pyx_v_username;
2414   PyObject *__pyx_v_protocol_id;
2415   PyObject *__pyx_v_message;
2416   void *__pyx_r;
2417   int __pyx_1;
2418   PyObject *__pyx_2 = 0;
2419   PyObject *__pyx_3 = 0;
2420   PyObject *__pyx_4 = 0;
2421   PyObject *__pyx_5 = 0;
2422   PyObject *__pyx_6 = 0;
2423   PyObject *__pyx_7 = 0;
2424   PyObject *__pyx_8 = 0;
2425   __pyx_v_remote_alias = Py_None; Py_INCREF(Py_None);
2426   __pyx_v_username = Py_None; Py_INCREF(Py_None);
2427   __pyx_v_protocol_id = Py_None; Py_INCREF(Py_None);
2428   __pyx_v_message = Py_None; Py_INCREF(Py_None);
2429
2430   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":154
2431  *     """
2432  *     cdef connection.PurpleConnection *gc = \
2433  *             account.purple_account_get_connection(c_account)             # <<<<<<<<<<<<<<
2434  * 
2435  *     debug.purple_debug_info("account", "%s", "request-authorize\n")
2436  */
2437   __pyx_v_gc = purple_account_get_connection(__pyx_v_c_account);
2438
2439   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":156
2440  *             account.purple_account_get_connection(c_account)
2441  * 
2442  *     debug.purple_debug_info("account", "%s", "request-authorize\n")             # <<<<<<<<<<<<<<
2443  * 
2444  *     global c_request_authorize_authorize_cb
2445  */
2446   purple_debug_info(__pyx_k_26, __pyx_k_27, __pyx_k_28);
2447
2448   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":162
2449  *     global c_request_authorize_user_data
2450  * 
2451  *     c_request_authorize_authorize_cb = authorize_cb             # <<<<<<<<<<<<<<
2452  *     c_request_authorize_deny_cb = deny_cb
2453  *     c_request_authorize_user_data = user_data
2454  */
2455   __pyx_v_6purple_c_request_authorize_authorize_cb = __pyx_v_authorize_cb;
2456
2457   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":163
2458  * 
2459  *     c_request_authorize_authorize_cb = authorize_cb
2460  *     c_request_authorize_deny_cb = deny_cb             # <<<<<<<<<<<<<<
2461  *     c_request_authorize_user_data = user_data
2462  * 
2463  */
2464   __pyx_v_6purple_c_request_authorize_deny_cb = __pyx_v_deny_cb;
2465
2466   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":164
2467  *     c_request_authorize_authorize_cb = authorize_cb
2468  *     c_request_authorize_deny_cb = deny_cb
2469  *     c_request_authorize_user_data = user_data             # <<<<<<<<<<<<<<
2470  * 
2471  *     if alias:
2472  */
2473   __pyx_v_6purple_c_request_authorize_user_data = __pyx_v_user_data;
2474
2475   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":166
2476  *     c_request_authorize_user_data = user_data
2477  * 
2478  *     if alias:             # <<<<<<<<<<<<<<
2479  *         remote_alias = <char *> alias
2480  *     else:
2481  */
2482   __pyx_1 = (__pyx_v_alias != 0);
2483   if (__pyx_1) {
2484
2485     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":167
2486  * 
2487  *     if alias:
2488  *         remote_alias = <char *> alias             # <<<<<<<<<<<<<<
2489  *     else:
2490  *         remote_alias = None
2491  */
2492     __pyx_2 = __Pyx_PyBytes_FromString(((char *)__pyx_v_alias)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2493     Py_DECREF(__pyx_v_remote_alias);
2494     __pyx_v_remote_alias = __pyx_2;
2495     __pyx_2 = 0;
2496     goto __pyx_L3;
2497   }
2498   /*else*/ {
2499
2500     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":169
2501  *         remote_alias = <char *> alias
2502  *     else:
2503  *         remote_alias = None             # <<<<<<<<<<<<<<
2504  * 
2505  *     if id:
2506  */
2507     Py_INCREF(Py_None);
2508     Py_DECREF(__pyx_v_remote_alias);
2509     __pyx_v_remote_alias = Py_None;
2510   }
2511   __pyx_L3:;
2512
2513   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":171
2514  *         remote_alias = None
2515  * 
2516  *     if id:             # <<<<<<<<<<<<<<
2517  *         username = <char *> id
2518  *     elif connection.purple_connection_get_display_name(gc) != NULL:
2519  */
2520   __pyx_1 = (__pyx_v_id != 0);
2521   if (__pyx_1) {
2522
2523     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":172
2524  * 
2525  *     if id:
2526  *         username = <char *> id             # <<<<<<<<<<<<<<
2527  *     elif connection.purple_connection_get_display_name(gc) != NULL:
2528  *         username = connection.purple_connection_get_display_name(gc)
2529  */
2530     __pyx_2 = __Pyx_PyBytes_FromString(((char *)__pyx_v_id)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2531     Py_DECREF(__pyx_v_username);
2532     __pyx_v_username = __pyx_2;
2533     __pyx_2 = 0;
2534     goto __pyx_L4;
2535   }
2536
2537   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":173
2538  *     if id:
2539  *         username = <char *> id
2540  *     elif connection.purple_connection_get_display_name(gc) != NULL:             # <<<<<<<<<<<<<<
2541  *         username = connection.purple_connection_get_display_name(gc)
2542  *     else:
2543  */
2544   __pyx_1 = (purple_connection_get_display_name(__pyx_v_gc) != NULL);
2545   if (__pyx_1) {
2546
2547     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":174
2548  *         username = <char *> id
2549  *     elif connection.purple_connection_get_display_name(gc) != NULL:
2550  *         username = connection.purple_connection_get_display_name(gc)             # <<<<<<<<<<<<<<
2551  *     else:
2552  *         username = account.purple_account_get_username(c_account)
2553  */
2554     __pyx_2 = __Pyx_PyBytes_FromString(purple_connection_get_display_name(__pyx_v_gc)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2555     Py_DECREF(__pyx_v_username);
2556     __pyx_v_username = __pyx_2;
2557     __pyx_2 = 0;
2558     goto __pyx_L4;
2559   }
2560   /*else*/ {
2561
2562     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":176
2563  *         username = connection.purple_connection_get_display_name(gc)
2564  *     else:
2565  *         username = account.purple_account_get_username(c_account)             # <<<<<<<<<<<<<<
2566  * 
2567  *     protocol_id = account.purple_account_get_protocol_id(c_account)
2568  */
2569     __pyx_2 = __Pyx_PyBytes_FromString(purple_account_get_username(__pyx_v_c_account)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2570     Py_DECREF(__pyx_v_username);
2571     __pyx_v_username = __pyx_2;
2572     __pyx_2 = 0;
2573   }
2574   __pyx_L4:;
2575
2576   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":178
2577  *         username = account.purple_account_get_username(c_account)
2578  * 
2579  *     protocol_id = account.purple_account_get_protocol_id(c_account)             # <<<<<<<<<<<<<<
2580  * 
2581  *     if c_message:
2582  */
2583   __pyx_2 = __Pyx_PyBytes_FromString(purple_account_get_protocol_id(__pyx_v_c_account)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2584   Py_DECREF(__pyx_v_protocol_id);
2585   __pyx_v_protocol_id = __pyx_2;
2586   __pyx_2 = 0;
2587
2588   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":180
2589  *     protocol_id = account.purple_account_get_protocol_id(c_account)
2590  * 
2591  *     if c_message:             # <<<<<<<<<<<<<<
2592  *         message = <char *> c_message
2593  *     else:
2594  */
2595   __pyx_1 = (__pyx_v_c_message != 0);
2596   if (__pyx_1) {
2597
2598     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":181
2599  * 
2600  *     if c_message:
2601  *         message = <char *> c_message             # <<<<<<<<<<<<<<
2602  *     else:
2603  *         message = None
2604  */
2605     __pyx_2 = __Pyx_PyBytes_FromString(((char *)__pyx_v_c_message)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2606     Py_DECREF(__pyx_v_message);
2607     __pyx_v_message = __pyx_2;
2608     __pyx_2 = 0;
2609     goto __pyx_L5;
2610   }
2611   /*else*/ {
2612
2613     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":183
2614  *         message = <char *> c_message
2615  *     else:
2616  *         message = None             # <<<<<<<<<<<<<<
2617  * 
2618  *     if account_cbs.has_key("request-authorize"):
2619  */
2620     Py_INCREF(Py_None);
2621     Py_DECREF(__pyx_v_message);
2622     __pyx_v_message = Py_None;
2623   }
2624   __pyx_L5:;
2625
2626   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":185
2627  *         message = None
2628  * 
2629  *     if account_cbs.has_key("request-authorize"):             # <<<<<<<<<<<<<<
2630  *         (<object> account_cbs["request-authorize"])( \
2631  *                 (<char *> remote_user, remote_alias), \
2632  */
2633   __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_account_cbs); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2634   __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_kp_has_key); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2635   Py_DECREF(__pyx_2); __pyx_2 = 0;
2636   __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2637   Py_INCREF(__pyx_kp_29);
2638   PyTuple_SET_ITEM(__pyx_2, 0, __pyx_kp_29);
2639   __pyx_4 = PyObject_Call(__pyx_3, ((PyObject *)__pyx_2), NULL); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2640   Py_DECREF(__pyx_3); __pyx_3 = 0;
2641   Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0;
2642   __pyx_1 = __Pyx_PyObject_IsTrue(__pyx_4); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2643   Py_DECREF(__pyx_4); __pyx_4 = 0;
2644   if (__pyx_1) {
2645
2646     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":186
2647  * 
2648  *     if account_cbs.has_key("request-authorize"):
2649  *         (<object> account_cbs["request-authorize"])( \             # <<<<<<<<<<<<<<
2650  *                 (<char *> remote_user, remote_alias), \
2651  *                 (username, protocol_id), \
2652  */
2653     __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_kp_account_cbs); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2654     __pyx_2 = PyObject_GetItem(__pyx_3, __pyx_kp_30); if (!__pyx_2) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2655     Py_DECREF(__pyx_3); __pyx_3 = 0;
2656
2657     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":187
2658  *     if account_cbs.has_key("request-authorize"):
2659  *         (<object> account_cbs["request-authorize"])( \
2660  *                 (<char *> remote_user, remote_alias), \             # <<<<<<<<<<<<<<
2661  *                 (username, protocol_id), \
2662  *                 message, on_list, \
2663  */
2664     __pyx_4 = __Pyx_PyBytes_FromString(((char *)__pyx_v_remote_user)); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2665     __pyx_3 = PyTuple_New(2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2666     PyTuple_SET_ITEM(__pyx_3, 0, __pyx_4);
2667     Py_INCREF(__pyx_v_remote_alias);
2668     PyTuple_SET_ITEM(__pyx_3, 1, __pyx_v_remote_alias);
2669     __pyx_4 = 0;
2670
2671     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":188
2672  *         (<object> account_cbs["request-authorize"])( \
2673  *                 (<char *> remote_user, remote_alias), \
2674  *                 (username, protocol_id), \             # <<<<<<<<<<<<<<
2675  *                 message, on_list, \
2676  *                 call_authorize_cb, call_deny_cb)
2677  */
2678     __pyx_4 = PyTuple_New(2); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2679     Py_INCREF(__pyx_v_username);
2680     PyTuple_SET_ITEM(__pyx_4, 0, __pyx_v_username);
2681     Py_INCREF(__pyx_v_protocol_id);
2682     PyTuple_SET_ITEM(__pyx_4, 1, __pyx_v_protocol_id);
2683
2684     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":189
2685  *                 (<char *> remote_user, remote_alias), \
2686  *                 (username, protocol_id), \
2687  *                 message, on_list, \             # <<<<<<<<<<<<<<
2688  *                 call_authorize_cb, call_deny_cb)
2689  * 
2690  */
2691     __pyx_5 = PyInt_FromLong(__pyx_v_on_list); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2692
2693     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":190
2694  *                 (username, protocol_id), \
2695  *                 message, on_list, \
2696  *                 call_authorize_cb, call_deny_cb)             # <<<<<<<<<<<<<<
2697  * 
2698  * cdef void close_account_request (void *ui_handle):
2699  */
2700     __pyx_6 = __Pyx_GetName(__pyx_m, __pyx_kp_call_authorize_cb); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2701     __pyx_7 = __Pyx_GetName(__pyx_m, __pyx_kp_call_deny_cb); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2702     __pyx_8 = PyTuple_New(6); if (unlikely(!__pyx_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2703     PyTuple_SET_ITEM(__pyx_8, 0, ((PyObject *)__pyx_3));
2704     PyTuple_SET_ITEM(__pyx_8, 1, ((PyObject *)__pyx_4));
2705     Py_INCREF(__pyx_v_message);
2706     PyTuple_SET_ITEM(__pyx_8, 2, __pyx_v_message);
2707     PyTuple_SET_ITEM(__pyx_8, 3, __pyx_5);
2708     PyTuple_SET_ITEM(__pyx_8, 4, __pyx_6);
2709     PyTuple_SET_ITEM(__pyx_8, 5, __pyx_7);
2710     __pyx_3 = 0;
2711     __pyx_4 = 0;
2712     __pyx_5 = 0;
2713     __pyx_6 = 0;
2714     __pyx_7 = 0;
2715     __pyx_3 = PyObject_Call(__pyx_2, ((PyObject *)__pyx_8), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2716     Py_DECREF(__pyx_2); __pyx_2 = 0;
2717     Py_DECREF(((PyObject *)__pyx_8)); __pyx_8 = 0;
2718     Py_DECREF(__pyx_3); __pyx_3 = 0;
2719     goto __pyx_L6;
2720   }
2721   __pyx_L6:;
2722
2723   __pyx_r = 0;
2724   goto __pyx_L0;
2725   __pyx_L1_error:;
2726   Py_XDECREF(__pyx_2);
2727   Py_XDECREF(__pyx_3);
2728   Py_XDECREF(__pyx_4);
2729   Py_XDECREF(__pyx_5);
2730   Py_XDECREF(__pyx_6);
2731   Py_XDECREF(__pyx_7);
2732   Py_XDECREF(__pyx_8);
2733   __Pyx_WriteUnraisable("purple.request_authorize");
2734   __pyx_r = 0;
2735   __pyx_L0:;
2736   Py_DECREF(__pyx_v_remote_alias);
2737   Py_DECREF(__pyx_v_username);
2738   Py_DECREF(__pyx_v_protocol_id);
2739   Py_DECREF(__pyx_v_message);
2740   return __pyx_r;
2741 }
2742
2743 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":192
2744  *                 call_authorize_cb, call_deny_cb)
2745  * 
2746  * cdef void close_account_request (void *ui_handle):             # <<<<<<<<<<<<<<
2747  *     """
2748  *     Close a pending request for authorization. ui_handle is a handle as
2749  */
2750
2751 static  void __pyx_f_6purple_close_account_request(void *__pyx_v_ui_handle) {
2752   PyObject *__pyx_1 = 0;
2753   PyObject *__pyx_2 = 0;
2754   PyObject *__pyx_3 = 0;
2755   int __pyx_4;
2756
2757   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":197
2758  *     returned by request_authorize.
2759  *     """
2760  *     debug.purple_debug_info("account", "%s", "close-account-request\n")             # <<<<<<<<<<<<<<
2761  * 
2762  *     request.purple_request_close(request.PURPLE_REQUEST_ACTION, ui_handle)
2763  */
2764   purple_debug_info(__pyx_k_31, __pyx_k_32, __pyx_k_33);
2765
2766   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":199
2767  *     debug.purple_debug_info("account", "%s", "close-account-request\n")
2768  * 
2769  *     request.purple_request_close(request.PURPLE_REQUEST_ACTION, ui_handle)             # <<<<<<<<<<<<<<
2770  * 
2771  *     if account_cbs.has_key("close-account-request"):
2772  */
2773   purple_request_close(PURPLE_REQUEST_ACTION, __pyx_v_ui_handle);
2774
2775   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":201
2776  *     request.purple_request_close(request.PURPLE_REQUEST_ACTION, ui_handle)
2777  * 
2778  *     if account_cbs.has_key("close-account-request"):             # <<<<<<<<<<<<<<
2779  *         (<object> account_cbs["close-account-request"])()
2780  */
2781   __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_account_cbs); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2782   __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_has_key); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2783   Py_DECREF(__pyx_1); __pyx_1 = 0;
2784   __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2785   Py_INCREF(__pyx_kp_34);
2786   PyTuple_SET_ITEM(__pyx_1, 0, __pyx_kp_34);
2787   __pyx_3 = PyObject_Call(__pyx_2, ((PyObject *)__pyx_1), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2788   Py_DECREF(__pyx_2); __pyx_2 = 0;
2789   Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
2790   __pyx_4 = __Pyx_PyObject_IsTrue(__pyx_3); if (unlikely(__pyx_4 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2791   Py_DECREF(__pyx_3); __pyx_3 = 0;
2792   if (__pyx_4) {
2793
2794     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/account_cbs.pxd":202
2795  * 
2796  *     if account_cbs.has_key("close-account-request"):
2797  *         (<object> account_cbs["close-account-request"])()             # <<<<<<<<<<<<<<
2798  */
2799     __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_account_cbs); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2800     __pyx_1 = PyObject_GetItem(__pyx_2, __pyx_kp_35); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2801     Py_DECREF(__pyx_2); __pyx_2 = 0;
2802     __pyx_3 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2803     Py_DECREF(__pyx_1); __pyx_1 = 0;
2804     Py_DECREF(__pyx_3); __pyx_3 = 0;
2805     goto __pyx_L3;
2806   }
2807   __pyx_L3:;
2808
2809   goto __pyx_L0;
2810   __pyx_L1_error:;
2811   Py_XDECREF(__pyx_1);
2812   Py_XDECREF(__pyx_2);
2813   Py_XDECREF(__pyx_3);
2814   __Pyx_WriteUnraisable("purple.close_account_request");
2815   __pyx_L0:;
2816 }
2817
2818 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":27
2819  * blist_cbs = {}
2820  * 
2821  * cdef void __group_node_cb(blist.PurpleBlistNode *node, object callback):             # <<<<<<<<<<<<<<
2822  *     cdef blist.PurpleGroup *group = <blist.PurpleGroup *>node
2823  *     cdef char *c_name = NULL
2824  */
2825
2826 static  void __pyx_f_6purple___group_node_cb(PurpleBlistNode *__pyx_v_node, PyObject *__pyx_v_callback) {
2827   PurpleGroup *__pyx_v_group;
2828   char *__pyx_v_c_name;
2829   PyObject *__pyx_v_name;
2830   PyObject *__pyx_v_currentsize;
2831   PyObject *__pyx_v_totalsize;
2832   PyObject *__pyx_v_online;
2833   int __pyx_1;
2834   PyObject *__pyx_2 = 0;
2835   PyObject *__pyx_3 = 0;
2836   __pyx_v_name = Py_None; Py_INCREF(Py_None);
2837   __pyx_v_currentsize = Py_None; Py_INCREF(Py_None);
2838   __pyx_v_totalsize = Py_None; Py_INCREF(Py_None);
2839   __pyx_v_online = Py_None; Py_INCREF(Py_None);
2840
2841   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":28
2842  * 
2843  * cdef void __group_node_cb(blist.PurpleBlistNode *node, object callback):
2844  *     cdef blist.PurpleGroup *group = <blist.PurpleGroup *>node             # <<<<<<<<<<<<<<
2845  *     cdef char *c_name = NULL
2846  * 
2847  */
2848   __pyx_v_group = ((PurpleGroup *)__pyx_v_node);
2849
2850   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":29
2851  * cdef void __group_node_cb(blist.PurpleBlistNode *node, object callback):
2852  *     cdef blist.PurpleGroup *group = <blist.PurpleGroup *>node
2853  *     cdef char *c_name = NULL             # <<<<<<<<<<<<<<
2854  * 
2855  *     c_name = <char *> blist.purple_group_get_name(group)
2856  */
2857   __pyx_v_c_name = NULL;
2858
2859   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":31
2860  *     cdef char *c_name = NULL
2861  * 
2862  *     c_name = <char *> blist.purple_group_get_name(group)             # <<<<<<<<<<<<<<
2863  *     if c_name == NULL:
2864  *         name = None
2865  */
2866   __pyx_v_c_name = ((char *)purple_group_get_name(__pyx_v_group));
2867
2868   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":32
2869  * 
2870  *     c_name = <char *> blist.purple_group_get_name(group)
2871  *     if c_name == NULL:             # <<<<<<<<<<<<<<
2872  *         name = None
2873  *     else:
2874  */
2875   __pyx_1 = (__pyx_v_c_name == NULL);
2876   if (__pyx_1) {
2877
2878     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":33
2879  *     c_name = <char *> blist.purple_group_get_name(group)
2880  *     if c_name == NULL:
2881  *         name = None             # <<<<<<<<<<<<<<
2882  *     else:
2883  *         name = c_name
2884  */
2885     Py_INCREF(Py_None);
2886     Py_DECREF(__pyx_v_name);
2887     __pyx_v_name = Py_None;
2888     goto __pyx_L3;
2889   }
2890   /*else*/ {
2891
2892     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":35
2893  *         name = None
2894  *     else:
2895  *         name = c_name             # <<<<<<<<<<<<<<
2896  * 
2897  *     currentsize = blist.purple_blist_get_group_size(group, False)
2898  */
2899     __pyx_2 = __Pyx_PyBytes_FromString(__pyx_v_c_name); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2900     Py_DECREF(__pyx_v_name);
2901     __pyx_v_name = __pyx_2;
2902     __pyx_2 = 0;
2903   }
2904   __pyx_L3:;
2905
2906   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":37
2907  *         name = c_name
2908  * 
2909  *     currentsize = blist.purple_blist_get_group_size(group, False)             # <<<<<<<<<<<<<<
2910  *     totalsize = blist.purple_blist_get_group_size(group, True)
2911  *     online = blist.purple_blist_get_group_online_count(group)
2912  */
2913   __pyx_2 = PyInt_FromLong(purple_blist_get_group_size(__pyx_v_group, 0)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2914   Py_DECREF(__pyx_v_currentsize);
2915   __pyx_v_currentsize = __pyx_2;
2916   __pyx_2 = 0;
2917
2918   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":38
2919  * 
2920  *     currentsize = blist.purple_blist_get_group_size(group, False)
2921  *     totalsize = blist.purple_blist_get_group_size(group, True)             # <<<<<<<<<<<<<<
2922  *     online = blist.purple_blist_get_group_online_count(group)
2923  * 
2924  */
2925   __pyx_2 = PyInt_FromLong(purple_blist_get_group_size(__pyx_v_group, 1)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2926   Py_DECREF(__pyx_v_totalsize);
2927   __pyx_v_totalsize = __pyx_2;
2928   __pyx_2 = 0;
2929
2930   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":39
2931  *     currentsize = blist.purple_blist_get_group_size(group, False)
2932  *     totalsize = blist.purple_blist_get_group_size(group, True)
2933  *     online = blist.purple_blist_get_group_online_count(group)             # <<<<<<<<<<<<<<
2934  * 
2935  *     callback(node.type, name, totalsize, currentsize, online)
2936  */
2937   __pyx_2 = PyInt_FromLong(purple_blist_get_group_online_count(__pyx_v_group)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2938   Py_DECREF(__pyx_v_online);
2939   __pyx_v_online = __pyx_2;
2940   __pyx_2 = 0;
2941
2942   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":41
2943  *     online = blist.purple_blist_get_group_online_count(group)
2944  * 
2945  *     callback(node.type, name, totalsize, currentsize, online)             # <<<<<<<<<<<<<<
2946  * 
2947  * cdef void __contact_node_cb(blist.PurpleBlistNode *node, object callback):
2948  */
2949   __pyx_2 = PyInt_FromLong(__pyx_v_node->type); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2950   __pyx_3 = PyTuple_New(5); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2951   PyTuple_SET_ITEM(__pyx_3, 0, __pyx_2);
2952   Py_INCREF(__pyx_v_name);
2953   PyTuple_SET_ITEM(__pyx_3, 1, __pyx_v_name);
2954   Py_INCREF(__pyx_v_totalsize);
2955   PyTuple_SET_ITEM(__pyx_3, 2, __pyx_v_totalsize);
2956   Py_INCREF(__pyx_v_currentsize);
2957   PyTuple_SET_ITEM(__pyx_3, 3, __pyx_v_currentsize);
2958   Py_INCREF(__pyx_v_online);
2959   PyTuple_SET_ITEM(__pyx_3, 4, __pyx_v_online);
2960   __pyx_2 = 0;
2961   __pyx_2 = PyObject_Call(__pyx_v_callback, ((PyObject *)__pyx_3), NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2962   Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
2963   Py_DECREF(__pyx_2); __pyx_2 = 0;
2964
2965   goto __pyx_L0;
2966   __pyx_L1_error:;
2967   Py_XDECREF(__pyx_2);
2968   Py_XDECREF(__pyx_3);
2969   __Pyx_WriteUnraisable("purple.__group_node_cb");
2970   __pyx_L0:;
2971   Py_DECREF(__pyx_v_name);
2972   Py_DECREF(__pyx_v_currentsize);
2973   Py_DECREF(__pyx_v_totalsize);
2974   Py_DECREF(__pyx_v_online);
2975 }
2976
2977 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":43
2978  *     callback(node.type, name, totalsize, currentsize, online)
2979  * 
2980  * cdef void __contact_node_cb(blist.PurpleBlistNode *node, object callback):             # <<<<<<<<<<<<<<
2981  *     cdef blist.PurpleContact *contact = <blist.PurpleContact *>node
2982  *     cdef char *c_alias = NULL
2983  */
2984
2985 static  void __pyx_f_6purple___contact_node_cb(PurpleBlistNode *__pyx_v_node, PyObject *__pyx_v_callback) {
2986   PurpleContact *__pyx_v_contact;
2987   char *__pyx_v_c_alias;
2988   PyObject *__pyx_v_alias;
2989   int __pyx_1;
2990   PyObject *__pyx_2 = 0;
2991   PyObject *__pyx_3 = 0;
2992   PyObject *__pyx_4 = 0;
2993   PyObject *__pyx_5 = 0;
2994   PyObject *__pyx_6 = 0;
2995   __pyx_v_alias = Py_None; Py_INCREF(Py_None);
2996
2997   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":44
2998  * 
2999  * cdef void __contact_node_cb(blist.PurpleBlistNode *node, object callback):
3000  *     cdef blist.PurpleContact *contact = <blist.PurpleContact *>node             # <<<<<<<<<<<<<<
3001  *     cdef char *c_alias = NULL
3002  * 
3003  */
3004   __pyx_v_contact = ((PurpleContact *)__pyx_v_node);
3005
3006   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":45
3007  * cdef void __contact_node_cb(blist.PurpleBlistNode *node, object callback):
3008  *     cdef blist.PurpleContact *contact = <blist.PurpleContact *>node
3009  *     cdef char *c_alias = NULL             # <<<<<<<<<<<<<<
3010  * 
3011  *     c_alias = <char *> blist.purple_contact_get_alias(contact)
3012  */
3013   __pyx_v_c_alias = NULL;
3014
3015   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":47
3016  *     cdef char *c_alias = NULL
3017  * 
3018  *     c_alias = <char *> blist.purple_contact_get_alias(contact)             # <<<<<<<<<<<<<<
3019  *     if c_alias == NULL:
3020  *         alias = None
3021  */
3022   __pyx_v_c_alias = ((char *)purple_contact_get_alias(__pyx_v_contact));
3023
3024   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":48
3025  * 
3026  *     c_alias = <char *> blist.purple_contact_get_alias(contact)
3027  *     if c_alias == NULL:             # <<<<<<<<<<<<<<
3028  *         alias = None
3029  *     else:
3030  */
3031   __pyx_1 = (__pyx_v_c_alias == NULL);
3032   if (__pyx_1) {
3033
3034     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":49
3035  *     c_alias = <char *> blist.purple_contact_get_alias(contact)
3036  *     if c_alias == NULL:
3037  *         alias = None             # <<<<<<<<<<<<<<
3038  *     else:
3039  *         alias = c_alias
3040  */
3041     Py_INCREF(Py_None);
3042     Py_DECREF(__pyx_v_alias);
3043     __pyx_v_alias = Py_None;
3044     goto __pyx_L3;
3045   }
3046   /*else*/ {
3047
3048     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":51
3049  *         alias = None
3050  *     else:
3051  *         alias = c_alias             # <<<<<<<<<<<<<<
3052  * 
3053  *     callback(node.type, alias, contact.totalsize, contact.currentsize, \
3054  */
3055     __pyx_2 = __Pyx_PyBytes_FromString(__pyx_v_c_alias); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3056     Py_DECREF(__pyx_v_alias);
3057     __pyx_v_alias = __pyx_2;
3058     __pyx_2 = 0;
3059   }
3060   __pyx_L3:;
3061
3062   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":53
3063  *         alias = c_alias
3064  * 
3065  *     callback(node.type, alias, contact.totalsize, contact.currentsize, \             # <<<<<<<<<<<<<<
3066  *              contact.online)
3067  * 
3068  */
3069   __pyx_2 = PyInt_FromLong(__pyx_v_node->type); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3070   __pyx_3 = PyInt_FromLong(__pyx_v_contact->totalsize); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3071   __pyx_4 = PyInt_FromLong(__pyx_v_contact->currentsize); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3072
3073   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":54
3074  * 
3075  *     callback(node.type, alias, contact.totalsize, contact.currentsize, \
3076  *              contact.online)             # <<<<<<<<<<<<<<
3077  * 
3078  * cdef void __buddy_node_cb(blist.PurpleBlistNode *node, object callback):
3079  */
3080   __pyx_5 = PyInt_FromLong(__pyx_v_contact->online); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3081   __pyx_6 = PyTuple_New(5); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3082   PyTuple_SET_ITEM(__pyx_6, 0, __pyx_2);
3083   Py_INCREF(__pyx_v_alias);
3084   PyTuple_SET_ITEM(__pyx_6, 1, __pyx_v_alias);
3085   PyTuple_SET_ITEM(__pyx_6, 2, __pyx_3);
3086   PyTuple_SET_ITEM(__pyx_6, 3, __pyx_4);
3087   PyTuple_SET_ITEM(__pyx_6, 4, __pyx_5);
3088   __pyx_2 = 0;
3089   __pyx_3 = 0;
3090   __pyx_4 = 0;
3091   __pyx_5 = 0;
3092   __pyx_2 = PyObject_Call(__pyx_v_callback, ((PyObject *)__pyx_6), NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3093   Py_DECREF(((PyObject *)__pyx_6)); __pyx_6 = 0;
3094   Py_DECREF(__pyx_2); __pyx_2 = 0;
3095
3096   goto __pyx_L0;
3097   __pyx_L1_error:;
3098   Py_XDECREF(__pyx_2);
3099   Py_XDECREF(__pyx_3);
3100   Py_XDECREF(__pyx_4);
3101   Py_XDECREF(__pyx_5);
3102   Py_XDECREF(__pyx_6);
3103   __Pyx_WriteUnraisable("purple.__contact_node_cb");
3104   __pyx_L0:;
3105   Py_DECREF(__pyx_v_alias);
3106 }
3107
3108 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":56
3109  *              contact.online)
3110  * 
3111  * cdef void __buddy_node_cb(blist.PurpleBlistNode *node, object callback):             # <<<<<<<<<<<<<<
3112  *     cdef blist.PurpleBuddy *buddy = <blist.PurpleBuddy *>node
3113  *     cdef char *c_name = NULL
3114  */
3115
3116 static  void __pyx_f_6purple___buddy_node_cb(PurpleBlistNode *__pyx_v_node, PyObject *__pyx_v_callback) {
3117   PurpleBuddy *__pyx_v_buddy;
3118   char *__pyx_v_c_name;
3119   char *__pyx_v_c_alias;
3120   PyObject *__pyx_v_name;
3121   PyObject *__pyx_v_alias;
3122   int __pyx_1;
3123   PyObject *__pyx_2 = 0;
3124   PyObject *__pyx_3 = 0;
3125   __pyx_v_name = Py_None; Py_INCREF(Py_None);
3126   __pyx_v_alias = Py_None; Py_INCREF(Py_None);
3127
3128   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":57
3129  * 
3130  * cdef void __buddy_node_cb(blist.PurpleBlistNode *node, object callback):
3131  *     cdef blist.PurpleBuddy *buddy = <blist.PurpleBuddy *>node             # <<<<<<<<<<<<<<
3132  *     cdef char *c_name = NULL
3133  *     cdef char *c_alias = NULL
3134  */
3135   __pyx_v_buddy = ((PurpleBuddy *)__pyx_v_node);
3136
3137   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":58
3138  * cdef void __buddy_node_cb(blist.PurpleBlistNode *node, object callback):
3139  *     cdef blist.PurpleBuddy *buddy = <blist.PurpleBuddy *>node
3140  *     cdef char *c_name = NULL             # <<<<<<<<<<<<<<
3141  *     cdef char *c_alias = NULL
3142  * 
3143  */
3144   __pyx_v_c_name = NULL;
3145
3146   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":59
3147  *     cdef blist.PurpleBuddy *buddy = <blist.PurpleBuddy *>node
3148  *     cdef char *c_name = NULL
3149  *     cdef char *c_alias = NULL             # <<<<<<<<<<<<<<
3150  * 
3151  *     c_name = <char *> blist.purple_buddy_get_name(buddy)
3152  */
3153   __pyx_v_c_alias = NULL;
3154
3155   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":61
3156  *     cdef char *c_alias = NULL
3157  * 
3158  *     c_name = <char *> blist.purple_buddy_get_name(buddy)             # <<<<<<<<<<<<<<
3159  *     if c_name == NULL:
3160  *         name = None
3161  */
3162   __pyx_v_c_name = ((char *)purple_buddy_get_name(__pyx_v_buddy));
3163
3164   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":62
3165  * 
3166  *     c_name = <char *> blist.purple_buddy_get_name(buddy)
3167  *     if c_name == NULL:             # <<<<<<<<<<<<<<
3168  *         name = None
3169  *     else:
3170  */
3171   __pyx_1 = (__pyx_v_c_name == NULL);
3172   if (__pyx_1) {
3173
3174     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":63
3175  *     c_name = <char *> blist.purple_buddy_get_name(buddy)
3176  *     if c_name == NULL:
3177  *         name = None             # <<<<<<<<<<<<<<
3178  *     else:
3179  *         name = c_name
3180  */
3181     Py_INCREF(Py_None);
3182     Py_DECREF(__pyx_v_name);
3183     __pyx_v_name = Py_None;
3184     goto __pyx_L3;
3185   }
3186   /*else*/ {
3187
3188     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":65
3189  *         name = None
3190  *     else:
3191  *         name = c_name             # <<<<<<<<<<<<<<
3192  * 
3193  *     c_alias = <char *> blist.purple_buddy_get_alias_only(buddy)
3194  */
3195     __pyx_2 = __Pyx_PyBytes_FromString(__pyx_v_c_name); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3196     Py_DECREF(__pyx_v_name);
3197     __pyx_v_name = __pyx_2;
3198     __pyx_2 = 0;
3199   }
3200   __pyx_L3:;
3201
3202   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":67
3203  *         name = c_name
3204  * 
3205  *     c_alias = <char *> blist.purple_buddy_get_alias_only(buddy)             # <<<<<<<<<<<<<<
3206  *     if c_alias == NULL:
3207  *         alias = None
3208  */
3209   __pyx_v_c_alias = ((char *)purple_buddy_get_alias_only(__pyx_v_buddy));
3210
3211   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":68
3212  * 
3213  *     c_alias = <char *> blist.purple_buddy_get_alias_only(buddy)
3214  *     if c_alias == NULL:             # <<<<<<<<<<<<<<
3215  *         alias = None
3216  *     else:
3217  */
3218   __pyx_1 = (__pyx_v_c_alias == NULL);
3219   if (__pyx_1) {
3220
3221     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":69
3222  *     c_alias = <char *> blist.purple_buddy_get_alias_only(buddy)
3223  *     if c_alias == NULL:
3224  *         alias = None             # <<<<<<<<<<<<<<
3225  *     else:
3226  *         alias = c_alias
3227  */
3228     Py_INCREF(Py_None);
3229     Py_DECREF(__pyx_v_alias);
3230     __pyx_v_alias = Py_None;
3231     goto __pyx_L4;
3232   }
3233   /*else*/ {
3234
3235     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":71
3236  *         alias = None
3237  *     else:
3238  *         alias = c_alias             # <<<<<<<<<<<<<<
3239  * 
3240  *     callback(node.type, name, alias)
3241  */
3242     __pyx_2 = __Pyx_PyBytes_FromString(__pyx_v_c_alias); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3243     Py_DECREF(__pyx_v_alias);
3244     __pyx_v_alias = __pyx_2;
3245     __pyx_2 = 0;
3246   }
3247   __pyx_L4:;
3248
3249   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":73
3250  *         alias = c_alias
3251  * 
3252  *     callback(node.type, name, alias)             # <<<<<<<<<<<<<<
3253  * 
3254  * cdef void __chat_node_cb(blist.PurpleBlistNode *node, object callback):
3255  */
3256   __pyx_2 = PyInt_FromLong(__pyx_v_node->type); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3257   __pyx_3 = PyTuple_New(3); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3258   PyTuple_SET_ITEM(__pyx_3, 0, __pyx_2);
3259   Py_INCREF(__pyx_v_name);
3260   PyTuple_SET_ITEM(__pyx_3, 1, __pyx_v_name);
3261   Py_INCREF(__pyx_v_alias);
3262   PyTuple_SET_ITEM(__pyx_3, 2, __pyx_v_alias);
3263   __pyx_2 = 0;
3264   __pyx_2 = PyObject_Call(__pyx_v_callback, ((PyObject *)__pyx_3), NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3265   Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
3266   Py_DECREF(__pyx_2); __pyx_2 = 0;
3267
3268   goto __pyx_L0;
3269   __pyx_L1_error:;
3270   Py_XDECREF(__pyx_2);
3271   Py_XDECREF(__pyx_3);
3272   __Pyx_WriteUnraisable("purple.__buddy_node_cb");
3273   __pyx_L0:;
3274   Py_DECREF(__pyx_v_name);
3275   Py_DECREF(__pyx_v_alias);
3276 }
3277
3278 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":75
3279  *     callback(node.type, name, alias)
3280  * 
3281  * cdef void __chat_node_cb(blist.PurpleBlistNode *node, object callback):             # <<<<<<<<<<<<<<
3282  *     cdef blist.PurpleChat *chat = <blist.PurpleChat *>node
3283  *     cdef char *c_name = NULL
3284  */
3285
3286 static  void __pyx_f_6purple___chat_node_cb(PurpleBlistNode *__pyx_v_node, PyObject *__pyx_v_callback) {
3287   PurpleChat *__pyx_v_chat;
3288   char *__pyx_v_c_name;
3289   PyObject *__pyx_v_name;
3290   int __pyx_1;
3291   PyObject *__pyx_2 = 0;
3292   PyObject *__pyx_3 = 0;
3293   __pyx_v_name = Py_None; Py_INCREF(Py_None);
3294
3295   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":76
3296  * 
3297  * cdef void __chat_node_cb(blist.PurpleBlistNode *node, object callback):
3298  *     cdef blist.PurpleChat *chat = <blist.PurpleChat *>node             # <<<<<<<<<<<<<<
3299  *     cdef char *c_name = NULL
3300  * 
3301  */
3302   __pyx_v_chat = ((PurpleChat *)__pyx_v_node);
3303
3304   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":77
3305  * cdef void __chat_node_cb(blist.PurpleBlistNode *node, object callback):
3306  *     cdef blist.PurpleChat *chat = <blist.PurpleChat *>node
3307  *     cdef char *c_name = NULL             # <<<<<<<<<<<<<<
3308  * 
3309  *     c_name = <char *> blist.purple_chat_get_name(chat)
3310  */
3311   __pyx_v_c_name = NULL;
3312
3313   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":79
3314  *     cdef char *c_name = NULL
3315  * 
3316  *     c_name = <char *> blist.purple_chat_get_name(chat)             # <<<<<<<<<<<<<<
3317  *     if c_name == NULL:
3318  *         name = None
3319  */
3320   __pyx_v_c_name = ((char *)purple_chat_get_name(__pyx_v_chat));
3321
3322   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":80
3323  * 
3324  *     c_name = <char *> blist.purple_chat_get_name(chat)
3325  *     if c_name == NULL:             # <<<<<<<<<<<<<<
3326  *         name = None
3327  *     else:
3328  */
3329   __pyx_1 = (__pyx_v_c_name == NULL);
3330   if (__pyx_1) {
3331
3332     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":81
3333  *     c_name = <char *> blist.purple_chat_get_name(chat)
3334  *     if c_name == NULL:
3335  *         name = None             # <<<<<<<<<<<<<<
3336  *     else:
3337  *         name = c_name
3338  */
3339     Py_INCREF(Py_None);
3340     Py_DECREF(__pyx_v_name);
3341     __pyx_v_name = Py_None;
3342     goto __pyx_L3;
3343   }
3344   /*else*/ {
3345
3346     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":83
3347  *         name = None
3348  *     else:
3349  *         name = c_name             # <<<<<<<<<<<<<<
3350  * 
3351  *     callback(node.type, name)
3352  */
3353     __pyx_2 = __Pyx_PyBytes_FromString(__pyx_v_c_name); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3354     Py_DECREF(__pyx_v_name);
3355     __pyx_v_name = __pyx_2;
3356     __pyx_2 = 0;
3357   }
3358   __pyx_L3:;
3359
3360   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":85
3361  *         name = c_name
3362  * 
3363  *     callback(node.type, name)             # <<<<<<<<<<<<<<
3364  * 
3365  * cdef void __other_node_cb(blist.PurpleBlistNode *node, object callback):
3366  */
3367   __pyx_2 = PyInt_FromLong(__pyx_v_node->type); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3368   __pyx_3 = PyTuple_New(2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3369   PyTuple_SET_ITEM(__pyx_3, 0, __pyx_2);
3370   Py_INCREF(__pyx_v_name);
3371   PyTuple_SET_ITEM(__pyx_3, 1, __pyx_v_name);
3372   __pyx_2 = 0;
3373   __pyx_2 = PyObject_Call(__pyx_v_callback, ((PyObject *)__pyx_3), NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3374   Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
3375   Py_DECREF(__pyx_2); __pyx_2 = 0;
3376
3377   goto __pyx_L0;
3378   __pyx_L1_error:;
3379   Py_XDECREF(__pyx_2);
3380   Py_XDECREF(__pyx_3);
3381   __Pyx_WriteUnraisable("purple.__chat_node_cb");
3382   __pyx_L0:;
3383   Py_DECREF(__pyx_v_name);
3384 }
3385
3386 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":87
3387  *     callback(node.type, name)
3388  * 
3389  * cdef void __other_node_cb(blist.PurpleBlistNode *node, object callback):             # <<<<<<<<<<<<<<
3390  *     callback(node.type)
3391  * 
3392  */
3393
3394 static  void __pyx_f_6purple___other_node_cb(PurpleBlistNode *__pyx_v_node, PyObject *__pyx_v_callback) {
3395   PyObject *__pyx_1 = 0;
3396   PyObject *__pyx_2 = 0;
3397
3398   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":88
3399  * 
3400  * cdef void __other_node_cb(blist.PurpleBlistNode *node, object callback):
3401  *     callback(node.type)             # <<<<<<<<<<<<<<
3402  * 
3403  * cdef void new_list(blist.PurpleBuddyList *list):
3404  */
3405   __pyx_1 = PyInt_FromLong(__pyx_v_node->type); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3406   __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3407   PyTuple_SET_ITEM(__pyx_2, 0, __pyx_1);
3408   __pyx_1 = 0;
3409   __pyx_1 = PyObject_Call(__pyx_v_callback, ((PyObject *)__pyx_2), NULL); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3410   Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0;
3411   Py_DECREF(__pyx_1); __pyx_1 = 0;
3412
3413   goto __pyx_L0;
3414   __pyx_L1_error:;
3415   Py_XDECREF(__pyx_1);
3416   Py_XDECREF(__pyx_2);
3417   __Pyx_WriteUnraisable("purple.__other_node_cb");
3418   __pyx_L0:;
3419 }
3420
3421 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":90
3422  *     callback(node.type)
3423  * 
3424  * cdef void new_list(blist.PurpleBuddyList *list):             # <<<<<<<<<<<<<<
3425  *     """
3426  *     Sets UI-specific data on a buddy list.
3427  */
3428
3429 static  void __pyx_f_6purple_new_list(PurpleBuddyList *__pyx_v_list) {
3430   PyObject *__pyx_1 = 0;
3431   PyObject *__pyx_2 = 0;
3432   PyObject *__pyx_3 = 0;
3433   int __pyx_4;
3434
3435   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":94
3436  *     Sets UI-specific data on a buddy list.
3437  *     """
3438  *     debug.purple_debug_info("blist", "%s", "new-list\n")             # <<<<<<<<<<<<<<
3439  *     if blist_cbs.has_key("new-list"):
3440  *         (<object> blist_cbs["new-list"])("new-list: TODO")
3441  */
3442   purple_debug_info(__pyx_k_36, __pyx_k_37, __pyx_k_38);
3443
3444   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":95
3445  *     """
3446  *     debug.purple_debug_info("blist", "%s", "new-list\n")
3447  *     if blist_cbs.has_key("new-list"):             # <<<<<<<<<<<<<<
3448  *         (<object> blist_cbs["new-list"])("new-list: TODO")
3449  * 
3450  */
3451   __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_blist_cbs); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3452   __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_has_key); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3453   Py_DECREF(__pyx_1); __pyx_1 = 0;
3454   __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3455   Py_INCREF(__pyx_kp_39);
3456   PyTuple_SET_ITEM(__pyx_1, 0, __pyx_kp_39);
3457   __pyx_3 = PyObject_Call(__pyx_2, ((PyObject *)__pyx_1), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3458   Py_DECREF(__pyx_2); __pyx_2 = 0;
3459   Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
3460   __pyx_4 = __Pyx_PyObject_IsTrue(__pyx_3); if (unlikely(__pyx_4 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3461   Py_DECREF(__pyx_3); __pyx_3 = 0;
3462   if (__pyx_4) {
3463
3464     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":96
3465  *     debug.purple_debug_info("blist", "%s", "new-list\n")
3466  *     if blist_cbs.has_key("new-list"):
3467  *         (<object> blist_cbs["new-list"])("new-list: TODO")             # <<<<<<<<<<<<<<
3468  * 
3469  * cdef void new_node(blist.PurpleBlistNode *node):
3470  */
3471     __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_blist_cbs); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3472     __pyx_1 = PyObject_GetItem(__pyx_2, __pyx_kp_40); if (!__pyx_1) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3473     Py_DECREF(__pyx_2); __pyx_2 = 0;
3474     __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3475     Py_INCREF(__pyx_kp_41);
3476     PyTuple_SET_ITEM(__pyx_3, 0, __pyx_kp_41);
3477     __pyx_2 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_3), NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3478     Py_DECREF(__pyx_1); __pyx_1 = 0;
3479     Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
3480     Py_DECREF(__pyx_2); __pyx_2 = 0;
3481     goto __pyx_L3;
3482   }
3483   __pyx_L3:;
3484
3485   goto __pyx_L0;
3486   __pyx_L1_error:;
3487   Py_XDECREF(__pyx_1);
3488   Py_XDECREF(__pyx_2);
3489   Py_XDECREF(__pyx_3);
3490   __Pyx_WriteUnraisable("purple.new_list");
3491   __pyx_L0:;
3492 }
3493
3494 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":98
3495  *         (<object> blist_cbs["new-list"])("new-list: TODO")
3496  * 
3497  * cdef void new_node(blist.PurpleBlistNode *node):             # <<<<<<<<<<<<<<
3498  *     """
3499  *     Sets UI-specific data on a node.
3500  */
3501
3502 static  void __pyx_f_6purple_new_node(PurpleBlistNode *__pyx_v_node) {
3503   PyObject *__pyx_1 = 0;
3504   PyObject *__pyx_2 = 0;
3505   PyObject *__pyx_3 = 0;
3506   int __pyx_4;
3507
3508   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":102
3509  *     Sets UI-specific data on a node.
3510  *     """
3511  *     debug.purple_debug_info("blist", "%s", "new-node\n")             # <<<<<<<<<<<<<<
3512  *     if blist_cbs.has_key("new-node"):
3513  *         if node.type == blist.PURPLE_BLIST_GROUP_NODE:
3514  */
3515   purple_debug_info(__pyx_k_42, __pyx_k_43, __pyx_k_44);
3516
3517   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":103
3518  *     """
3519  *     debug.purple_debug_info("blist", "%s", "new-node\n")
3520  *     if blist_cbs.has_key("new-node"):             # <<<<<<<<<<<<<<
3521  *         if node.type == blist.PURPLE_BLIST_GROUP_NODE:
3522  *             __group_node_cb(node, blist_cbs["new-node"])
3523  */
3524   __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_blist_cbs); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3525   __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_has_key); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3526   Py_DECREF(__pyx_1); __pyx_1 = 0;
3527   __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3528   Py_INCREF(__pyx_kp_45);
3529   PyTuple_SET_ITEM(__pyx_1, 0, __pyx_kp_45);
3530   __pyx_3 = PyObject_Call(__pyx_2, ((PyObject *)__pyx_1), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3531   Py_DECREF(__pyx_2); __pyx_2 = 0;
3532   Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
3533   __pyx_4 = __Pyx_PyObject_IsTrue(__pyx_3); if (unlikely(__pyx_4 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3534   Py_DECREF(__pyx_3); __pyx_3 = 0;
3535   if (__pyx_4) {
3536
3537     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":104
3538  *     debug.purple_debug_info("blist", "%s", "new-node\n")
3539  *     if blist_cbs.has_key("new-node"):
3540  *         if node.type == blist.PURPLE_BLIST_GROUP_NODE:             # <<<<<<<<<<<<<<
3541  *             __group_node_cb(node, blist_cbs["new-node"])
3542  *         elif node.type == blist.PURPLE_BLIST_CONTACT_NODE:
3543  */
3544     __pyx_4 = (__pyx_v_node->type == PURPLE_BLIST_GROUP_NODE);
3545     if (__pyx_4) {
3546
3547       /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":105
3548  *     if blist_cbs.has_key("new-node"):
3549  *         if node.type == blist.PURPLE_BLIST_GROUP_NODE:
3550  *             __group_node_cb(node, blist_cbs["new-node"])             # <<<<<<<<<<<<<<
3551  *         elif node.type == blist.PURPLE_BLIST_CONTACT_NODE:
3552  *             __contact_node_cb(node, blist_cbs["new-node"])
3553  */
3554       __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_blist_cbs); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3555       __pyx_1 = PyObject_GetItem(__pyx_2, __pyx_kp_46); if (!__pyx_1) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3556       Py_DECREF(__pyx_2); __pyx_2 = 0;
3557       __pyx_f_6purple___group_node_cb(__pyx_v_node, __pyx_1);
3558       Py_DECREF(__pyx_1); __pyx_1 = 0;
3559       goto __pyx_L4;
3560     }
3561
3562     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":106
3563  *         if node.type == blist.PURPLE_BLIST_GROUP_NODE:
3564  *             __group_node_cb(node, blist_cbs["new-node"])
3565  *         elif node.type == blist.PURPLE_BLIST_CONTACT_NODE:             # <<<<<<<<<<<<<<
3566  *             __contact_node_cb(node, blist_cbs["new-node"])
3567  *         elif node.type == blist.PURPLE_BLIST_BUDDY_NODE:
3568  */
3569     __pyx_4 = (__pyx_v_node->type == PURPLE_BLIST_CONTACT_NODE);
3570     if (__pyx_4) {
3571
3572       /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":107
3573  *             __group_node_cb(node, blist_cbs["new-node"])
3574  *         elif node.type == blist.PURPLE_BLIST_CONTACT_NODE:
3575  *             __contact_node_cb(node, blist_cbs["new-node"])             # <<<<<<<<<<<<<<
3576  *         elif node.type == blist.PURPLE_BLIST_BUDDY_NODE:
3577  *             __buddy_node_cb(node, blist_cbs["new-node"])
3578  */
3579       __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_kp_blist_cbs); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3580       __pyx_2 = PyObject_GetItem(__pyx_3, __pyx_kp_47); if (!__pyx_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3581       Py_DECREF(__pyx_3); __pyx_3 = 0;
3582       __pyx_f_6purple___contact_node_cb(__pyx_v_node, __pyx_2);
3583       Py_DECREF(__pyx_2); __pyx_2 = 0;
3584       goto __pyx_L4;
3585     }
3586
3587     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":108
3588  *         elif node.type == blist.PURPLE_BLIST_CONTACT_NODE:
3589  *             __contact_node_cb(node, blist_cbs["new-node"])
3590  *         elif node.type == blist.PURPLE_BLIST_BUDDY_NODE:             # <<<<<<<<<<<<<<
3591  *             __buddy_node_cb(node, blist_cbs["new-node"])
3592  *         elif node.type == blist.PURPLE_BLIST_CHAT_NODE:
3593  */
3594     __pyx_4 = (__pyx_v_node->type == PURPLE_BLIST_BUDDY_NODE);
3595     if (__pyx_4) {
3596
3597       /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":109
3598  *             __contact_node_cb(node, blist_cbs["new-node"])
3599  *         elif node.type == blist.PURPLE_BLIST_BUDDY_NODE:
3600  *             __buddy_node_cb(node, blist_cbs["new-node"])             # <<<<<<<<<<<<<<
3601  *         elif node.type == blist.PURPLE_BLIST_CHAT_NODE:
3602  *             __chat_node_cb(node, blist_cbs["new-node"])
3603  */
3604       __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_blist_cbs); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3605       __pyx_3 = PyObject_GetItem(__pyx_1, __pyx_kp_48); if (!__pyx_3) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3606       Py_DECREF(__pyx_1); __pyx_1 = 0;
3607       __pyx_f_6purple___buddy_node_cb(__pyx_v_node, __pyx_3);
3608       Py_DECREF(__pyx_3); __pyx_3 = 0;
3609       goto __pyx_L4;
3610     }
3611
3612     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":110
3613  *         elif node.type == blist.PURPLE_BLIST_BUDDY_NODE:
3614  *             __buddy_node_cb(node, blist_cbs["new-node"])
3615  *         elif node.type == blist.PURPLE_BLIST_CHAT_NODE:             # <<<<<<<<<<<<<<
3616  *             __chat_node_cb(node, blist_cbs["new-node"])
3617  *         elif node.type == blist.PURPLE_BLIST_OTHER_NODE:
3618  */
3619     __pyx_4 = (__pyx_v_node->type == PURPLE_BLIST_CHAT_NODE);
3620     if (__pyx_4) {
3621
3622       /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":111
3623  *             __buddy_node_cb(node, blist_cbs["new-node"])
3624  *         elif node.type == blist.PURPLE_BLIST_CHAT_NODE:
3625  *             __chat_node_cb(node, blist_cbs["new-node"])             # <<<<<<<<<<<<<<
3626  *         elif node.type == blist.PURPLE_BLIST_OTHER_NODE:
3627  *             __other_node_cb(node, blist_cbs["new-node"])
3628  */
3629       __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_blist_cbs); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3630       __pyx_1 = PyObject_GetItem(__pyx_2, __pyx_kp_49); if (!__pyx_1) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3631       Py_DECREF(__pyx_2); __pyx_2 = 0;
3632       __pyx_f_6purple___chat_node_cb(__pyx_v_node, __pyx_1);
3633       Py_DECREF(__pyx_1); __pyx_1 = 0;
3634       goto __pyx_L4;
3635     }
3636
3637     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":112
3638  *         elif node.type == blist.PURPLE_BLIST_CHAT_NODE:
3639  *             __chat_node_cb(node, blist_cbs["new-node"])
3640  *         elif node.type == blist.PURPLE_BLIST_OTHER_NODE:             # <<<<<<<<<<<<<<
3641  *             __other_node_cb(node, blist_cbs["new-node"])
3642  * 
3643  */
3644     __pyx_4 = (__pyx_v_node->type == PURPLE_BLIST_OTHER_NODE);
3645     if (__pyx_4) {
3646
3647       /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":113
3648  *             __chat_node_cb(node, blist_cbs["new-node"])
3649  *         elif node.type == blist.PURPLE_BLIST_OTHER_NODE:
3650  *             __other_node_cb(node, blist_cbs["new-node"])             # <<<<<<<<<<<<<<
3651  * 
3652  * cdef void show(blist.PurpleBuddyList *list):
3653  */
3654       __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_kp_blist_cbs); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3655       __pyx_2 = PyObject_GetItem(__pyx_3, __pyx_kp_50); if (!__pyx_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3656       Py_DECREF(__pyx_3); __pyx_3 = 0;
3657       __pyx_f_6purple___other_node_cb(__pyx_v_node, __pyx_2);
3658       Py_DECREF(__pyx_2); __pyx_2 = 0;
3659       goto __pyx_L4;
3660     }
3661     __pyx_L4:;
3662     goto __pyx_L3;
3663   }
3664   __pyx_L3:;
3665
3666   goto __pyx_L0;
3667   __pyx_L1_error:;
3668   Py_XDECREF(__pyx_1);
3669   Py_XDECREF(__pyx_2);
3670   Py_XDECREF(__pyx_3);
3671   __Pyx_WriteUnraisable("purple.new_node");
3672   __pyx_L0:;
3673 }
3674
3675 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":115
3676  *             __other_node_cb(node, blist_cbs["new-node"])
3677  * 
3678  * cdef void show(blist.PurpleBuddyList *list):             # <<<<<<<<<<<<<<
3679  *     """
3680  *     The core will call this when it's finished doing its core stuff.
3681  */
3682
3683 static  void __pyx_f_6purple_show(PurpleBuddyList *__pyx_v_list) {
3684   PyObject *__pyx_1 = 0;
3685   PyObject *__pyx_2 = 0;
3686   PyObject *__pyx_3 = 0;
3687   int __pyx_4;
3688
3689   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":119
3690  *     The core will call this when it's finished doing its core stuff.
3691  *     """
3692  *     debug.purple_debug_info("blist", "%s", "show\n")             # <<<<<<<<<<<<<<
3693  *     if blist_cbs.has_key("show"):
3694  *         (<object> blist_cbs["show"])("show: TODO")
3695  */
3696   purple_debug_info(__pyx_k_51, __pyx_k_52, __pyx_k_53);
3697
3698   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":120
3699  *     """
3700  *     debug.purple_debug_info("blist", "%s", "show\n")
3701  *     if blist_cbs.has_key("show"):             # <<<<<<<<<<<<<<
3702  *         (<object> blist_cbs["show"])("show: TODO")
3703  * 
3704  */
3705   __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_blist_cbs); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3706   __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_has_key); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3707   Py_DECREF(__pyx_1); __pyx_1 = 0;
3708   __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3709   Py_INCREF(__pyx_kp_54);
3710   PyTuple_SET_ITEM(__pyx_1, 0, __pyx_kp_54);
3711   __pyx_3 = PyObject_Call(__pyx_2, ((PyObject *)__pyx_1), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3712   Py_DECREF(__pyx_2); __pyx_2 = 0;
3713   Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
3714   __pyx_4 = __Pyx_PyObject_IsTrue(__pyx_3); if (unlikely(__pyx_4 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3715   Py_DECREF(__pyx_3); __pyx_3 = 0;
3716   if (__pyx_4) {
3717
3718     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":121
3719  *     debug.purple_debug_info("blist", "%s", "show\n")
3720  *     if blist_cbs.has_key("show"):
3721  *         (<object> blist_cbs["show"])("show: TODO")             # <<<<<<<<<<<<<<
3722  * 
3723  * cdef void update(blist.PurpleBuddyList *list, blist.PurpleBlistNode *node):
3724  */
3725     __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_blist_cbs); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3726     __pyx_1 = PyObject_GetItem(__pyx_2, __pyx_kp_55); if (!__pyx_1) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3727     Py_DECREF(__pyx_2); __pyx_2 = 0;
3728     __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3729     Py_INCREF(__pyx_kp_56);
3730     PyTuple_SET_ITEM(__pyx_3, 0, __pyx_kp_56);
3731     __pyx_2 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_3), NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3732     Py_DECREF(__pyx_1); __pyx_1 = 0;
3733     Py_DECREF(((PyObject *)__pyx_3)); __pyx_3 = 0;
3734     Py_DECREF(__pyx_2); __pyx_2 = 0;
3735     goto __pyx_L3;
3736   }
3737   __pyx_L3:;
3738
3739   goto __pyx_L0;
3740   __pyx_L1_error:;
3741   Py_XDECREF(__pyx_1);
3742   Py_XDECREF(__pyx_2);
3743   Py_XDECREF(__pyx_3);
3744   __Pyx_WriteUnraisable("purple.show");
3745   __pyx_L0:;
3746 }
3747
3748 /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":123
3749  *         (<object> blist_cbs["show"])("show: TODO")
3750  * 
3751  * cdef void update(blist.PurpleBuddyList *list, blist.PurpleBlistNode *node):             # <<<<<<<<<<<<<<
3752  *     """
3753  *     This will update a node in the buddy list.
3754  */
3755
3756 static  void __pyx_f_6purple_update(PurpleBuddyList *__pyx_v_list, PurpleBlistNode *__pyx_v_node) {
3757   PyObject *__pyx_1 = 0;
3758   PyObject *__pyx_2 = 0;
3759   PyObject *__pyx_3 = 0;
3760   int __pyx_4;
3761
3762   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":127
3763  *     This will update a node in the buddy list.
3764  *     """
3765  *     debug.purple_debug_info("blist", "%s", "update\n")             # <<<<<<<<<<<<<<
3766  *     if blist_cbs.has_key("update"):
3767  *         if node.type == blist.PURPLE_BLIST_GROUP_NODE:
3768  */
3769   purple_debug_info(__pyx_k_57, __pyx_k_58, __pyx_k_59);
3770
3771   /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":128
3772  *     """
3773  *     debug.purple_debug_info("blist", "%s", "update\n")
3774  *     if blist_cbs.has_key("update"):             # <<<<<<<<<<<<<<
3775  *         if node.type == blist.PURPLE_BLIST_GROUP_NODE:
3776  *             __group_node_cb(node, blist_cbs["update"])
3777  */
3778   __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_blist_cbs); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3779   __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_has_key); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3780   Py_DECREF(__pyx_1); __pyx_1 = 0;
3781   __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3782   Py_INCREF(__pyx_kp_60);
3783   PyTuple_SET_ITEM(__pyx_1, 0, __pyx_kp_60);
3784   __pyx_3 = PyObject_Call(__pyx_2, ((PyObject *)__pyx_1), NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3785   Py_DECREF(__pyx_2); __pyx_2 = 0;
3786   Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
3787   __pyx_4 = __Pyx_PyObject_IsTrue(__pyx_3); if (unlikely(__pyx_4 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3788   Py_DECREF(__pyx_3); __pyx_3 = 0;
3789   if (__pyx_4) {
3790
3791     /* "/scratchbox/users/bruno/home/bruno/carman/python-purple/blist_cbs.pxd":129
3792  *     debug.purple_debug_info("blist", "%s", "update\n")
3793  *     if blist_cbs.has_key("update"):
3794  *         if node.type == blist.PURPLE_BLIST_GROUP_NODE:             # <<<<<<<<<<<<<<
3795  *             __group_node_cb(node, blist_cbs["update"])
3796  *         elif node.type == blist.PURPLE_BLIST_CONTACT_NODE:
3797  */
3798     __pyx_4 = (__pyx_v_node->type == PURPLE_BLIST_GROUP_NODE);