source: trunk/third/perl/mg.h @ 10724

Revision 10724, 1.0 KB checked in by ghudson, 27 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r10723, which included commits to RCS files with non-trunk default branches.
Line 
1/*    mg.h
2 *
3 *    Copyright (c) 1991-1997, Larry Wall
4 *
5 *    You may distribute under the terms of either the GNU General Public
6 *    License or the Artistic License, as specified in the README file.
7 *
8 */
9
10struct mgvtbl {
11    int         (*svt_get)      _((SV *sv, MAGIC* mg));
12    int         (*svt_set)      _((SV *sv, MAGIC* mg));
13    U32         (*svt_len)      _((SV *sv, MAGIC* mg));
14    int         (*svt_clear)    _((SV *sv, MAGIC* mg));
15    int         (*svt_free)     _((SV *sv, MAGIC* mg));
16};
17
18struct magic {
19    MAGIC*      mg_moremagic;
20    MGVTBL*     mg_virtual;     /* pointer to magic functions */
21    U16         mg_private;
22    char        mg_type;
23    U8          mg_flags;
24    SV*         mg_obj;
25    char*       mg_ptr;
26    I32         mg_len;
27};
28
29#define MGf_TAINTEDDIR 1
30#define MGf_REFCOUNTED 2
31#define MGf_GSKIP      4
32
33#define MGf_MINMATCH   1
34
35#define MgTAINTEDDIR(mg)        (mg->mg_flags & MGf_TAINTEDDIR)
36#define MgTAINTEDDIR_on(mg)     (mg->mg_flags |= MGf_TAINTEDDIR)
37#define MgTAINTEDDIR_off(mg)    (mg->mg_flags &= ~MGf_TAINTEDDIR)
38
39#define MgPV(mg,lp)             (((lp = (mg)->mg_len) == HEf_SVKEY) ?   \
40                                 SvPV((SV*)((mg)->mg_ptr),lp) :         \
41                                 (mg)->mg_ptr)
Note: See TracBrowser for help on using the repository browser.