| |
1 #ifndef _GAIM_PERL_COMMON_H_ |
| |
2 #define _GAIM_PERL_COMMON_H_ |
| |
3 |
| |
4 #include <glib.h> |
| |
5 #ifdef _WIN32 |
| |
6 #undef pipe |
| |
7 #endif |
| |
8 #include <XSUB.h> |
| |
9 #include <EXTERN.h> |
| |
10 #include <perl.h> |
| |
11 |
| |
12 #include "plugin.h" |
| |
13 #include "value.h" |
| |
14 |
| |
15 #define is_hvref(o) \ |
| |
16 ((o) && SvROK(o) && SvRV(o) && (SvTYPE(SvRV(o)) == SVt_PVHV)) |
| |
17 |
| |
18 #define hvref(o) \ |
| |
19 (is_hvref(o) ? (HV *)SvRV(o) : NULL); |
| |
20 |
| |
21 #define GAIM_PERL_BOOT_PROTO(x) \ |
| |
22 void boot_Gaim__##x(pTHX_ CV *cv); |
| |
23 |
| |
24 #define GAIM_PERL_BOOT(x) \ |
| |
25 gaim_perl_callXS(boot_Gaim__##x, cv, mark) |
| |
26 |
| |
27 typedef struct |
| |
28 { |
| |
29 GaimPlugin *plugin; |
| |
30 char *package; |
| |
31 char *load_sub; |
| |
32 char *unload_sub; |
| |
33 char *prefs_sub; |
| |
34 #ifdef GAIM_GTKPERL |
| |
35 char *gtk_prefs_sub; |
| |
36 #endif |
| |
37 char *plugin_action_sub; |
| |
38 } GaimPerlScript; |
| |
39 |
| |
40 void gaim_perl_normalize_script_name(char *name); |
| |
41 |
| |
42 SV *newSVGChar(const char *str); |
| |
43 |
| |
44 void gaim_perl_callXS(void (*subaddr)(pTHX_ CV *cv), CV *cv, SV **mark); |
| |
45 void gaim_perl_bless_plain(const char *stash, void *object); |
| |
46 SV *gaim_perl_bless_object(void *object, const char *stash); |
| |
47 gboolean gaim_perl_is_ref_object(SV *o); |
| |
48 void *gaim_perl_ref_object(SV *o); |
| |
49 |
| |
50 int execute_perl(const char *function, int argc, char **args); |
| |
51 |
| |
52 #if 0 |
| |
53 gboolean gaim_perl_value_from_sv(GaimValue *value, SV *sv); |
| |
54 SV *gaim_perl_sv_from_value(const GaimValue *value); |
| |
55 #endif |
| |
56 |
| |
57 void *gaim_perl_data_from_sv(GaimValue *value, SV *sv); |
| |
58 SV *gaim_perl_sv_from_vargs(const GaimValue *value, va_list *args, |
| |
59 void ***copy_arg); |
| |
60 |
| |
61 #endif /* _GAIM_PERL_COMMON_H_ */ |