#ifndef MODPERL_PERL_GLOBAL_H #define MODPERL_PERL_GLOBAL_H typedef struct { const char *name; const char *val; I32 len; U32 hash; } modperl_modglobal_key_t; typedef enum { MP_MODGLOBAL_END } modperl_modglobal_key_e; typedef struct { AV **av; AV *origav; modperl_modglobal_key_e key; } modperl_perl_global_avcv_t; typedef struct { GV *gv; AV *tmpav; AV *origav; } modperl_perl_global_gvav_t; typedef struct { GV *gv; HV *tmphv; HV *orighv; } modperl_perl_global_gvhv_t; typedef struct { GV *gv; char flags; } modperl_perl_global_gvio_t; typedef struct { SV **sv; char pv[256]; /* XXX: only need enough for $/ at the moment */ I32 cur; } modperl_perl_global_svpv_t; typedef struct { modperl_perl_global_avcv_t end; modperl_perl_global_gvhv_t env; modperl_perl_global_gvav_t inc; modperl_perl_global_gvio_t defout; modperl_perl_global_svpv_t rs; } modperl_perl_globals_t; void modperl_modglobal_hash_keys(pTHX); modperl_modglobal_key_t *modperl_modglobal_lookup(pTHX_ const char *name); void modperl_perl_global_request_save(pTHX_ request_rec *r); void modperl_perl_global_request_restore(pTHX_ request_rec *r); void modperl_perl_global_avcv_call(pTHX_ modperl_modglobal_key_t *gkey, const char *package, I32 packlen); void modperl_perl_global_avcv_clear(pTHX_ modperl_modglobal_key_t *gkey, const char *package, I32 packlen); #endif