| 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_ */ |
|