Viewing file: modperl_perl_global.h (2.72 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */
#ifndef MODPERL_PERL_GLOBAL_H #define MODPERL_PERL_GLOBAL_H
#define MP_MODGLOBAL_FETCH(gkey) \ hv_fetch_he(PL_modglobal, (char *)gkey->val, gkey->len, gkey->hash)
#define MP_MODGLOBAL_STORE_HV(gkey) \ (HV*)*hv_store(PL_modglobal, gkey->val, gkey->len, \ (SV*)newHV(), gkey->hash)
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; 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_register(pTHX_ modperl_modglobal_key_t *gkey, const char *package, I32 packlen);
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
|