diff options
Diffstat (limited to 'hv.h')
-rw-r--r-- | hv.h | 41 |
1 files changed, 7 insertions, 34 deletions
@@ -19,12 +19,6 @@ * */ -#define FILLPCT 80 /* don't make greater than 99 */ -#define DBM_CACHE_MAX 63 /* cache 64 entries for dbm file */ - /* (resident array acts as a write-thru cache)*/ - -#define COEFFSIZE (16 * 8) /* size of coeff array */ - typedef struct he HE; struct he { @@ -36,47 +30,26 @@ struct he { }; struct xpvhv { - char * xpv_pv; /* pointer to malloced string */ - STRLEN xpv_cur; /* length of xp_pv as a C string */ - STRLEN xpv_len; /* allocated size */ - STRLEN xof_off; /* ptr is incremented by offset */ + char * xhv_array; /* pointer to malloced string */ + STRLEN xhv_fill; /* how full xhv_array currently is */ + STRLEN xhv_max; /* subscript of last element of xhv_array */ + STRLEN xhv_keys; /* how many elements in the array */ double xnv_nv; /* numeric value, if any */ MAGIC* xmg_magic; /* magic for scalar array */ HV* xmg_stash; /* class package */ - MAGIC* xhv_magic; /* magic for elements */ - - HE **xhv_array; - I32 xhv_max; /* subscript of last element of xhv_array */ - I32 xhv_dosplit; /* how full to get before splitting */ - I32 xhv_fill; /* how full xhv_array currently is */ I32 xhv_riter; /* current root of iterator */ HE *xhv_eiter; /* current entry of iterator */ PMOP *xhv_pmroot; /* list of pm's for this package */ char *xhv_name; /* name, if a symbol table */ -#ifdef SOME_DBM -#ifdef HAS_GDBM - GDBM_FILE xhv_dbm; -#else -#ifdef HAS_NDBM - DBM *xhv_dbm; -#else - I32 xhv_dbm; -#endif -#endif -#endif - unsigned char xhv_coeffsize; /* is 0 for symbol tables */ }; #define Nullhv Null(HV*) -#define HvMAGIC(hv) ((XPVHV*) SvANY(hv))->xhv_magic -#define HvARRAY(hv) ((XPVHV*) SvANY(hv))->xhv_array -#define HvMAX(hv) ((XPVHV*) SvANY(hv))->xhv_max -#define HvDOSPLIT(hv) ((XPVHV*) SvANY(hv))->xhv_dosplit +#define HvARRAY(hv) ((HE**)((XPVHV*) SvANY(hv))->xhv_array) #define HvFILL(hv) ((XPVHV*) SvANY(hv))->xhv_fill +#define HvMAX(hv) ((XPVHV*) SvANY(hv))->xhv_max +#define HvKEYS(hv) ((XPVHV*) SvANY(hv))->xhv_keys #define HvRITER(hv) ((XPVHV*) SvANY(hv))->xhv_riter #define HvEITER(hv) ((XPVHV*) SvANY(hv))->xhv_eiter #define HvPMROOT(hv) ((XPVHV*) SvANY(hv))->xhv_pmroot #define HvNAME(hv) ((XPVHV*) SvANY(hv))->xhv_name -#define HvDBM(hv) ((XPVHV*) SvANY(hv))->xhv_dbm -#define HvCOEFFSIZE(hv) ((XPVHV*) SvANY(hv))->xhv_coeffsize |