| |
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 char *gtk_prefs_sub; |
| |
35 char *plugin_action_sub; |
| |
36 } GaimPerlScript; |
| |
37 |
| |
38 void gaim_perl_normalize_script_name(char *name); |
| |
39 |
| |
40 SV *newSVGChar(const char *str); |
| |
41 |
| |
42 void gaim_perl_callXS(void (*subaddr)(pTHX_ CV *cv), CV *cv, SV **mark); |
| |
43 void gaim_perl_bless_plain(const char *stash, void *object); |
| |
44 SV *gaim_perl_bless_object(void *object, const char *stash); |
| |
45 gboolean gaim_perl_is_ref_object(SV *o); |
| |
46 void *gaim_perl_ref_object(SV *o); |
| |
47 |
| |
48 int execute_perl(const char *function, int argc, char **args); |
| |
49 |
| |
50 #if 0 |
| |
51 gboolean gaim_perl_value_from_sv(GaimValue *value, SV *sv); |
| |
52 SV *gaim_perl_sv_from_value(const GaimValue *value); |
| |
53 #endif |
| |
54 |
| |
55 void *gaim_perl_data_from_sv(GaimValue *value, SV *sv); |
| |
56 SV *gaim_perl_sv_from_vargs(const GaimValue *value, va_list *args, |
| |
57 void ***copy_arg); |
| |
58 |
| |
59 #endif /* _GAIM_PERL_COMMON_H_ */ |