Lines Matching defs:mg

5 /*    mg.c
107 MAGIC* mg;
108 for (mg = SvMAGIC(sv); mg; mg = mg->mg_moremagic) {
109 MGVTBL* vtbl = mg->mg_virtual;
111 if (vtbl->svt_get && !(mg->mg_flags & MGf_GSKIP))
133 MAGIC *newmg, *head, *cur, *mg;
138 /* We must call svt_get(sv, mg) for each valid entry in the linked
142 newmg = cur = head = mg = SvMAGIC(sv);
143 while (mg) {
144 MGVTBL *vtbl = mg->mg_virtual;
146 if (!(mg->mg_flags & MGf_GSKIP) && vtbl && vtbl->svt_get) {
147 CALL_FPTR(vtbl->svt_get)(aTHX_ sv, mg);
159 if (mg->mg_flags & MGf_GSKIP)
163 mg = mg->mg_moremagic;
168 if (mg == head) {
170 mg = cur;
178 cur = mg;
179 mg = newmg;
199 MAGIC* mg;
205 for (mg = SvMAGIC(sv); mg; mg = nextmg) {
206 MGVTBL* vtbl = mg->mg_virtual;
207 nextmg = mg->mg_moremagic; /* it may delete itself */
208 if (mg->mg_flags & MGf_GSKIP) {
209 mg->mg_flags &= ~MGf_GSKIP; /* setting requires another read */
213 CALL_FPTR(vtbl->svt_set)(aTHX_ sv, mg);
231 MAGIC* mg;
234 for (mg = SvMAGIC(sv); mg; mg = mg->mg_moremagic) {
235 MGVTBL* vtbl = mg->mg_virtual;
242 len = CALL_FPTR(vtbl->svt_len)(aTHX_ sv, mg);
261 MAGIC* mg;
264 for (mg = SvMAGIC(sv); mg; mg = mg->mg_moremagic) {
265 MGVTBL* vtbl = mg->mg_virtual;
272 len = CALL_FPTR(vtbl->svt_len)(aTHX_ sv, mg);
303 MAGIC* mg;
308 for (mg = SvMAGIC(sv); mg; mg = mg->mg_moremagic) {
309 MGVTBL* vtbl = mg->mg_virtual;
313 CALL_FPTR(vtbl->svt_clear)(aTHX_ sv, mg);
331 MAGIC* mg;
334 for (mg = SvMAGIC(sv); mg; mg = mg->mg_moremagic) {
335 if (mg->mg_type == type)
336 return mg;
353 MAGIC* mg;
354 for (mg = SvMAGIC(sv); mg; mg = mg->mg_moremagic) {
355 MGVTBL* vtbl = mg->mg_virtual;
356 if ((mg->mg_flags & MGf_COPY) && vtbl->svt_copy){
357 count += CALL_FPTR(vtbl->svt_copy)(aTHX_ sv, mg, nsv, key, klen);
359 else if (isUPPER(mg->mg_type)) {
361 mg->mg_type == PERL_MAGIC_tied ? SvTIED_obj(sv, mg) :
362 (mg->mg_type == PERL_MAGIC_regdata && mg->mg_obj)
363 ? sv : mg->mg_obj,
364 toLOWER(mg->mg_type), key, klen);
382 MAGIC* mg;
384 for (mg = SvMAGIC(sv); mg; mg = moremagic) {
385 MGVTBL* vtbl = mg->mg_virtual;
386 moremagic = mg->mg_moremagic;
388 CALL_FPTR(vtbl->svt_free)(aTHX_ sv, mg);
389 if (mg->mg_ptr && mg->mg_type != PERL_MAGIC_regex_global) {
390 if (mg->mg_len > 0 || mg->mg_type == PERL_MAGIC_utf8)
391 Safefree(mg->mg_ptr);
392 else if (mg->mg_len == HEf_SVKEY)
393 SvREFCNT_dec((SV*)mg->mg_ptr);
395 if (mg->mg_flags & MGf_REFCOUNTED)
396 SvREFCNT_dec(mg->mg_obj);
397 Safefree(mg);
406 Perl_magic_regdata_cnt(pTHX_ SV *sv, MAGIC *mg)
411 if (mg->mg_obj) /* @+ */
421 Perl_magic_regdatum_get(pTHX_ SV *sv, MAGIC *mg)
430 paren = mg->mg_len;
437 if (mg->mg_obj) /* @+ */
455 Perl_magic_regdatum_set(pTHX_ SV *sv, MAGIC *mg)
463 Perl_magic_len(pTHX_ SV *sv, MAGIC *mg)
470 switch (*mg->mg_ptr) {
475 paren = atoi(mg->mg_ptr); /* $& is in [0] */
544 magic_get(sv,mg);
555 Perl_magic_get(pTHX_ SV *sv, MAGIC *mg)
562 switch (*mg->mg_ptr) {
577 if (*(mg->mg_ptr+1) == '\0') {
638 else if (strEQ(mg->mg_ptr+1, "NCODING"))
654 if (*(mg->mg_ptr+1) == '\0') {
658 else if (strEQ(mg->mg_ptr, "\017PEN")) {
670 if (*(mg->mg_ptr+1) == '\0') {
680 if (*(mg->mg_ptr+1) == '\0') {
687 else if (strEQ(mg->mg_ptr, "\024AINT"))
693 if (strEQ(mg->mg_ptr, "\025NICODE"))
697 if (*(mg->mg_ptr+1) == '\0')
699 else if (strEQ(mg->mg_ptr+1, "ARNING_BITS")) {
720 * Pre-threads, this was paren = atoi(GvENAME((GV*)mg->mg_obj));
723 paren = atoi(mg->mg_ptr); /* $& is in [0] */
743 MAGIC* mg = SvMAGIC(sv);
746 SvMAGIC(sv) = mg->mg_moremagic;
749 mg->mg_moremagic = mgt;
750 SvMAGIC(sv) = mg;
932 Perl_magic_getuvar(pTHX_ SV *sv, MAGIC *mg)
934 struct ufuncs *uf = (struct ufuncs *)mg->mg_ptr;
942 Perl_magic_setenv(pTHX_ SV *sv, MAGIC *mg)
949 ptr = MgPV(mg,klen);
966 MgTAINTEDDIR_off(mg);
978 MgTAINTEDDIR_on(mg);
1006 MgTAINTEDDIR_on(mg);
1018 Perl_magic_clearenv(pTHX_ SV *sv, MAGIC *mg)
1021 my_setenv(MgPV(mg,n_a),Nullch);
1026 Perl_magic_set_all_env(pTHX_ SV *sv, MAGIC *mg)
1034 magic_clear_all_env(sv,mg);
1047 Perl_magic_clear_all_env(pTHX_ SV *sv, MAGIC *mg)
1101 Perl_magic_getsig(pTHX_ SV *sv, MAGIC *mg)
1106 i = whichsig(MgPV(mg,n_a));
1131 Perl_magic_clearsig(pTHX_ SV *sv, MAGIC *mg)
1139 s = MgPV(mg,n_a);
1273 Perl_magic_setsig(pTHX_ SV *sv, MAGIC *mg)
1289 s = MgPV(mg,len);
1396 Perl_magic_setisa(pTHX_ SV *sv, MAGIC *mg)
1403 Perl_magic_setamagic(pTHX_ SV *sv, MAGIC *mg)
1412 Perl_magic_getnkeys(pTHX_ SV *sv, MAGIC *mg)
1432 Perl_magic_setnkeys(pTHX_ SV *sv, MAGIC *mg)
1442 S_magic_methcall(pTHX_ SV *sv, MAGIC *mg, char *meth, I32 flags, int n, SV *val)
1448 PUSHs(SvTIED_obj(sv, mg));
1450 if (mg->mg_ptr) {
1451 if (mg->mg_len >= 0)
1452 PUSHs(sv_2mortal(newSVpvn(mg->mg_ptr, mg->mg_len)));
1453 else if (mg->mg_len == HEf_SVKEY)
1454 PUSHs((SV*)mg->mg_ptr);
1456 else if (mg->mg_type == PERL_MAGIC_tiedelem) {
1457 PUSHs(sv_2mortal(newSViv(mg->mg_len)));
1469 S_magic_methpack(pTHX_ SV *sv, MAGIC *mg, char *meth)
1477 if (magic_methcall(sv, mg, meth, G_SCALAR, 2, NULL)) {
1488 Perl_magic_getpack(pTHX_ SV *sv, MAGIC *mg)
1490 if (mg->mg_ptr)
1491 mg->mg_flags |= MGf_GSKIP;
1492 magic_methpack(sv,mg,"FETCH");
1497 Perl_magic_setpack(pTHX_ SV *sv, MAGIC *mg)
1502 magic_methcall(sv, mg, "STORE", G_SCALAR|G_DISCARD, 3, sv);
1509 Perl_magic_clearpack(pTHX_ SV *sv, MAGIC *mg)
1511 return magic_methpack(sv,mg,"DELETE");
1516 Perl_magic_sizepack(pTHX_ SV *sv, MAGIC *mg)
1524 if (magic_methcall(sv, mg, "FETCHSIZE", G_SCALAR, 2, NULL)) {
1535 Perl_magic_wipepack(pTHX_ SV *sv, MAGIC *mg)
1542 XPUSHs(SvTIED_obj(sv, mg));
1552 Perl_magic_nextpack(pTHX_ SV *sv, MAGIC *mg, SV *key)
1562 PUSHs(SvTIED_obj(sv, mg));
1577 Perl_magic_existspack(pTHX_ SV *sv, MAGIC *mg)
1579 return magic_methpack(sv,mg,"EXISTS");
1583 Perl_magic_scalarpack(pTHX_ HV *hv, MAGIC *mg)
1587 SV *tied = SvTIED_obj((SV*)hv, mg);
1597 magic_nextpack((SV*)hv, mg, key);
1618 Perl_magic_setdbline(pTHX_ SV *sv, MAGIC *mg)
1629 atoi(MgPV(mg,n_a)), FALSE);
1641 Perl_magic_getarylen(pTHX_ SV *sv, MAGIC *mg)
1643 sv_setiv(sv, AvFILL((AV*)mg->mg_obj) + PL_curcop->cop_arybase);
1648 Perl_magic_setarylen(pTHX_ SV *sv, MAGIC *mg)
1650 av_fill((AV*)mg->mg_obj, SvIV(sv) - PL_curcop->cop_arybase);
1655 Perl_magic_getpos(pTHX_ SV *sv, MAGIC *mg)
1660 mg = mg_find(lsv, PERL_MAGIC_regex_global);
1661 if (mg && mg->mg_len >= 0) {
1662 I32 i = mg->mg_len;
1674 Perl_magic_setpos(pTHX_ SV *sv, MAGIC *mg)
1681 mg = 0;
1684 mg = mg_find(lsv, PERL_MAGIC_regex_global);
1685 if (!mg) {
1689 mg = mg_find(lsv, PERL_MAGIC_regex_global);
1692 mg->mg_len = -1;
1719 mg->mg_len = pos;
1720 mg->mg_flags &= ~MGf_MINMATCH;
1726 Perl_magic_getglob(pTHX_ SV *sv, MAGIC *mg)
1739 Perl_magic_setglob(pTHX_ SV *sv, MAGIC *mg)
1760 Perl_magic_getsubstr(pTHX_ SV *sv, MAGIC *mg)
1781 Perl_magic_setsubstr(pTHX_ SV *sv, MAGIC *mg)
1808 Perl_magic_gettaint(pTHX_ SV *sv, MAGIC *mg)
1810 TAINT_IF((mg->mg_len & 1) ||
1811 ((mg->mg_len & 2) && mg->mg_obj == sv)); /* kludge */
1816 Perl_magic_settaint(pTHX_ SV *sv, MAGIC *mg)
1820 mg->mg_len <<= 1;
1822 mg->mg_len >>= 1;
1825 mg->mg_len |= 1;
1827 mg->mg_len &= ~1;
1832 Perl_magic_getvec(pTHX_ SV *sv, MAGIC *mg)
1846 Perl_magic_setvec(pTHX_ SV *sv, MAGIC *mg)
1853 Perl_magic_getdefelem(pTHX_ SV *sv, MAGIC *mg)
1857 if (mg->mg_obj) {
1860 HE *he = hv_fetch_ent((HV*)ahv, mg->mg_obj, FALSE, 0);
1865 SV **svp = avhv_fetch_ent((AV*)ahv, mg->mg_obj, FALSE, 0);
1880 SvREFCNT_dec(mg->mg_obj);
1881 mg->mg_obj = Nullsv;
1882 mg->mg_flags &= ~MGf_REFCOUNTED;
1892 Perl_magic_setdefelem(pTHX_ SV *sv, MAGIC *mg)
1906 MAGIC *mg;
1909 if (!LvTARGLEN(sv) || !(mg = mg_find(sv, PERL_MAGIC_defelem)))
1911 if (mg->mg_obj) {
1915 HE *he = hv_fetch_ent((HV*)ahv, mg->mg_obj, TRUE, 0);
1920 SV **svp = avhv_fetch_ent((AV*)ahv, mg->mg_obj, TRUE, 0);
1925 Perl_croak(aTHX_ PL_no_helem, SvPV(mg->mg_obj, n_a));
1941 SvREFCNT_dec(mg->mg_obj);
1942 mg->mg_obj = Nullsv;
1943 mg->mg_flags &= ~MGf_REFCOUNTED;
1947 Perl_magic_killbackrefs(pTHX_ SV *sv, MAGIC *mg)
1949 AV *av = (AV*)mg->mg_obj;
1969 Perl_magic_setmglob(pTHX_ SV *sv, MAGIC *mg)
1971 mg->mg_len = -1;
1977 Perl_magic_setbm(pTHX_ SV *sv, MAGIC *mg)
1985 Perl_magic_setfm(pTHX_ SV *sv, MAGIC *mg)
1993 Perl_magic_setuvar(pTHX_ SV *sv, MAGIC *mg)
1995 struct ufuncs *uf = (struct ufuncs *)mg->mg_ptr;
2003 Perl_magic_setregexp(pTHX_ SV *sv, MAGIC *mg)
2010 Perl_magic_freeregexp(pTHX_ SV *sv, MAGIC *mg)
2012 regexp *re = (regexp *)mg->mg_obj;
2019 Perl_magic_setcollxfrm(pTHX_ SV *sv, MAGIC *mg)
2025 if (mg->mg_ptr) {
2026 Safefree(mg->mg_ptr);
2027 mg->mg_ptr = NULL;
2028 mg->mg_len = -1;
2036 Perl_magic_setutf8(pTHX_ SV *sv, MAGIC *mg)
2038 Safefree(mg->mg_ptr); /* The mg_ptr holds the pos cache. */
2039 mg->mg_ptr = 0;
2040 mg->mg_len = -1; /* The mg_len holds the len cache. */
2045 Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
2050 switch (*mg->mg_ptr) {
2068 if (*(mg->mg_ptr+1) == '\0') {
2088 else if (strEQ(mg->mg_ptr+1, "NCODING")) {
2114 if (*(mg->mg_ptr+1) == '\0') {
2124 else if (strEQ(mg->mg_ptr, "\017PEN")) {
2145 if (*(mg->mg_ptr+1) == '\0') {
2152 else if (strEQ(mg->mg_ptr+1, "ARNING_BITS")) {
2509 Perl_magic_mutexfree(pTHX_ SV *sv, MAGIC *mg)
2514 if (MgOWNER(mg))
2516 MUTEX_DESTROY(MgMUTEXP(mg));
2517 COND_DESTROY(MgCONDP(mg));