/* sv.h
*
- * Copyright (c) 1991-2001, Larry Wall
+ * Copyright (c) 1991-2002, Larry Wall
*
* You may distribute under the terms of either the GNU General Public
* License or the Artistic License, as specified in the README file.
#endif
/*
+=head1 SV Flags
+
=for apidoc AmU||svtype
An enum of flags for Perl types. These are found in the file B<sv.h>
in the C<svtype> enum. Test these flags with the C<SvTYPE> macro.
};
/*
+=head1 SV Manipulation Functions
+
=for apidoc Am|U32|SvREFCNT|SV* sv
Returns the value of the object's reference count.
#endif /* USE_5005THREADS */
cv_flags_t xcv_flags;
- I32 xfm_lines;
+ IV xfm_lines;
};
struct xpvio {
DIR * xiou_dirp; /* for opendir, readdir, etc */
void * xiou_any; /* for alignment */
} xio_dirpu;
- long xio_lines; /* $. */
- long xio_page; /* $% */
- long xio_page_len; /* $= */
- long xio_lines_left; /* $- */
+ IV xio_lines; /* $. */
+ IV xio_page; /* $% */
+ IV xio_page_len; /* $= */
+ IV xio_lines_left; /* $- */
char * xio_top_name; /* $^ */
GV * xio_top_gv; /* $^ */
char * xio_fmt_name; /* $~ */
/* the following macros update any magic values this sv is associated with */
/*
+=head1 Magical Functions
+
=for apidoc Am|void|SvGETMAGIC|SV* sv
Invokes C<mg_get> on an SV if it has 'get' magic. This macro evaluates its
argument more than once.
=for apidoc Am|void|SvSetMagicSV_nosteal|SV* dsv|SV* ssv
Like C<SvSetMagicSV>, but does any set magic required afterwards.
+=for apidoc Am|void|SvSHARE|SV* sv
+Arranges for sv to be shared between threads if a suitable module
+has been loaded.
+
+=for apidoc Am|void|SvLOCK|SV* sv
+Arranges for a mutual exclusion lock to be obtained on sv if a suitable module
+has been loaded.
+
+=for apidoc Am|void|SvUNLOCK|SV* sv
+Releases a mutual exclusion lock on sv if a suitable module
+has been loaded.
+
+=head1 SV Manipulation Functions
+
=for apidoc Am|char *|SvGROW|SV* sv|STRLEN len
Expands the character buffer in the SV so that it has room for the
indicated number of bytes (remember to reserve space for an extra trailing
=cut
*/
+#define SvSHARE(sv) CALL_FPTR(PL_sharehook)(aTHX_ sv)
+#define SvLOCK(sv) CALL_FPTR(PL_lockhook)(aTHX_ sv)
+#define SvUNLOCK(sv) CALL_FPTR(PL_unlockhook)(aTHX_ sv)
+
#define SvGETMAGIC(x) STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END
#define SvSETMAGIC(x) STMT_START { if (SvSMAGICAL(x)) mg_set(x); } STMT_END