/* mg.h * * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999, * 2000, 2002, 2005, 2006, 2007, 2008 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ struct mgvtbl { int (*svt_get) (pTHX_ SV *sv, MAGIC* mg); int (*svt_set) (pTHX_ SV *sv, MAGIC* mg); U32 (*svt_len) (pTHX_ SV *sv, MAGIC* mg); int (*svt_clear)(pTHX_ SV *sv, MAGIC* mg); int (*svt_free) (pTHX_ SV *sv, MAGIC* mg); int (*svt_copy) (pTHX_ SV *sv, MAGIC* mg, SV *nsv, const char *name, I32 namlen); int (*svt_dup) (pTHX_ MAGIC *mg, CLONE_PARAMS *param); int (*svt_local)(pTHX_ SV *nsv, MAGIC *mg); }; struct magic { MAGIC* mg_moremagic; MGVTBL* mg_virtual; /* pointer to magic functions */ U16 mg_private; char mg_type; U8 mg_flags; SSize_t mg_len; SV* mg_obj; char* mg_ptr; }; #define MGf_TAINTEDDIR 1 /* PERL_MAGIC_envelem only */ #define MGf_MINMATCH 1 /* PERL_MAGIC_regex_global only */ #define MGf_REQUIRE_GV 1 /* PERL_MAGIC_checkcall only */ #define MGf_REFCOUNTED 2 #define MGf_GSKIP 4 /* skip further GETs until after next SET */ #define MGf_COPY 8 /* has an svt_copy MGVTBL entry */ #define MGf_DUP 0x10 /* has an svt_dup MGVTBL entry */ #define MGf_LOCAL 0x20 /* has an svt_local MGVTBL entry */ #define MGf_BYTES 0x40 /* PERL_MAGIC_regex_global only */ #define MGf_PERSIST 0x80 /* PERL_MAGIC_lvref only */ #define MgTAINTEDDIR(mg) (mg->mg_flags & MGf_TAINTEDDIR) #define MgTAINTEDDIR_on(mg) (mg->mg_flags |= MGf_TAINTEDDIR) #define MgTAINTEDDIR_off(mg) (mg->mg_flags &= ~MGf_TAINTEDDIR) #define MgPV(mg,lp) ((((int)(lp = (mg)->mg_len)) == HEf_SVKEY) ? \ SvPV(MUTABLE_SV((mg)->mg_ptr),lp) : \ (mg)->mg_ptr) #define MgPV_const(mg,lp) ((((int)(lp = (mg)->mg_len)) == HEf_SVKEY) ? \ SvPV_const(MUTABLE_SV((mg)->mg_ptr),lp) : \ (const char*)(mg)->mg_ptr) #define MgPV_nolen_const(mg) (((((int)(mg)->mg_len)) == HEf_SVKEY) ? \ SvPV_nolen_const(MUTABLE_SV((mg)->mg_ptr)) : \ (const char*)(mg)->mg_ptr) #define SvTIED_mg(sv,how) (SvRMAGICAL(sv) ? mg_find((sv),(how)) : NULL) #define SvTIED_obj(sv,mg) \ ((mg)->mg_obj ? (mg)->mg_obj : sv_2mortal(newRV(sv))) #if defined(PERL_CORE) || defined(PERL_EXT) # define MgBYTEPOS(mg,sv,pv,len) S_MgBYTEPOS(aTHX_ mg,sv,pv,len) /* assumes get-magic and stringification have already occurred */ # define MgBYTEPOS_set(mg,sv,pv,off) ( \ assert_((mg)->mg_type == PERL_MAGIC_regex_global) \ SvPOK(sv) && (!SvGMAGICAL(sv) || sv_only_taint_gmagic(sv)) \ ? (mg)->mg_len = (off), (mg)->mg_flags |= MGf_BYTES \ : ((mg)->mg_len = DO_UTF8(sv) \ ? (SSize_t)utf8_length((U8 *)(pv), (U8 *)(pv)+(off)) \ : (SSize_t)(off), \ (mg)->mg_flags &= ~MGf_BYTES)) #endif #define whichsig(pv) whichsig_pv(pv) /* * ex: set ts=8 sts=4 sw=4 et: */
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
EXTERN.h | File | 1.67 KB | 0644 |
|
INTERN.h | File | 1.24 KB | 0644 |
|
XSUB.h | File | 23.87 KB | 0644 |
|
av.h | File | 3.24 KB | 0644 |
|
bitcount.h | File | 850 B | 0644 |
|
charclass_invlists.h | File | 949.68 KB | 0644 |
|
config.h | File | 163.48 KB | 0644 |
|
cop.h | File | 38.61 KB | 0644 |
|
cv.h | File | 11.76 KB | 0644 |
|
dosish.h | File | 5.37 KB | 0644 |
|
dquote_inline.h | File | 1.8 KB | 0644 |
|
ebcdic_tables.h | File | 29.16 KB | 0644 |
|
embed.h | File | 95.07 KB | 0644 |
|
embedvar.h | File | 18.47 KB | 0644 |
|
fakesdio.h | File | 3.14 KB | 0644 |
|
feature.h | File | 4.8 KB | 0644 |
|
form.h | File | 1.43 KB | 0644 |
|
git_version.h | File | 357 B | 0644 |
|
gv.h | File | 10.46 KB | 0644 |
|
handy.h | File | 120.46 KB | 0644 |
|
hv.h | File | 24.97 KB | 0644 |
|
hv_func.h | File | 13.1 KB | 0644 |
|
inline.h | File | 45.39 KB | 0644 |
|
intrpvar.h | File | 28.79 KB | 0644 |
|
invlist_inline.h | File | 2.69 KB | 0644 |
|
iperlsys.h | File | 47.66 KB | 0644 |
|
keywords.h | File | 6.43 KB | 0644 |
|
l1_char_class_tab.h | File | 123.94 KB | 0644 |
|
libperl.so | File | 2.08 MB | 0755 |
|
malloc_ctl.h | File | 1.48 KB | 0644 |
|
metaconfig.h | File | 674 B | 0644 |
|
mg.h | File | 2.94 KB | 0644 |
|
mg_data.h | File | 4.81 KB | 0644 |
|
mg_raw.h | File | 4.16 KB | 0644 |
|
mg_vtable.h | File | 9.12 KB | 0644 |
|
mydtrace.h | File | 1.65 KB | 0644 |
|
nostdio.h | File | 3.31 KB | 0644 |
|
op.h | File | 35.57 KB | 0644 |
|
op_reg_common.h | File | 5.77 KB | 0644 |
|
opcode.h | File | 89.73 KB | 0644 |
|
opnames.h | File | 8.63 KB | 0644 |
|
overload.h | File | 3.2 KB | 0644 |
|
pad.h | File | 16.84 KB | 0644 |
|
parser.h | File | 6.75 KB | 0644 |
|
patchlevel.h | File | 9.67 KB | 0644 |
|
perl.h | File | 237.54 KB | 0644 |
|
perlapi.h | File | 5.73 KB | 0644 |
|
perldtrace.h | File | 3.22 KB | 0644 |
|
perlio.h | File | 9.24 KB | 0644 |
|
perliol.h | File | 13.44 KB | 0644 |
|
perlsdio.h | File | 527 B | 0644 |
|
perlvars.h | File | 9.46 KB | 0644 |
|
perly.h | File | 4.27 KB | 0644 |
|
pp.h | File | 26.93 KB | 0644 |
|
pp_proto.h | File | 11.8 KB | 0644 |
|
proto.h | File | 240.98 KB | 0644 |
|
reentr.h | File | 76.44 KB | 0644 |
|
regcharclass.h | File | 141.19 KB | 0644 |
|
regcomp.h | File | 46.68 KB | 0644 |
|
regexp.h | File | 33.57 KB | 0644 |
|
regnodes.h | File | 34.99 KB | 0644 |
|
scope.h | File | 11.63 KB | 0644 |
|
sv.h | File | 82.28 KB | 0644 |
|
thread.h | File | 11.73 KB | 0644 |
|
time64.h | File | 1.54 KB | 0644 |
|
time64_config.h | File | 1.98 KB | 0644 |
|
uconfig.h | File | 163.21 KB | 0644 |
|
unicode_constants.h | File | 7.8 KB | 0644 |
|
unixish.h | File | 4.99 KB | 0644 |
|
utf8.h | File | 57.73 KB | 0644 |
|
utfebcdic.h | File | 65.72 KB | 0644 |
|
util.h | File | 9.38 KB | 0644 |
|
uudmap.h | File | 904 B | 0644 |
|
vutil.h | File | 7.29 KB | 0644 |
|
warnings.h | File | 7.63 KB | 0644 |
|