plugins/perl/common/Conversation_IM.xs

Sat, 27 Sep 2003 19:17:21 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Sat, 27 Sep 2003 19:17:21 +0000
changeset 6982
12f08de92674
parent 6591
cc1ab32edcdc
child 7120
83dba78f8518
permissions
-rw-r--r--

[gaim-migrate @ 7538]
This is Mr. Holland's Opus. And by Mr. Holland I mean Robot101. He
rewrote the coreish IM image support so that the binary data gets
ripped out in the prpl and put in an imgstore instead of just being
passed in the same huge as char string as the actual message. This
is good because it's prpl agnostic, or something. It also means
we don't have a silly length of "-1" with pretty much every send or
receive IM function.

It should be crash free, bug free, and memleak free, but additional
testing is always a good thing.

If you like good stuff then you'll love this patch. But don't take
my word for it--ba dun dunt!

6591
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 #include "module.h"
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3 MODULE = Gaim::Conversation::IM PACKAGE = Gaim::Conversation::IM PREFIX = gaim_im_
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4 PROTOTYPES: ENABLE
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
6 Gaim::Conversation::IM
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
7 new(account, name)
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
8 Gaim::Account account
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
9 const char *name
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 CODE:
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 RETVAL = GAIM_IM(gaim_conversation_new(GAIM_CONV_IM, account, name));
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 OUTPUT:
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 RETVAL
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 void
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 DESTROY(im)
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 Gaim::Conversation::IM im
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 CODE:
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 gaim_conversation_destroy(gaim_im_get_conversation(im));
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
22 Gaim::Conversation
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 gaim_im_get_conversation(im)
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
24 Gaim::Conversation::IM im
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
25
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
26 void
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
27 gaim_im_write(im, who, message, flags)
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
28 Gaim::Conversation::IM im
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
29 const char *who
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
30 const char *message
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
31 int flags
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
32 CODE:
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6591
diff changeset
33 gaim_im_write(im, who, message, flags, time(NULL));
6591
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
34
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
35 void
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
36 gaim_im_send(im, message)
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
37 Gaim::Conversation::IM im
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
38 const char *message
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
39
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
40
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
41 MODULE = Gaim::Conversation::IM PACKAGE = Gaim PREFIX = gaim_
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
42 PROTOTYPES: ENABLE
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
43
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
44 void
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
45 ims()
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
46 PREINIT:
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
47 GList *l;
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
48 PPCODE:
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
49 for (l = gaim_get_ims(); l != NULL; l = l->next)
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
50 {
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
51 XPUSHs(sv_2mortal(gaim_perl_bless_object(GAIM_IM(l->data),
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
52 "Gaim::Conversation")));
cc1ab32edcdc [gaim-migrate @ 7115]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
53 }

mercurial