perl 5.003_06: t/op/each.t
[p5sagit/p5-mst-13.2.git] / pod / perlguts.pod
CommitLineData
a0d0e21e 1=head1 NAME
2
3perlguts - Perl's Internal Functions
4
5=head1 DESCRIPTION
6
7This document attempts to describe some of the internal functions of the
8Perl executable. It is far from complete and probably contains many errors.
9Please refer any questions or comments to the author below.
10
11=head1 Datatypes
12
13Perl has three typedefs that handle Perl's three main data types:
14
15 SV Scalar Value
16 AV Array Value
17 HV Hash Value
18
d1b91892 19Each typedef has specific routines that manipulate the various data types.
a0d0e21e 20
21=head2 What is an "IV"?
22
23Perl uses a special typedef IV which is large enough to hold either an
24integer or a pointer.
25
d1b91892 26Perl also uses two special typedefs, I32 and I16, which will always be at
27least 32-bits and 16-bits long, respectively.
a0d0e21e 28
5fb8527f 29=head2 Working with SVs
a0d0e21e 30
31An SV can be created and loaded with one command. There are four types of
32values that can be loaded: an integer value (IV), a double (NV), a string,
33(PV), and another scalar (SV).
34
35The four routines are:
36
37 SV* newSViv(IV);
38 SV* newSVnv(double);
39 SV* newSVpv(char*, int);
40 SV* newSVsv(SV*);
41
5fb8527f 42To change the value of an *already-existing* SV, there are five routines:
a0d0e21e 43
44 void sv_setiv(SV*, IV);
45 void sv_setnv(SV*, double);
46 void sv_setpvn(SV*, char*, int)
47 void sv_setpv(SV*, char*);
48 void sv_setsv(SV*, SV*);
49
50Notice that you can choose to specify the length of the string to be
d1b91892 51assigned by using C<sv_setpvn> or C<newSVpv>, or you may allow Perl to
cb1a09d0 52calculate the length by using C<sv_setpv> or by specifying 0 as the second
d1b91892 53argument to C<newSVpv>. Be warned, though, that Perl will determine the
a0d0e21e 54string's length by using C<strlen>, which depends on the string terminating
55with a NUL character.
56
57To access the actual value that an SV points to, you can use the macros:
58
59 SvIV(SV*)
60 SvNV(SV*)
61 SvPV(SV*, STRLEN len)
62
63which will automatically coerce the actual scalar type into an IV, double,
64or string.
65
66In the C<SvPV> macro, the length of the string returned is placed into the
67variable C<len> (this is a macro, so you do I<not> use C<&len>). If you do not
68care what the length of the data is, use the global variable C<na>. Remember,
69however, that Perl allows arbitrary strings of data that may both contain
5fb8527f 70NULs and not be terminated by a NUL.
a0d0e21e 71
72If you simply want to know if the scalar value is TRUE, you can use:
73
74 SvTRUE(SV*)
75
76Although Perl will automatically grow strings for you, if you need to force
77Perl to allocate more memory for your SV, you can use the macro
78
79 SvGROW(SV*, STRLEN newlen)
80
81which will determine if more memory needs to be allocated. If so, it will
82call the function C<sv_grow>. Note that C<SvGROW> can only increase, not
83decrease, the allocated memory of an SV.
84
85If you have an SV and want to know what kind of data Perl thinks is stored
86in it, you can use the following macros to check the type of SV you have.
87
88 SvIOK(SV*)
89 SvNOK(SV*)
90 SvPOK(SV*)
91
92You can get and set the current length of the string stored in an SV with
93the following macros:
94
95 SvCUR(SV*)
96 SvCUR_set(SV*, I32 val)
97
cb1a09d0 98You can also get a pointer to the end of the string stored in the SV
99with the macro:
100
101 SvEND(SV*)
102
103But note that these last three macros are valid only if C<SvPOK()> is true.
a0d0e21e 104
d1b91892 105If you want to append something to the end of string stored in an C<SV*>,
106you can use the following functions:
107
108 void sv_catpv(SV*, char*);
109 void sv_catpvn(SV*, char*, int);
110 void sv_catsv(SV*, SV*);
111
112The first function calculates the length of the string to be appended by
113using C<strlen>. In the second, you specify the length of the string
114yourself. The third function extends the string stored in the first SV
115with the string stored in the second SV. It also forces the second SV to
116be interpreted as a string.
117
a0d0e21e 118If you know the name of a scalar variable, you can get a pointer to its SV
119by using the following:
120
121 SV* perl_get_sv("varname", FALSE);
122
123This returns NULL if the variable does not exist.
124
d1b91892 125If you want to know if this variable (or any other SV) is actually C<defined>,
a0d0e21e 126you can call:
127
128 SvOK(SV*)
129
130The scalar C<undef> value is stored in an SV instance called C<sv_undef>. Its
131address can be used whenever an C<SV*> is needed.
132
133There are also the two values C<sv_yes> and C<sv_no>, which contain Boolean
134TRUE and FALSE values, respectively. Like C<sv_undef>, their addresses can
135be used whenever an C<SV*> is needed.
136
137Do not be fooled into thinking that C<(SV *) 0> is the same as C<&sv_undef>.
138Take this code:
139
140 SV* sv = (SV*) 0;
141 if (I-am-to-return-a-real-value) {
142 sv = sv_2mortal(newSViv(42));
143 }
144 sv_setsv(ST(0), sv);
145
146This code tries to return a new SV (which contains the value 42) if it should
147return a real value, or undef otherwise. Instead it has returned a null
148pointer which, somewhere down the line, will cause a segmentation violation,
149or just weird results. Change the zero to C<&sv_undef> in the first line and
150all will be well.
151
152To free an SV that you've created, call C<SvREFCNT_dec(SV*)>. Normally this
153call is not necessary. See the section on B<MORTALITY>.
154
d1b91892 155=head2 What's Really Stored in an SV?
a0d0e21e 156
157Recall that the usual method of determining the type of scalar you have is
d1b91892 158to use C<Sv*OK> macros. Since a scalar can be both a number and a string,
159usually these macros will always return TRUE and calling the C<Sv*V>
a0d0e21e 160macros will do the appropriate conversion of string to integer/double or
161integer/double to string.
162
163If you I<really> need to know if you have an integer, double, or string
164pointer in an SV, you can use the following three macros instead:
165
166 SvIOKp(SV*)
167 SvNOKp(SV*)
168 SvPOKp(SV*)
169
170These will tell you if you truly have an integer, double, or string pointer
d1b91892 171stored in your SV. The "p" stands for private.
a0d0e21e 172
d1b91892 173In general, though, it's best to just use the C<Sv*V> macros.
a0d0e21e 174
5fb8527f 175=head2 Working with AVs
a0d0e21e 176
177There are two ways to create and load an AV. The first method just creates
178an empty AV:
179
180 AV* newAV();
181
5fb8527f 182The second method both creates the AV and initially populates it with SVs:
a0d0e21e 183
184 AV* av_make(I32 num, SV **ptr);
185
5fb8527f 186The second argument points to an array containing C<num> C<SV*>s. Once the
187AV has been created, the SVs can be destroyed, if so desired.
a0d0e21e 188
5fb8527f 189Once the AV has been created, the following operations are possible on AVs:
a0d0e21e 190
191 void av_push(AV*, SV*);
192 SV* av_pop(AV*);
193 SV* av_shift(AV*);
194 void av_unshift(AV*, I32 num);
195
196These should be familiar operations, with the exception of C<av_unshift>.
197This routine adds C<num> elements at the front of the array with the C<undef>
198value. You must then use C<av_store> (described below) to assign values
199to these new elements.
200
201Here are some other functions:
202
d1b91892 203 I32 av_len(AV*); /* Returns highest index value in array */
a0d0e21e 204
205 SV** av_fetch(AV*, I32 key, I32 lval);
d1b91892 206 /* Fetches value at key offset, but it stores an undef value
207 at the offset if lval is non-zero */
a0d0e21e 208 SV** av_store(AV*, I32 key, SV* val);
209 /* Stores val at offset key */
210
5fb8527f 211Take note that C<av_fetch> and C<av_store> return C<SV**>s, not C<SV*>s.
d1b91892 212
a0d0e21e 213 void av_clear(AV*);
214 /* Clear out all elements, but leave the array */
215 void av_undef(AV*);
216 /* Undefines the array, removing all elements */
cb1a09d0 217 void av_extend(AV*, I32 key);
218 /* Extend the array to a total of key elements */
a0d0e21e 219
220If you know the name of an array variable, you can get a pointer to its AV
221by using the following:
222
223 AV* perl_get_av("varname", FALSE);
224
225This returns NULL if the variable does not exist.
226
5fb8527f 227=head2 Working with HVs
a0d0e21e 228
229To create an HV, you use the following routine:
230
231 HV* newHV();
232
5fb8527f 233Once the HV has been created, the following operations are possible on HVs:
a0d0e21e 234
235 SV** hv_store(HV*, char* key, U32 klen, SV* val, U32 hash);
236 SV** hv_fetch(HV*, char* key, U32 klen, I32 lval);
237
238The C<klen> parameter is the length of the key being passed in. The C<val>
239argument contains the SV pointer to the scalar being stored, and C<hash> is
240the pre-computed hash value (zero if you want C<hv_store> to calculate it
241for you). The C<lval> parameter indicates whether this fetch is actually a
242part of a store operation.
243
5fb8527f 244Remember that C<hv_store> and C<hv_fetch> return C<SV**>s and not just
a0d0e21e 245C<SV*>. In order to access the scalar value, you must first dereference
246the return value. However, you should check to make sure that the return
247value is not NULL before dereferencing it.
248
249These two functions check if a hash table entry exists, and deletes it.
250
251 bool hv_exists(HV*, char* key, U32 klen);
d1b91892 252 SV* hv_delete(HV*, char* key, U32 klen, I32 flags);
a0d0e21e 253
254And more miscellaneous functions:
255
256 void hv_clear(HV*);
257 /* Clears all entries in hash table */
258 void hv_undef(HV*);
259 /* Undefines the hash table */
260
d1b91892 261Perl keeps the actual data in linked list of structures with a typedef of HE.
262These contain the actual key and value pointers (plus extra administrative
263overhead). The key is a string pointer; the value is an C<SV*>. However,
264once you have an C<HE*>, to get the actual key and value, use the routines
265specified below.
266
a0d0e21e 267 I32 hv_iterinit(HV*);
268 /* Prepares starting point to traverse hash table */
269 HE* hv_iternext(HV*);
270 /* Get the next entry, and return a pointer to a
271 structure that has both the key and value */
272 char* hv_iterkey(HE* entry, I32* retlen);
273 /* Get the key from an HE structure and also return
274 the length of the key string */
cb1a09d0 275 SV* hv_iterval(HV*, HE* entry);
a0d0e21e 276 /* Return a SV pointer to the value of the HE
277 structure */
cb1a09d0 278 SV* hv_iternextsv(HV*, char** key, I32* retlen);
d1b91892 279 /* This convenience routine combines hv_iternext,
280 hv_iterkey, and hv_iterval. The key and retlen
281 arguments are return values for the key and its
282 length. The value is returned in the SV* argument */
a0d0e21e 283
284If you know the name of a hash variable, you can get a pointer to its HV
285by using the following:
286
287 HV* perl_get_hv("varname", FALSE);
288
289This returns NULL if the variable does not exist.
290
291The hash algorithm, for those who are interested, is:
292
293 i = klen;
294 hash = 0;
295 s = key;
296 while (i--)
297 hash = hash * 33 + *s++;
298
299=head2 References
300
d1b91892 301References are a special type of scalar that point to other data types
302(including references).
a0d0e21e 303
304To create a reference, use the following command:
305
cb1a09d0 306 SV* newRV((SV*) thing);
a0d0e21e 307
d1b91892 308The C<thing> argument can be any of an C<SV*>, C<AV*>, or C<HV*>. Once
309you have a reference, you can use the following macro to dereference the
310reference:
a0d0e21e 311
312 SvRV(SV*)
313
314then call the appropriate routines, casting the returned C<SV*> to either an
d1b91892 315C<AV*> or C<HV*>, if required.
a0d0e21e 316
d1b91892 317To determine if an SV is a reference, you can use the following macro:
a0d0e21e 318
319 SvROK(SV*)
320
d1b91892 321To actually discover what the reference refers to, you must use the following
322macro and then check the value returned.
323
324 SvTYPE(SvRV(SV*))
325
326The most useful types that will be returned are:
327
328 SVt_IV Scalar
329 SVt_NV Scalar
330 SVt_PV Scalar
331 SVt_PVAV Array
332 SVt_PVHV Hash
333 SVt_PVCV Code
334 SVt_PVMG Blessed Scalar
335
cb1a09d0 336=head2 Blessed References and Class Objects
337
338References are also used to support object-oriented programming. In the
339OO lexicon, an object is simply a reference that has been blessed into a
340package (or class). Once blessed, the programmer may now use the reference
341to access the various methods in the class.
342
343A reference can be blessed into a package with the following function:
344
345 SV* sv_bless(SV* sv, HV* stash);
346
347The C<sv> argument must be a reference. The C<stash> argument specifies
5fb8527f 348which class the reference will belong to. See the L<"Stashes">
cb1a09d0 349for information on converting class names into stashes.
350
351/* Still under construction */
352
353Upgrades rv to reference if not already one. Creates new SV for rv to
354point to.
355If classname is non-null, the SV is blessed into the specified class.
356SV is returned.
357
358 SV* newSVrv(SV* rv, char* classname);
359
360Copies integer or double into an SV whose reference is rv. SV is blessed
361if classname is non-null.
362
363 SV* sv_setref_iv(SV* rv, char* classname, IV iv);
364 SV* sv_setref_nv(SV* rv, char* classname, NV iv);
365
366Copies pointer (I<not a string!>) into an SV whose reference is rv.
367SV is blessed if classname is non-null.
368
369 SV* sv_setref_pv(SV* rv, char* classname, PV iv);
370
371Copies string into an SV whose reference is rv.
372Set length to 0 to let Perl calculate the string length.
373SV is blessed if classname is non-null.
374
375 SV* sv_setref_pvn(SV* rv, char* classname, PV iv, int length);
376
377 int sv_isa(SV* sv, char* name);
378 int sv_isobject(SV* sv);
379
380=head1 Creating New Variables
381
382To create a new Perl variable, which can be accessed from your Perl script,
383use the following routines, depending on the variable type.
384
385 SV* perl_get_sv("varname", TRUE);
386 AV* perl_get_av("varname", TRUE);
387 HV* perl_get_hv("varname", TRUE);
388
389Notice the use of TRUE as the second parameter. The new variable can now
390be set, using the routines appropriate to the data type.
391
392There are additional bits that may be OR'ed with the TRUE argument to enable
393certain extra features. Those bits are:
394
395 0x02 Marks the variable as multiply defined, thus preventing the
5fb8527f 396 "Identifier <varname> used only once: possible typo" warning.
cb1a09d0 397 0x04 Issues a "Had to create <varname> unexpectedly" warning if
398 the variable didn't actually exist. This is useful if
399 you expected the variable to already exist and want to propagate
400 this warning back to the user.
401
402If the C<varname> argument does not contain a package specifier, it is
403created in the current package.
404
5fb8527f 405=head1 XSUBs and the Argument Stack
a0d0e21e 406
407The XSUB mechanism is a simple way for Perl programs to access C subroutines.
408An XSUB routine will have a stack that contains the arguments from the Perl
409program, and a way to map from the Perl data structures to a C equivalent.
410
411The stack arguments are accessible through the C<ST(n)> macro, which returns
412the C<n>'th stack argument. Argument 0 is the first argument passed in the
413Perl subroutine call. These arguments are C<SV*>, and can be used anywhere
414an C<SV*> is used.
415
416Most of the time, output from the C routine can be handled through use of
417the RETVAL and OUTPUT directives. However, there are some cases where the
418argument stack is not already long enough to handle all the return values.
419An example is the POSIX tzname() call, which takes no arguments, but returns
420two, the local timezone's standard and summer time abbreviations.
421
422To handle this situation, the PPCODE directive is used and the stack is
423extended using the macro:
424
425 EXTEND(sp, num);
426
427where C<sp> is the stack pointer, and C<num> is the number of elements the
428stack should be extended by.
429
430Now that there is room on the stack, values can be pushed on it using the
5fb8527f 431macros to push IVs, doubles, strings, and SV pointers respectively:
a0d0e21e 432
433 PUSHi(IV)
434 PUSHn(double)
435 PUSHp(char*, I32)
436 PUSHs(SV*)
437
438And now the Perl program calling C<tzname>, the two values will be assigned
439as in:
440
441 ($standard_abbrev, $summer_abbrev) = POSIX::tzname;
442
443An alternate (and possibly simpler) method to pushing values on the stack is
444to use the macros:
445
446 XPUSHi(IV)
447 XPUSHn(double)
448 XPUSHp(char*, I32)
449 XPUSHs(SV*)
450
451These macros automatically adjust the stack for you, if needed.
452
8e07c86e 453For more information, consult L<perlxs>.
d1b91892 454
a0d0e21e 455=head1 Mortality
456
457In Perl, values are normally "immortal" -- that is, they are not freed unless
458explicitly done so (via the Perl C<undef> call or other routines in Perl
459itself).
460
d1b91892 461Add cruft about reference counts.
cb1a09d0 462 int SvREFCNT(SV* sv);
463 void SvREFCNT_inc(SV* sv);
464 void SvREFCNT_dec(SV* sv);
d1b91892 465
5fb8527f 466In the above example with C<tzname>, we needed to create two new SVs to push
a0d0e21e 467onto the argument stack, that being the two strings. However, we don't want
5fb8527f 468these new SVs to stick around forever because they will eventually be
469copied into the SVs that hold the two scalar variables.
a0d0e21e 470
471An SV (or AV or HV) that is "mortal" acts in all ways as a normal "immortal"
472SV, AV, or HV, but is only valid in the "current context". When the Perl
473interpreter leaves the current context, the mortal SV, AV, or HV is
474automatically freed. Generally the "current context" means a single
475Perl statement.
476
477To create a mortal variable, use the functions:
478
479 SV* sv_newmortal()
480 SV* sv_2mortal(SV*)
481 SV* sv_mortalcopy(SV*)
482
483The first call creates a mortal SV, the second converts an existing SV to
484a mortal SV, the third creates a mortal copy of an existing SV.
485
5fb8527f 486The mortal routines are not just for SVs -- AVs and HVs can be made mortal
a0d0e21e 487by passing their address (and casting them to C<SV*>) to the C<sv_2mortal> or
488C<sv_mortalcopy> routines.
489
5fb8527f 490From Ilya:
d1b91892 491Beware that the sv_2mortal() call is eventually equivalent to
492svREFCNT_dec(). A value can happily be mortal in two different contexts,
493and it will be svREFCNT_dec()ed twice, once on exit from these
494contexts. It can also be mortal twice in the same context. This means
495that you should be very careful to make a value mortal exactly as many
496times as it is needed. The value that go to the Perl stack I<should>
497be mortal.
a0d0e21e 498
d1b91892 499You should be careful about creating mortal variables. It is possible for
500strange things to happen should you make the same value mortal within
501multiple contexts.
a0d0e21e 502
cb1a09d0 503=head1 Stashes
a0d0e21e 504
505A stash is a hash table (associative array) that contains all of the
506different objects that are contained within a package. Each key of the
d1b91892 507stash is a symbol name (shared by all the different types of objects
508that have the same name), and each value in the hash table is called a
509GV (for Glob Value). This GV in turn contains references to the various
510objects of that name, including (but not limited to) the following:
cb1a09d0 511
a0d0e21e 512 Scalar Value
513 Array Value
514 Hash Value
515 File Handle
516 Directory Handle
517 Format
518 Subroutine
519
d1b91892 520Perl stores various stashes in a separate GV structure (for global
521variable) but represents them with an HV structure. The keys in this
5fb8527f 522larger GV are the various package names; the values are the C<GV*>s
d1b91892 523which are stashes. It may help to think of a stash purely as an HV,
524and that the term "GV" means the global variable hash.
a0d0e21e 525
d1b91892 526To get the stash pointer for a particular package, use the function:
a0d0e21e 527
528 HV* gv_stashpv(char* name, I32 create)
529 HV* gv_stashsv(SV*, I32 create)
530
531The first function takes a literal string, the second uses the string stored
d1b91892 532in the SV. Remember that a stash is just a hash table, so you get back an
cb1a09d0 533C<HV*>. The C<create> flag will create a new package if it is set.
a0d0e21e 534
535The name that C<gv_stash*v> wants is the name of the package whose symbol table
536you want. The default package is called C<main>. If you have multiply nested
d1b91892 537packages, pass their names to C<gv_stash*v>, separated by C<::> as in the Perl
538language itself.
a0d0e21e 539
540Alternately, if you have an SV that is a blessed reference, you can find
541out the stash pointer by using:
542
543 HV* SvSTASH(SvRV(SV*));
544
545then use the following to get the package name itself:
546
547 char* HvNAME(HV* stash);
548
549If you need to return a blessed value to your Perl script, you can use the
550following function:
551
552 SV* sv_bless(SV*, HV* stash)
553
554where the first argument, an C<SV*>, must be a reference, and the second
555argument is a stash. The returned C<SV*> can now be used in the same way
556as any other SV.
557
d1b91892 558For more information on references and blessings, consult L<perlref>.
559
a0d0e21e 560=head1 Magic
561
d1b91892 562[This section still under construction. Ignore everything here. Post no
563bills. Everything not permitted is forbidden.]
564
d1b91892 565Any SV may be magical, that is, it has special features that a normal
566SV does not have. These features are stored in the SV structure in a
5fb8527f 567linked list of C<struct magic>s, typedef'ed to C<MAGIC>.
d1b91892 568
569 struct magic {
570 MAGIC* mg_moremagic;
571 MGVTBL* mg_virtual;
572 U16 mg_private;
573 char mg_type;
574 U8 mg_flags;
575 SV* mg_obj;
576 char* mg_ptr;
577 I32 mg_len;
578 };
579
580Note this is current as of patchlevel 0, and could change at any time.
581
582=head2 Assigning Magic
583
584Perl adds magic to an SV using the sv_magic function:
585
586 void sv_magic(SV* sv, SV* obj, int how, char* name, I32 namlen);
587
588The C<sv> argument is a pointer to the SV that is to acquire a new magical
589feature.
590
591If C<sv> is not already magical, Perl uses the C<SvUPGRADE> macro to
592set the C<SVt_PVMG> flag for the C<sv>. Perl then continues by adding
593it to the beginning of the linked list of magical features. Any prior
594entry of the same type of magic is deleted. Note that this can be
5fb8527f 595overridden, and multiple instances of the same type of magic can be
d1b91892 596associated with an SV.
597
598The C<name> and C<namlem> arguments are used to associate a string with
599the magic, typically the name of a variable. C<namlem> is stored in the
5fb8527f 600C<mg_len> field and if C<name> is non-null and C<namlem> E<gt>= 0 a malloc'd
d1b91892 601copy of the name is stored in C<mg_ptr> field.
602
603The sv_magic function uses C<how> to determine which, if any, predefined
604"Magic Virtual Table" should be assigned to the C<mg_virtual> field.
cb1a09d0 605See the "Magic Virtual Table" section below. The C<how> argument is also
606stored in the C<mg_type> field.
d1b91892 607
608The C<obj> argument is stored in the C<mg_obj> field of the C<MAGIC>
609structure. If it is not the same as the C<sv> argument, the reference
610count of the C<obj> object is incremented. If it is the same, or if
611the C<how> argument is "#", or if it is a null pointer, then C<obj> is
612merely stored, without the reference count being incremented.
613
cb1a09d0 614There is also a function to add magic to an C<HV>:
615
616 void hv_magic(HV *hv, GV *gv, int how);
617
618This simply calls C<sv_magic> and coerces the C<gv> argument into an C<SV>.
619
620To remove the magic from an SV, call the function sv_unmagic:
621
622 void sv_unmagic(SV *sv, int type);
623
624The C<type> argument should be equal to the C<how> value when the C<SV>
625was initially made magical.
626
d1b91892 627=head2 Magic Virtual Tables
628
629The C<mg_virtual> field in the C<MAGIC> structure is a pointer to a
630C<MGVTBL>, which is a structure of function pointers and stands for
631"Magic Virtual Table" to handle the various operations that might be
632applied to that variable.
633
634The C<MGVTBL> has five pointers to the following routine types:
635
636 int (*svt_get)(SV* sv, MAGIC* mg);
637 int (*svt_set)(SV* sv, MAGIC* mg);
638 U32 (*svt_len)(SV* sv, MAGIC* mg);
639 int (*svt_clear)(SV* sv, MAGIC* mg);
640 int (*svt_free)(SV* sv, MAGIC* mg);
641
642This MGVTBL structure is set at compile-time in C<perl.h> and there are
643currently 19 types (or 21 with overloading turned on). These different
644structures contain pointers to various routines that perform additional
645actions depending on which function is being called.
646
647 Function pointer Action taken
648 ---------------- ------------
649 svt_get Do something after the value of the SV is retrieved.
650 svt_set Do something after the SV is assigned a value.
651 svt_len Report on the SV's length.
652 svt_clear Clear something the SV represents.
653 svt_free Free any extra storage associated with the SV.
654
655For instance, the MGVTBL structure called C<vtbl_sv> (which corresponds
656to an C<mg_type> of '\0') contains:
657
658 { magic_get, magic_set, magic_len, 0, 0 }
659
660Thus, when an SV is determined to be magical and of type '\0', if a get
661operation is being performed, the routine C<magic_get> is called. All
662the various routines for the various magical types begin with C<magic_>.
663
664The current kinds of Magic Virtual Tables are:
665
666 mg_type MGVTBL Type of magicalness
667 ------- ------ -------------------
668 \0 vtbl_sv Regexp???
669 A vtbl_amagic Operator Overloading
670 a vtbl_amagicelem Operator Overloading
671 c 0 Used in Operator Overloading
672 B vtbl_bm Boyer-Moore???
673 E vtbl_env %ENV hash
674 e vtbl_envelem %ENV hash element
675 g vtbl_mglob Regexp /g flag???
676 I vtbl_isa @ISA array
677 i vtbl_isaelem @ISA array element
678 L 0 (but sets RMAGICAL) Perl Module/Debugger???
679 l vtbl_dbline Debugger?
680 P vtbl_pack Tied Array or Hash
681 p vtbl_packelem Tied Array or Hash element
682 q vtbl_packelem Tied Scalar or Handle
683 S vtbl_sig Signal Hash
684 s vtbl_sigelem Signal Hash element
685 t vtbl_taint Taintedness
686 U vtbl_uvar ???
687 v vtbl_vec Vector
688 x vtbl_substr Substring???
689 * vtbl_glob GV???
690 # vtbl_arylen Array Length
691 . vtbl_pos $. scalar variable
692 ~ Reserved for extensions, but multiple extensions may clash
693
694When an upper-case and lower-case letter both exist in the table, then the
695upper-case letter is used to represent some kind of composite type (a list
696or a hash), and the lower-case letter is used to represent an element of
697that composite type.
698
699=head2 Finding Magic
700
701 MAGIC* mg_find(SV*, int type); /* Finds the magic pointer of that type */
702
703This routine returns a pointer to the C<MAGIC> structure stored in the SV.
704If the SV does not have that magical feature, C<NULL> is returned. Also,
705if the SV is not of type SVt_PVMG, Perl may core-dump.
706
707 int mg_copy(SV* sv, SV* nsv, char* key, STRLEN klen);
708
709This routine checks to see what types of magic C<sv> has. If the mg_type
710field is an upper-case letter, then the mg_obj is copied to C<nsv>, but
711the mg_type field is changed to be the lower-case letter.
a0d0e21e 712
5fb8527f 713=head1 Double-Typed SVs
a0d0e21e 714
715Scalar variables normally contain only one type of value, an integer,
716double, pointer, or reference. Perl will automatically convert the
717actual scalar data from the stored type into the requested type.
718
719Some scalar variables contain more than one type of scalar data. For
720example, the variable C<$!> contains either the numeric value of C<errno>
d1b91892 721or its string equivalent from either C<strerror> or C<sys_errlist[]>.
a0d0e21e 722
723To force multiple data values into an SV, you must do two things: use the
724C<sv_set*v> routines to add the additional scalar type, then set a flag
725so that Perl will believe it contains more than one type of data. The
726four macros to set the flags are:
727
728 SvIOK_on
729 SvNOK_on
730 SvPOK_on
731 SvROK_on
732
733The particular macro you must use depends on which C<sv_set*v> routine
734you called first. This is because every C<sv_set*v> routine turns on
735only the bit for the particular type of data being set, and turns off
736all the rest.
737
738For example, to create a new Perl variable called "dberror" that contains
739both the numeric and descriptive string error values, you could use the
740following code:
741
742 extern int dberror;
743 extern char *dberror_list;
744
745 SV* sv = perl_get_sv("dberror", TRUE);
746 sv_setiv(sv, (IV) dberror);
747 sv_setpv(sv, dberror_list[dberror]);
748 SvIOK_on(sv);
749
750If the order of C<sv_setiv> and C<sv_setpv> had been reversed, then the
751macro C<SvPOK_on> would need to be called instead of C<SvIOK_on>.
752
753=head1 Calling Perl Routines from within C Programs
754
755There are four routines that can be used to call a Perl subroutine from
756within a C program. These four are:
757
758 I32 perl_call_sv(SV*, I32);
759 I32 perl_call_pv(char*, I32);
760 I32 perl_call_method(char*, I32);
761 I32 perl_call_argv(char*, I32, register char**);
762
d1b91892 763The routine most often used is C<perl_call_sv>. The C<SV*> argument
764contains either the name of the Perl subroutine to be called, or a
765reference to the subroutine. The second argument consists of flags
766that control the context in which the subroutine is called, whether
767or not the subroutine is being passed arguments, how errors should be
768trapped, and how to treat return values.
a0d0e21e 769
770All four routines return the number of arguments that the subroutine returned
771on the Perl stack.
772
d1b91892 773When using any of these routines (except C<perl_call_argv>), the programmer
774must manipulate the Perl stack. These include the following macros and
775functions:
a0d0e21e 776
777 dSP
778 PUSHMARK()
779 PUTBACK
780 SPAGAIN
781 ENTER
782 SAVETMPS
783 FREETMPS
784 LEAVE
785 XPUSH*()
cb1a09d0 786 POP*()
a0d0e21e 787
788For more information, consult L<perlcall>.
789
790=head1 Memory Allocation
791
d1b91892 792It is strongly suggested that you use the version of malloc that is distributed
793with Perl. It keeps pools of various sizes of unallocated memory in order to
794more quickly satisfy allocation requests.
795However, on some platforms, it may cause spurious malloc or free errors.
796
797 New(x, pointer, number, type);
798 Newc(x, pointer, number, type, cast);
799 Newz(x, pointer, number, type);
800
801These three macros are used to initially allocate memory. The first argument
802C<x> was a "magic cookie" that was used to keep track of who called the macro,
803to help when debugging memory problems. However, the current code makes no
804use of this feature (Larry has switched to using a run-time memory checker),
805so this argument can be any number.
806
807The second argument C<pointer> will point to the newly allocated memory.
808The third and fourth arguments C<number> and C<type> specify how many of
809the specified type of data structure should be allocated. The argument
810C<type> is passed to C<sizeof>. The final argument to C<Newc>, C<cast>,
811should be used if the C<pointer> argument is different from the C<type>
812argument.
813
814Unlike the C<New> and C<Newc> macros, the C<Newz> macro calls C<memzero>
815to zero out all the newly allocated memory.
816
817 Renew(pointer, number, type);
818 Renewc(pointer, number, type, cast);
819 Safefree(pointer)
820
821These three macros are used to change a memory buffer size or to free a
822piece of memory no longer needed. The arguments to C<Renew> and C<Renewc>
823match those of C<New> and C<Newc> with the exception of not needing the
824"magic cookie" argument.
825
826 Move(source, dest, number, type);
827 Copy(source, dest, number, type);
828 Zero(dest, number, type);
829
830These three macros are used to move, copy, or zero out previously allocated
831memory. The C<source> and C<dest> arguments point to the source and
832destination starting points. Perl will move, copy, or zero out C<number>
833instances of the size of the C<type> data structure (using the C<sizeof>
834function).
a0d0e21e 835
cb1a09d0 836=head1 API LISTING
a0d0e21e 837
cb1a09d0 838This is a listing of functions, macros, flags, and variables that may be
839useful to extension writers or that may be found while reading other
840extensions.
a0d0e21e 841
cb1a09d0 842=over 8
a0d0e21e 843
cb1a09d0 844=item AvFILL
845
846See C<av_len>.
847
848=item av_clear
849
850Clears an array, making it empty.
851
852 void av_clear _((AV* ar));
853
854=item av_extend
855
856Pre-extend an array. The C<key> is the index to which the array should be
857extended.
858
859 void av_extend _((AV* ar, I32 key));
860
861=item av_fetch
862
863Returns the SV at the specified index in the array. The C<key> is the
864index. If C<lval> is set then the fetch will be part of a store. Check
865that the return value is non-null before dereferencing it to a C<SV*>.
866
867 SV** av_fetch _((AV* ar, I32 key, I32 lval));
868
869=item av_len
870
871Returns the highest index in the array. Returns -1 if the array is empty.
872
873 I32 av_len _((AV* ar));
874
875=item av_make
876
5fb8527f 877Creates a new AV and populates it with a list of SVs. The SVs are copied
878into the array, so they may be freed after the call to av_make. The new AV
879will have a refcount of 1.
cb1a09d0 880
881 AV* av_make _((I32 size, SV** svp));
882
883=item av_pop
884
885Pops an SV off the end of the array. Returns C<&sv_undef> if the array is
886empty.
887
888 SV* av_pop _((AV* ar));
889
890=item av_push
891
5fb8527f 892Pushes an SV onto the end of the array. The array will grow automatically
893to accommodate the addition.
cb1a09d0 894
895 void av_push _((AV* ar, SV* val));
896
897=item av_shift
898
899Shifts an SV off the beginning of the array.
900
901 SV* av_shift _((AV* ar));
902
903=item av_store
904
905Stores an SV in an array. The array index is specified as C<key>. The
906return value will be null if the operation failed, otherwise it can be
907dereferenced to get the original C<SV*>.
908
909 SV** av_store _((AV* ar, I32 key, SV* val));
910
911=item av_undef
912
913Undefines the array.
914
915 void av_undef _((AV* ar));
916
917=item av_unshift
918
5fb8527f 919Unshift an SV onto the beginning of the array. The array will grow
920automatically to accommodate the addition.
cb1a09d0 921
922 void av_unshift _((AV* ar, I32 num));
923
924=item CLASS
925
926Variable which is setup by C<xsubpp> to indicate the class name for a C++ XS
5fb8527f 927constructor. This is always a C<char*>. See C<THIS> and
928L<perlxs/"Using XS With C++">.
cb1a09d0 929
930=item Copy
931
932The XSUB-writer's interface to the C C<memcpy> function. The C<s> is the
933source, C<d> is the destination, C<n> is the number of items, and C<t> is
934the type.
935
936 (void) Copy( s, d, n, t );
937
938=item croak
939
940This is the XSUB-writer's interface to Perl's C<die> function. Use this
941function the same way you use the C C<printf> function. See C<warn>.
942
943=item CvSTASH
944
945Returns the stash of the CV.
946
947 HV * CvSTASH( SV* sv )
948
949=item DBsingle
950
951When Perl is run in debugging mode, with the B<-d> switch, this SV is a
952boolean which indicates whether subs are being single-stepped.
5fb8527f 953Single-stepping is automatically turned on after every step. This is the C
954variable which corresponds to Perl's $DB::single variable. See C<DBsub>.
cb1a09d0 955
956=item DBsub
957
958When Perl is run in debugging mode, with the B<-d> switch, this GV contains
5fb8527f 959the SV which holds the name of the sub being debugged. This is the C
960variable which corresponds to Perl's $DB::sub variable. See C<DBsingle>.
cb1a09d0 961The sub name can be found by
962
963 SvPV( GvSV( DBsub ), na )
964
5fb8527f 965=item DBtrace
966
967Trace variable used when Perl is run in debugging mode, with the B<-d>
968switch. This is the C variable which corresponds to Perl's $DB::trace
969variable. See C<DBsingle>.
970
cb1a09d0 971=item dMARK
972
5fb8527f 973Declare a stack marker variable, C<mark>, for the XSUB. See C<MARK> and
974C<dORIGMARK>.
cb1a09d0 975
976=item dORIGMARK
977
978Saves the original stack mark for the XSUB. See C<ORIGMARK>.
979
5fb8527f 980=item dowarn
981
982The C variable which corresponds to Perl's $^W warning variable.
983
cb1a09d0 984=item dSP
985
5fb8527f 986Declares a stack pointer variable, C<sp>, for the XSUB. See C<SP>.
cb1a09d0 987
988=item dXSARGS
989
990Sets up stack and mark pointers for an XSUB, calling dSP and dMARK. This is
991usually handled automatically by C<xsubpp>. Declares the C<items> variable
992to indicate the number of items on the stack.
993
5fb8527f 994=item dXSI32
995
996Sets up the C<ix> variable for an XSUB which has aliases. This is usually
997handled automatically by C<xsubpp>.
998
999=item dXSI32
1000
1001Sets up the C<ix> variable for an XSUB which has aliases. This is usually
1002handled automatically by C<xsubpp>.
1003
cb1a09d0 1004=item ENTER
1005
1006Opening bracket on a callback. See C<LEAVE> and L<perlcall>.
1007
1008 ENTER;
1009
1010=item EXTEND
1011
1012Used to extend the argument stack for an XSUB's return values.
1013
1014 EXTEND( sp, int x );
1015
1016=item FREETMPS
1017
1018Closing bracket for temporaries on a callback. See C<SAVETMPS> and
1019L<perlcall>.
1020
1021 FREETMPS;
1022
1023=item G_ARRAY
1024
1025Used to indicate array context. See C<GIMME> and L<perlcall>.
1026
1027=item G_DISCARD
1028
1029Indicates that arguments returned from a callback should be discarded. See
1030L<perlcall>.
1031
1032=item G_EVAL
1033
1034Used to force a Perl C<eval> wrapper around a callback. See L<perlcall>.
1035
1036=item GIMME
1037
1038The XSUB-writer's equivalent to Perl's C<wantarray>. Returns C<G_SCALAR> or
1039C<G_ARRAY> for scalar or array context.
1040
1041=item G_NOARGS
1042
1043Indicates that no arguments are being sent to a callback. See L<perlcall>.
1044
1045=item G_SCALAR
1046
1047Used to indicate scalar context. See C<GIMME> and L<perlcall>.
1048
1049=item gv_stashpv
1050
1051Returns a pointer to the stash for a specified package. If C<create> is set
1052then the package will be created if it does not already exist. If C<create>
1053is not set and the package does not exist then NULL is returned.
1054
1055 HV* gv_stashpv _((char* name, I32 create));
1056
1057=item gv_stashsv
1058
1059Returns a pointer to the stash for a specified package. See C<gv_stashpv>.
1060
1061 HV* gv_stashsv _((SV* sv, I32 create));
1062
1063=item GvSV
1064
1065Return the SV from the GV.
1066
1067=item he_free
1068
1069Releases a hash entry from an iterator. See C<hv_iternext>.
1070
1071=item hv_clear
1072
1073Clears a hash, making it empty.
1074
1075 void hv_clear _((HV* tb));
1076
1077=item hv_delete
1078
1079Deletes a key/value pair in the hash. The value SV is removed from the hash
5fb8527f 1080and returned to the caller. The C<klen> is the length of the key. The
cb1a09d0 1081C<flags> value will normally be zero; if set to G_DISCARD then null will be
1082returned.
1083
1084 SV* hv_delete _((HV* tb, char* key, U32 klen, I32 flags));
1085
1086=item hv_exists
1087
1088Returns a boolean indicating whether the specified hash key exists. The
5fb8527f 1089C<klen> is the length of the key.
cb1a09d0 1090
1091 bool hv_exists _((HV* tb, char* key, U32 klen));
1092
1093=item hv_fetch
1094
1095Returns the SV which corresponds to the specified key in the hash. The
5fb8527f 1096C<klen> is the length of the key. If C<lval> is set then the fetch will be
cb1a09d0 1097part of a store. Check that the return value is non-null before
1098dereferencing it to a C<SV*>.
1099
1100 SV** hv_fetch _((HV* tb, char* key, U32 klen, I32 lval));
1101
1102=item hv_iterinit
1103
1104Prepares a starting point to traverse a hash table.
1105
1106 I32 hv_iterinit _((HV* tb));
1107
1108=item hv_iterkey
1109
1110Returns the key from the current position of the hash iterator. See
1111C<hv_iterinit>.
1112
1113 char* hv_iterkey _((HE* entry, I32* retlen));
1114
1115=item hv_iternext
1116
1117Returns entries from a hash iterator. See C<hv_iterinit>.
1118
1119 HE* hv_iternext _((HV* tb));
1120
1121=item hv_iternextsv
1122
1123Performs an C<hv_iternext>, C<hv_iterkey>, and C<hv_iterval> in one
1124operation.
1125
1126 SV * hv_iternextsv _((HV* hv, char** key, I32* retlen));
1127
1128=item hv_iterval
1129
1130Returns the value from the current position of the hash iterator. See
1131C<hv_iterkey>.
1132
1133 SV* hv_iterval _((HV* tb, HE* entry));
1134
1135=item hv_magic
1136
1137Adds magic to a hash. See C<sv_magic>.
1138
1139 void hv_magic _((HV* hv, GV* gv, int how));
1140
1141=item HvNAME
1142
1143Returns the package name of a stash. See C<SvSTASH>, C<CvSTASH>.
1144
1145 char *HvNAME (HV* stash)
1146
1147=item hv_store
1148
1149Stores an SV in a hash. The hash key is specified as C<key> and C<klen> is
1150the length of the key. The C<hash> parameter is the pre-computed hash
1151value; if it is zero then Perl will compute it. The return value will be
1152null if the operation failed, otherwise it can be dereferenced to get the
1153original C<SV*>.
1154
1155 SV** hv_store _((HV* tb, char* key, U32 klen, SV* val, U32 hash));
1156
1157=item hv_undef
1158
1159Undefines the hash.
1160
1161 void hv_undef _((HV* tb));
1162
1163=item isALNUM
1164
1165Returns a boolean indicating whether the C C<char> is an ascii alphanumeric
5fb8527f 1166character.
cb1a09d0 1167
1168 int isALNUM (char c)
1169
1170=item isALPHA
1171
5fb8527f 1172Returns a boolean indicating whether the C C<char> is an ascii alphabetic
cb1a09d0 1173character.
1174
1175 int isALPHA (char c)
1176
1177=item isDIGIT
1178
1179Returns a boolean indicating whether the C C<char> is an ascii digit.
1180
1181 int isDIGIT (char c)
1182
1183=item isLOWER
1184
1185Returns a boolean indicating whether the C C<char> is a lowercase character.
1186
1187 int isLOWER (char c)
1188
1189=item isSPACE
1190
1191Returns a boolean indicating whether the C C<char> is whitespace.
1192
1193 int isSPACE (char c)
1194
1195=item isUPPER
1196
1197Returns a boolean indicating whether the C C<char> is an uppercase character.
1198
1199 int isUPPER (char c)
1200
1201=item items
1202
1203Variable which is setup by C<xsubpp> to indicate the number of items on the
5fb8527f 1204stack. See L<perlxs/"Variable-length Parameter Lists">.
1205
1206=item ix
1207
1208Variable which is setup by C<xsubpp> to indicate which of an XSUB's aliases
1209was used to invoke it. See L<perlxs/"The ALIAS: Keyword">.
cb1a09d0 1210
1211=item LEAVE
1212
1213Closing bracket on a callback. See C<ENTER> and L<perlcall>.
1214
1215 LEAVE;
1216
1217=item MARK
1218
5fb8527f 1219Stack marker variable for the XSUB. See C<dMARK>.
cb1a09d0 1220
1221=item mg_clear
1222
1223Clear something magical that the SV represents. See C<sv_magic>.
1224
1225 int mg_clear _((SV* sv));
1226
1227=item mg_copy
1228
1229Copies the magic from one SV to another. See C<sv_magic>.
1230
1231 int mg_copy _((SV *, SV *, char *, STRLEN));
1232
1233=item mg_find
1234
1235Finds the magic pointer for type matching the SV. See C<sv_magic>.
1236
1237 MAGIC* mg_find _((SV* sv, int type));
1238
1239=item mg_free
1240
1241Free any magic storage used by the SV. See C<sv_magic>.
1242
1243 int mg_free _((SV* sv));
1244
1245=item mg_get
1246
1247Do magic after a value is retrieved from the SV. See C<sv_magic>.
1248
1249 int mg_get _((SV* sv));
1250
1251=item mg_len
1252
1253Report on the SV's length. See C<sv_magic>.
1254
1255 U32 mg_len _((SV* sv));
1256
1257=item mg_magical
1258
1259Turns on the magical status of an SV. See C<sv_magic>.
1260
1261 void mg_magical _((SV* sv));
1262
1263=item mg_set
1264
1265Do magic after a value is assigned to the SV. See C<sv_magic>.
1266
1267 int mg_set _((SV* sv));
1268
1269=item Move
1270
1271The XSUB-writer's interface to the C C<memmove> function. The C<s> is the
1272source, C<d> is the destination, C<n> is the number of items, and C<t> is
1273the type.
1274
1275 (void) Move( s, d, n, t );
1276
1277=item na
1278
1279A variable which may be used with C<SvPV> to tell Perl to calculate the
1280string length.
1281
1282=item New
1283
1284The XSUB-writer's interface to the C C<malloc> function.
1285
1286 void * New( x, void *ptr, int size, type )
1287
1288=item Newc
1289
1290The XSUB-writer's interface to the C C<malloc> function, with cast.
1291
1292 void * Newc( x, void *ptr, int size, type, cast )
1293
1294=item Newz
1295
1296The XSUB-writer's interface to the C C<malloc> function. The allocated
1297memory is zeroed with C<memzero>.
1298
1299 void * Newz( x, void *ptr, int size, type )
1300
1301=item newAV
1302
1303Creates a new AV. The refcount is set to 1.
1304
1305 AV* newAV _((void));
1306
1307=item newHV
1308
1309Creates a new HV. The refcount is set to 1.
1310
1311 HV* newHV _((void));
1312
1313=item newRV
1314
1315Creates an RV wrapper for an SV. The refcount for the original SV is
1316incremented.
1317
1318 SV* newRV _((SV* ref));
1319
1320=item newSV
1321
1322Creates a new SV. The C<len> parameter indicates the number of bytes of
1323pre-allocated string space the SV should have. The refcount for the new SV
1324is set to 1.
1325
1326 SV* newSV _((STRLEN len));
1327
1328=item newSViv
1329
1330Creates a new SV and copies an integer into it. The refcount for the SV is
1331set to 1.
1332
1333 SV* newSViv _((IV i));
1334
1335=item newSVnv
1336
1337Creates a new SV and copies a double into it. The refcount for the SV is
1338set to 1.
1339
1340 SV* newSVnv _((NV i));
1341
1342=item newSVpv
1343
1344Creates a new SV and copies a string into it. The refcount for the SV is
1345set to 1. If C<len> is zero then Perl will compute the length.
1346
1347 SV* newSVpv _((char* s, STRLEN len));
1348
1349=item newSVrv
1350
1351Creates a new SV for the RV, C<rv>, to point to. If C<rv> is not an RV then
5fb8527f 1352it will be upgraded to one. If C<classname> is non-null then the new SV will
cb1a09d0 1353be blessed in the specified package. The new SV is returned and its
1354refcount is 1.
1355
1356 SV* newSVrv _((SV* rv, char* classname));
1357
1358=item newSVsv
1359
5fb8527f 1360Creates a new SV which is an exact duplicate of the original SV.
cb1a09d0 1361
1362 SV* newSVsv _((SV* old));
1363
1364=item newXS
1365
1366Used by C<xsubpp> to hook up XSUBs as Perl subs.
1367
1368=item newXSproto
1369
1370Used by C<xsubpp> to hook up XSUBs as Perl subs. Adds Perl prototypes to
1371the subs.
1372
1373=item Nullav
1374
1375Null AV pointer.
1376
1377=item Nullch
1378
1379Null character pointer.
1380
1381=item Nullcv
1382
1383Null CV pointer.
1384
1385=item Nullhv
1386
1387Null HV pointer.
1388
1389=item Nullsv
1390
1391Null SV pointer.
1392
1393=item ORIGMARK
1394
1395The original stack mark for the XSUB. See C<dORIGMARK>.
1396
1397=item perl_alloc
1398
1399Allocates a new Perl interpreter. See L<perlembed>.
1400
1401=item perl_call_argv
1402
1403Performs a callback to the specified Perl sub. See L<perlcall>.
1404
1405 I32 perl_call_argv _((char* subname, I32 flags, char** argv));
1406
1407=item perl_call_method
1408
1409Performs a callback to the specified Perl method. The blessed object must
1410be on the stack. See L<perlcall>.
1411
1412 I32 perl_call_method _((char* methname, I32 flags));
1413
1414=item perl_call_pv
1415
1416Performs a callback to the specified Perl sub. See L<perlcall>.
1417
1418 I32 perl_call_pv _((char* subname, I32 flags));
1419
1420=item perl_call_sv
1421
1422Performs a callback to the Perl sub whose name is in the SV. See
1423L<perlcall>.
1424
1425 I32 perl_call_sv _((SV* sv, I32 flags));
1426
1427=item perl_construct
1428
1429Initializes a new Perl interpreter. See L<perlembed>.
1430
1431=item perl_destruct
1432
1433Shuts down a Perl interpreter. See L<perlembed>.
1434
1435=item perl_eval_sv
1436
1437Tells Perl to C<eval> the string in the SV.
1438
1439 I32 perl_eval_sv _((SV* sv, I32 flags));
1440
1441=item perl_free
1442
1443Releases a Perl interpreter. See L<perlembed>.
1444
1445=item perl_get_av
1446
1447Returns the AV of the specified Perl array. If C<create> is set and the
1448Perl variable does not exist then it will be created. If C<create> is not
1449set and the variable does not exist then null is returned.
1450
1451 AV* perl_get_av _((char* name, I32 create));
1452
1453=item perl_get_cv
1454
1455Returns the CV of the specified Perl sub. If C<create> is set and the Perl
1456variable does not exist then it will be created. If C<create> is not
1457set and the variable does not exist then null is returned.
1458
1459 CV* perl_get_cv _((char* name, I32 create));
1460
1461=item perl_get_hv
1462
1463Returns the HV of the specified Perl hash. If C<create> is set and the Perl
1464variable does not exist then it will be created. If C<create> is not
1465set and the variable does not exist then null is returned.
1466
1467 HV* perl_get_hv _((char* name, I32 create));
1468
1469=item perl_get_sv
1470
1471Returns the SV of the specified Perl scalar. If C<create> is set and the
1472Perl variable does not exist then it will be created. If C<create> is not
1473set and the variable does not exist then null is returned.
1474
1475 SV* perl_get_sv _((char* name, I32 create));
1476
1477=item perl_parse
1478
1479Tells a Perl interpreter to parse a Perl script. See L<perlembed>.
1480
1481=item perl_require_pv
1482
1483Tells Perl to C<require> a module.
1484
1485 void perl_require_pv _((char* pv));
1486
1487=item perl_run
1488
1489Tells a Perl interpreter to run. See L<perlembed>.
1490
1491=item POPi
1492
1493Pops an integer off the stack.
1494
1495 int POPi();
1496
1497=item POPl
1498
1499Pops a long off the stack.
1500
1501 long POPl();
1502
1503=item POPp
1504
1505Pops a string off the stack.
1506
1507 char * POPp();
1508
1509=item POPn
1510
1511Pops a double off the stack.
1512
1513 double POPn();
1514
1515=item POPs
1516
1517Pops an SV off the stack.
1518
1519 SV* POPs();
1520
1521=item PUSHMARK
1522
1523Opening bracket for arguments on a callback. See C<PUTBACK> and L<perlcall>.
1524
1525 PUSHMARK(p)
1526
1527=item PUSHi
1528
1529Push an integer onto the stack. The stack must have room for this element.
1530See C<XPUSHi>.
1531
1532 PUSHi(int d)
1533
1534=item PUSHn
1535
1536Push a double onto the stack. The stack must have room for this element.
1537See C<XPUSHn>.
1538
1539 PUSHn(double d)
1540
1541=item PUSHp
1542
1543Push a string onto the stack. The stack must have room for this element.
1544The C<len> indicates the length of the string. See C<XPUSHp>.
1545
1546 PUSHp(char *c, int len )
1547
1548=item PUSHs
1549
1550Push an SV onto the stack. The stack must have room for this element. See
1551C<XPUSHs>.
1552
1553 PUSHs(sv)
1554
1555=item PUTBACK
1556
1557Closing bracket for XSUB arguments. This is usually handled by C<xsubpp>.
1558See C<PUSHMARK> and L<perlcall> for other uses.
1559
1560 PUTBACK;
1561
1562=item Renew
1563
1564The XSUB-writer's interface to the C C<realloc> function.
1565
1566 void * Renew( void *ptr, int size, type )
1567
1568=item Renewc
1569
1570The XSUB-writer's interface to the C C<realloc> function, with cast.
1571
1572 void * Renewc( void *ptr, int size, type, cast )
1573
1574=item RETVAL
1575
1576Variable which is setup by C<xsubpp> to hold the return value for an XSUB.
5fb8527f 1577This is always the proper type for the XSUB.
1578See L<perlxs/"The RETVAL Variable">.
cb1a09d0 1579
1580=item safefree
1581
1582The XSUB-writer's interface to the C C<free> function.
1583
1584=item safemalloc
1585
1586The XSUB-writer's interface to the C C<malloc> function.
1587
1588=item saferealloc
1589
1590The XSUB-writer's interface to the C C<realloc> function.
1591
1592=item savepv
1593
1594Copy a string to a safe spot. This does not use an SV.
1595
1596 char* savepv _((char* sv));
1597
1598=item savepvn
1599
1600Copy a string to a safe spot. The C<len> indicates number of bytes to
1601copy. This does not use an SV.
1602
1603 char* savepvn _((char* sv, I32 len));
1604
1605=item SAVETMPS
1606
1607Opening bracket for temporaries on a callback. See C<FREETMPS> and
1608L<perlcall>.
1609
1610 SAVETMPS;
1611
1612=item SP
1613
1614Stack pointer. This is usually handled by C<xsubpp>. See C<dSP> and
1615C<SPAGAIN>.
1616
1617=item SPAGAIN
1618
1619Refetch the stack pointer. Used after a callback. See L<perlcall>.
1620
1621 SPAGAIN;
1622
1623=item ST
1624
1625Used to access elements on the XSUB's stack.
1626
1627 SV* ST(int x)
1628
1629=item strEQ
1630
1631Test two strings to see if they are equal. Returns true or false.
1632
1633 int strEQ( char *s1, char *s2 )
1634
1635=item strGE
1636
1637Test two strings to see if the first, C<s1>, is greater than or equal to the
1638second, C<s2>. Returns true or false.
1639
1640 int strGE( char *s1, char *s2 )
1641
1642=item strGT
1643
1644Test two strings to see if the first, C<s1>, is greater than the second,
1645C<s2>. Returns true or false.
1646
1647 int strGT( char *s1, char *s2 )
1648
1649=item strLE
1650
1651Test two strings to see if the first, C<s1>, is less than or equal to the
1652second, C<s2>. Returns true or false.
1653
1654 int strLE( char *s1, char *s2 )
1655
1656=item strLT
1657
1658Test two strings to see if the first, C<s1>, is less than the second,
1659C<s2>. Returns true or false.
1660
1661 int strLT( char *s1, char *s2 )
1662
1663=item strNE
1664
1665Test two strings to see if they are different. Returns true or false.
1666
1667 int strNE( char *s1, char *s2 )
1668
1669=item strnEQ
1670
1671Test two strings to see if they are equal. The C<len> parameter indicates
1672the number of bytes to compare. Returns true or false.
1673
1674 int strnEQ( char *s1, char *s2 )
1675
1676=item strnNE
1677
1678Test two strings to see if they are different. The C<len> parameter
1679indicates the number of bytes to compare. Returns true or false.
1680
1681 int strnNE( char *s1, char *s2, int len )
1682
1683=item sv_2mortal
1684
1685Marks an SV as mortal. The SV will be destroyed when the current context
1686ends.
1687
1688 SV* sv_2mortal _((SV* sv));
1689
1690=item sv_bless
1691
1692Blesses an SV into a specified package. The SV must be an RV. The package
1693must be designated by its stash (see C<gv_stashpv()>). The refcount of the
1694SV is unaffected.
1695
1696 SV* sv_bless _((SV* sv, HV* stash));
1697
1698=item sv_catpv
1699
1700Concatenates the string onto the end of the string which is in the SV.
1701
1702 void sv_catpv _((SV* sv, char* ptr));
1703
1704=item sv_catpvn
1705
1706Concatenates the string onto the end of the string which is in the SV. The
1707C<len> indicates number of bytes to copy.
1708
1709 void sv_catpvn _((SV* sv, char* ptr, STRLEN len));
1710
1711=item sv_catsv
1712
5fb8527f 1713Concatenates the string from SV C<ssv> onto the end of the string in SV
cb1a09d0 1714C<dsv>.
1715
1716 void sv_catsv _((SV* dsv, SV* ssv));
1717
5fb8527f 1718=item sv_cmp
1719
1720Compares the strings in two SVs. Returns -1, 0, or 1 indicating whether the
1721string in C<sv1> is less than, equal to, or greater than the string in
1722C<sv2>.
1723
1724 I32 sv_cmp _((SV* sv1, SV* sv2));
1725
1726=item sv_cmp
1727
1728Compares the strings in two SVs. Returns -1, 0, or 1 indicating whether the
1729string in C<sv1> is less than, equal to, or greater than the string in
1730C<sv2>.
1731
1732 I32 sv_cmp _((SV* sv1, SV* sv2));
1733
cb1a09d0 1734=item SvCUR
1735
1736Returns the length of the string which is in the SV. See C<SvLEN>.
1737
1738 int SvCUR (SV* sv)
1739
1740=item SvCUR_set
1741
1742Set the length of the string which is in the SV. See C<SvCUR>.
1743
1744 SvCUR_set (SV* sv, int val )
1745
5fb8527f 1746=item sv_dec
1747
1748Autodecrement of the value in the SV.
1749
1750 void sv_dec _((SV* sv));
1751
1752=item sv_dec
1753
1754Autodecrement of the value in the SV.
1755
1756 void sv_dec _((SV* sv));
1757
cb1a09d0 1758=item SvEND
1759
1760Returns a pointer to the last character in the string which is in the SV.
1761See C<SvCUR>. Access the character as
1762
1763 *SvEND(sv)
1764
5fb8527f 1765=item sv_eq
1766
1767Returns a boolean indicating whether the strings in the two SVs are
1768identical.
1769
1770 I32 sv_eq _((SV* sv1, SV* sv2));
1771
cb1a09d0 1772=item SvGROW
1773
5fb8527f 1774Expands the character buffer in the SV. Calls C<sv_grow> to perform the
1775expansion if necessary. Returns a pointer to the character buffer.
cb1a09d0 1776
1777 char * SvGROW( SV* sv, int len )
1778
5fb8527f 1779=item sv_grow
1780
1781Expands the character buffer in the SV. This will use C<sv_unref> and will
1782upgrade the SV to C<SVt_PV>. Returns a pointer to the character buffer.
1783Use C<SvGROW>.
1784
1785=item sv_inc
1786
1787Autoincrement of the value in the SV.
1788
1789 void sv_inc _((SV* sv));
1790
cb1a09d0 1791=item SvIOK
1792
1793Returns a boolean indicating whether the SV contains an integer.
1794
1795 int SvIOK (SV* SV)
1796
1797=item SvIOK_off
1798
1799Unsets the IV status of an SV.
1800
1801 SvIOK_off (SV* sv)
1802
1803=item SvIOK_on
1804
1805Tells an SV that it is an integer.
1806
1807 SvIOK_on (SV* sv)
1808
5fb8527f 1809=item SvIOK_only
1810
1811Tells an SV that it is an integer and disables all other OK bits.
1812
1813 SvIOK_on (SV* sv)
1814
1815=item SvIOK_only
1816
1817Tells an SV that it is an integer and disables all other OK bits.
1818
1819 SvIOK_on (SV* sv)
1820
cb1a09d0 1821=item SvIOKp
1822
1823Returns a boolean indicating whether the SV contains an integer. Checks the
1824B<private> setting. Use C<SvIOK>.
1825
1826 int SvIOKp (SV* SV)
1827
1828=item sv_isa
1829
1830Returns a boolean indicating whether the SV is blessed into the specified
1831class. This does not know how to check for subtype, so it doesn't work in
1832an inheritance relationship.
1833
1834 int sv_isa _((SV* sv, char* name));
1835
1836=item SvIV
1837
1838Returns the integer which is in the SV.
1839
1840 int SvIV (SV* sv)
1841
1842=item sv_isobject
1843
1844Returns a boolean indicating whether the SV is an RV pointing to a blessed
1845object. If the SV is not an RV, or if the object is not blessed, then this
1846will return false.
1847
1848 int sv_isobject _((SV* sv));
1849
1850=item SvIVX
1851
1852Returns the integer which is stored in the SV.
1853
1854 int SvIVX (SV* sv);
1855
1856=item SvLEN
1857
1858Returns the size of the string buffer in the SV. See C<SvCUR>.
1859
1860 int SvLEN (SV* sv)
1861
5fb8527f 1862=item sv_len
1863
1864Returns the length of the string in the SV. Use C<SvCUR>.
1865
1866 STRLEN sv_len _((SV* sv));
1867
1868=item sv_len
1869
1870Returns the length of the string in the SV. Use C<SvCUR>.
1871
1872 STRLEN sv_len _((SV* sv));
1873
cb1a09d0 1874=item sv_magic
1875
1876Adds magic to an SV.
1877
1878 void sv_magic _((SV* sv, SV* obj, int how, char* name, I32 namlen));
1879
1880=item sv_mortalcopy
1881
1882Creates a new SV which is a copy of the original SV. The new SV is marked
1883as mortal.
1884
1885 SV* sv_mortalcopy _((SV* oldsv));
1886
1887=item SvOK
1888
1889Returns a boolean indicating whether the value is an SV.
1890
1891 int SvOK (SV* sv)
1892
1893=item sv_newmortal
1894
1895Creates a new SV which is mortal. The refcount of the SV is set to 1.
1896
1897 SV* sv_newmortal _((void));
1898
1899=item sv_no
1900
1901This is the C<false> SV. See C<sv_yes>. Always refer to this as C<&sv_no>.
1902
1903=item SvNIOK
1904
1905Returns a boolean indicating whether the SV contains a number, integer or
1906double.
1907
1908 int SvNIOK (SV* SV)
1909
1910=item SvNIOK_off
1911
1912Unsets the NV/IV status of an SV.
1913
1914 SvNIOK_off (SV* sv)
1915
1916=item SvNIOKp
1917
1918Returns a boolean indicating whether the SV contains a number, integer or
1919double. Checks the B<private> setting. Use C<SvNIOK>.
1920
1921 int SvNIOKp (SV* SV)
1922
1923=item SvNOK
1924
1925Returns a boolean indicating whether the SV contains a double.
1926
1927 int SvNOK (SV* SV)
1928
1929=item SvNOK_off
1930
1931Unsets the NV status of an SV.
1932
1933 SvNOK_off (SV* sv)
1934
1935=item SvNOK_on
1936
1937Tells an SV that it is a double.
1938
1939 SvNOK_on (SV* sv)
1940
5fb8527f 1941=item SvNOK_only
1942
1943Tells an SV that it is a double and disables all other OK bits.
1944
1945 SvNOK_on (SV* sv)
1946
1947=item SvNOK_only
1948
1949Tells an SV that it is a double and disables all other OK bits.
1950
1951 SvNOK_on (SV* sv)
1952
cb1a09d0 1953=item SvNOKp
1954
1955Returns a boolean indicating whether the SV contains a double. Checks the
1956B<private> setting. Use C<SvNOK>.
1957
1958 int SvNOKp (SV* SV)
1959
1960=item SvNV
1961
1962Returns the double which is stored in the SV.
1963
1964 double SvNV (SV* sv);
1965
1966=item SvNVX
1967
1968Returns the double which is stored in the SV.
1969
1970 double SvNVX (SV* sv);
1971
1972=item SvPOK
1973
1974Returns a boolean indicating whether the SV contains a character string.
1975
1976 int SvPOK (SV* SV)
1977
1978=item SvPOK_off
1979
1980Unsets the PV status of an SV.
1981
1982 SvPOK_off (SV* sv)
1983
1984=item SvPOK_on
1985
1986Tells an SV that it is a string.
1987
1988 SvPOK_on (SV* sv)
1989
5fb8527f 1990=item SvPOK_only
1991
1992Tells an SV that it is a string and disables all other OK bits.
1993
1994 SvPOK_on (SV* sv)
1995
1996=item SvPOK_only
1997
1998Tells an SV that it is a string and disables all other OK bits.
1999
2000 SvPOK_on (SV* sv)
2001
cb1a09d0 2002=item SvPOKp
2003
2004Returns a boolean indicating whether the SV contains a character string.
2005Checks the B<private> setting. Use C<SvPOK>.
2006
2007 int SvPOKp (SV* SV)
2008
2009=item SvPV
2010
2011Returns a pointer to the string in the SV, or a stringified form of the SV
2012if the SV does not contain a string. If C<len> is C<na> then Perl will
2013handle the length on its own.
2014
2015 char * SvPV (SV* sv, int len )
2016
2017=item SvPVX
2018
2019Returns a pointer to the string in the SV. The SV must contain a string.
2020
2021 char * SvPVX (SV* sv)
2022
2023=item SvREFCNT
2024
2025Returns the value of the object's refcount.
2026
2027 int SvREFCNT (SV* sv);
2028
2029=item SvREFCNT_dec
2030
2031Decrements the refcount of the given SV.
2032
2033 void SvREFCNT_dec (SV* sv)
2034
2035=item SvREFCNT_inc
2036
2037Increments the refcount of the given SV.
2038
2039 void SvREFCNT_inc (SV* sv)
2040
2041=item SvROK
2042
2043Tests if the SV is an RV.
2044
2045 int SvROK (SV* sv)
2046
2047=item SvROK_off
2048
2049Unsets the RV status of an SV.
2050
2051 SvROK_off (SV* sv)
2052
2053=item SvROK_on
2054
2055Tells an SV that it is an RV.
2056
2057 SvROK_on (SV* sv)
2058
2059=item SvRV
2060
2061Dereferences an RV to return the SV.
2062
2063 SV* SvRV (SV* sv);
2064
2065=item sv_setiv
2066
2067Copies an integer into the given SV.
2068
2069 void sv_setiv _((SV* sv, IV num));
2070
2071=item sv_setnv
2072
2073Copies a double into the given SV.
2074
2075 void sv_setnv _((SV* sv, double num));
2076
2077=item sv_setpv
2078
2079Copies a string into an SV. The string must be null-terminated.
2080
2081 void sv_setpv _((SV* sv, char* ptr));
2082
2083=item sv_setpvn
2084
2085Copies a string into an SV. The C<len> parameter indicates the number of
2086bytes to be copied.
2087
2088 void sv_setpvn _((SV* sv, char* ptr, STRLEN len));
2089
2090=item sv_setref_iv
2091
5fb8527f 2092Copies an integer into a new SV, optionally blessing the SV. The C<rv>
2093argument will be upgraded to an RV. That RV will be modified to point to
2094the new SV. The C<classname> argument indicates the package for the
2095blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
2096will be returned and will have a refcount of 1.
cb1a09d0 2097
2098 SV* sv_setref_iv _((SV *rv, char *classname, IV iv));
2099
2100=item sv_setref_nv
2101
5fb8527f 2102Copies a double into a new SV, optionally blessing the SV. The C<rv>
2103argument will be upgraded to an RV. That RV will be modified to point to
2104the new SV. The C<classname> argument indicates the package for the
2105blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
2106will be returned and will have a refcount of 1.
cb1a09d0 2107
2108 SV* sv_setref_nv _((SV *rv, char *classname, double nv));
2109
2110=item sv_setref_pv
2111
5fb8527f 2112Copies a pointer into a new SV, optionally blessing the SV. The C<rv>
2113argument will be upgraded to an RV. That RV will be modified to point to
2114the new SV. If the C<pv> argument is NULL then C<sv_undef> will be placed
2115into the SV. The C<classname> argument indicates the package for the
2116blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
2117will be returned and will have a refcount of 1.
cb1a09d0 2118
2119 SV* sv_setref_pv _((SV *rv, char *classname, void* pv));
2120
2121Do not use with integral Perl types such as HV, AV, SV, CV, because those
2122objects will become corrupted by the pointer copy process.
2123
2124Note that C<sv_setref_pvn> copies the string while this copies the pointer.
2125
2126=item sv_setref_pvn
2127
5fb8527f 2128Copies a string into a new SV, optionally blessing the SV. The length of the
2129string must be specified with C<n>. The C<rv> argument will be upgraded to
2130an RV. That RV will be modified to point to the new SV. The C<classname>
cb1a09d0 2131argument indicates the package for the blessing. Set C<classname> to
2132C<Nullch> to avoid the blessing. The new SV will be returned and will have
2133a refcount of 1.
2134
2135 SV* sv_setref_pvn _((SV *rv, char *classname, char* pv, I32 n));
2136
2137Note that C<sv_setref_pv> copies the pointer while this copies the string.
2138
2139=item sv_setsv
2140
2141Copies the contents of the source SV C<ssv> into the destination SV C<dsv>.
5fb8527f 2142The source SV may be destroyed if it is mortal.
cb1a09d0 2143
2144 void sv_setsv _((SV* dsv, SV* ssv));
2145
2146=item SvSTASH
2147
2148Returns the stash of the SV.
2149
2150 HV * SvSTASH (SV* sv)
2151
2152=item SVt_IV
2153
2154Integer type flag for scalars. See C<svtype>.
2155
2156=item SVt_PV
2157
2158Pointer type flag for scalars. See C<svtype>.
2159
2160=item SVt_PVAV
2161
2162Type flag for arrays. See C<svtype>.
2163
2164=item SVt_PVCV
2165
2166Type flag for code refs. See C<svtype>.
2167
2168=item SVt_PVHV
2169
2170Type flag for hashes. See C<svtype>.
2171
2172=item SVt_PVMG
2173
2174Type flag for blessed scalars. See C<svtype>.
2175
2176=item SVt_NV
2177
2178Double type flag for scalars. See C<svtype>.
2179
2180=item SvTRUE
2181
2182Returns a boolean indicating whether Perl would evaluate the SV as true or
2183false, defined or undefined.
2184
2185 int SvTRUE (SV* sv)
2186
2187=item SvTYPE
2188
2189Returns the type of the SV. See C<svtype>.
2190
2191 svtype SvTYPE (SV* sv)
2192
2193=item svtype
2194
2195An enum of flags for Perl types. These are found in the file B<sv.h> in the
2196C<svtype> enum. Test these flags with the C<SvTYPE> macro.
2197
2198=item SvUPGRADE
2199
5fb8527f 2200Used to upgrade an SV to a more complex form. Uses C<sv_upgrade> to perform
2201the upgrade if necessary. See C<svtype>.
2202
2203 bool SvUPGRADE _((SV* sv, svtype mt));
2204
2205=item sv_upgrade
2206
2207Upgrade an SV to a more complex form. Use C<SvUPGRADE>. See C<svtype>.
cb1a09d0 2208
2209=item sv_undef
2210
2211This is the C<undef> SV. Always refer to this as C<&sv_undef>.
2212
5fb8527f 2213=item sv_unref
2214
2215Unsets the RV status of the SV, and decrements the refcount of whatever was
2216being referenced by the RV. This can almost be thought of as a reversal of
2217C<newSVrv>. See C<SvROK_off>.
2218
2219 void sv_unref _((SV* sv));
2220
cb1a09d0 2221=item sv_usepvn
2222
2223Tells an SV to use C<ptr> to find its string value. Normally the string is
5fb8527f 2224stored inside the SV but sv_usepvn allows the SV to use an outside string.
2225The C<ptr> should point to memory that was allocated by C<malloc>. The
cb1a09d0 2226string length, C<len>, must be supplied. This function will realloc the
2227memory pointed to by C<ptr>, so that pointer should not be freed or used by
2228the programmer after giving it to sv_usepvn.
2229
2230 void sv_usepvn _((SV* sv, char* ptr, STRLEN len));
2231
2232=item sv_yes
2233
2234This is the C<true> SV. See C<sv_no>. Always refer to this as C<&sv_yes>.
2235
2236=item THIS
2237
2238Variable which is setup by C<xsubpp> to designate the object in a C++ XSUB.
2239This is always the proper type for the C++ object. See C<CLASS> and
5fb8527f 2240L<perlxs/"Using XS With C++">.
cb1a09d0 2241
2242=item toLOWER
2243
2244Converts the specified character to lowercase.
2245
2246 int toLOWER (char c)
2247
2248=item toUPPER
2249
2250Converts the specified character to uppercase.
2251
2252 int toUPPER (char c)
2253
2254=item warn
2255
2256This is the XSUB-writer's interface to Perl's C<warn> function. Use this
2257function the same way you use the C C<printf> function. See C<croak()>.
2258
2259=item XPUSHi
2260
2261Push an integer onto the stack, extending the stack if necessary. See
2262C<PUSHi>.
2263
2264 XPUSHi(int d)
2265
2266=item XPUSHn
2267
2268Push a double onto the stack, extending the stack if necessary. See
2269C<PUSHn>.
2270
2271 XPUSHn(double d)
2272
2273=item XPUSHp
2274
2275Push a string onto the stack, extending the stack if necessary. The C<len>
2276indicates the length of the string. See C<PUSHp>.
2277
2278 XPUSHp(char *c, int len)
2279
2280=item XPUSHs
2281
2282Push an SV onto the stack, extending the stack if necessary. See C<PUSHs>.
2283
2284 XPUSHs(sv)
2285
5fb8527f 2286=item XS
2287
2288Macro to declare an XSUB and its C parameter list. This is handled by
2289C<xsubpp>.
2290
cb1a09d0 2291=item XSRETURN
2292
2293Return from XSUB, indicating number of items on the stack. This is usually
2294handled by C<xsubpp>.
2295
5fb8527f 2296 XSRETURN(int x);
cb1a09d0 2297
2298=item XSRETURN_EMPTY
2299
5fb8527f 2300Return an empty list from an XSUB immediately.
cb1a09d0 2301
2302 XSRETURN_EMPTY;
2303
5fb8527f 2304=item XSRETURN_IV
2305
2306Return an integer from an XSUB immediately. Uses C<XST_mIV>.
2307
2308 XSRETURN_IV(IV v);
2309
cb1a09d0 2310=item XSRETURN_NO
2311
5fb8527f 2312Return C<&sv_no> from an XSUB immediately. Uses C<XST_mNO>.
cb1a09d0 2313
2314 XSRETURN_NO;
2315
5fb8527f 2316=item XSRETURN_NV
2317
2318Return an double from an XSUB immediately. Uses C<XST_mNV>.
2319
2320 XSRETURN_NV(NV v);
2321
2322=item XSRETURN_PV
2323
2324Return a copy of a string from an XSUB immediately. Uses C<XST_mPV>.
2325
2326 XSRETURN_PV(char *v);
2327
cb1a09d0 2328=item XSRETURN_UNDEF
2329
5fb8527f 2330Return C<&sv_undef> from an XSUB immediately. Uses C<XST_mUNDEF>.
cb1a09d0 2331
2332 XSRETURN_UNDEF;
2333
2334=item XSRETURN_YES
2335
5fb8527f 2336Return C<&sv_yes> from an XSUB immediately. Uses C<XST_mYES>.
cb1a09d0 2337
2338 XSRETURN_YES;
2339
5fb8527f 2340=item XST_mIV
2341
2342Place an integer into the specified position C<i> on the stack. The value is
2343stored in a new mortal SV.
2344
2345 XST_mIV( int i, IV v );
2346
2347=item XST_mNV
2348
2349Place a double into the specified position C<i> on the stack. The value is
2350stored in a new mortal SV.
2351
2352 XST_mNV( int i, NV v );
2353
2354=item XST_mNO
2355
2356Place C<&sv_no> into the specified position C<i> on the stack.
2357
2358 XST_mNO( int i );
2359
2360=item XST_mPV
2361
2362Place a copy of a string into the specified position C<i> on the stack. The
2363value is stored in a new mortal SV.
2364
2365 XST_mPV( int i, char *v );
2366
2367=item XST_mUNDEF
2368
2369Place C<&sv_undef> into the specified position C<i> on the stack.
2370
2371 XST_mUNDEF( int i );
2372
2373=item XST_mYES
2374
2375Place C<&sv_yes> into the specified position C<i> on the stack.
2376
2377 XST_mYES( int i );
2378
2379=item XS_VERSION
2380
2381The version identifier for an XS module. This is usually handled
2382automatically by C<ExtUtils::MakeMaker>. See C<XS_VERSION_BOOTCHECK>.
2383
2384=item XS_VERSION_BOOTCHECK
2385
2386Macro to verify that a PM module's $VERSION variable matches the XS module's
2387C<XS_VERSION> variable. This is usually handled automatically by
2388C<xsubpp>. See L<perlxs/"The VERSIONCHECK: Keyword">.
2389
cb1a09d0 2390=item Zero
2391
2392The XSUB-writer's interface to the C C<memzero> function. The C<d> is the
2393destination, C<n> is the number of items, and C<t> is the type.
2394
2395 (void) Zero( d, n, t );
2396
2397=back
2398
2399=head1 AUTHOR
2400
5fb8527f 2401Jeff Okamoto E<lt>F<okamoto@corp.hp.com>E<gt>
cb1a09d0 2402
2403With lots of help and suggestions from Dean Roehrich, Malcolm Beattie,
2404Andreas Koenig, Paul Hudson, Ilya Zakharevich, Paul Marquess, Neil
2405Bowers, Matthew Green, Tim Bunce, and Spider Boardman.
2406
5fb8527f 2407API Listing by Dean Roehrich E<lt>F<roehrich@cray.com>E<gt>.
cb1a09d0 2408
2409=head1 DATE
2410
5fb8527f 2411Version 22: 1996/9/23