home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _e52f51793429aae35cad8d4f035bbc6a < prev    next >
Text File  |  2000-03-23  |  94KB  |  2,234 lines

  1. <HTML>
  2. <HEAD>
  3. <TITLE>perlapi - autogenerated documentation for the perl public API</TITLE>
  4. <LINK REL="stylesheet" HREF="../../Active.css" TYPE="text/css">
  5. <LINK REV="made" HREF="mailto:">
  6. </HEAD>
  7.  
  8. <BODY>
  9. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  10. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  11. <STRONG><P CLASS=block> perlapi - autogenerated documentation for the perl public API</P></STRONG>
  12. </TD></TR>
  13. </TABLE>
  14.  
  15. <A NAME="__index__"></A>
  16. <!-- INDEX BEGIN -->
  17.  
  18. <UL>
  19.  
  20.     <LI><A HREF="#name">NAME</A></LI>
  21.     <LI><A HREF="#description">DESCRIPTION</A></LI>
  22.     <LI><A HREF="#authors">AUTHORS</A></LI>
  23.     <LI><A HREF="#see also">SEE ALSO</A></LI>
  24. </UL>
  25. <!-- INDEX END -->
  26.  
  27. <HR>
  28. <P>
  29. <H1><A NAME="name">NAME</A></H1>
  30. <P>perlapi - autogenerated documentation for the perl public API</P>
  31. <P>
  32. <HR>
  33. <H1><A NAME="description">DESCRIPTION</A></H1>
  34. <P>This file contains the documentation of the perl public API generated by 
  35. embed.pl, specifically a listing of functions, macros, flags, and variables 
  36. that may be used by extension writers.  The interfaces of any functions that 
  37. are not listed here are subject to change without notice.  For this reason,
  38. blindly using functions listed in proto.h is to be avoided when writing
  39. extensions.</P>
  40. <P>Note that all Perl API global variables must be referenced with the <CODE>PL_</CODE>
  41. prefix.  Some macros are provided for compatibility with the older,
  42. unadorned names, but this support may be disabled in a future release.</P>
  43. <P>The listing is alphabetical, case insensitive.</P>
  44. <DL>
  45. <DT><STRONG><A NAME="item_AvFILL">AvFILL</A></STRONG><BR>
  46. <DD>
  47. Same as <A HREF="#item_av_len"><CODE>av_len()</CODE></A>.  Deprecated, use <A HREF="#item_av_len"><CODE>av_len()</CODE></A> instead.
  48. <PRE>
  49.         int     AvFILL(AV* av)</PRE>
  50. <P></P>
  51. <DT><STRONG><A NAME="item_av_clear">av_clear</A></STRONG><BR>
  52. <DD>
  53. Clears an array, making it empty.  Does not free the memory used by the
  54. array itself.
  55. <PRE>
  56.         void    av_clear(AV* ar)</PRE>
  57. <P></P>
  58. <DT><STRONG><A NAME="item_av_extend">av_extend</A></STRONG><BR>
  59. <DD>
  60. Pre-extend an array.  The <CODE>key</CODE> is the index to which the array should be
  61. extended.
  62. <PRE>
  63.         void    av_extend(AV* ar, I32 key)</PRE>
  64. <P></P>
  65. <DT><STRONG><A NAME="item_av_fetch">av_fetch</A></STRONG><BR>
  66. <DD>
  67. Returns the SV at the specified index in the array.  The <CODE>key</CODE> is the
  68. index.  If <CODE>lval</CODE> is set then the fetch will be part of a store.  Check
  69. that the return value is non-null before dereferencing it to a <CODE>SV*</CODE>.
  70. <P>See <A HREF="../../lib/Pod/perlguts.html#understanding the magic of tied hashes and arrays">Understanding the Magic of Tied Hashes and Arrays in the perlguts manpage</A> for
  71. more information on how to use this function on tied arrays.</P>
  72. <PRE>
  73.         SV**    av_fetch(AV* ar, I32 key, I32 lval)</PRE>
  74. <P></P>
  75. <DT><STRONG><A NAME="item_av_len">av_len</A></STRONG><BR>
  76. <DD>
  77. Returns the highest index in the array.  Returns -1 if the array is
  78. empty.
  79. <PRE>
  80.         I32     av_len(AV* ar)</PRE>
  81. <P></P>
  82. <DT><STRONG><A NAME="item_av_make">av_make</A></STRONG><BR>
  83. <DD>
  84. Creates a new AV and populates it with a list of SVs.  The SVs are copied
  85. into the array, so they may be freed after the call to av_make.  The new AV
  86. will have a reference count of 1.
  87. <PRE>
  88.         AV*     av_make(I32 size, SV** svp)</PRE>
  89. <P></P>
  90. <DT><STRONG><A NAME="item_av_pop">av_pop</A></STRONG><BR>
  91. <DD>
  92. Pops an SV off the end of the array.  Returns <CODE>&PL_sv_undef</CODE> if the array
  93. is empty.
  94. <PRE>
  95.         SV*     av_pop(AV* ar)</PRE>
  96. <P></P>
  97. <DT><STRONG><A NAME="item_av_push">av_push</A></STRONG><BR>
  98. <DD>
  99. Pushes an SV onto the end of the array.  The array will grow automatically
  100. to accommodate the addition.
  101. <PRE>
  102.         void    av_push(AV* ar, SV* val)</PRE>
  103. <P></P>
  104. <DT><STRONG><A NAME="item_av_shift">av_shift</A></STRONG><BR>
  105. <DD>
  106. Shifts an SV off the beginning of the array.
  107. <PRE>
  108.         SV*     av_shift(AV* ar)</PRE>
  109. <P></P>
  110. <DT><STRONG><A NAME="item_av_store">av_store</A></STRONG><BR>
  111. <DD>
  112. Stores an SV in an array.  The array index is specified as <CODE>key</CODE>.  The
  113. return value will be NULL if the operation failed or if the value did not
  114. need to be actually stored within the array (as in the case of tied
  115. arrays). Otherwise it can be dereferenced to get the original <CODE>SV*</CODE>.  Note
  116. that the caller is responsible for suitably incrementing the reference
  117. count of <CODE>val</CODE> before the call, and decrementing it if the function
  118. returned NULL.
  119. <P>See <A HREF="../../lib/Pod/perlguts.html#understanding the magic of tied hashes and arrays">Understanding the Magic of Tied Hashes and Arrays in the perlguts manpage</A> for
  120. more information on how to use this function on tied arrays.</P>
  121. <PRE>
  122.         SV**    av_store(AV* ar, I32 key, SV* val)</PRE>
  123. <P></P>
  124. <DT><STRONG><A NAME="item_av_undef">av_undef</A></STRONG><BR>
  125. <DD>
  126. Undefines the array.  Frees the memory used by the array itself.
  127. <PRE>
  128.         void    av_undef(AV* ar)</PRE>
  129. <P></P>
  130. <DT><STRONG><A NAME="item_av_unshift">av_unshift</A></STRONG><BR>
  131. <DD>
  132. Unshift the given number of <A HREF="../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> values onto the beginning of the
  133. array.  The array will grow automatically to accommodate the addition.  You
  134. must then use <A HREF="#item_av_store"><CODE>av_store</CODE></A> to assign values to these new elements.
  135. <PRE>
  136.         void    av_unshift(AV* ar, I32 num)</PRE>
  137. <P></P>
  138. <DT><STRONG><A NAME="item_call_argv">call_argv</A></STRONG><BR>
  139. <DD>
  140. Performs a callback to the specified Perl sub.  See <A HREF="../../lib/Pod/perlcall.html">the perlcall manpage</A>.
  141. <P>NOTE: the perl_ form of this function is deprecated.</P>
  142. <PRE>
  143.         I32     call_argv(const char* sub_name, I32 flags, char** argv)</PRE>
  144. <P></P>
  145. <DT><STRONG><A NAME="item_call_method">call_method</A></STRONG><BR>
  146. <DD>
  147. Performs a callback to the specified Perl method.  The blessed object must
  148. be on the stack.  See <A HREF="../../lib/Pod/perlcall.html">the perlcall manpage</A>.
  149. <P>NOTE: the perl_ form of this function is deprecated.</P>
  150. <PRE>
  151.         I32     call_method(const char* methname, I32 flags)</PRE>
  152. <P></P>
  153. <DT><STRONG><A NAME="item_call_pv">call_pv</A></STRONG><BR>
  154. <DD>
  155. Performs a callback to the specified Perl sub.  See <A HREF="../../lib/Pod/perlcall.html">the perlcall manpage</A>.
  156. <P>NOTE: the perl_ form of this function is deprecated.</P>
  157. <PRE>
  158.         I32     call_pv(const char* sub_name, I32 flags)</PRE>
  159. <P></P>
  160. <DT><STRONG><A NAME="item_call_sv">call_sv</A></STRONG><BR>
  161. <DD>
  162. Performs a callback to the Perl sub whose name is in the SV.  See
  163. <A HREF="../../lib/Pod/perlcall.html">the perlcall manpage</A>.
  164. <P>NOTE: the perl_ form of this function is deprecated.</P>
  165. <PRE>
  166.         I32     call_sv(SV* sv, I32 flags)</PRE>
  167. <P></P>
  168. <DT><STRONG><A NAME="item_CLASS">CLASS</A></STRONG><BR>
  169. <DD>
  170. Variable which is setup by <CODE>xsubpp</CODE> to indicate the 
  171. class name for a C++ XS constructor.  This is always a <CODE>char*</CODE>.  See <A HREF="#item_THIS"><CODE>THIS</CODE></A>.
  172. <PRE>
  173.         char*   CLASS</PRE>
  174. <P></P>
  175. <DT><STRONG><A NAME="item_Copy">Copy</A></STRONG><BR>
  176. <DD>
  177. The XSUB-writer's interface to the C <CODE>memcpy</CODE> function.  The <CODE>src</CODE> is the
  178. source, <CODE>dest</CODE> is the destination, <CODE>nitems</CODE> is the number of items, and <CODE>type</CODE> is
  179. the type.  May fail on overlapping copies.  See also <A HREF="#item_Move"><CODE>Move</CODE></A>.
  180. <PRE>
  181.         void    Copy(void* src, void* dest, int nitems, type)</PRE>
  182. <P></P>
  183. <DT><STRONG><A NAME="item_croak">croak</A></STRONG><BR>
  184. <DD>
  185. This is the XSUB-writer's interface to Perl's <A HREF="../../lib/Pod/perlfunc.html#item_die"><CODE>die</CODE></A> function.  Use this
  186. function the same way you use the C <A HREF="../../lib/Pod/perlfunc.html#item_printf"><CODE>printf</CODE></A> function.  See
  187. <A HREF="#item_warn"><CODE>warn</CODE></A>.
  188. <PRE>
  189.         void    croak(const char* pat, ...)</PRE>
  190. <P></P>
  191. <DT><STRONG><A NAME="item_CvSTASH">CvSTASH</A></STRONG><BR>
  192. <DD>
  193. Returns the stash of the CV.
  194. <PRE>
  195.         HV*     CvSTASH(CV* cv)</PRE>
  196. <P></P>
  197. <DT><STRONG><A NAME="item_dMARK">dMARK</A></STRONG><BR>
  198. <DD>
  199. Declare a stack marker variable, <CODE>mark</CODE>, for the XSUB.  See <A HREF="#item_MARK"><CODE>MARK</CODE></A> and
  200. <A HREF="#item_dORIGMARK"><CODE>dORIGMARK</CODE></A>.
  201. <PRE>
  202.                 dMARK;</PRE>
  203. <P></P>
  204. <DT><STRONG><A NAME="item_dORIGMARK">dORIGMARK</A></STRONG><BR>
  205. <DD>
  206. Saves the original stack mark for the XSUB.  See <A HREF="#item_ORIGMARK"><CODE>ORIGMARK</CODE></A>.
  207. <PRE>
  208.                 dORIGMARK;</PRE>
  209. <P></P>
  210. <DT><STRONG><A NAME="item_dSP">dSP</A></STRONG><BR>
  211. <DD>
  212. Declares a local copy of perl's stack pointer for the XSUB, available via
  213. the <A HREF="#item_SP"><CODE>SP</CODE></A> macro.  See <A HREF="#item_SP"><CODE>SP</CODE></A>.
  214. <PRE>
  215.                 dSP;</PRE>
  216. <P></P>
  217. <DT><STRONG><A NAME="item_dXSARGS">dXSARGS</A></STRONG><BR>
  218. <DD>
  219. Sets up stack and mark pointers for an XSUB, calling dSP and dMARK.  This
  220. is usually handled automatically by <CODE>xsubpp</CODE>.  Declares the <A HREF="#item_items"><CODE>items</CODE></A>
  221. variable to indicate the number of items on the stack.
  222. <PRE>
  223.                 dXSARGS;</PRE>
  224. <P></P>
  225. <DT><STRONG><A NAME="item_dXSI32">dXSI32</A></STRONG><BR>
  226. <DD>
  227. Sets up the <A HREF="#item_ix"><CODE>ix</CODE></A> variable for an XSUB which has aliases.  This is usually
  228. handled automatically by <CODE>xsubpp</CODE>.
  229. <PRE>
  230.                 dXSI32;</PRE>
  231. <P></P>
  232. <DT><STRONG><A NAME="item_ENTER">ENTER</A></STRONG><BR>
  233. <DD>
  234. Opening bracket on a callback.  See <A HREF="#item_LEAVE"><CODE>LEAVE</CODE></A> and <A HREF="../../lib/Pod/perlcall.html">the perlcall manpage</A>.
  235. <PRE>
  236.                 ENTER;</PRE>
  237. <P></P>
  238. <DT><STRONG><A NAME="item_eval_pv">eval_pv</A></STRONG><BR>
  239. <DD>
  240. Tells Perl to <A HREF="../../lib/Pod/perlfunc.html#item_eval"><CODE>eval</CODE></A> the given string and return an SV* result.
  241. <P>NOTE: the perl_ form of this function is deprecated.</P>
  242. <PRE>
  243.         SV*     eval_pv(const char* p, I32 croak_on_error)</PRE>
  244. <P></P>
  245. <DT><STRONG><A NAME="item_eval_sv">eval_sv</A></STRONG><BR>
  246. <DD>
  247. Tells Perl to <A HREF="../../lib/Pod/perlfunc.html#item_eval"><CODE>eval</CODE></A> the string in the SV.
  248. <P>NOTE: the perl_ form of this function is deprecated.</P>
  249. <PRE>
  250.         I32     eval_sv(SV* sv, I32 flags)</PRE>
  251. <P></P>
  252. <DT><STRONG><A NAME="item_EXTEND">EXTEND</A></STRONG><BR>
  253. <DD>
  254. Used to extend the argument stack for an XSUB's return values. Once
  255. used, guarrantees that there is room for at least <CODE>nitems</CODE> to be pushed
  256. onto the stack.
  257. <PRE>
  258.         void    EXTEND(SP, int nitems)</PRE>
  259. <P></P>
  260. <DT><STRONG><A NAME="item_fbm_compile">fbm_compile</A></STRONG><BR>
  261. <DD>
  262. Analyses the string in order to make fast searches on it using <A HREF="#item_fbm_instr"><CODE>fbm_instr()</CODE></A>
  263. -- the Boyer-Moore algorithm.
  264. <PRE>
  265.         void    fbm_compile(SV* sv, U32 flags)</PRE>
  266. <P></P>
  267. <DT><STRONG><A NAME="item_fbm_instr">fbm_instr</A></STRONG><BR>
  268. <DD>
  269. Returns the location of the SV in the string delimited by <CODE>str</CODE> and
  270. <CODE>strend</CODE>.  It returns <A HREF="#item_Nullch"><CODE>Nullch</CODE></A> if the string can't be found.  The <CODE>sv</CODE>
  271. does not have to be fbm_compiled, but the search will not be as fast
  272. then.
  273. <PRE>
  274.         char*   fbm_instr(unsigned char* big, unsigned char* bigend, SV* littlesv, U32 flags)</PRE>
  275. <P></P>
  276. <DT><STRONG><A NAME="item_FREETMPS">FREETMPS</A></STRONG><BR>
  277. <DD>
  278. Closing bracket for temporaries on a callback.  See <A HREF="#item_SAVETMPS"><CODE>SAVETMPS</CODE></A> and
  279. <A HREF="../../lib/Pod/perlcall.html">the perlcall manpage</A>.
  280. <PRE>
  281.                 FREETMPS;</PRE>
  282. <P></P>
  283. <DT><STRONG><A NAME="item_get_av">get_av</A></STRONG><BR>
  284. <DD>
  285. Returns the AV of the specified Perl array.  If <CODE>create</CODE> is set and the
  286. Perl variable does not exist then it will be created.  If <CODE>create</CODE> is not
  287. set and the variable does not exist then NULL is returned.
  288. <P>NOTE: the perl_ form of this function is deprecated.</P>
  289. <PRE>
  290.         AV*     get_av(const char* name, I32 create)</PRE>
  291. <P></P>
  292. <DT><STRONG><A NAME="item_get_cv">get_cv</A></STRONG><BR>
  293. <DD>
  294. Returns the CV of the specified Perl subroutine.  If <CODE>create</CODE> is set and
  295. the Perl subroutine does not exist then it will be declared (which has the
  296. same effect as saying <CODE>sub name;</CODE>).  If <CODE>create</CODE> is not set and the
  297. subroutine does not exist then NULL is returned.
  298. <P>NOTE: the perl_ form of this function is deprecated.</P>
  299. <PRE>
  300.         CV*     get_cv(const char* name, I32 create)</PRE>
  301. <P></P>
  302. <DT><STRONG><A NAME="item_get_hv">get_hv</A></STRONG><BR>
  303. <DD>
  304. Returns the HV of the specified Perl hash.  If <CODE>create</CODE> is set and the
  305. Perl variable does not exist then it will be created.  If <CODE>create</CODE> is not
  306. set and the variable does not exist then NULL is returned.
  307. <P>NOTE: the perl_ form of this function is deprecated.</P>
  308. <PRE>
  309.         HV*     get_hv(const char* name, I32 create)</PRE>
  310. <P></P>
  311. <DT><STRONG><A NAME="item_get_sv">get_sv</A></STRONG><BR>
  312. <DD>
  313. Returns the SV of the specified Perl scalar.  If <CODE>create</CODE> is set and the
  314. Perl variable does not exist then it will be created.  If <CODE>create</CODE> is not
  315. set and the variable does not exist then NULL is returned.
  316. <P>NOTE: the perl_ form of this function is deprecated.</P>
  317. <PRE>
  318.         SV*     get_sv(const char* name, I32 create)</PRE>
  319. <P></P>
  320. <DT><STRONG><A NAME="item_GIMME">GIMME</A></STRONG><BR>
  321. <DD>
  322. A backward-compatible version of <A HREF="#item_GIMME_V"><CODE>GIMME_V</CODE></A> which can only return
  323. <A HREF="#item_G_SCALAR"><CODE>G_SCALAR</CODE></A> or <A HREF="#item_G_ARRAY"><CODE>G_ARRAY</CODE></A>; in a void context, it returns <A HREF="#item_G_SCALAR"><CODE>G_SCALAR</CODE></A>.
  324. Deprecated.  Use <A HREF="#item_GIMME_V"><CODE>GIMME_V</CODE></A> instead.
  325. <PRE>
  326.         U32     GIMME</PRE>
  327. <P></P>
  328. <DT><STRONG><A NAME="item_GIMME_V">GIMME_V</A></STRONG><BR>
  329. <DD>
  330. The XSUB-writer's equivalent to Perl's <A HREF="../../lib/Pod/perlfunc.html#item_wantarray"><CODE>wantarray</CODE></A>.  Returns <A HREF="#item_G_VOID"><CODE>G_VOID</CODE></A>,
  331. <A HREF="#item_G_SCALAR"><CODE>G_SCALAR</CODE></A> or <A HREF="#item_G_ARRAY"><CODE>G_ARRAY</CODE></A> for void, scalar or array context,
  332. respectively.
  333. <PRE>
  334.         U32     GIMME_V</PRE>
  335. <P></P>
  336. <DT><STRONG><A NAME="item_GvSV">GvSV</A></STRONG><BR>
  337. <DD>
  338. Return the SV from the GV.
  339. <PRE>
  340.         SV*     GvSV(GV* gv)</PRE>
  341. <P></P>
  342. <DT><STRONG><A NAME="item_gv_fetchmeth">gv_fetchmeth</A></STRONG><BR>
  343. <DD>
  344. Returns the glob with the given <CODE>name</CODE> and a defined subroutine or
  345. <CODE>NULL</CODE>.  The glob lives in the given <CODE>stash</CODE>, or in the stashes
  346. accessible via @ISA and @UNIVERSAL.
  347. <P>The argument <CODE>level</CODE> should be either 0 or -1.  If <CODE>level==0</CODE>, as a
  348. side-effect creates a glob with the given <CODE>name</CODE> in the given <CODE>stash</CODE>
  349. which in the case of success contains an alias for the subroutine, and sets
  350. up caching info for this glob.  Similarly for all the searched stashes.</P>
  351. <P>This function grants <CODE>"SUPER"</CODE> token as a postfix of the stash name. The
  352. GV returned from <A HREF="#item_gv_fetchmeth"><CODE>gv_fetchmeth</CODE></A> may be a method cache entry, which is not
  353. visible to Perl code.  So when calling <A HREF="#item_call_sv"><CODE>call_sv</CODE></A>, you should not use
  354. the GV directly; instead, you should use the method's CV, which can be
  355. obtained from the GV with the <CODE>GvCV</CODE> macro.</P>
  356. <PRE>
  357.         GV*     gv_fetchmeth(HV* stash, const char* name, STRLEN len, I32 level)</PRE>
  358. <P></P>
  359. <DT><STRONG><A NAME="item_gv_fetchmethod">gv_fetchmethod</A></STRONG><BR>
  360. <DD>
  361. See <A HREF="#item_gv_fetchmethod_autoload">gv_fetchmethod_autoload</A>.
  362. <PRE>
  363.         GV*     gv_fetchmethod(HV* stash, const char* name)</PRE>
  364. <P></P>
  365. <DT><STRONG><A NAME="item_gv_fetchmethod_autoload">gv_fetchmethod_autoload</A></STRONG><BR>
  366. <DD>
  367. Returns the glob which contains the subroutine to call to invoke the method
  368. on the <CODE>stash</CODE>.  In fact in the presence of autoloading this may be the
  369. glob for ``AUTOLOAD''.  In this case the corresponding variable $AUTOLOAD is
  370. already setup.
  371. <P>The third parameter of <A HREF="#item_gv_fetchmethod_autoload"><CODE>gv_fetchmethod_autoload</CODE></A> determines whether
  372. AUTOLOAD lookup is performed if the given method is not present: non-zero
  373. means yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD. 
  374. Calling <A HREF="#item_gv_fetchmethod"><CODE>gv_fetchmethod</CODE></A> is equivalent to calling <A HREF="#item_gv_fetchmethod_autoload"><CODE>gv_fetchmethod_autoload</CODE></A>
  375. with a non-zero <CODE>autoload</CODE> parameter.</P>
  376. <P>These functions grant <CODE>"SUPER"</CODE> token as a prefix of the method name. Note
  377. that if you want to keep the returned glob for a long time, you need to
  378. check for it being ``AUTOLOAD'', since at the later time the call may load a
  379. different subroutine due to $AUTOLOAD changing its value. Use the glob
  380. created via a side effect to do this.</P>
  381. <P>These functions have the same side-effects and as <A HREF="#item_gv_fetchmeth"><CODE>gv_fetchmeth</CODE></A> with
  382. <CODE>level==0</CODE>.  <CODE>name</CODE> should be writable if contains <CODE>':'</CODE> or <CODE>'
  383. ''</CODE>. The warning against passing the GV returned by <A HREF="#item_gv_fetchmeth"><CODE>gv_fetchmeth</CODE></A> to
  384. <A HREF="#item_call_sv"><CODE>call_sv</CODE></A> apply equally to these functions.</P>
  385. <PRE>
  386.         GV*     gv_fetchmethod_autoload(HV* stash, const char* name, I32 autoload)</PRE>
  387. <P></P>
  388. <DT><STRONG><A NAME="item_gv_stashpv">gv_stashpv</A></STRONG><BR>
  389. <DD>
  390. Returns a pointer to the stash for a specified package.  <CODE>name</CODE> should
  391. be a valid UTF-8 string.  If <CODE>create</CODE> is set then the package will be
  392. created if it does not already exist.  If <CODE>create</CODE> is not set and the
  393. package does not exist then NULL is returned.
  394. <PRE>
  395.         HV*     gv_stashpv(const char* name, I32 create)</PRE>
  396. <P></P>
  397. <DT><STRONG><A NAME="item_gv_stashsv">gv_stashsv</A></STRONG><BR>
  398. <DD>
  399. Returns a pointer to the stash for a specified package, which must be a
  400. valid UTF-8 string.  See <A HREF="#item_gv_stashpv"><CODE>gv_stashpv</CODE></A>.
  401. <PRE>
  402.         HV*     gv_stashsv(SV* sv, I32 create)</PRE>
  403. <P></P>
  404. <DT><STRONG><A NAME="item_G_ARRAY">G_ARRAY</A></STRONG><BR>
  405. <DD>
  406. Used to indicate array context.  See <A HREF="#item_GIMME_V"><CODE>GIMME_V</CODE></A>, <A HREF="#item_GIMME"><CODE>GIMME</CODE></A> and
  407. <A HREF="../../lib/Pod/perlcall.html">the perlcall manpage</A>.
  408. <P></P>
  409. <DT><STRONG><A NAME="item_G_DISCARD">G_DISCARD</A></STRONG><BR>
  410. <DD>
  411. Indicates that arguments returned from a callback should be discarded.  See
  412. <A HREF="../../lib/Pod/perlcall.html">the perlcall manpage</A>.
  413. <P></P>
  414. <DT><STRONG><A NAME="item_G_EVAL">G_EVAL</A></STRONG><BR>
  415. <DD>
  416. Used to force a Perl <A HREF="../../lib/Pod/perlfunc.html#item_eval"><CODE>eval</CODE></A> wrapper around a callback.  See
  417. <A HREF="../../lib/Pod/perlcall.html">the perlcall manpage</A>.
  418. <P></P>
  419. <DT><STRONG><A NAME="item_G_NOARGS">G_NOARGS</A></STRONG><BR>
  420. <DD>
  421. Indicates that no arguments are being sent to a callback.  See
  422. <A HREF="../../lib/Pod/perlcall.html">the perlcall manpage</A>.
  423. <P></P>
  424. <DT><STRONG><A NAME="item_G_SCALAR">G_SCALAR</A></STRONG><BR>
  425. <DD>
  426. Used to indicate scalar context.  See <A HREF="#item_GIMME_V"><CODE>GIMME_V</CODE></A>, <A HREF="#item_GIMME"><CODE>GIMME</CODE></A>, and
  427. <A HREF="../../lib/Pod/perlcall.html">the perlcall manpage</A>.
  428. <P></P>
  429. <DT><STRONG><A NAME="item_G_VOID">G_VOID</A></STRONG><BR>
  430. <DD>
  431. Used to indicate void context.  See <A HREF="#item_GIMME_V"><CODE>GIMME_V</CODE></A> and <A HREF="../../lib/Pod/perlcall.html">the perlcall manpage</A>.
  432. <P></P>
  433. <DT><STRONG><A NAME="item_HEf_SVKEY">HEf_SVKEY</A></STRONG><BR>
  434. <DD>
  435. This flag, used in the length slot of hash entries and magic structures,
  436. specifies the structure contains a <CODE>SV*</CODE> pointer where a <CODE>char*</CODE> pointer
  437. is to be expected. (For information only--not to be used).
  438. <P></P>
  439. <DT><STRONG><A NAME="item_HeHASH">HeHASH</A></STRONG><BR>
  440. <DD>
  441. Returns the computed hash stored in the hash entry.
  442. <PRE>
  443.         U32     HeHASH(HE* he)</PRE>
  444. <P></P>
  445. <DT><STRONG><A NAME="item_HeKEY">HeKEY</A></STRONG><BR>
  446. <DD>
  447. Returns the actual pointer stored in the key slot of the hash entry. The
  448. pointer may be either <CODE>char*</CODE> or <CODE>SV*</CODE>, depending on the value of
  449. <A HREF="#item_HeKLEN"><CODE>HeKLEN()</CODE></A>.  Can be assigned to.  The <A HREF="#item_HePV"><CODE>HePV()</CODE></A> or <A HREF="#item_HeSVKEY"><CODE>HeSVKEY()</CODE></A> macros are
  450. usually preferable for finding the value of a key.
  451. <PRE>
  452.         void*   HeKEY(HE* he)</PRE>
  453. <P></P>
  454. <DT><STRONG><A NAME="item_HeKLEN">HeKLEN</A></STRONG><BR>
  455. <DD>
  456. If this is negative, and amounts to <A HREF="#item_HEf_SVKEY"><CODE>HEf_SVKEY</CODE></A>, it indicates the entry
  457. holds an <CODE>SV*</CODE> key.  Otherwise, holds the actual length of the key.  Can
  458. be assigned to. The <A HREF="#item_HePV"><CODE>HePV()</CODE></A> macro is usually preferable for finding key
  459. lengths.
  460. <PRE>
  461.         STRLEN  HeKLEN(HE* he)</PRE>
  462. <P></P>
  463. <DT><STRONG><A NAME="item_HePV">HePV</A></STRONG><BR>
  464. <DD>
  465. Returns the key slot of the hash entry as a <CODE>char*</CODE> value, doing any
  466. necessary dereferencing of possibly <CODE>SV*</CODE> keys.  The length of the string
  467. is placed in <CODE>len</CODE> (this is a macro, so do <EM>not</EM> use <CODE>&len</CODE>).  If you do
  468. not care about what the length of the key is, you may use the global
  469. variable <A HREF="#item_PL_na"><CODE>PL_na</CODE></A>, though this is rather less efficient than using a local
  470. variable.  Remember though, that hash keys in perl are free to contain
  471. embedded nulls, so using <CODE>strlen()</CODE> or similar is not a good way to find
  472. the length of hash keys. This is very similar to the <A HREF="#item_SvPV"><CODE>SvPV()</CODE></A> macro
  473. described elsewhere in this document.
  474. <PRE>
  475.         char*   HePV(HE* he, STRLEN len)</PRE>
  476. <P></P>
  477. <DT><STRONG><A NAME="item_HeSVKEY">HeSVKEY</A></STRONG><BR>
  478. <DD>
  479. Returns the key as an <CODE>SV*</CODE>, or <A HREF="#item_Nullsv"><CODE>Nullsv</CODE></A> if the hash entry does not
  480. contain an <CODE>SV*</CODE> key.
  481. <PRE>
  482.         SV*     HeSVKEY(HE* he)</PRE>
  483. <P></P>
  484. <DT><STRONG><A NAME="item_HeSVKEY_force">HeSVKEY_force</A></STRONG><BR>
  485. <DD>
  486. Returns the key as an <CODE>SV*</CODE>.  Will create and return a temporary mortal
  487. <CODE>SV*</CODE> if the hash entry contains only a <CODE>char*</CODE> key.
  488. <PRE>
  489.         SV*     HeSVKEY_force(HE* he)</PRE>
  490. <P></P>
  491. <DT><STRONG><A NAME="item_HeSVKEY_set">HeSVKEY_set</A></STRONG><BR>
  492. <DD>
  493. Sets the key to a given <CODE>SV*</CODE>, taking care to set the appropriate flags to
  494. indicate the presence of an <CODE>SV*</CODE> key, and returns the same
  495. <CODE>SV*</CODE>.
  496. <PRE>
  497.         SV*     HeSVKEY_set(HE* he, SV* sv)</PRE>
  498. <P></P>
  499. <DT><STRONG><A NAME="item_HeVAL">HeVAL</A></STRONG><BR>
  500. <DD>
  501. Returns the value slot (type <CODE>SV*</CODE>) stored in the hash entry.
  502. <PRE>
  503.         SV*     HeVAL(HE* he)</PRE>
  504. <P></P>
  505. <DT><STRONG><A NAME="item_HvNAME">HvNAME</A></STRONG><BR>
  506. <DD>
  507. Returns the package name of a stash.  See <A HREF="#item_SvSTASH"><CODE>SvSTASH</CODE></A>, <A HREF="#item_CvSTASH"><CODE>CvSTASH</CODE></A>.
  508. <PRE>
  509.         char*   HvNAME(HV* stash)</PRE>
  510. <P></P>
  511. <DT><STRONG><A NAME="item_hv_clear">hv_clear</A></STRONG><BR>
  512. <DD>
  513. Clears a hash, making it empty.
  514. <PRE>
  515.         void    hv_clear(HV* tb)</PRE>
  516. <P></P>
  517. <DT><STRONG><A NAME="item_hv_delete">hv_delete</A></STRONG><BR>
  518. <DD>
  519. Deletes a key/value pair in the hash.  The value SV is removed from the
  520. hash and returned to the caller.  The <CODE>klen</CODE> is the length of the key. 
  521. The <CODE>flags</CODE> value will normally be zero; if set to G_DISCARD then NULL
  522. will be returned.
  523. <PRE>
  524.         SV*     hv_delete(HV* tb, const char* key, U32 klen, I32 flags)</PRE>
  525. <P></P>
  526. <DT><STRONG><A NAME="item_hv_delete_ent">hv_delete_ent</A></STRONG><BR>
  527. <DD>
  528. Deletes a key/value pair in the hash.  The value SV is removed from the
  529. hash and returned to the caller.  The <CODE>flags</CODE> value will normally be zero;
  530. if set to G_DISCARD then NULL will be returned.  <CODE>hash</CODE> can be a valid
  531. precomputed hash value, or 0 to ask for it to be computed.
  532. <PRE>
  533.         SV*     hv_delete_ent(HV* tb, SV* key, I32 flags, U32 hash)</PRE>
  534. <P></P>
  535. <DT><STRONG><A NAME="item_hv_exists">hv_exists</A></STRONG><BR>
  536. <DD>
  537. Returns a boolean indicating whether the specified hash key exists.  The
  538. <CODE>klen</CODE> is the length of the key.
  539. <PRE>
  540.         bool    hv_exists(HV* tb, const char* key, U32 klen)</PRE>
  541. <P></P>
  542. <DT><STRONG><A NAME="item_hv_exists_ent">hv_exists_ent</A></STRONG><BR>
  543. <DD>
  544. Returns a boolean indicating whether the specified hash key exists. <CODE>hash</CODE>
  545. can be a valid precomputed hash value, or 0 to ask for it to be
  546. computed.
  547. <PRE>
  548.         bool    hv_exists_ent(HV* tb, SV* key, U32 hash)</PRE>
  549. <P></P>
  550. <DT><STRONG><A NAME="item_hv_fetch">hv_fetch</A></STRONG><BR>
  551. <DD>
  552. Returns the SV which corresponds to the specified key in the hash.  The
  553. <CODE>klen</CODE> is the length of the key.  If <CODE>lval</CODE> is set then the fetch will be
  554. part of a store.  Check that the return value is non-null before
  555. dereferencing it to a <CODE>SV*</CODE>.
  556. <P>See <A HREF="../../lib/Pod/perlguts.html#understanding the magic of tied hashes and arrays">Understanding the Magic of Tied Hashes and Arrays in the perlguts manpage</A> for more
  557. information on how to use this function on tied hashes.</P>
  558. <PRE>
  559.         SV**    hv_fetch(HV* tb, const char* key, U32 klen, I32 lval)</PRE>
  560. <P></P>
  561. <DT><STRONG><A NAME="item_hv_fetch_ent">hv_fetch_ent</A></STRONG><BR>
  562. <DD>
  563. Returns the hash entry which corresponds to the specified key in the hash.
  564. <CODE>hash</CODE> must be a valid precomputed hash number for the given <CODE>key</CODE>, or 0
  565. if you want the function to compute it.  IF <CODE>lval</CODE> is set then the fetch
  566. will be part of a store.  Make sure the return value is non-null before
  567. accessing it.  The return value when <CODE>tb</CODE> is a tied hash is a pointer to a
  568. static location, so be sure to make a copy of the structure if you need to
  569. store it somewhere.
  570. <P>See <A HREF="../../lib/Pod/perlguts.html#understanding the magic of tied hashes and arrays">Understanding the Magic of Tied Hashes and Arrays in the perlguts manpage</A> for more
  571. information on how to use this function on tied hashes.</P>
  572. <PRE>
  573.         HE*     hv_fetch_ent(HV* tb, SV* key, I32 lval, U32 hash)</PRE>
  574. <P></P>
  575. <DT><STRONG><A NAME="item_hv_iterinit">hv_iterinit</A></STRONG><BR>
  576. <DD>
  577. Prepares a starting point to traverse a hash table.  Returns the number of
  578. keys in the hash (i.e. the same as <CODE>HvKEYS(tb)</CODE>).  The return value is
  579. currently only meaningful for hashes without tie magic.
  580. <P>NOTE: Before version 5.004_65, <A HREF="#item_hv_iterinit"><CODE>hv_iterinit</CODE></A> used to return the number of
  581. hash buckets that happen to be in use.  If you still need that esoteric
  582. value, you can get it through the macro <CODE>HvFILL(tb)</CODE>.</P>
  583. <PRE>
  584.         I32     hv_iterinit(HV* tb)</PRE>
  585. <P></P>
  586. <DT><STRONG><A NAME="item_hv_iterkey">hv_iterkey</A></STRONG><BR>
  587. <DD>
  588. Returns the key from the current position of the hash iterator.  See
  589. <A HREF="#item_hv_iterinit"><CODE>hv_iterinit</CODE></A>.
  590. <PRE>
  591.         char*   hv_iterkey(HE* entry, I32* retlen)</PRE>
  592. <P></P>
  593. <DT><STRONG><A NAME="item_hv_iterkeysv">hv_iterkeysv</A></STRONG><BR>
  594. <DD>
  595. Returns the key as an <CODE>SV*</CODE> from the current position of the hash
  596. iterator.  The return value will always be a mortal copy of the key.  Also
  597. see <A HREF="#item_hv_iterinit"><CODE>hv_iterinit</CODE></A>.
  598. <PRE>
  599.         SV*     hv_iterkeysv(HE* entry)</PRE>
  600. <P></P>
  601. <DT><STRONG><A NAME="item_hv_iternext">hv_iternext</A></STRONG><BR>
  602. <DD>
  603. Returns entries from a hash iterator.  See <A HREF="#item_hv_iterinit"><CODE>hv_iterinit</CODE></A>.
  604. <PRE>
  605.         HE*     hv_iternext(HV* tb)</PRE>
  606. <P></P>
  607. <DT><STRONG><A NAME="item_hv_iternextsv">hv_iternextsv</A></STRONG><BR>
  608. <DD>
  609. Performs an <A HREF="#item_hv_iternext"><CODE>hv_iternext</CODE></A>, <A HREF="#item_hv_iterkey"><CODE>hv_iterkey</CODE></A>, and <A HREF="#item_hv_iterval"><CODE>hv_iterval</CODE></A> in one
  610. operation.
  611. <PRE>
  612.         SV*     hv_iternextsv(HV* hv, char** key, I32* retlen)</PRE>
  613. <P></P>
  614. <DT><STRONG><A NAME="item_hv_iterval">hv_iterval</A></STRONG><BR>
  615. <DD>
  616. Returns the value from the current position of the hash iterator.  See
  617. <A HREF="#item_hv_iterkey"><CODE>hv_iterkey</CODE></A>.
  618. <PRE>
  619.         SV*     hv_iterval(HV* tb, HE* entry)</PRE>
  620. <P></P>
  621. <DT><STRONG><A NAME="item_hv_magic">hv_magic</A></STRONG><BR>
  622. <DD>
  623. Adds magic to a hash.  See <A HREF="#item_sv_magic"><CODE>sv_magic</CODE></A>.
  624. <PRE>
  625.         void    hv_magic(HV* hv, GV* gv, int how)</PRE>
  626. <P></P>
  627. <DT><STRONG><A NAME="item_hv_store">hv_store</A></STRONG><BR>
  628. <DD>
  629. Stores an SV in a hash.  The hash key is specified as <CODE>key</CODE> and <CODE>klen</CODE> is
  630. the length of the key.  The <CODE>hash</CODE> parameter is the precomputed hash
  631. value; if it is zero then Perl will compute it.  The return value will be
  632. NULL if the operation failed or if the value did not need to be actually
  633. stored within the hash (as in the case of tied hashes).  Otherwise it can
  634. be dereferenced to get the original <CODE>SV*</CODE>.  Note that the caller is
  635. responsible for suitably incrementing the reference count of <CODE>val</CODE> before
  636. the call, and decrementing it if the function returned NULL.
  637. <P>See <A HREF="../../lib/Pod/perlguts.html#understanding the magic of tied hashes and arrays">Understanding the Magic of Tied Hashes and Arrays in the perlguts manpage</A> for more
  638. information on how to use this function on tied hashes.</P>
  639. <PRE>
  640.         SV**    hv_store(HV* tb, const char* key, U32 klen, SV* val, U32 hash)</PRE>
  641. <P></P>
  642. <DT><STRONG><A NAME="item_hv_store_ent">hv_store_ent</A></STRONG><BR>
  643. <DD>
  644. Stores <CODE>val</CODE> in a hash.  The hash key is specified as <CODE>key</CODE>.  The <CODE>hash</CODE>
  645. parameter is the precomputed hash value; if it is zero then Perl will
  646. compute it.  The return value is the new hash entry so created.  It will be
  647. NULL if the operation failed or if the value did not need to be actually
  648. stored within the hash (as in the case of tied hashes).  Otherwise the
  649. contents of the return value can be accessed using the <CODE>He???</CODE> macros
  650. described here.  Note that the caller is responsible for suitably
  651. incrementing the reference count of <CODE>val</CODE> before the call, and
  652. decrementing it if the function returned NULL.
  653. <P>See <A HREF="../../lib/Pod/perlguts.html#understanding the magic of tied hashes and arrays">Understanding the Magic of Tied Hashes and Arrays in the perlguts manpage</A> for more
  654. information on how to use this function on tied hashes.</P>
  655. <PRE>
  656.         HE*     hv_store_ent(HV* tb, SV* key, SV* val, U32 hash)</PRE>
  657. <P></P>
  658. <DT><STRONG><A NAME="item_hv_undef">hv_undef</A></STRONG><BR>
  659. <DD>
  660. Undefines the hash.
  661. <PRE>
  662.         void    hv_undef(HV* tb)</PRE>
  663. <P></P>
  664. <DT><STRONG><A NAME="item_isALNUM">isALNUM</A></STRONG><BR>
  665. <DD>
  666. Returns a boolean indicating whether the C <CODE>char</CODE> is an ascii alphanumeric
  667. character or digit.
  668. <PRE>
  669.         bool    isALNUM(char ch)</PRE>
  670. <P></P>
  671. <DT><STRONG><A NAME="item_isALPHA">isALPHA</A></STRONG><BR>
  672. <DD>
  673. Returns a boolean indicating whether the C <CODE>char</CODE> is an ascii alphabetic
  674. character.
  675. <PRE>
  676.         bool    isALPHA(char ch)</PRE>
  677. <P></P>
  678. <DT><STRONG><A NAME="item_isDIGIT">isDIGIT</A></STRONG><BR>
  679. <DD>
  680. Returns a boolean indicating whether the C <CODE>char</CODE> is an ascii
  681. digit.
  682. <PRE>
  683.         bool    isDIGIT(char ch)</PRE>
  684. <P></P>
  685. <DT><STRONG><A NAME="item_isLOWER">isLOWER</A></STRONG><BR>
  686. <DD>
  687. Returns a boolean indicating whether the C <CODE>char</CODE> is a lowercase
  688. character.
  689. <PRE>
  690.         bool    isLOWER(char ch)</PRE>
  691. <P></P>
  692. <DT><STRONG><A NAME="item_isSPACE">isSPACE</A></STRONG><BR>
  693. <DD>
  694. Returns a boolean indicating whether the C <CODE>char</CODE> is whitespace.
  695. <PRE>
  696.         bool    isSPACE(char ch)</PRE>
  697. <P></P>
  698. <DT><STRONG><A NAME="item_isUPPER">isUPPER</A></STRONG><BR>
  699. <DD>
  700. Returns a boolean indicating whether the C <CODE>char</CODE> is an uppercase
  701. character.
  702. <PRE>
  703.         bool    isUPPER(char ch)</PRE>
  704. <P></P>
  705. <DT><STRONG><A NAME="item_items">items</A></STRONG><BR>
  706. <DD>
  707. Variable which is setup by <CODE>xsubpp</CODE> to indicate the number of 
  708. items on the stack.  See <A HREF="../../lib/Pod/perlxs.html#variablelength parameter lists">Variable-length Parameter Lists in the perlxs manpage</A>.
  709. <PRE>
  710.         I32     items</PRE>
  711. <P></P>
  712. <DT><STRONG><A NAME="item_ix">ix</A></STRONG><BR>
  713. <DD>
  714. Variable which is setup by <CODE>xsubpp</CODE> to indicate which of an 
  715. XSUB's aliases was used to invoke it.  See <A HREF="../../lib/Pod/perlxs.html#the alias: keyword">The ALIAS: Keyword in the perlxs manpage</A>.
  716. <PRE>
  717.         I32     ix</PRE>
  718. <P></P>
  719. <DT><STRONG><A NAME="item_LEAVE">LEAVE</A></STRONG><BR>
  720. <DD>
  721. Closing bracket on a callback.  See <A HREF="#item_ENTER"><CODE>ENTER</CODE></A> and <A HREF="../../lib/Pod/perlcall.html">the perlcall manpage</A>.
  722. <PRE>
  723.                 LEAVE;</PRE>
  724. <P></P>
  725. <DT><STRONG><A NAME="item_looks_like_number">looks_like_number</A></STRONG><BR>
  726. <DD>
  727. Test if an the content of an SV looks like a number (or is a
  728. number).
  729. <PRE>
  730.         I32     looks_like_number(SV* sv)</PRE>
  731. <P></P>
  732. <DT><STRONG><A NAME="item_MARK">MARK</A></STRONG><BR>
  733. <DD>
  734. Stack marker variable for the XSUB.  See <A HREF="#item_dMARK"><CODE>dMARK</CODE></A>.
  735. <P></P>
  736. <DT><STRONG><A NAME="item_mg_clear">mg_clear</A></STRONG><BR>
  737. <DD>
  738. Clear something magical that the SV represents.  See <A HREF="#item_sv_magic"><CODE>sv_magic</CODE></A>.
  739. <PRE>
  740.         int     mg_clear(SV* sv)</PRE>
  741. <P></P>
  742. <DT><STRONG><A NAME="item_mg_copy">mg_copy</A></STRONG><BR>
  743. <DD>
  744. Copies the magic from one SV to another.  See <A HREF="#item_sv_magic"><CODE>sv_magic</CODE></A>.
  745. <PRE>
  746.         int     mg_copy(SV* sv, SV* nsv, const char* key, I32 klen)</PRE>
  747. <P></P>
  748. <DT><STRONG><A NAME="item_mg_find">mg_find</A></STRONG><BR>
  749. <DD>
  750. Finds the magic pointer for type matching the SV.  See <A HREF="#item_sv_magic"><CODE>sv_magic</CODE></A>.
  751. <PRE>
  752.         MAGIC*  mg_find(SV* sv, int type)</PRE>
  753. <P></P>
  754. <DT><STRONG><A NAME="item_mg_free">mg_free</A></STRONG><BR>
  755. <DD>
  756. Free any magic storage used by the SV.  See <A HREF="#item_sv_magic"><CODE>sv_magic</CODE></A>.
  757. <PRE>
  758.         int     mg_free(SV* sv)</PRE>
  759. <P></P>
  760. <DT><STRONG><A NAME="item_mg_get">mg_get</A></STRONG><BR>
  761. <DD>
  762. Do magic after a value is retrieved from the SV.  See <A HREF="#item_sv_magic"><CODE>sv_magic</CODE></A>.
  763. <PRE>
  764.         int     mg_get(SV* sv)</PRE>
  765. <P></P>
  766. <DT><STRONG><A NAME="item_mg_length">mg_length</A></STRONG><BR>
  767. <DD>
  768. Report on the SV's length.  See <A HREF="#item_sv_magic"><CODE>sv_magic</CODE></A>.
  769. <PRE>
  770.         U32     mg_length(SV* sv)</PRE>
  771. <P></P>
  772. <DT><STRONG><A NAME="item_mg_magical">mg_magical</A></STRONG><BR>
  773. <DD>
  774. Turns on the magical status of an SV.  See <A HREF="#item_sv_magic"><CODE>sv_magic</CODE></A>.
  775. <PRE>
  776.         void    mg_magical(SV* sv)</PRE>
  777. <P></P>
  778. <DT><STRONG><A NAME="item_mg_set">mg_set</A></STRONG><BR>
  779. <DD>
  780. Do magic after a value is assigned to the SV.  See <A HREF="#item_sv_magic"><CODE>sv_magic</CODE></A>.
  781. <PRE>
  782.         int     mg_set(SV* sv)</PRE>
  783. <P></P>
  784. <DT><STRONG><A NAME="item_Move">Move</A></STRONG><BR>
  785. <DD>
  786. The XSUB-writer's interface to the C <CODE>memmove</CODE> function.  The <CODE>src</CODE> is the
  787. source, <CODE>dest</CODE> is the destination, <CODE>nitems</CODE> is the number of items, and <CODE>type</CODE> is
  788. the type.  Can do overlapping moves.  See also <A HREF="#item_Copy"><CODE>Copy</CODE></A>.
  789. <PRE>
  790.         void    Move(void* src, void* dest, int nitems, type)</PRE>
  791. <P></P>
  792. <DT><STRONG><A NAME="item_New">New</A></STRONG><BR>
  793. <DD>
  794. The XSUB-writer's interface to the C <CODE>malloc</CODE> function.
  795. <PRE>
  796.         void    New(int id, void* ptr, int nitems, type)</PRE>
  797. <P></P>
  798. <DT><STRONG><A NAME="item_newAV">newAV</A></STRONG><BR>
  799. <DD>
  800. Creates a new AV.  The reference count is set to 1.
  801. <PRE>
  802.         AV*     newAV()</PRE>
  803. <P></P>
  804. <DT><STRONG><A NAME="item_Newc">Newc</A></STRONG><BR>
  805. <DD>
  806. The XSUB-writer's interface to the C <CODE>malloc</CODE> function, with
  807. cast.
  808. <PRE>
  809.         void    Newc(int id, void* ptr, int nitems, type, cast)</PRE>
  810. <P></P>
  811. <DT><STRONG><A NAME="item_newCONSTSUB">newCONSTSUB</A></STRONG><BR>
  812. <DD>
  813. Creates a constant sub equivalent to Perl <CODE>sub FOO () { 123 }</CODE> which is
  814. eligible for inlining at compile-time.
  815. <PRE>
  816.         void    newCONSTSUB(HV* stash, char* name, SV* sv)</PRE>
  817. <P></P>
  818. <DT><STRONG><A NAME="item_newHV">newHV</A></STRONG><BR>
  819. <DD>
  820. Creates a new HV.  The reference count is set to 1.
  821. <PRE>
  822.         HV*     newHV()</PRE>
  823. <P></P>
  824. <DT><STRONG><A NAME="item_newRV_inc">newRV_inc</A></STRONG><BR>
  825. <DD>
  826. Creates an RV wrapper for an SV.  The reference count for the original SV is
  827. incremented.
  828. <PRE>
  829.         SV*     newRV_inc(SV* sv)</PRE>
  830. <P></P>
  831. <DT><STRONG><A NAME="item_newRV_noinc">newRV_noinc</A></STRONG><BR>
  832. <DD>
  833. Creates an RV wrapper for an SV.  The reference count for the original
  834. SV is <STRONG>not</STRONG> incremented.
  835. <PRE>
  836.         SV*     newRV_noinc(SV *sv)</PRE>
  837. <P></P>
  838. <DT><STRONG><A NAME="item_NEWSV">NEWSV</A></STRONG><BR>
  839. <DD>
  840. Creates a new SV.  A non-zero <CODE>len</CODE> parameter indicates the number of
  841. bytes of preallocated string space the SV should have.  An extra byte for a
  842. tailing NUL is also reserved.  (SvPOK is not set for the SV even if string
  843. space is allocated.)  The reference count for the new SV is set to 1. 
  844. <CODE>id</CODE> is an integer id between 0 and 1299 (used to identify leaks).
  845. <PRE>
  846.         SV*     NEWSV(int id, STRLEN len)</PRE>
  847. <P></P>
  848. <DT><STRONG><A NAME="item_newSViv">newSViv</A></STRONG><BR>
  849. <DD>
  850. Creates a new SV and copies an integer into it.  The reference count for the
  851. SV is set to 1.
  852. <PRE>
  853.         SV*     newSViv(IV i)</PRE>
  854. <P></P>
  855. <DT><STRONG><A NAME="item_newSVnv">newSVnv</A></STRONG><BR>
  856. <DD>
  857. Creates a new SV and copies a floating point value into it.
  858. The reference count for the SV is set to 1.
  859. <PRE>
  860.         SV*     newSVnv(NV n)</PRE>
  861. <P></P>
  862. <DT><STRONG><A NAME="item_newSVpv">newSVpv</A></STRONG><BR>
  863. <DD>
  864. Creates a new SV and copies a string into it.  The reference count for the
  865. SV is set to 1.  If <CODE>len</CODE> is zero, Perl will compute the length using
  866. strlen().  For efficiency, consider using <A HREF="#item_newSVpvn"><CODE>newSVpvn</CODE></A> instead.
  867. <PRE>
  868.         SV*     newSVpv(const char* s, STRLEN len)</PRE>
  869. <P></P>
  870. <DT><STRONG><A NAME="item_newSVpvf">newSVpvf</A></STRONG><BR>
  871. <DD>
  872. Creates a new SV an initialize it with the string formatted like
  873. <A HREF="../../lib/Pod/perlfunc.html#item_sprintf"><CODE>sprintf</CODE></A>.
  874. <PRE>
  875.         SV*     newSVpvf(const char* pat, ...)</PRE>
  876. <P></P>
  877. <DT><STRONG><A NAME="item_newSVpvn">newSVpvn</A></STRONG><BR>
  878. <DD>
  879. Creates a new SV and copies a string into it.  The reference count for the
  880. SV is set to 1.  Note that if <CODE>len</CODE> is zero, Perl will create a zero length 
  881. string.  You are responsible for ensuring that the source string is at least
  882. <CODE>len</CODE> bytes long.
  883. <PRE>
  884.         SV*     newSVpvn(const char* s, STRLEN len)</PRE>
  885. <P></P>
  886. <DT><STRONG><A NAME="item_newSVrv">newSVrv</A></STRONG><BR>
  887. <DD>
  888. Creates a new SV for the RV, <CODE>rv</CODE>, to point to.  If <CODE>rv</CODE> is not an RV then
  889. it will be upgraded to one.  If <CODE>classname</CODE> is non-null then the new SV will
  890. be blessed in the specified package.  The new SV is returned and its
  891. reference count is 1.
  892. <PRE>
  893.         SV*     newSVrv(SV* rv, const char* classname)</PRE>
  894. <P></P>
  895. <DT><STRONG><A NAME="item_newSVsv">newSVsv</A></STRONG><BR>
  896. <DD>
  897. Creates a new SV which is an exact duplicate of the original SV.
  898. <PRE>
  899.         SV*     newSVsv(SV* old)</PRE>
  900. <P></P>
  901. <DT><STRONG><A NAME="item_newSVuv">newSVuv</A></STRONG><BR>
  902. <DD>
  903. Creates a new SV and copies an unsigned integer into it.
  904. The reference count for the SV is set to 1.
  905. <PRE>
  906.         SV*     newSVuv(UV u)</PRE>
  907. <P></P>
  908. <DT><STRONG><A NAME="item_newXS">newXS</A></STRONG><BR>
  909. <DD>
  910. Used by <CODE>xsubpp</CODE> to hook up XSUBs as Perl subs.
  911. <P></P>
  912. <DT><STRONG><A NAME="item_newXSproto">newXSproto</A></STRONG><BR>
  913. <DD>
  914. Used by <CODE>xsubpp</CODE> to hook up XSUBs as Perl subs.  Adds Perl prototypes to
  915. the subs.
  916. <P></P>
  917. <DT><STRONG><A NAME="item_Newz">Newz</A></STRONG><BR>
  918. <DD>
  919. The XSUB-writer's interface to the C <CODE>malloc</CODE> function.  The allocated
  920. memory is zeroed with <CODE>memzero</CODE>.
  921. <PRE>
  922.         void    Newz(int id, void* ptr, int nitems, type)</PRE>
  923. <P></P>
  924. <DT><STRONG><A NAME="item_Nullav">Nullav</A></STRONG><BR>
  925. <DD>
  926. Null AV pointer.
  927. <P></P>
  928. <DT><STRONG><A NAME="item_Nullch">Nullch</A></STRONG><BR>
  929. <DD>
  930. Null character pointer.
  931. <P></P>
  932. <DT><STRONG><A NAME="item_Nullcv">Nullcv</A></STRONG><BR>
  933. <DD>
  934. Null CV pointer.
  935. <P></P>
  936. <DT><STRONG><A NAME="item_Nullhv">Nullhv</A></STRONG><BR>
  937. <DD>
  938. Null HV pointer.
  939. <P></P>
  940. <DT><STRONG><A NAME="item_Nullsv">Nullsv</A></STRONG><BR>
  941. <DD>
  942. Null SV pointer.
  943. <P></P>
  944. <DT><STRONG><A NAME="item_ORIGMARK">ORIGMARK</A></STRONG><BR>
  945. <DD>
  946. The original stack mark for the XSUB.  See <A HREF="#item_dORIGMARK"><CODE>dORIGMARK</CODE></A>.
  947. <P></P>
  948. <DT><STRONG><A NAME="item_perl_alloc">perl_alloc</A></STRONG><BR>
  949. <DD>
  950. Allocates a new Perl interpreter.  See <A HREF="../../lib/Pod/perlembed.html">the perlembed manpage</A>.
  951. <PRE>
  952.         PerlInterpreter*        perl_alloc()</PRE>
  953. <P></P>
  954. <DT><STRONG><A NAME="item_perl_construct">perl_construct</A></STRONG><BR>
  955. <DD>
  956. Initializes a new Perl interpreter.  See <A HREF="../../lib/Pod/perlembed.html">the perlembed manpage</A>.
  957. <PRE>
  958.         void    perl_construct(PerlInterpreter* interp)</PRE>
  959. <P></P>
  960. <DT><STRONG><A NAME="item_perl_destruct">perl_destruct</A></STRONG><BR>
  961. <DD>
  962. Shuts down a Perl interpreter.  See <A HREF="../../lib/Pod/perlembed.html">the perlembed manpage</A>.
  963. <PRE>
  964.         void    perl_destruct(PerlInterpreter* interp)</PRE>
  965. <P></P>
  966. <DT><STRONG><A NAME="item_perl_free">perl_free</A></STRONG><BR>
  967. <DD>
  968. Releases a Perl interpreter.  See <A HREF="../../lib/Pod/perlembed.html">the perlembed manpage</A>.
  969. <PRE>
  970.         void    perl_free(PerlInterpreter* interp)</PRE>
  971. <P></P>
  972. <DT><STRONG><A NAME="item_perl_parse">perl_parse</A></STRONG><BR>
  973. <DD>
  974. Tells a Perl interpreter to parse a Perl script.  See <A HREF="../../lib/Pod/perlembed.html">the perlembed manpage</A>.
  975. <PRE>
  976.         int     perl_parse(PerlInterpreter* interp, XSINIT_t xsinit, int argc, char** argv, char** env)</PRE>
  977. <P></P>
  978. <DT><STRONG><A NAME="item_perl_run">perl_run</A></STRONG><BR>
  979. <DD>
  980. Tells a Perl interpreter to run.  See <A HREF="../../lib/Pod/perlembed.html">the perlembed manpage</A>.
  981. <PRE>
  982.         int     perl_run(PerlInterpreter* interp)</PRE>
  983. <P></P>
  984. <DT><STRONG><A NAME="item_PL_DBsingle">PL_DBsingle</A></STRONG><BR>
  985. <DD>
  986. When Perl is run in debugging mode, with the <STRONG>-d</STRONG> switch, this SV is a
  987. boolean which indicates whether subs are being single-stepped. 
  988. Single-stepping is automatically turned on after every step.  This is the C
  989. variable which corresponds to Perl's $DB::single variable.  See
  990. <A HREF="#item_PL_DBsub"><CODE>PL_DBsub</CODE></A>.
  991. <PRE>
  992.         SV *    PL_DBsingle</PRE>
  993. <P></P>
  994. <DT><STRONG><A NAME="item_PL_DBsub">PL_DBsub</A></STRONG><BR>
  995. <DD>
  996. When Perl is run in debugging mode, with the <STRONG>-d</STRONG> switch, this GV contains
  997. the SV which holds the name of the sub being debugged.  This is the C
  998. variable which corresponds to Perl's $DB::sub variable.  See
  999. <A HREF="#item_PL_DBsingle"><CODE>PL_DBsingle</CODE></A>.
  1000. <PRE>
  1001.         GV *    PL_DBsub</PRE>
  1002. <P></P>
  1003. <DT><STRONG><A NAME="item_PL_DBtrace">PL_DBtrace</A></STRONG><BR>
  1004. <DD>
  1005. Trace variable used when Perl is run in debugging mode, with the <STRONG>-d</STRONG>
  1006. switch.  This is the C variable which corresponds to Perl's $DB::trace
  1007. variable.  See <A HREF="#item_PL_DBsingle"><CODE>PL_DBsingle</CODE></A>.
  1008. <PRE>
  1009.         SV *    PL_DBtrace</PRE>
  1010. <P></P>
  1011. <DT><STRONG><A NAME="item_PL_dowarn">PL_dowarn</A></STRONG><BR>
  1012. <DD>
  1013. The C variable which corresponds to Perl's $^W warning variable.
  1014. <PRE>
  1015.         bool    PL_dowarn</PRE>
  1016. <P></P>
  1017. <DT><STRONG><A NAME="item_PL_modglobal">PL_modglobal</A></STRONG><BR>
  1018. <DD>
  1019. <A HREF="#item_PL_modglobal"><CODE>PL_modglobal</CODE></A> is a general purpose, interpreter global HV for use by 
  1020. extensions that need to keep information on a per-interpreter basis.
  1021. In a pinch, it can also be used as a symbol table for extensions 
  1022. to share data among each other.  It is a good idea to use keys 
  1023. prefixed by the package name of the extension that owns the data.
  1024. <PRE>
  1025.         HV*     PL_modglobal</PRE>
  1026. <P></P>
  1027. <DT><STRONG><A NAME="item_PL_na">PL_na</A></STRONG><BR>
  1028. <DD>
  1029. A convenience variable which is typically used with <A HREF="#item_SvPV"><CODE>SvPV</CODE></A> when one
  1030. doesn't care about the length of the string.  It is usually more efficient
  1031. to either declare a local variable and use that instead or to use the
  1032. <A HREF="#item_SvPV_nolen"><CODE>SvPV_nolen</CODE></A> macro.
  1033. <PRE>
  1034.         STRLEN  PL_na</PRE>
  1035. <P></P>
  1036. <DT><STRONG><A NAME="item_PL_sv_no">PL_sv_no</A></STRONG><BR>
  1037. <DD>
  1038. This is the <CODE>false</CODE> SV.  See <A HREF="#item_PL_sv_yes"><CODE>PL_sv_yes</CODE></A>.  Always refer to this as
  1039. <CODE>&PL_sv_no</CODE>.
  1040. <PRE>
  1041.         SV      PL_sv_no</PRE>
  1042. <P></P>
  1043. <DT><STRONG><A NAME="item_PL_sv_undef">PL_sv_undef</A></STRONG><BR>
  1044. <DD>
  1045. This is the <A HREF="../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> SV.  Always refer to this as <CODE>&PL_sv_undef</CODE>.
  1046. <PRE>
  1047.         SV      PL_sv_undef</PRE>
  1048. <P></P>
  1049. <DT><STRONG><A NAME="item_PL_sv_yes">PL_sv_yes</A></STRONG><BR>
  1050. <DD>
  1051. This is the <CODE>true</CODE> SV.  See <A HREF="#item_PL_sv_no"><CODE>PL_sv_no</CODE></A>.  Always refer to this as
  1052. <CODE>&PL_sv_yes</CODE>.
  1053. <PRE>
  1054.         SV      PL_sv_yes</PRE>
  1055. <P></P>
  1056. <DT><STRONG><A NAME="item_POPi">POPi</A></STRONG><BR>
  1057. <DD>
  1058. Pops an integer off the stack.
  1059. <PRE>
  1060.         IV      POPi</PRE>
  1061. <P></P>
  1062. <DT><STRONG><A NAME="item_POPl">POPl</A></STRONG><BR>
  1063. <DD>
  1064. Pops a long off the stack.
  1065. <PRE>
  1066.         long    POPl</PRE>
  1067. <P></P>
  1068. <DT><STRONG><A NAME="item_POPn">POPn</A></STRONG><BR>
  1069. <DD>
  1070. Pops a double off the stack.
  1071. <PRE>
  1072.         NV      POPn</PRE>
  1073. <P></P>
  1074. <DT><STRONG><A NAME="item_POPp">POPp</A></STRONG><BR>
  1075. <DD>
  1076. Pops a string off the stack.
  1077. <PRE>
  1078.         char*   POPp</PRE>
  1079. <P></P>
  1080. <DT><STRONG><A NAME="item_POPs">POPs</A></STRONG><BR>
  1081. <DD>
  1082. Pops an SV off the stack.
  1083. <PRE>
  1084.         SV*     POPs</PRE>
  1085. <P></P>
  1086. <DT><STRONG><A NAME="item_PUSHi">PUSHi</A></STRONG><BR>
  1087. <DD>
  1088. Push an integer onto the stack.  The stack must have room for this element.
  1089. Handles 'set' magic.  See <A HREF="#item_XPUSHi"><CODE>XPUSHi</CODE></A>.
  1090. <PRE>
  1091.         void    PUSHi(IV iv)</PRE>
  1092. <P></P>
  1093. <DT><STRONG><A NAME="item_PUSHMARK">PUSHMARK</A></STRONG><BR>
  1094. <DD>
  1095. Opening bracket for arguments on a callback.  See <A HREF="#item_PUTBACK"><CODE>PUTBACK</CODE></A> and
  1096. <A HREF="../../lib/Pod/perlcall.html">the perlcall manpage</A>.
  1097. <PRE>
  1098.                 PUSHMARK;</PRE>
  1099. <P></P>
  1100. <DT><STRONG><A NAME="item_PUSHn">PUSHn</A></STRONG><BR>
  1101. <DD>
  1102. Push a double onto the stack.  The stack must have room for this element.
  1103. Handles 'set' magic.  See <A HREF="#item_XPUSHn"><CODE>XPUSHn</CODE></A>.
  1104. <PRE>
  1105.         void    PUSHn(NV nv)</PRE>
  1106. <P></P>
  1107. <DT><STRONG><A NAME="item_PUSHp">PUSHp</A></STRONG><BR>
  1108. <DD>
  1109. Push a string onto the stack.  The stack must have room for this element.
  1110. The <CODE>len</CODE> indicates the length of the string.  Handles 'set' magic.  See
  1111. <A HREF="#item_XPUSHp"><CODE>XPUSHp</CODE></A>.
  1112. <PRE>
  1113.         void    PUSHp(char* str, STRLEN len)</PRE>
  1114. <P></P>
  1115. <DT><STRONG><A NAME="item_PUSHs">PUSHs</A></STRONG><BR>
  1116. <DD>
  1117. Push an SV onto the stack.  The stack must have room for this element. 
  1118. Does not handle 'set' magic.  See <A HREF="#item_XPUSHs"><CODE>XPUSHs</CODE></A>.
  1119. <PRE>
  1120.         void    PUSHs(SV* sv)</PRE>
  1121. <P></P>
  1122. <DT><STRONG><A NAME="item_PUSHu">PUSHu</A></STRONG><BR>
  1123. <DD>
  1124. Push an unsigned integer onto the stack.  The stack must have room for this
  1125. element.  See <A HREF="#item_XPUSHu"><CODE>XPUSHu</CODE></A>.
  1126. <PRE>
  1127.         void    PUSHu(UV uv)</PRE>
  1128. <P></P>
  1129. <DT><STRONG><A NAME="item_PUTBACK">PUTBACK</A></STRONG><BR>
  1130. <DD>
  1131. Closing bracket for XSUB arguments.  This is usually handled by <CODE>xsubpp</CODE>.
  1132. See <A HREF="#item_PUSHMARK"><CODE>PUSHMARK</CODE></A> and <A HREF="../../lib/Pod/perlcall.html">the perlcall manpage</A> for other uses.
  1133. <PRE>
  1134.                 PUTBACK;</PRE>
  1135. <P></P>
  1136. <DT><STRONG><A NAME="item_Renew">Renew</A></STRONG><BR>
  1137. <DD>
  1138. The XSUB-writer's interface to the C <CODE>realloc</CODE> function.
  1139. <PRE>
  1140.         void    Renew(void* ptr, int nitems, type)</PRE>
  1141. <P></P>
  1142. <DT><STRONG><A NAME="item_Renewc">Renewc</A></STRONG><BR>
  1143. <DD>
  1144. The XSUB-writer's interface to the C <CODE>realloc</CODE> function, with
  1145. cast.
  1146. <PRE>
  1147.         void    Renewc(void* ptr, int nitems, type, cast)</PRE>
  1148. <P></P>
  1149. <DT><STRONG><A NAME="item_require_pv">require_pv</A></STRONG><BR>
  1150. <DD>
  1151. Tells Perl to <A HREF="../../lib/Pod/perlfunc.html#item_require"><CODE>require</CODE></A> a module.
  1152. <P>NOTE: the perl_ form of this function is deprecated.</P>
  1153. <PRE>
  1154.         void    require_pv(const char* pv)</PRE>
  1155. <P></P>
  1156. <DT><STRONG><A NAME="item_RETVAL">RETVAL</A></STRONG><BR>
  1157. <DD>
  1158. Variable which is setup by <CODE>xsubpp</CODE> to hold the return value for an 
  1159. XSUB. This is always the proper type for the XSUB. See 
  1160. <A HREF="../../lib/Pod/perlxs.html#the retval variable">The RETVAL Variable in the perlxs manpage</A>.
  1161. <PRE>
  1162.         (whatever)      RETVAL</PRE>
  1163. <P></P>
  1164. <DT><STRONG><A NAME="item_Safefree">Safefree</A></STRONG><BR>
  1165. <DD>
  1166. The XSUB-writer's interface to the C <CODE>free</CODE> function.
  1167. <PRE>
  1168.         void    Safefree(void* src, void* dest, int nitems, type)</PRE>
  1169. <P></P>
  1170. <DT><STRONG><A NAME="item_savepv">savepv</A></STRONG><BR>
  1171. <DD>
  1172. Copy a string to a safe spot.  This does not use an SV.
  1173. <PRE>
  1174.         char*   savepv(const char* sv)</PRE>
  1175. <P></P>
  1176. <DT><STRONG><A NAME="item_savepvn">savepvn</A></STRONG><BR>
  1177. <DD>
  1178. Copy a string to a safe spot.  The <CODE>len</CODE> indicates number of bytes to
  1179. copy.  This does not use an SV.
  1180. <PRE>
  1181.         char*   savepvn(const char* sv, I32 len)</PRE>
  1182. <P></P>
  1183. <DT><STRONG><A NAME="item_SAVETMPS">SAVETMPS</A></STRONG><BR>
  1184. <DD>
  1185. Opening bracket for temporaries on a callback.  See <A HREF="#item_FREETMPS"><CODE>FREETMPS</CODE></A> and
  1186. <A HREF="../../lib/Pod/perlcall.html">the perlcall manpage</A>.
  1187. <PRE>
  1188.                 SAVETMPS;</PRE>
  1189. <P></P>
  1190. <DT><STRONG><A NAME="item_SP">SP</A></STRONG><BR>
  1191. <DD>
  1192. Stack pointer.  This is usually handled by <CODE>xsubpp</CODE>.  See <A HREF="#item_dSP"><CODE>dSP</CODE></A> and
  1193. <A HREF="#item_SPAGAIN"><CODE>SPAGAIN</CODE></A>.
  1194. <P></P>
  1195. <DT><STRONG><A NAME="item_SPAGAIN">SPAGAIN</A></STRONG><BR>
  1196. <DD>
  1197. Refetch the stack pointer.  Used after a callback.  See <A HREF="../../lib/Pod/perlcall.html">the perlcall manpage</A>.
  1198. <PRE>
  1199.                 SPAGAIN;</PRE>
  1200. <P></P>
  1201. <DT><STRONG><A NAME="item_ST">ST</A></STRONG><BR>
  1202. <DD>
  1203. Used to access elements on the XSUB's stack.
  1204. <PRE>
  1205.         SV*     ST(int ix)</PRE>
  1206. <P></P>
  1207. <DT><STRONG><A NAME="item_strEQ">strEQ</A></STRONG><BR>
  1208. <DD>
  1209. Test two strings to see if they are equal.  Returns true or false.
  1210. <PRE>
  1211.         bool    strEQ(char* s1, char* s2)</PRE>
  1212. <P></P>
  1213. <DT><STRONG><A NAME="item_strGE">strGE</A></STRONG><BR>
  1214. <DD>
  1215. Test two strings to see if the first, <CODE>s1</CODE>, is greater than or equal to
  1216. the second, <CODE>s2</CODE>.  Returns true or false.
  1217. <PRE>
  1218.         bool    strGE(char* s1, char* s2)</PRE>
  1219. <P></P>
  1220. <DT><STRONG><A NAME="item_strGT">strGT</A></STRONG><BR>
  1221. <DD>
  1222. Test two strings to see if the first, <CODE>s1</CODE>, is greater than the second,
  1223. <CODE>s2</CODE>.  Returns true or false.
  1224. <PRE>
  1225.         bool    strGT(char* s1, char* s2)</PRE>
  1226. <P></P>
  1227. <DT><STRONG><A NAME="item_strLE">strLE</A></STRONG><BR>
  1228. <DD>
  1229. Test two strings to see if the first, <CODE>s1</CODE>, is less than or equal to the
  1230. second, <CODE>s2</CODE>.  Returns true or false.
  1231. <PRE>
  1232.         bool    strLE(char* s1, char* s2)</PRE>
  1233. <P></P>
  1234. <DT><STRONG><A NAME="item_strLT">strLT</A></STRONG><BR>
  1235. <DD>
  1236. Test two strings to see if the first, <CODE>s1</CODE>, is less than the second,
  1237. <CODE>s2</CODE>.  Returns true or false.
  1238. <PRE>
  1239.         bool    strLT(char* s1, char* s2)</PRE>
  1240. <P></P>
  1241. <DT><STRONG><A NAME="item_strNE">strNE</A></STRONG><BR>
  1242. <DD>
  1243. Test two strings to see if they are different.  Returns true or
  1244. false.
  1245. <PRE>
  1246.         bool    strNE(char* s1, char* s2)</PRE>
  1247. <P></P>
  1248. <DT><STRONG><A NAME="item_strnEQ">strnEQ</A></STRONG><BR>
  1249. <DD>
  1250. Test two strings to see if they are equal.  The <CODE>len</CODE> parameter indicates
  1251. the number of bytes to compare.  Returns true or false. (A wrapper for
  1252. <CODE>strncmp</CODE>).
  1253. <PRE>
  1254.         bool    strnEQ(char* s1, char* s2, STRLEN len)</PRE>
  1255. <P></P>
  1256. <DT><STRONG><A NAME="item_strnNE">strnNE</A></STRONG><BR>
  1257. <DD>
  1258. Test two strings to see if they are different.  The <CODE>len</CODE> parameter
  1259. indicates the number of bytes to compare.  Returns true or false. (A
  1260. wrapper for <CODE>strncmp</CODE>).
  1261. <PRE>
  1262.         bool    strnNE(char* s1, char* s2, STRLEN len)</PRE>
  1263. <P></P>
  1264. <DT><STRONG><A NAME="item_StructCopy">StructCopy</A></STRONG><BR>
  1265. <DD>
  1266. This is an architecture-independant macro to copy one structure to another.
  1267. <PRE>
  1268.         void    StructCopy(type src, type dest, type)</PRE>
  1269. <P></P>
  1270. <DT><STRONG><A NAME="item_SvCUR">SvCUR</A></STRONG><BR>
  1271. <DD>
  1272. Returns the length of the string which is in the SV.  See <A HREF="#item_SvLEN"><CODE>SvLEN</CODE></A>.
  1273. <PRE>
  1274.         STRLEN  SvCUR(SV* sv)</PRE>
  1275. <P></P>
  1276. <DT><STRONG><A NAME="item_SvCUR_set">SvCUR_set</A></STRONG><BR>
  1277. <DD>
  1278. Set the length of the string which is in the SV.  See <A HREF="#item_SvCUR"><CODE>SvCUR</CODE></A>.
  1279. <PRE>
  1280.         void    SvCUR_set(SV* sv, STRLEN len)</PRE>
  1281. <P></P>
  1282. <DT><STRONG><A NAME="item_SvEND">SvEND</A></STRONG><BR>
  1283. <DD>
  1284. Returns a pointer to the last character in the string which is in the SV.
  1285. See <A HREF="#item_SvCUR"><CODE>SvCUR</CODE></A>.  Access the character as *(SvEND(sv)).
  1286. <PRE>
  1287.         char*   SvEND(SV* sv)</PRE>
  1288. <P></P>
  1289. <DT><STRONG><A NAME="item_SvGETMAGIC">SvGETMAGIC</A></STRONG><BR>
  1290. <DD>
  1291. Invokes <A HREF="#item_mg_get"><CODE>mg_get</CODE></A> on an SV if it has 'get' magic.  This macro evaluates its
  1292. argument more than once.
  1293. <PRE>
  1294.         void    SvGETMAGIC(SV* sv)</PRE>
  1295. <P></P>
  1296. <DT><STRONG><A NAME="item_SvGROW">SvGROW</A></STRONG><BR>
  1297. <DD>
  1298. Expands the character buffer in the SV so that it has room for the
  1299. indicated number of bytes (remember to reserve space for an extra trailing
  1300. NUL character).  Calls <A HREF="#item_sv_grow"><CODE>sv_grow</CODE></A> to perform the expansion if necessary. 
  1301. Returns a pointer to the character buffer.
  1302. <PRE>
  1303.         void    SvGROW(SV* sv, STRLEN len)</PRE>
  1304. <P></P>
  1305. <DT><STRONG><A NAME="item_SvIOK">SvIOK</A></STRONG><BR>
  1306. <DD>
  1307. Returns a boolean indicating whether the SV contains an integer.
  1308. <PRE>
  1309.         bool    SvIOK(SV* sv)</PRE>
  1310. <P></P>
  1311. <DT><STRONG><A NAME="item_SvIOKp">SvIOKp</A></STRONG><BR>
  1312. <DD>
  1313. Returns a boolean indicating whether the SV contains an integer.  Checks
  1314. the <STRONG>private</STRONG> setting.  Use <A HREF="#item_SvIOK"><CODE>SvIOK</CODE></A>.
  1315. <PRE>
  1316.         bool    SvIOKp(SV* sv)</PRE>
  1317. <P></P>
  1318. <DT><STRONG><A NAME="item_SvIOK_off">SvIOK_off</A></STRONG><BR>
  1319. <DD>
  1320. Unsets the IV status of an SV.
  1321. <PRE>
  1322.         void    SvIOK_off(SV* sv)</PRE>
  1323. <P></P>
  1324. <DT><STRONG><A NAME="item_SvIOK_on">SvIOK_on</A></STRONG><BR>
  1325. <DD>
  1326. Tells an SV that it is an integer.
  1327. <PRE>
  1328.         void    SvIOK_on(SV* sv)</PRE>
  1329. <P></P>
  1330. <DT><STRONG><A NAME="item_SvIOK_only">SvIOK_only</A></STRONG><BR>
  1331. <DD>
  1332. Tells an SV that it is an integer and disables all other OK bits.
  1333. <PRE>
  1334.         void    SvIOK_only(SV* sv)</PRE>
  1335. <P></P>
  1336. <DT><STRONG><A NAME="item_SvIV">SvIV</A></STRONG><BR>
  1337. <DD>
  1338. Coerces the given SV to an integer and returns it.
  1339. <PRE>
  1340.         IV      SvIV(SV* sv)</PRE>
  1341. <P></P>
  1342. <DT><STRONG><A NAME="item_SvIVX">SvIVX</A></STRONG><BR>
  1343. <DD>
  1344. Returns the integer which is stored in the SV, assuming SvIOK is
  1345. true.
  1346. <PRE>
  1347.         IV      SvIVX(SV* sv)</PRE>
  1348. <P></P>
  1349. <DT><STRONG><A NAME="item_SvLEN">SvLEN</A></STRONG><BR>
  1350. <DD>
  1351. Returns the size of the string buffer in the SV.  See <A HREF="#item_SvCUR"><CODE>SvCUR</CODE></A>.
  1352. <PRE>
  1353.         STRLEN  SvLEN(SV* sv)</PRE>
  1354. <P></P>
  1355. <DT><STRONG><A NAME="item_SvNIOK">SvNIOK</A></STRONG><BR>
  1356. <DD>
  1357. Returns a boolean indicating whether the SV contains a number, integer or
  1358. double.
  1359. <PRE>
  1360.         bool    SvNIOK(SV* sv)</PRE>
  1361. <P></P>
  1362. <DT><STRONG><A NAME="item_SvNIOKp">SvNIOKp</A></STRONG><BR>
  1363. <DD>
  1364. Returns a boolean indicating whether the SV contains a number, integer or
  1365. double.  Checks the <STRONG>private</STRONG> setting.  Use <A HREF="#item_SvNIOK"><CODE>SvNIOK</CODE></A>.
  1366. <PRE>
  1367.         bool    SvNIOKp(SV* sv)</PRE>
  1368. <P></P>
  1369. <DT><STRONG><A NAME="item_SvNIOK_off">SvNIOK_off</A></STRONG><BR>
  1370. <DD>
  1371. Unsets the NV/IV status of an SV.
  1372. <PRE>
  1373.         void    SvNIOK_off(SV* sv)</PRE>
  1374. <P></P>
  1375. <DT><STRONG><A NAME="item_SvNOK">SvNOK</A></STRONG><BR>
  1376. <DD>
  1377. Returns a boolean indicating whether the SV contains a double.
  1378. <PRE>
  1379.         bool    SvNOK(SV* sv)</PRE>
  1380. <P></P>
  1381. <DT><STRONG><A NAME="item_SvNOKp">SvNOKp</A></STRONG><BR>
  1382. <DD>
  1383. Returns a boolean indicating whether the SV contains a double.  Checks the
  1384. <STRONG>private</STRONG> setting.  Use <A HREF="#item_SvNOK"><CODE>SvNOK</CODE></A>.
  1385. <PRE>
  1386.         bool    SvNOKp(SV* sv)</PRE>
  1387. <P></P>
  1388. <DT><STRONG><A NAME="item_SvNOK_off">SvNOK_off</A></STRONG><BR>
  1389. <DD>
  1390. Unsets the NV status of an SV.
  1391. <PRE>
  1392.         void    SvNOK_off(SV* sv)</PRE>
  1393. <P></P>
  1394. <DT><STRONG><A NAME="item_SvNOK_on">SvNOK_on</A></STRONG><BR>
  1395. <DD>
  1396. Tells an SV that it is a double.
  1397. <PRE>
  1398.         void    SvNOK_on(SV* sv)</PRE>
  1399. <P></P>
  1400. <DT><STRONG><A NAME="item_SvNOK_only">SvNOK_only</A></STRONG><BR>
  1401. <DD>
  1402. Tells an SV that it is a double and disables all other OK bits.
  1403. <PRE>
  1404.         void    SvNOK_only(SV* sv)</PRE>
  1405. <P></P>
  1406. <DT><STRONG><A NAME="item_SvNV">SvNV</A></STRONG><BR>
  1407. <DD>
  1408. Coerce the given SV to a double and return it.
  1409. <PRE>
  1410.         NV      SvNV(SV* sv)</PRE>
  1411. <P></P>
  1412. <DT><STRONG><A NAME="item_SvNVX">SvNVX</A></STRONG><BR>
  1413. <DD>
  1414. Returns the double which is stored in the SV, assuming SvNOK is
  1415. true.
  1416. <PRE>
  1417.         NV      SvNVX(SV* sv)</PRE>
  1418. <P></P>
  1419. <DT><STRONG><A NAME="item_SvOK">SvOK</A></STRONG><BR>
  1420. <DD>
  1421. Returns a boolean indicating whether the value is an SV.
  1422. <PRE>
  1423.         bool    SvOK(SV* sv)</PRE>
  1424. <P></P>
  1425. <DT><STRONG><A NAME="item_SvOOK">SvOOK</A></STRONG><BR>
  1426. <DD>
  1427. Returns a boolean indicating whether the SvIVX is a valid offset value for
  1428. the SvPVX.  This hack is used internally to speed up removal of characters
  1429. from the beginning of a SvPV.  When SvOOK is true, then the start of the
  1430. allocated string buffer is really (SvPVX - SvIVX).
  1431. <PRE>
  1432.         bool    SvOOK(SV* sv)</PRE>
  1433. <P></P>
  1434. <DT><STRONG><A NAME="item_SvPOK">SvPOK</A></STRONG><BR>
  1435. <DD>
  1436. Returns a boolean indicating whether the SV contains a character
  1437. string.
  1438. <PRE>
  1439.         bool    SvPOK(SV* sv)</PRE>
  1440. <P></P>
  1441. <DT><STRONG><A NAME="item_SvPOKp">SvPOKp</A></STRONG><BR>
  1442. <DD>
  1443. Returns a boolean indicating whether the SV contains a character string.
  1444. Checks the <STRONG>private</STRONG> setting.  Use <A HREF="#item_SvPOK"><CODE>SvPOK</CODE></A>.
  1445. <PRE>
  1446.         bool    SvPOKp(SV* sv)</PRE>
  1447. <P></P>
  1448. <DT><STRONG><A NAME="item_SvPOK_off">SvPOK_off</A></STRONG><BR>
  1449. <DD>
  1450. Unsets the PV status of an SV.
  1451. <PRE>
  1452.         void    SvPOK_off(SV* sv)</PRE>
  1453. <P></P>
  1454. <DT><STRONG><A NAME="item_SvPOK_on">SvPOK_on</A></STRONG><BR>
  1455. <DD>
  1456. Tells an SV that it is a string.
  1457. <PRE>
  1458.         void    SvPOK_on(SV* sv)</PRE>
  1459. <P></P>
  1460. <DT><STRONG><A NAME="item_SvPOK_only">SvPOK_only</A></STRONG><BR>
  1461. <DD>
  1462. Tells an SV that it is a string and disables all other OK bits.
  1463. <PRE>
  1464.         void    SvPOK_only(SV* sv)</PRE>
  1465. <P></P>
  1466. <DT><STRONG><A NAME="item_SvPV">SvPV</A></STRONG><BR>
  1467. <DD>
  1468. Returns a pointer to the string in the SV, or a stringified form of the SV
  1469. if the SV does not contain a string.  Handles 'get' magic.
  1470. <PRE>
  1471.         char*   SvPV(SV* sv, STRLEN len)</PRE>
  1472. <P></P>
  1473. <DT><STRONG><A NAME="item_SvPVX">SvPVX</A></STRONG><BR>
  1474. <DD>
  1475. Returns a pointer to the string in the SV.  The SV must contain a
  1476. string.
  1477. <PRE>
  1478.         char*   SvPVX(SV* sv)</PRE>
  1479. <P></P>
  1480. <DT><STRONG><A NAME="item_SvPV_force">SvPV_force</A></STRONG><BR>
  1481. <DD>
  1482. Like <SvPV> but will force the SV into becoming a string (SvPOK).  You want
  1483. force if you are going to update the SvPVX directly.
  1484. <PRE>
  1485.         char*   SvPV_force(SV* sv, STRLEN len)</PRE>
  1486. <P></P>
  1487. <DT><STRONG><A NAME="item_SvPV_nolen">SvPV_nolen</A></STRONG><BR>
  1488. <DD>
  1489. Returns a pointer to the string in the SV, or a stringified form of the SV
  1490. if the SV does not contain a string.  Handles 'get' magic.
  1491. <PRE>
  1492.         char*   SvPV_nolen(SV* sv)</PRE>
  1493. <P></P>
  1494. <DT><STRONG><A NAME="item_SvREFCNT">SvREFCNT</A></STRONG><BR>
  1495. <DD>
  1496. Returns the value of the object's reference count.
  1497. <PRE>
  1498.         U32     SvREFCNT(SV* sv)</PRE>
  1499. <P></P>
  1500. <DT><STRONG><A NAME="item_SvREFCNT_dec">SvREFCNT_dec</A></STRONG><BR>
  1501. <DD>
  1502. Decrements the reference count of the given SV.
  1503. <PRE>
  1504.         void    SvREFCNT_dec(SV* sv)</PRE>
  1505. <P></P>
  1506. <DT><STRONG><A NAME="item_SvREFCNT_inc">SvREFCNT_inc</A></STRONG><BR>
  1507. <DD>
  1508. Increments the reference count of the given SV.
  1509. <PRE>
  1510.         SV*     SvREFCNT_inc(SV* sv)</PRE>
  1511. <P></P>
  1512. <DT><STRONG><A NAME="item_SvROK">SvROK</A></STRONG><BR>
  1513. <DD>
  1514. Tests if the SV is an RV.
  1515. <PRE>
  1516.         bool    SvROK(SV* sv)</PRE>
  1517. <P></P>
  1518. <DT><STRONG><A NAME="item_SvROK_off">SvROK_off</A></STRONG><BR>
  1519. <DD>
  1520. Unsets the RV status of an SV.
  1521. <PRE>
  1522.         void    SvROK_off(SV* sv)</PRE>
  1523. <P></P>
  1524. <DT><STRONG><A NAME="item_SvROK_on">SvROK_on</A></STRONG><BR>
  1525. <DD>
  1526. Tells an SV that it is an RV.
  1527. <PRE>
  1528.         void    SvROK_on(SV* sv)</PRE>
  1529. <P></P>
  1530. <DT><STRONG><A NAME="item_SvRV">SvRV</A></STRONG><BR>
  1531. <DD>
  1532. Dereferences an RV to return the SV.
  1533. <PRE>
  1534.         SV*     SvRV(SV* sv)</PRE>
  1535. <P></P>
  1536. <DT><STRONG><A NAME="item_SvSETMAGIC">SvSETMAGIC</A></STRONG><BR>
  1537. <DD>
  1538. Invokes <A HREF="#item_mg_set"><CODE>mg_set</CODE></A> on an SV if it has 'set' magic.  This macro evaluates its
  1539. argument more than once.
  1540. <PRE>
  1541.         void    SvSETMAGIC(SV* sv)</PRE>
  1542. <P></P>
  1543. <DT><STRONG><A NAME="item_SvSetSV">SvSetSV</A></STRONG><BR>
  1544. <DD>
  1545. Calls <A HREF="#item_sv_setsv"><CODE>sv_setsv</CODE></A> if dsv is not the same as ssv.  May evaluate arguments
  1546. more than once.
  1547. <PRE>
  1548.         void    SvSetSV(SV* dsb, SV* ssv)</PRE>
  1549. <P></P>
  1550. <DT><STRONG><A NAME="item_SvSetSV_nosteal">SvSetSV_nosteal</A></STRONG><BR>
  1551. <DD>
  1552. Calls a non-destructive version of <A HREF="#item_sv_setsv"><CODE>sv_setsv</CODE></A> if dsv is not the same as
  1553. ssv. May evaluate arguments more than once.
  1554. <PRE>
  1555.         void    SvSetSV_nosteal(SV* dsv, SV* ssv)</PRE>
  1556. <P></P>
  1557. <DT><STRONG><A NAME="item_SvSTASH">SvSTASH</A></STRONG><BR>
  1558. <DD>
  1559. Returns the stash of the SV.
  1560. <PRE>
  1561.         HV*     SvSTASH(SV* sv)</PRE>
  1562. <P></P>
  1563. <DT><STRONG><A NAME="item_SvTAINT">SvTAINT</A></STRONG><BR>
  1564. <DD>
  1565. Taints an SV if tainting is enabled
  1566. <PRE>
  1567.         void    SvTAINT(SV* sv)</PRE>
  1568. <P></P>
  1569. <DT><STRONG><A NAME="item_SvTAINTED">SvTAINTED</A></STRONG><BR>
  1570. <DD>
  1571. Checks to see if an SV is tainted. Returns TRUE if it is, FALSE if
  1572. not.
  1573. <PRE>
  1574.         bool    SvTAINTED(SV* sv)</PRE>
  1575. <P></P>
  1576. <DT><STRONG><A NAME="item_SvTAINTED_off">SvTAINTED_off</A></STRONG><BR>
  1577. <DD>
  1578. Untaints an SV. Be <EM>very</EM> careful with this routine, as it short-circuits
  1579. some of Perl's fundamental security features. XS module authors should not
  1580. use this function unless they fully understand all the implications of
  1581. unconditionally untainting the value. Untainting should be done in the
  1582. standard perl fashion, via a carefully crafted regexp, rather than directly
  1583. untainting variables.
  1584. <PRE>
  1585.         void    SvTAINTED_off(SV* sv)</PRE>
  1586. <P></P>
  1587. <DT><STRONG><A NAME="item_SvTAINTED_on">SvTAINTED_on</A></STRONG><BR>
  1588. <DD>
  1589. Marks an SV as tainted.
  1590. <PRE>
  1591.         void    SvTAINTED_on(SV* sv)</PRE>
  1592. <P></P>
  1593. <DT><STRONG><A NAME="item_SvTRUE">SvTRUE</A></STRONG><BR>
  1594. <DD>
  1595. Returns a boolean indicating whether Perl would evaluate the SV as true or
  1596. false, defined or undefined.  Does not handle 'get' magic.
  1597. <PRE>
  1598.         bool    SvTRUE(SV* sv)</PRE>
  1599. <P></P>
  1600. <DT><STRONG><A NAME="item_SvTYPE">SvTYPE</A></STRONG><BR>
  1601. <DD>
  1602. Returns the type of the SV.  See <A HREF="#item_svtype"><CODE>svtype</CODE></A>.
  1603. <PRE>
  1604.         svtype  SvTYPE(SV* sv)</PRE>
  1605. <P></P>
  1606. <DT><STRONG><A NAME="item_svtype">svtype</A></STRONG><BR>
  1607. <DD>
  1608. An enum of flags for Perl types.  These are found in the file <STRONG>sv.h</STRONG> 
  1609. in the <A HREF="#item_svtype"><CODE>svtype</CODE></A> enum.  Test these flags with the <A HREF="#item_SvTYPE"><CODE>SvTYPE</CODE></A> macro.
  1610. <P></P>
  1611. <DT><STRONG><A NAME="item_SVt_IV">SVt_IV</A></STRONG><BR>
  1612. <DD>
  1613. Integer type flag for scalars.  See <A HREF="#item_svtype"><CODE>svtype</CODE></A>.
  1614. <P></P>
  1615. <DT><STRONG><A NAME="item_SVt_NV">SVt_NV</A></STRONG><BR>
  1616. <DD>
  1617. Double type flag for scalars.  See <A HREF="#item_svtype"><CODE>svtype</CODE></A>.
  1618. <P></P>
  1619. <DT><STRONG><A NAME="item_SVt_PV">SVt_PV</A></STRONG><BR>
  1620. <DD>
  1621. Pointer type flag for scalars.  See <A HREF="#item_svtype"><CODE>svtype</CODE></A>.
  1622. <P></P>
  1623. <DT><STRONG><A NAME="item_SVt_PVAV">SVt_PVAV</A></STRONG><BR>
  1624. <DD>
  1625. Type flag for arrays.  See <A HREF="#item_svtype"><CODE>svtype</CODE></A>.
  1626. <P></P>
  1627. <DT><STRONG><A NAME="item_SVt_PVCV">SVt_PVCV</A></STRONG><BR>
  1628. <DD>
  1629. Type flag for code refs.  See <A HREF="#item_svtype"><CODE>svtype</CODE></A>.
  1630. <P></P>
  1631. <DT><STRONG><A NAME="item_SVt_PVHV">SVt_PVHV</A></STRONG><BR>
  1632. <DD>
  1633. Type flag for hashes.  See <A HREF="#item_svtype"><CODE>svtype</CODE></A>.
  1634. <P></P>
  1635. <DT><STRONG><A NAME="item_SVt_PVMG">SVt_PVMG</A></STRONG><BR>
  1636. <DD>
  1637. Type flag for blessed scalars.  See <A HREF="#item_svtype"><CODE>svtype</CODE></A>.
  1638. <P></P>
  1639. <DT><STRONG><A NAME="item_SvUPGRADE">SvUPGRADE</A></STRONG><BR>
  1640. <DD>
  1641. Used to upgrade an SV to a more complex form.  Uses <A HREF="#item_sv_upgrade"><CODE>sv_upgrade</CODE></A> to
  1642. perform the upgrade if necessary.  See <A HREF="#item_svtype"><CODE>svtype</CODE></A>.
  1643. <PRE>
  1644.         void    SvUPGRADE(SV* sv, svtype type)</PRE>
  1645. <P></P>
  1646. <DT><STRONG><A NAME="item_SvUV">SvUV</A></STRONG><BR>
  1647. <DD>
  1648. Coerces the given SV to an unsigned integer and returns it.
  1649. <PRE>
  1650.         UV      SvUV(SV* sv)</PRE>
  1651. <P></P>
  1652. <DT><STRONG><A NAME="item_SvUVX">SvUVX</A></STRONG><BR>
  1653. <DD>
  1654. Returns the unsigned integer which is stored in the SV, assuming SvIOK is
  1655. true.
  1656. <PRE>
  1657.         UV      SvUVX(SV* sv)</PRE>
  1658. <P></P>
  1659. <DT><STRONG><A NAME="item_sv_2mortal">sv_2mortal</A></STRONG><BR>
  1660. <DD>
  1661. Marks an SV as mortal.  The SV will be destroyed when the current context
  1662. ends.
  1663. <PRE>
  1664.         SV*     sv_2mortal(SV* sv)</PRE>
  1665. <P></P>
  1666. <DT><STRONG><A NAME="item_sv_bless">sv_bless</A></STRONG><BR>
  1667. <DD>
  1668. Blesses an SV into a specified package.  The SV must be an RV.  The package
  1669. must be designated by its stash (see <A HREF="#item_gv_stashpv"><CODE>gv_stashpv()</CODE></A>).  The reference count
  1670. of the SV is unaffected.
  1671. <PRE>
  1672.         SV*     sv_bless(SV* sv, HV* stash)</PRE>
  1673. <P></P>
  1674. <DT><STRONG><A NAME="item_sv_catpv">sv_catpv</A></STRONG><BR>
  1675. <DD>
  1676. Concatenates the string onto the end of the string which is in the SV.
  1677. Handles 'get' magic, but not 'set' magic.  See <A HREF="#item_sv_catpv_mg"><CODE>sv_catpv_mg</CODE></A>.
  1678. <PRE>
  1679.         void    sv_catpv(SV* sv, const char* ptr)</PRE>
  1680. <P></P>
  1681. <DT><STRONG><A NAME="item_sv_catpvf">sv_catpvf</A></STRONG><BR>
  1682. <DD>
  1683. Processes its arguments like <A HREF="../../lib/Pod/perlfunc.html#item_sprintf"><CODE>sprintf</CODE></A> and appends the formatted output
  1684. to an SV.  Handles 'get' magic, but not 'set' magic.  <A HREF="#item_SvSETMAGIC"><CODE>SvSETMAGIC()</CODE></A> must
  1685. typically be called after calling this function to handle 'set' magic.
  1686. <PRE>
  1687.         void    sv_catpvf(SV* sv, const char* pat, ...)</PRE>
  1688. <P></P>
  1689. <DT><STRONG><A NAME="item_sv_catpvf_mg">sv_catpvf_mg</A></STRONG><BR>
  1690. <DD>
  1691. Like <A HREF="#item_sv_catpvf"><CODE>sv_catpvf</CODE></A>, but also handles 'set' magic.
  1692. <PRE>
  1693.         void    sv_catpvf_mg(SV *sv, const char* pat, ...)</PRE>
  1694. <P></P>
  1695. <DT><STRONG><A NAME="item_sv_catpvn">sv_catpvn</A></STRONG><BR>
  1696. <DD>
  1697. Concatenates the string onto the end of the string which is in the SV.  The
  1698. <CODE>len</CODE> indicates number of bytes to copy.  Handles 'get' magic, but not
  1699. 'set' magic.  See <A HREF="#item_sv_catpvn_mg"><CODE>sv_catpvn_mg</CODE></A>.
  1700. <PRE>
  1701.         void    sv_catpvn(SV* sv, const char* ptr, STRLEN len)</PRE>
  1702. <P></P>
  1703. <DT><STRONG><A NAME="item_sv_catpvn_mg">sv_catpvn_mg</A></STRONG><BR>
  1704. <DD>
  1705. Like <A HREF="#item_sv_catpvn"><CODE>sv_catpvn</CODE></A>, but also handles 'set' magic.
  1706. <PRE>
  1707.         void    sv_catpvn_mg(SV *sv, const char *ptr, STRLEN len)</PRE>
  1708. <P></P>
  1709. <DT><STRONG><A NAME="item_sv_catpv_mg">sv_catpv_mg</A></STRONG><BR>
  1710. <DD>
  1711. Like <A HREF="#item_sv_catpv"><CODE>sv_catpv</CODE></A>, but also handles 'set' magic.
  1712. <PRE>
  1713.         void    sv_catpv_mg(SV *sv, const char *ptr)</PRE>
  1714. <P></P>
  1715. <DT><STRONG><A NAME="item_sv_catsv">sv_catsv</A></STRONG><BR>
  1716. <DD>
  1717. Concatenates the string from SV <CODE>ssv</CODE> onto the end of the string in SV
  1718. <CODE>dsv</CODE>.  Handles 'get' magic, but not 'set' magic.  See <A HREF="#item_sv_catsv_mg"><CODE>sv_catsv_mg</CODE></A>.
  1719. <PRE>
  1720.         void    sv_catsv(SV* dsv, SV* ssv)</PRE>
  1721. <P></P>
  1722. <DT><STRONG><A NAME="item_sv_catsv_mg">sv_catsv_mg</A></STRONG><BR>
  1723. <DD>
  1724. Like <A HREF="#item_sv_catsv"><CODE>sv_catsv</CODE></A>, but also handles 'set' magic.
  1725. <PRE>
  1726.         void    sv_catsv_mg(SV *dstr, SV *sstr)</PRE>
  1727. <P></P>
  1728. <DT><STRONG><A NAME="item_sv_chop">sv_chop</A></STRONG><BR>
  1729. <DD>
  1730. Efficient removal of characters from the beginning of the string buffer. 
  1731. <A HREF="#item_SvPOK"><CODE>SvPOK(sv)</CODE></A> must be true and the <CODE>ptr</CODE> must be a pointer to somewhere inside
  1732. the string buffer.  The <CODE>ptr</CODE> becomes the first character of the adjusted
  1733. string.
  1734. <PRE>
  1735.         void    sv_chop(SV* sv, char* ptr)</PRE>
  1736. <P></P>
  1737. <DT><STRONG><A NAME="item_sv_cmp">sv_cmp</A></STRONG><BR>
  1738. <DD>
  1739. Compares the strings in two SVs.  Returns -1, 0, or 1 indicating whether the
  1740. string in <CODE>sv1</CODE> is less than, equal to, or greater than the string in
  1741. <CODE>sv2</CODE>.
  1742. <PRE>
  1743.         I32     sv_cmp(SV* sv1, SV* sv2)</PRE>
  1744. <P></P>
  1745. <DT><STRONG><A NAME="item_sv_dec">sv_dec</A></STRONG><BR>
  1746. <DD>
  1747. Auto-decrement of the value in the SV.
  1748. <PRE>
  1749.         void    sv_dec(SV* sv)</PRE>
  1750. <P></P>
  1751. <DT><STRONG><A NAME="item_sv_derived_from">sv_derived_from</A></STRONG><BR>
  1752. <DD>
  1753. Returns a boolean indicating whether the SV is derived from the specified
  1754. class.  This is the function that implements <CODE>UNIVERSAL::isa</CODE>.  It works
  1755. for class names as well as for objects.
  1756. <PRE>
  1757.         bool    sv_derived_from(SV* sv, const char* name)</PRE>
  1758. <P></P>
  1759. <DT><STRONG><A NAME="item_sv_eq">sv_eq</A></STRONG><BR>
  1760. <DD>
  1761. Returns a boolean indicating whether the strings in the two SVs are
  1762. identical.
  1763. <PRE>
  1764.         I32     sv_eq(SV* sv1, SV* sv2)</PRE>
  1765. <P></P>
  1766. <DT><STRONG><A NAME="item_sv_grow">sv_grow</A></STRONG><BR>
  1767. <DD>
  1768. Expands the character buffer in the SV.  This will use <A HREF="#item_sv_unref"><CODE>sv_unref</CODE></A> and will
  1769. upgrade the SV to <A HREF="#item_SVt_PV"><CODE>SVt_PV</CODE></A>.  Returns a pointer to the character buffer.
  1770. Use <A HREF="#item_SvGROW"><CODE>SvGROW</CODE></A>.
  1771. <PRE>
  1772.         char*   sv_grow(SV* sv, STRLEN newlen)</PRE>
  1773. <P></P>
  1774. <DT><STRONG><A NAME="item_sv_inc">sv_inc</A></STRONG><BR>
  1775. <DD>
  1776. Auto-increment of the value in the SV.
  1777. <PRE>
  1778.         void    sv_inc(SV* sv)</PRE>
  1779. <P></P>
  1780. <DT><STRONG><A NAME="item_sv_insert">sv_insert</A></STRONG><BR>
  1781. <DD>
  1782. Inserts a string at the specified offset/length within the SV. Similar to
  1783. the Perl <A HREF="../../lib/Pod/perlfunc.html#item_substr"><CODE>substr()</CODE></A> function.
  1784. <PRE>
  1785.         void    sv_insert(SV* bigsv, STRLEN offset, STRLEN len, char* little, STRLEN littlelen)</PRE>
  1786. <P></P>
  1787. <DT><STRONG><A NAME="item_sv_isa">sv_isa</A></STRONG><BR>
  1788. <DD>
  1789. Returns a boolean indicating whether the SV is blessed into the specified
  1790. class.  This does not check for subtypes; use <A HREF="#item_sv_derived_from"><CODE>sv_derived_from</CODE></A> to verify
  1791. an inheritance relationship.
  1792. <PRE>
  1793.         int     sv_isa(SV* sv, const char* name)</PRE>
  1794. <P></P>
  1795. <DT><STRONG><A NAME="item_sv_isobject">sv_isobject</A></STRONG><BR>
  1796. <DD>
  1797. Returns a boolean indicating whether the SV is an RV pointing to a blessed
  1798. object.  If the SV is not an RV, or if the object is not blessed, then this
  1799. will return false.
  1800. <PRE>
  1801.         int     sv_isobject(SV* sv)</PRE>
  1802. <P></P>
  1803. <DT><STRONG><A NAME="item_sv_len">sv_len</A></STRONG><BR>
  1804. <DD>
  1805. Returns the length of the string in the SV.  See also <A HREF="#item_SvCUR"><CODE>SvCUR</CODE></A>.
  1806. <PRE>
  1807.         STRLEN  sv_len(SV* sv)</PRE>
  1808. <P></P>
  1809. <DT><STRONG><A NAME="item_sv_magic">sv_magic</A></STRONG><BR>
  1810. <DD>
  1811. Adds magic to an SV.
  1812. <PRE>
  1813.         void    sv_magic(SV* sv, SV* obj, int how, const char* name, I32 namlen)</PRE>
  1814. <P></P>
  1815. <DT><STRONG><A NAME="item_sv_mortalcopy">sv_mortalcopy</A></STRONG><BR>
  1816. <DD>
  1817. Creates a new SV which is a copy of the original SV.  The new SV is marked
  1818. as mortal.
  1819. <PRE>
  1820.         SV*     sv_mortalcopy(SV* oldsv)</PRE>
  1821. <P></P>
  1822. <DT><STRONG><A NAME="item_sv_newmortal">sv_newmortal</A></STRONG><BR>
  1823. <DD>
  1824. Creates a new SV which is mortal.  The reference count of the SV is set to 1.
  1825. <PRE>
  1826.         SV*     sv_newmortal()</PRE>
  1827. <P></P>
  1828. <DT><STRONG><A NAME="item_sv_setiv">sv_setiv</A></STRONG><BR>
  1829. <DD>
  1830. Copies an integer into the given SV.  Does not handle 'set' magic.  See
  1831. <A HREF="#item_sv_setiv_mg"><CODE>sv_setiv_mg</CODE></A>.
  1832. <PRE>
  1833.         void    sv_setiv(SV* sv, IV num)</PRE>
  1834. <P></P>
  1835. <DT><STRONG><A NAME="item_sv_setiv_mg">sv_setiv_mg</A></STRONG><BR>
  1836. <DD>
  1837. Like <A HREF="#item_sv_setiv"><CODE>sv_setiv</CODE></A>, but also handles 'set' magic.
  1838. <PRE>
  1839.         void    sv_setiv_mg(SV *sv, IV i)</PRE>
  1840. <P></P>
  1841. <DT><STRONG><A NAME="item_sv_setnv">sv_setnv</A></STRONG><BR>
  1842. <DD>
  1843. Copies a double into the given SV.  Does not handle 'set' magic.  See
  1844. <A HREF="#item_sv_setnv_mg"><CODE>sv_setnv_mg</CODE></A>.
  1845. <PRE>
  1846.         void    sv_setnv(SV* sv, NV num)</PRE>
  1847. <P></P>
  1848. <DT><STRONG><A NAME="item_sv_setnv_mg">sv_setnv_mg</A></STRONG><BR>
  1849. <DD>
  1850. Like <A HREF="#item_sv_setnv"><CODE>sv_setnv</CODE></A>, but also handles 'set' magic.
  1851. <PRE>
  1852.         void    sv_setnv_mg(SV *sv, NV num)</PRE>
  1853. <P></P>
  1854. <DT><STRONG><A NAME="item_sv_setpv">sv_setpv</A></STRONG><BR>
  1855. <DD>
  1856. Copies a string into an SV.  The string must be null-terminated.  Does not
  1857. handle 'set' magic.  See <A HREF="#item_sv_setpv_mg"><CODE>sv_setpv_mg</CODE></A>.
  1858. <PRE>
  1859.         void    sv_setpv(SV* sv, const char* ptr)</PRE>
  1860. <P></P>
  1861. <DT><STRONG><A NAME="item_sv_setpvf">sv_setpvf</A></STRONG><BR>
  1862. <DD>
  1863. Processes its arguments like <A HREF="../../lib/Pod/perlfunc.html#item_sprintf"><CODE>sprintf</CODE></A> and sets an SV to the formatted
  1864. output.  Does not handle 'set' magic.  See <A HREF="#item_sv_setpvf_mg"><CODE>sv_setpvf_mg</CODE></A>.
  1865. <PRE>
  1866.         void    sv_setpvf(SV* sv, const char* pat, ...)</PRE>
  1867. <P></P>
  1868. <DT><STRONG><A NAME="item_sv_setpvf_mg">sv_setpvf_mg</A></STRONG><BR>
  1869. <DD>
  1870. Like <A HREF="#item_sv_setpvf"><CODE>sv_setpvf</CODE></A>, but also handles 'set' magic.
  1871. <PRE>
  1872.         void    sv_setpvf_mg(SV *sv, const char* pat, ...)</PRE>
  1873. <P></P>
  1874. <DT><STRONG><A NAME="item_sv_setpviv">sv_setpviv</A></STRONG><BR>
  1875. <DD>
  1876. Copies an integer into the given SV, also updating its string value.
  1877. Does not handle 'set' magic.  See <A HREF="#item_sv_setpviv_mg"><CODE>sv_setpviv_mg</CODE></A>.
  1878. <PRE>
  1879.         void    sv_setpviv(SV* sv, IV num)</PRE>
  1880. <P></P>
  1881. <DT><STRONG><A NAME="item_sv_setpviv_mg">sv_setpviv_mg</A></STRONG><BR>
  1882. <DD>
  1883. Like <A HREF="#item_sv_setpviv"><CODE>sv_setpviv</CODE></A>, but also handles 'set' magic.
  1884. <PRE>
  1885.         void    sv_setpviv_mg(SV *sv, IV iv)</PRE>
  1886. <P></P>
  1887. <DT><STRONG><A NAME="item_sv_setpvn">sv_setpvn</A></STRONG><BR>
  1888. <DD>
  1889. Copies a string into an SV.  The <CODE>len</CODE> parameter indicates the number of
  1890. bytes to be copied.  Does not handle 'set' magic.  See <A HREF="#item_sv_setpvn_mg"><CODE>sv_setpvn_mg</CODE></A>.
  1891. <PRE>
  1892.         void    sv_setpvn(SV* sv, const char* ptr, STRLEN len)</PRE>
  1893. <P></P>
  1894. <DT><STRONG><A NAME="item_sv_setpvn_mg">sv_setpvn_mg</A></STRONG><BR>
  1895. <DD>
  1896. Like <A HREF="#item_sv_setpvn"><CODE>sv_setpvn</CODE></A>, but also handles 'set' magic.
  1897. <PRE>
  1898.         void    sv_setpvn_mg(SV *sv, const char *ptr, STRLEN len)</PRE>
  1899. <P></P>
  1900. <DT><STRONG><A NAME="item_sv_setpv_mg">sv_setpv_mg</A></STRONG><BR>
  1901. <DD>
  1902. Like <A HREF="#item_sv_setpv"><CODE>sv_setpv</CODE></A>, but also handles 'set' magic.
  1903. <PRE>
  1904.         void    sv_setpv_mg(SV *sv, const char *ptr)</PRE>
  1905. <P></P>
  1906. <DT><STRONG><A NAME="item_sv_setref_iv">sv_setref_iv</A></STRONG><BR>
  1907. <DD>
  1908. Copies an integer into a new SV, optionally blessing the SV.  The <CODE>rv</CODE>
  1909. argument will be upgraded to an RV.  That RV will be modified to point to
  1910. the new SV.  The <CODE>classname</CODE> argument indicates the package for the
  1911. blessing.  Set <CODE>classname</CODE> to <A HREF="#item_Nullch"><CODE>Nullch</CODE></A> to avoid the blessing.  The new SV
  1912. will be returned and will have a reference count of 1.
  1913. <PRE>
  1914.         SV*     sv_setref_iv(SV* rv, const char* classname, IV iv)</PRE>
  1915. <P></P>
  1916. <DT><STRONG><A NAME="item_sv_setref_nv">sv_setref_nv</A></STRONG><BR>
  1917. <DD>
  1918. Copies a double into a new SV, optionally blessing the SV.  The <CODE>rv</CODE>
  1919. argument will be upgraded to an RV.  That RV will be modified to point to
  1920. the new SV.  The <CODE>classname</CODE> argument indicates the package for the
  1921. blessing.  Set <CODE>classname</CODE> to <A HREF="#item_Nullch"><CODE>Nullch</CODE></A> to avoid the blessing.  The new SV
  1922. will be returned and will have a reference count of 1.
  1923. <PRE>
  1924.         SV*     sv_setref_nv(SV* rv, const char* classname, NV nv)</PRE>
  1925. <P></P>
  1926. <DT><STRONG><A NAME="item_sv_setref_pv">sv_setref_pv</A></STRONG><BR>
  1927. <DD>
  1928. Copies a pointer into a new SV, optionally blessing the SV.  The <CODE>rv</CODE>
  1929. argument will be upgraded to an RV.  That RV will be modified to point to
  1930. the new SV.  If the <CODE>pv</CODE> argument is NULL then <A HREF="#item_PL_sv_undef"><CODE>PL_sv_undef</CODE></A> will be placed
  1931. into the SV.  The <CODE>classname</CODE> argument indicates the package for the
  1932. blessing.  Set <CODE>classname</CODE> to <A HREF="#item_Nullch"><CODE>Nullch</CODE></A> to avoid the blessing.  The new SV
  1933. will be returned and will have a reference count of 1.
  1934. <P>Do not use with other Perl types such as HV, AV, SV, CV, because those
  1935. objects will become corrupted by the pointer copy process.</P>
  1936. <P>Note that <A HREF="#item_sv_setref_pvn"><CODE>sv_setref_pvn</CODE></A> copies the string while this copies the pointer.</P>
  1937. <PRE>
  1938.         SV*     sv_setref_pv(SV* rv, const char* classname, void* pv)</PRE>
  1939. <P></P>
  1940. <DT><STRONG><A NAME="item_sv_setref_pvn">sv_setref_pvn</A></STRONG><BR>
  1941. <DD>
  1942. Copies a string into a new SV, optionally blessing the SV.  The length of the
  1943. string must be specified with <CODE>n</CODE>.  The <CODE>rv</CODE> argument will be upgraded to
  1944. an RV.  That RV will be modified to point to the new SV.  The <CODE>classname</CODE>
  1945. argument indicates the package for the blessing.  Set <CODE>classname</CODE> to
  1946. <A HREF="#item_Nullch"><CODE>Nullch</CODE></A> to avoid the blessing.  The new SV will be returned and will have
  1947. a reference count of 1.
  1948. <P>Note that <A HREF="#item_sv_setref_pv"><CODE>sv_setref_pv</CODE></A> copies the pointer while this copies the string.</P>
  1949. <PRE>
  1950.         SV*     sv_setref_pvn(SV* rv, const char* classname, char* pv, STRLEN n)</PRE>
  1951. <P></P>
  1952. <DT><STRONG><A NAME="item_sv_setsv">sv_setsv</A></STRONG><BR>
  1953. <DD>
  1954. Copies the contents of the source SV <CODE>ssv</CODE> into the destination SV <CODE>dsv</CODE>.
  1955. The source SV may be destroyed if it is mortal.  Does not handle 'set'
  1956. magic.  See the macro forms <A HREF="#item_SvSetSV"><CODE>SvSetSV</CODE></A>, <A HREF="#item_SvSetSV_nosteal"><CODE>SvSetSV_nosteal</CODE></A> and
  1957. <A HREF="#item_sv_setsv_mg"><CODE>sv_setsv_mg</CODE></A>.
  1958. <PRE>
  1959.         void    sv_setsv(SV* dsv, SV* ssv)</PRE>
  1960. <P></P>
  1961. <DT><STRONG><A NAME="item_sv_setsv_mg">sv_setsv_mg</A></STRONG><BR>
  1962. <DD>
  1963. Like <A HREF="#item_sv_setsv"><CODE>sv_setsv</CODE></A>, but also handles 'set' magic.
  1964. <PRE>
  1965.         void    sv_setsv_mg(SV *dstr, SV *sstr)</PRE>
  1966. <P></P>
  1967. <DT><STRONG><A NAME="item_sv_setuv">sv_setuv</A></STRONG><BR>
  1968. <DD>
  1969. Copies an unsigned integer into the given SV.  Does not handle 'set' magic.
  1970. See <A HREF="#item_sv_setuv_mg"><CODE>sv_setuv_mg</CODE></A>.
  1971. <PRE>
  1972.         void    sv_setuv(SV* sv, UV num)</PRE>
  1973. <P></P>
  1974. <DT><STRONG><A NAME="item_sv_setuv_mg">sv_setuv_mg</A></STRONG><BR>
  1975. <DD>
  1976. Like <A HREF="#item_sv_setuv"><CODE>sv_setuv</CODE></A>, but also handles 'set' magic.
  1977. <PRE>
  1978.         void    sv_setuv_mg(SV *sv, UV u)</PRE>
  1979. <P></P>
  1980. <DT><STRONG><A NAME="item_sv_unref">sv_unref</A></STRONG><BR>
  1981. <DD>
  1982. Unsets the RV status of the SV, and decrements the reference count of
  1983. whatever was being referenced by the RV.  This can almost be thought of
  1984. as a reversal of <A HREF="#item_newSVrv"><CODE>newSVrv</CODE></A>.  See <A HREF="#item_SvROK_off"><CODE>SvROK_off</CODE></A>.
  1985. <PRE>
  1986.         void    sv_unref(SV* sv)</PRE>
  1987. <P></P>
  1988. <DT><STRONG><A NAME="item_sv_upgrade">sv_upgrade</A></STRONG><BR>
  1989. <DD>
  1990. Upgrade an SV to a more complex form.  Use <A HREF="#item_SvUPGRADE"><CODE>SvUPGRADE</CODE></A>.  See
  1991. <A HREF="#item_svtype"><CODE>svtype</CODE></A>.
  1992. <PRE>
  1993.         bool    sv_upgrade(SV* sv, U32 mt)</PRE>
  1994. <P></P>
  1995. <DT><STRONG><A NAME="item_sv_usepvn">sv_usepvn</A></STRONG><BR>
  1996. <DD>
  1997. Tells an SV to use <CODE>ptr</CODE> to find its string value.  Normally the string is
  1998. stored inside the SV but sv_usepvn allows the SV to use an outside string. 
  1999. The <CODE>ptr</CODE> should point to memory that was allocated by <CODE>malloc</CODE>.  The
  2000. string length, <CODE>len</CODE>, must be supplied.  This function will realloc the
  2001. memory pointed to by <CODE>ptr</CODE>, so that pointer should not be freed or used by
  2002. the programmer after giving it to sv_usepvn.  Does not handle 'set' magic.
  2003. See <A HREF="#item_sv_usepvn_mg"><CODE>sv_usepvn_mg</CODE></A>.
  2004. <PRE>
  2005.         void    sv_usepvn(SV* sv, char* ptr, STRLEN len)</PRE>
  2006. <P></P>
  2007. <DT><STRONG><A NAME="item_sv_usepvn_mg">sv_usepvn_mg</A></STRONG><BR>
  2008. <DD>
  2009. Like <A HREF="#item_sv_usepvn"><CODE>sv_usepvn</CODE></A>, but also handles 'set' magic.
  2010. <PRE>
  2011.         void    sv_usepvn_mg(SV *sv, char *ptr, STRLEN len)</PRE>
  2012. <P></P>
  2013. <DT><STRONG><A NAME="item_sv_vcatpvfn">sv_vcatpvfn</A></STRONG><BR>
  2014. <DD>
  2015. Processes its arguments like <CODE>vsprintf</CODE> and appends the formatted output
  2016. to an SV.  Uses an array of SVs if the C style variable argument list is
  2017. missing (NULL).  When running with taint checks enabled, indicates via
  2018. <CODE>maybe_tainted</CODE> if results are untrustworthy (often due to the use of
  2019. locales).
  2020. <PRE>
  2021.         void    sv_vcatpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)</PRE>
  2022. <P></P>
  2023. <DT><STRONG><A NAME="item_sv_vsetpvfn">sv_vsetpvfn</A></STRONG><BR>
  2024. <DD>
  2025. Works like <CODE>vcatpvfn</CODE> but copies the text into the SV instead of
  2026. appending it.
  2027. <PRE>
  2028.         void    sv_vsetpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)</PRE>
  2029. <P></P>
  2030. <DT><STRONG><A NAME="item_THIS">THIS</A></STRONG><BR>
  2031. <DD>
  2032. Variable which is setup by <CODE>xsubpp</CODE> to designate the object in a C++ 
  2033. XSUB.  This is always the proper type for the C++ object.  See <A HREF="#item_CLASS"><CODE>CLASS</CODE></A> and 
  2034. <A HREF="../../lib/Pod/perlxs.html#using xs with c++">Using XS With C++ in the perlxs manpage</A>.
  2035. <PRE>
  2036.         (whatever)      THIS</PRE>
  2037. <P></P>
  2038. <DT><STRONG><A NAME="item_toLOWER">toLOWER</A></STRONG><BR>
  2039. <DD>
  2040. Converts the specified character to lowercase.
  2041. <PRE>
  2042.         char    toLOWER(char ch)</PRE>
  2043. <P></P>
  2044. <DT><STRONG><A NAME="item_toUPPER">toUPPER</A></STRONG><BR>
  2045. <DD>
  2046. Converts the specified character to uppercase.
  2047. <PRE>
  2048.         char    toUPPER(char ch)</PRE>
  2049. <P></P>
  2050. <DT><STRONG><A NAME="item_warn">warn</A></STRONG><BR>
  2051. <DD>
  2052. This is the XSUB-writer's interface to Perl's <A HREF="#item_warn"><CODE>warn</CODE></A> function.  Use this
  2053. function the same way you use the C <A HREF="../../lib/Pod/perlfunc.html#item_printf"><CODE>printf</CODE></A> function.  See
  2054. <A HREF="#item_croak"><CODE>croak</CODE></A>.
  2055. <PRE>
  2056.         void    warn(const char* pat, ...)</PRE>
  2057. <P></P>
  2058. <DT><STRONG><A NAME="item_XPUSHi">XPUSHi</A></STRONG><BR>
  2059. <DD>
  2060. Push an integer onto the stack, extending the stack if necessary.  Handles
  2061. 'set' magic. See <A HREF="#item_PUSHi"><CODE>PUSHi</CODE></A>.
  2062. <PRE>
  2063.         void    XPUSHi(IV iv)</PRE>
  2064. <P></P>
  2065. <DT><STRONG><A NAME="item_XPUSHn">XPUSHn</A></STRONG><BR>
  2066. <DD>
  2067. Push a double onto the stack, extending the stack if necessary.  Handles
  2068. 'set' magic.  See <A HREF="#item_PUSHn"><CODE>PUSHn</CODE></A>.
  2069. <PRE>
  2070.         void    XPUSHn(NV nv)</PRE>
  2071. <P></P>
  2072. <DT><STRONG><A NAME="item_XPUSHp">XPUSHp</A></STRONG><BR>
  2073. <DD>
  2074. Push a string onto the stack, extending the stack if necessary.  The <CODE>len</CODE>
  2075. indicates the length of the string.  Handles 'set' magic.  See
  2076. <A HREF="#item_PUSHp"><CODE>PUSHp</CODE></A>.
  2077. <PRE>
  2078.         void    XPUSHp(char* str, STRLEN len)</PRE>
  2079. <P></P>
  2080. <DT><STRONG><A NAME="item_XPUSHs">XPUSHs</A></STRONG><BR>
  2081. <DD>
  2082. Push an SV onto the stack, extending the stack if necessary.  Does not
  2083. handle 'set' magic.  See <A HREF="#item_PUSHs"><CODE>PUSHs</CODE></A>.
  2084. <PRE>
  2085.         void    XPUSHs(SV* sv)</PRE>
  2086. <P></P>
  2087. <DT><STRONG><A NAME="item_XPUSHu">XPUSHu</A></STRONG><BR>
  2088. <DD>
  2089. Push an unsigned integer onto the stack, extending the stack if necessary. 
  2090. See <A HREF="#item_PUSHu"><CODE>PUSHu</CODE></A>.
  2091. <PRE>
  2092.         void    XPUSHu(UV uv)</PRE>
  2093. <P></P>
  2094. <DT><STRONG><A NAME="item_XS">XS</A></STRONG><BR>
  2095. <DD>
  2096. Macro to declare an XSUB and its C parameter list.  This is handled by
  2097. <CODE>xsubpp</CODE>.
  2098. <P></P>
  2099. <DT><STRONG><A NAME="item_XSRETURN">XSRETURN</A></STRONG><BR>
  2100. <DD>
  2101. Return from XSUB, indicating number of items on the stack.  This is usually
  2102. handled by <CODE>xsubpp</CODE>.
  2103. <PRE>
  2104.         void    XSRETURN(int nitems)</PRE>
  2105. <P></P>
  2106. <DT><STRONG><A NAME="item_XSRETURN_EMPTY">XSRETURN_EMPTY</A></STRONG><BR>
  2107. <DD>
  2108. Return an empty list from an XSUB immediately.
  2109. <PRE>
  2110.                 XSRETURN_EMPTY;</PRE>
  2111. <P></P>
  2112. <DT><STRONG><A NAME="item_XSRETURN_IV">XSRETURN_IV</A></STRONG><BR>
  2113. <DD>
  2114. Return an integer from an XSUB immediately.  Uses <A HREF="#item_XST_mIV"><CODE>XST_mIV</CODE></A>.
  2115. <PRE>
  2116.         void    XSRETURN_IV(IV iv)</PRE>
  2117. <P></P>
  2118. <DT><STRONG><A NAME="item_XSRETURN_NO">XSRETURN_NO</A></STRONG><BR>
  2119. <DD>
  2120. Return <CODE>&PL_sv_no</CODE> from an XSUB immediately.  Uses <A HREF="#item_XST_mNO"><CODE>XST_mNO</CODE></A>.
  2121. <PRE>
  2122.                 XSRETURN_NO;</PRE>
  2123. <P></P>
  2124. <DT><STRONG><A NAME="item_XSRETURN_NV">XSRETURN_NV</A></STRONG><BR>
  2125. <DD>
  2126. Return an double from an XSUB immediately.  Uses <A HREF="#item_XST_mNV"><CODE>XST_mNV</CODE></A>.
  2127. <PRE>
  2128.         void    XSRETURN_NV(NV nv)</PRE>
  2129. <P></P>
  2130. <DT><STRONG><A NAME="item_XSRETURN_PV">XSRETURN_PV</A></STRONG><BR>
  2131. <DD>
  2132. Return a copy of a string from an XSUB immediately.  Uses <A HREF="#item_XST_mPV"><CODE>XST_mPV</CODE></A>.
  2133. <PRE>
  2134.         void    XSRETURN_PV(char* str)</PRE>
  2135. <P></P>
  2136. <DT><STRONG><A NAME="item_XSRETURN_UNDEF">XSRETURN_UNDEF</A></STRONG><BR>
  2137. <DD>
  2138. Return <CODE>&PL_sv_undef</CODE> from an XSUB immediately.  Uses <A HREF="#item_XST_mUNDEF"><CODE>XST_mUNDEF</CODE></A>.
  2139. <PRE>
  2140.                 XSRETURN_UNDEF;</PRE>
  2141. <P></P>
  2142. <DT><STRONG><A NAME="item_XSRETURN_YES">XSRETURN_YES</A></STRONG><BR>
  2143. <DD>
  2144. Return <CODE>&PL_sv_yes</CODE> from an XSUB immediately.  Uses <A HREF="#item_XST_mYES"><CODE>XST_mYES</CODE></A>.
  2145. <PRE>
  2146.                 XSRETURN_YES;</PRE>
  2147. <P></P>
  2148. <DT><STRONG><A NAME="item_XST_mIV">XST_mIV</A></STRONG><BR>
  2149. <DD>
  2150. Place an integer into the specified position <A HREF="../../lib/Pod/perlfunc.html#item_pos"><CODE>pos</CODE></A> on the stack.  The
  2151. value is stored in a new mortal SV.
  2152. <PRE>
  2153.         void    XST_mIV(int pos, IV iv)</PRE>
  2154. <P></P>
  2155. <DT><STRONG><A NAME="item_XST_mNO">XST_mNO</A></STRONG><BR>
  2156. <DD>
  2157. Place <CODE>&PL_sv_no</CODE> into the specified position <A HREF="../../lib/Pod/perlfunc.html#item_pos"><CODE>pos</CODE></A> on the
  2158. stack.
  2159. <PRE>
  2160.         void    XST_mNO(int pos)</PRE>
  2161. <P></P>
  2162. <DT><STRONG><A NAME="item_XST_mNV">XST_mNV</A></STRONG><BR>
  2163. <DD>
  2164. Place a double into the specified position <A HREF="../../lib/Pod/perlfunc.html#item_pos"><CODE>pos</CODE></A> on the stack.  The value
  2165. is stored in a new mortal SV.
  2166. <PRE>
  2167.         void    XST_mNV(int pos, NV nv)</PRE>
  2168. <P></P>
  2169. <DT><STRONG><A NAME="item_XST_mPV">XST_mPV</A></STRONG><BR>
  2170. <DD>
  2171. Place a copy of a string into the specified position <A HREF="../../lib/Pod/perlfunc.html#item_pos"><CODE>pos</CODE></A> on the stack. 
  2172. The value is stored in a new mortal SV.
  2173. <PRE>
  2174.         void    XST_mPV(int pos, char* str)</PRE>
  2175. <P></P>
  2176. <DT><STRONG><A NAME="item_XST_mUNDEF">XST_mUNDEF</A></STRONG><BR>
  2177. <DD>
  2178. Place <CODE>&PL_sv_undef</CODE> into the specified position <A HREF="../../lib/Pod/perlfunc.html#item_pos"><CODE>pos</CODE></A> on the
  2179. stack.
  2180. <PRE>
  2181.         void    XST_mUNDEF(int pos)</PRE>
  2182. <P></P>
  2183. <DT><STRONG><A NAME="item_XST_mYES">XST_mYES</A></STRONG><BR>
  2184. <DD>
  2185. Place <CODE>&PL_sv_yes</CODE> into the specified position <A HREF="../../lib/Pod/perlfunc.html#item_pos"><CODE>pos</CODE></A> on the
  2186. stack.
  2187. <PRE>
  2188.         void    XST_mYES(int pos)</PRE>
  2189. <P></P>
  2190. <DT><STRONG><A NAME="item_XS_VERSION">XS_VERSION</A></STRONG><BR>
  2191. <DD>
  2192. The version identifier for an XS module.  This is usually
  2193. handled automatically by <CODE>ExtUtils::MakeMaker</CODE>.  See <A HREF="#item_XS_VERSION_BOOTCHECK"><CODE>XS_VERSION_BOOTCHECK</CODE></A>.
  2194. <P></P>
  2195. <DT><STRONG><A NAME="item_XS_VERSION_BOOTCHECK">XS_VERSION_BOOTCHECK</A></STRONG><BR>
  2196. <DD>
  2197. Macro to verify that a PM module's $VERSION variable matches the XS
  2198. module's <A HREF="#item_XS_VERSION"><CODE>XS_VERSION</CODE></A> variable.  This is usually handled automatically by
  2199. <CODE>xsubpp</CODE>.  See <A HREF="../../lib/Pod/perlxs.html#the versioncheck: keyword">The VERSIONCHECK: Keyword in the perlxs manpage</A>.
  2200. <PRE>
  2201.                 XS_VERSION_BOOTCHECK;</PRE>
  2202. <P></P>
  2203. <DT><STRONG><A NAME="item_Zero">Zero</A></STRONG><BR>
  2204. <DD>
  2205. The XSUB-writer's interface to the C <CODE>memzero</CODE> function.  The <CODE>dest</CODE> is the
  2206. destination, <CODE>nitems</CODE> is the number of items, and <CODE>type</CODE> is the type.
  2207. <PRE>
  2208.         void    Zero(void* dest, int nitems, type)</PRE>
  2209. <P></P></DL>
  2210. <P>
  2211. <HR>
  2212. <H1><A NAME="authors">AUTHORS</A></H1>
  2213. <P>Until May 1997, this document was maintained by Jeff Okamoto
  2214. <<A HREF="mailto:okamoto@corp.hp.com">okamoto@corp.hp.com</A>>.  It is now maintained as part of Perl itself.</P>
  2215. <P>With lots of help and suggestions from Dean Roehrich, Malcolm Beattie,
  2216. Andreas Koenig, Paul Hudson, Ilya Zakharevich, Paul Marquess, Neil
  2217. Bowers, Matthew Green, Tim Bunce, Spider Boardman, Ulrich Pfeifer,
  2218. Stephen McCamant, and Gurusamy Sarathy.</P>
  2219. <P>API Listing originally by Dean Roehrich <<A HREF="mailto:roehrich@cray.com">roehrich@cray.com</A>>.</P>
  2220. <P>Updated to be autogenerated from comments in the source by Benjamin Stuhl.</P>
  2221. <P>
  2222. <HR>
  2223. <H1><A NAME="see also">SEE ALSO</A></H1>
  2224. <P>perlguts(1), perlxs(1), perlxstut(1), <CODE>perlintern(1)</CODE></P>
  2225. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  2226. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  2227. <STRONG><P CLASS=block> perlapi - autogenerated documentation for the perl public API</P></STRONG>
  2228. </TD></TR>
  2229. </TABLE>
  2230.  
  2231. </BODY>
  2232.  
  2233. </HTML>
  2234.