1 #include "module.h"
2 
3 MODULE = Purple::Pounce  PACKAGE = Purple::Pounce  PREFIX = purple_pounce_
4 PROTOTYPES: ENABLE
5 
6 BOOT:
7 {
8 	HV *event_stash = gv_stashpv("Purple::Pounce::Event", 1);
9 	HV *option_stash = gv_stashpv("Purple::Pounce::Option", 1);
10 
11 	static const constiv *civ, event_const_iv[] = {
12 #define const_iv(name) {#name, (IV)PURPLE_POUNCE_##name}
13 		const_iv(NONE),
14 		const_iv(SIGNON),
15 		const_iv(SIGNOFF),
16 		const_iv(AWAY),
17 		const_iv(AWAY_RETURN),
18 		const_iv(IDLE),
19 		const_iv(IDLE_RETURN),
20 		const_iv(TYPING),
21 		const_iv(TYPED),
22 		const_iv(TYPING_STOPPED),
23 		const_iv(MESSAGE_RECEIVED),
24 	};
25 	static const constiv option_const_iv[] = {
26 #undef const_iv
27 #define const_iv(name) {#name, (IV)PURPLE_POUNCE_OPTION_##name}
28 		const_iv(NONE),
29 		const_iv(AWAY),
30 	};
31 
32 	for (civ = event_const_iv + sizeof(event_const_iv) / sizeof(event_const_iv[0]); civ-- > event_const_iv; )
33 		newCONSTSUB(event_stash, (char *)civ->name, newSViv(civ->iv));
34 
35 	for (civ = option_const_iv + sizeof(option_const_iv) / sizeof(option_const_iv[0]); civ-- > option_const_iv; )
36 		newCONSTSUB(option_stash, (char *)civ->name, newSViv(civ->iv));
37 }
38 
39 void
40 purple_pounce_action_register(pounce, name)
41 	Purple::Pounce pounce
42 	const char *name
43 
44 void
45 purple_pounce_destroy(pounce)
46 	Purple::Pounce pounce
47 
48 void
49 purple_pounce_destroy_all_by_account(account)
50 	Purple::Account account
51 
52 void *
53 purple_pounce_get_data(pounce)
54 	Purple::Pounce pounce
55 
56 Purple::PounceEvent
57 purple_pounce_get_events(pounce)
58 	Purple::Pounce pounce
59 
60 const char *
61 purple_pounce_get_pouncee(pounce)
62 	Purple::Pounce pounce
63 
64 Purple::Account
65 purple_pounce_get_pouncer(pounce)
66 	Purple::Pounce pounce
67 
68 gboolean
69 purple_pounce_get_save(pounce)
70 	Purple::Pounce pounce
71 
72 void
73 purple_pounce_set_data(pounce, data)
74 	Purple::Pounce pounce
75 	void * data
76 
77 void
78 purple_pounce_set_events(pounce, events)
79 	Purple::Pounce pounce
80 	Purple::PounceEvent events
81 
82 void
83 purple_pounce_set_pouncee(pounce, pouncee)
84 	Purple::Pounce pounce
85 	const char *pouncee
86 
87 void
88 purple_pounce_set_pouncer(pounce, pouncer)
89 	Purple::Pounce pounce
90 	Purple::Account pouncer
91 
92 void
93 purple_pounce_set_save(pounce, save)
94 	Purple::Pounce pounce
95 	gboolean save
96 
97 MODULE = Purple::Pounce  PACKAGE = Purple::Pounces  PREFIX = purple_pounces_
98 PROTOTYPES: ENABLE
99 
100 void
101 purple_pounces_get_all()
102 PREINIT:
103 	GList *l;
104 PPCODE:
105 	for (l = purple_pounces_get_all(); l != NULL; l = l->next) {
106 		XPUSHs(sv_2mortal(purple_perl_bless_object(l->data, "Purple::Pounce")));
107 	}
108 
109 void
110 purple_pounces_get_all_for_ui(ui)
111 	const char *ui
112 PREINIT:
113 	GList *l, *ll;
114 PPCODE:
115 	ll = purple_pounces_get_all_for_ui(ui);
116 	for (l = ll; l != NULL; l = l->next) {
117 		XPUSHs(sv_2mortal(purple_perl_bless_object(l->data, "Purple::Pounce")));
118 	}
119 	g_list_free(ll);
120 
121 Purple::Handle
122 purple_pounces_get_handle()
123 
124 gboolean
125 purple_pounces_load()
126 
127 void
128 purple_pounces_unregister_handler(ui)
129 	const char *ui
130