"All" "all?" Who said all? There were 2 more missing gnuk{free,net}bsd
[p5sagit/p5-mst-13.2.git] / ext / Devel / PPPort / PPPort.xs
CommitLineData
adfe19db 1/*******************************************************************************
2*
3* !!!!! Do NOT edit this file directly! -- Edit PPPort_xs.PL instead. !!!!!
4*
5********************************************************************************
6*
7* Perl/Pollution/Portability
8*
9********************************************************************************
10*
9132e1a3 11* $Revision: 8 $
adfe19db 12* $Author: mhx $
9132e1a3 13* $Date: 2005/01/31 08:10:55 +0100 $
adfe19db 14*
15********************************************************************************
16*
9132e1a3 17* Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
adfe19db 18* Version 2.x, Copyright (C) 2001, Paul Marquess.
19* Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
20*
21* This program is free software; you can redistribute it and/or
22* modify it under the same terms as Perl itself.
23*
24*******************************************************************************/
25
26/* ========== BEGIN XSHEAD ================================================== */
27
28
29
30/* =========== END XSHEAD =================================================== */
0a7c7f4f 31
32#include "EXTERN.h"
33#include "perl.h"
34#include "XSUB.h"
35
adfe19db 36/* ========== BEGIN XSINIT ================================================== */
37
38/* ---- from parts/inc/call ---- */
39#define NEED_eval_pv
40
41/* ---- from parts/inc/grok ---- */
42#define NEED_grok_number
43#define NEED_grok_numeric_radix
44#define NEED_grok_bin
45#define NEED_grok_hex
46#define NEED_grok_oct
47
48/* ---- from parts/inc/newCONSTSUB ---- */
0a7c7f4f 49#define NEED_newCONSTSUB
adfe19db 50
51/* ---- from parts/inc/newRV ---- */
52#define NEED_newRV_noinc
53
96ad942f 54/* ---- from parts/inc/sv_xpvf ---- */
55#define NEED_vnewSVpvf
56#define NEED_sv_catpvf_mg
57#define NEED_sv_catpvf_mg_nocontext
58#define NEED_sv_setpvf_mg
59#define NEED_sv_setpvf_mg_nocontext
60
adfe19db 61/* ---- from parts/inc/SvPV ---- */
62#define NEED_sv_2pv_nolen
63#define NEED_sv_2pvbyte
64
65/* =========== END XSINIT =================================================== */
66
0a7c7f4f 67#include "ppport.h"
68
adfe19db 69/* ========== BEGIN XSMISC ================================================== */
70
9132e1a3 71/* ---- from parts/inc/exception ---- */
72static void throws_exception(int throw_e)
73{
74 if (throw_e)
75 croak("boo\n");
76}
77
78static int exception(int throw_e)
79{
80 dTHR;
81 dXCPT;
82 SV *caught = get_sv("Devel::PPPort::exception_caught", 0);
83
84 XCPT_TRY_START {
85 throws_exception(throw_e);
86 } XCPT_TRY_END
87
88 XCPT_CATCH
89 {
90 sv_setiv(caught, 1);
91 XCPT_RETHROW;
92 }
93
94 sv_setiv(caught, 0);
95
96 return 42;
97}
98
99/* ---- from parts/inc/misc ---- */
100XS(XS_Devel__PPPort_dXSTARG); /* prototype */
101XS(XS_Devel__PPPort_dXSTARG)
102{
103 dXSARGS;
104 dXSTARG;
105 SP -= items;
106 IV iv = SvIV(ST(0)) + 1;
107 PUSHi(iv);
108 XSRETURN(1);
109}
110
adfe19db 111/* ---- from parts/inc/MY_CXT ---- */
44284200 112#define MY_CXT_KEY "Devel::PPPort::_guts" XS_VERSION
0a7c7f4f 113
114typedef struct {
adfe19db 115 /* Put Global Data in here */
116 int dummy;
0a7c7f4f 117} my_cxt_t;
118
119START_MY_CXT
120
adfe19db 121/* ---- from parts/inc/newCONSTSUB ---- */
122void call_newCONSTSUB_1(void)
0a7c7f4f 123{
adfe19db 124#ifdef PERL_NO_GET_CONTEXT
125 dTHX;
126#endif
44284200 127 newCONSTSUB(gv_stashpv("Devel::PPPort", FALSE), "test_value_1", newSViv(1));
0a7c7f4f 128}
129
adfe19db 130extern void call_newCONSTSUB_2(void);
131extern void call_newCONSTSUB_3(void);
132
96ad942f 133/* ---- from parts/inc/sv_xpvf ---- */
134static SV * test_vnewSVpvf(pTHX_ const char *pat, ...)
135{
136 SV *sv;
137 va_list args;
138 va_start(args, pat);
139#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
140 sv = vnewSVpvf(pat, &args);
141#else
142 sv = newSVpv(pat, 0);
143#endif
144 va_end(args);
145 return sv;
146}
147
148static void test_sv_vcatpvf(pTHX_ SV *sv, const char *pat, ...)
149{
150 va_list args;
151 va_start(args, pat);
152#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
153 sv_vcatpvf(sv, pat, &args);
154#else
155 sv_catpv(sv, pat);
156#endif
157 va_end(args);
158}
159
160static void test_sv_vsetpvf(pTHX_ SV *sv, const char *pat, ...)
161{
162 va_list args;
163 va_start(args, pat);
164#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
165 sv_vsetpvf(sv, pat, &args);
166#else
167 sv_setpv(sv, pat);
168#endif
169 va_end(args);
170}
171
adfe19db 172/* =========== END XSMISC =================================================== */
0a7c7f4f 173
44284200 174MODULE = Devel::PPPort PACKAGE = Devel::PPPort
0a7c7f4f 175
176BOOT:
9132e1a3 177 /* ---- from parts/inc/misc ---- */
178 newXS("Devel::PPPort::dXSTARG", XS_Devel__PPPort_dXSTARG, file);
179
adfe19db 180 /* ---- from parts/inc/MY_CXT ---- */
181 {
182 MY_CXT_INIT;
183 /* If any of the fields in the my_cxt_t struct need
184 * to be initialised, do it here.
185 */
186 MY_CXT.dummy = 42;
187 }
188
189
190##----------------------------------------------------------------------
191## XSUBs from parts/inc/call
192##----------------------------------------------------------------------
193
194I32
195G_SCALAR()
196 CODE:
197 RETVAL = G_SCALAR;
198 OUTPUT:
199 RETVAL
200
201I32
202G_ARRAY()
203 CODE:
204 RETVAL = G_ARRAY;
205 OUTPUT:
206 RETVAL
207
208I32
209G_DISCARD()
210 CODE:
211 RETVAL = G_DISCARD;
212 OUTPUT:
213 RETVAL
214
215void
216eval_sv(sv, flags)
217 SV* sv
218 I32 flags
219 PREINIT:
220 I32 i;
221 PPCODE:
222 PUTBACK;
223 i = eval_sv(sv, flags);
224 SPAGAIN;
225 EXTEND(SP, 1);
226 PUSHs(sv_2mortal(newSViv(i)));
227
228void
229eval_pv(p, croak_on_error)
230 char* p
231 I32 croak_on_error
232 PPCODE:
233 PUTBACK;
234 EXTEND(SP, 1);
235 PUSHs(eval_pv(p, croak_on_error));
236
237void
238call_sv(sv, flags, ...)
239 SV* sv
240 I32 flags
241 PREINIT:
242 I32 i;
243 PPCODE:
244 for (i=0; i<items-2; i++)
245 ST(i) = ST(i+2); /* pop first two args */
246 PUSHMARK(SP);
247 SP += items - 2;
248 PUTBACK;
249 i = call_sv(sv, flags);
250 SPAGAIN;
251 EXTEND(SP, 1);
252 PUSHs(sv_2mortal(newSViv(i)));
253
0a7c7f4f 254void
adfe19db 255call_pv(subname, flags, ...)
256 char* subname
257 I32 flags
258 PREINIT:
259 I32 i;
260 PPCODE:
261 for (i=0; i<items-2; i++)
262 ST(i) = ST(i+2); /* pop first two args */
263 PUSHMARK(SP);
264 SP += items - 2;
265 PUTBACK;
266 i = call_pv(subname, flags);
267 SPAGAIN;
268 EXTEND(SP, 1);
269 PUSHs(sv_2mortal(newSViv(i)));
0a7c7f4f 270
271void
adfe19db 272call_argv(subname, flags, ...)
273 char* subname
274 I32 flags
275 PREINIT:
276 I32 i;
277 char *args[8];
278 PPCODE:
279 if (items > 8) /* play safe */
280 XSRETURN_UNDEF;
281 for (i=2; i<items; i++)
282 args[i-2] = SvPV_nolen(ST(i));
283 args[items-2] = NULL;
284 PUTBACK;
285 i = call_argv(subname, flags, args);
286 SPAGAIN;
287 EXTEND(SP, 1);
288 PUSHs(sv_2mortal(newSViv(i)));
0a7c7f4f 289
290void
adfe19db 291call_method(methname, flags, ...)
292 char* methname
293 I32 flags
294 PREINIT:
295 I32 i;
296 PPCODE:
297 for (i=0; i<items-2; i++)
298 ST(i) = ST(i+2); /* pop first two args */
299 PUSHMARK(SP);
300 SP += items - 2;
301 PUTBACK;
302 i = call_method(methname, flags);
303 SPAGAIN;
304 EXTEND(SP, 1);
305 PUSHs(sv_2mortal(newSViv(i)));
306
307##----------------------------------------------------------------------
308## XSUBs from parts/inc/cop
309##----------------------------------------------------------------------
310
311char *
312CopSTASHPV()
313 CODE:
314 RETVAL = CopSTASHPV(PL_curcop);
315 OUTPUT:
316 RETVAL
317
318char *
319CopFILE()
320 CODE:
321 RETVAL = CopFILE(PL_curcop);
322 OUTPUT:
323 RETVAL
324
325##----------------------------------------------------------------------
9132e1a3 326## XSUBs from parts/inc/exception
327##----------------------------------------------------------------------
328
329int
330exception(throw_e)
331 int throw_e
332 OUTPUT:
333 RETVAL
334
335##----------------------------------------------------------------------
adfe19db 336## XSUBs from parts/inc/grok
337##----------------------------------------------------------------------
338
339UV
340grok_number(string)
341 SV *string
342 PREINIT:
343 const char *pv;
344 STRLEN len;
345 CODE:
346 pv = SvPV(string, len);
347 if (!grok_number(pv, len, &RETVAL))
348 XSRETURN_UNDEF;
349 OUTPUT:
350 RETVAL
351
352UV
353grok_bin(string)
354 SV *string
355 PREINIT:
356 char *pv;
357 I32 flags;
358 STRLEN len;
359 CODE:
360 pv = SvPV(string, len);
361 RETVAL = grok_bin(pv, &len, &flags, NULL);
362 OUTPUT:
363 RETVAL
364
365UV
366grok_hex(string)
367 SV *string
368 PREINIT:
369 char *pv;
370 I32 flags;
371 STRLEN len;
372 CODE:
373 pv = SvPV(string, len);
374 RETVAL = grok_hex(pv, &len, &flags, NULL);
375 OUTPUT:
376 RETVAL
377
378UV
379grok_oct(string)
380 SV *string
381 PREINIT:
382 char *pv;
383 I32 flags;
384 STRLEN len;
385 CODE:
386 pv = SvPV(string, len);
387 RETVAL = grok_oct(pv, &len, &flags, NULL);
388 OUTPUT:
389 RETVAL
390
391UV
392Perl_grok_number(string)
393 SV *string
394 PREINIT:
395 const char *pv;
396 STRLEN len;
397 CODE:
398 pv = SvPV(string, len);
399 if (!Perl_grok_number(aTHX_ pv, len, &RETVAL))
400 XSRETURN_UNDEF;
401 OUTPUT:
402 RETVAL
403
404UV
405Perl_grok_bin(string)
406 SV *string
407 PREINIT:
408 char *pv;
409 I32 flags;
410 STRLEN len;
411 CODE:
412 pv = SvPV(string, len);
413 RETVAL = Perl_grok_bin(aTHX_ pv, &len, &flags, NULL);
414 OUTPUT:
415 RETVAL
416
417UV
418Perl_grok_hex(string)
419 SV *string
420 PREINIT:
421 char *pv;
422 I32 flags;
423 STRLEN len;
424 CODE:
425 pv = SvPV(string, len);
426 RETVAL = Perl_grok_hex(aTHX_ pv, &len, &flags, NULL);
427 OUTPUT:
428 RETVAL
429
430UV
431Perl_grok_oct(string)
432 SV *string
433 PREINIT:
434 char *pv;
435 I32 flags;
436 STRLEN len;
437 CODE:
438 pv = SvPV(string, len);
439 RETVAL = Perl_grok_oct(aTHX_ pv, &len, &flags, NULL);
440 OUTPUT:
441 RETVAL
442
443##----------------------------------------------------------------------
444## XSUBs from parts/inc/limits
445##----------------------------------------------------------------------
446
447IV
448iv_size()
449 CODE:
450 RETVAL = IVSIZE == sizeof(IV);
451 OUTPUT:
452 RETVAL
453
454IV
455uv_size()
456 CODE:
457 RETVAL = UVSIZE == sizeof(UV);
458 OUTPUT:
459 RETVAL
460
461IV
462iv_type()
463 CODE:
464 RETVAL = sizeof(IVTYPE) == sizeof(IV);
465 OUTPUT:
466 RETVAL
467
468IV
469uv_type()
470 CODE:
471 RETVAL = sizeof(UVTYPE) == sizeof(UV);
472 OUTPUT:
473 RETVAL
474
475##----------------------------------------------------------------------
476## XSUBs from parts/inc/magic
477##----------------------------------------------------------------------
478
479void
480sv_catpv_mg(sv, string)
481 SV *sv;
482 char *string;
483 CODE:
484 sv_catpv_mg(sv, string);
485
486void
487sv_catpvn_mg(sv, sv2)
488 SV *sv;
489 SV *sv2;
490 PREINIT:
491 char *str;
492 STRLEN len;
493 CODE:
494 str = SvPV(sv2, len);
495 sv_catpvn_mg(sv, str, len);
496
497void
498sv_catsv_mg(sv, sv2)
499 SV *sv;
500 SV *sv2;
501 CODE:
502 sv_catsv_mg(sv, sv2);
503
504void
505sv_setiv_mg(sv, iv)
506 SV *sv;
507 IV iv;
508 CODE:
509 sv_setiv_mg(sv, iv);
510
511void
512sv_setnv_mg(sv, nv)
513 SV *sv;
514 NV nv;
515 CODE:
516 sv_setnv_mg(sv, nv);
517
518void
519sv_setpv_mg(sv, pv)
520 SV *sv;
521 char *pv;
522 CODE:
523 sv_setpv_mg(sv, pv);
524
525void
526sv_setpvn_mg(sv, sv2)
527 SV *sv;
528 SV *sv2;
529 PREINIT:
530 char *str;
531 STRLEN len;
532 CODE:
533 str = SvPV(sv2, len);
534 sv_setpvn_mg(sv, str, len);
535
536void
537sv_setsv_mg(sv, sv2)
538 SV *sv;
539 SV *sv2;
540 CODE:
541 sv_setsv_mg(sv, sv2);
542
543void
544sv_setuv_mg(sv, uv)
545 SV *sv;
546 UV uv;
547 CODE:
548 sv_setuv_mg(sv, uv);
549
550void
551sv_usepvn_mg(sv, sv2)
552 SV *sv;
553 SV *sv2;
554 PREINIT:
555 char *str, *copy;
556 STRLEN len;
557 CODE:
558 str = SvPV(sv2, len);
559 New(42, copy, len+1, char);
560 Copy(str, copy, len+1, char);
561 sv_usepvn_mg(sv, copy, len);
562
563##----------------------------------------------------------------------
564## XSUBs from parts/inc/misc
565##----------------------------------------------------------------------
0a7c7f4f 566
567int
adfe19db 568gv_stashpvn(name, create)
569 char *name
570 I32 create
0a7c7f4f 571 CODE:
adfe19db 572 RETVAL = gv_stashpvn(name, strlen(name), create) != NULL;
0a7c7f4f 573 OUTPUT:
adfe19db 574 RETVAL
0a7c7f4f 575
576int
adfe19db 577get_sv(name, create)
578 char *name
579 I32 create
0a7c7f4f 580 CODE:
adfe19db 581 RETVAL = get_sv(name, create) != NULL;
582 OUTPUT:
583 RETVAL
584
585int
586get_av(name, create)
587 char *name
588 I32 create
589 CODE:
590 RETVAL = get_av(name, create) != NULL;
591 OUTPUT:
592 RETVAL
593
594int
595get_hv(name, create)
596 char *name
597 I32 create
598 CODE:
599 RETVAL = get_hv(name, create) != NULL;
600 OUTPUT:
601 RETVAL
602
603int
604get_cv(name, create)
605 char *name
606 I32 create
607 CODE:
608 RETVAL = get_cv(name, create) != NULL;
0a7c7f4f 609 OUTPUT:
adfe19db 610 RETVAL
611
612void
613newSVpvn()
614 PPCODE:
615 XPUSHs(newSVpvn("test", 4));
616 XPUSHs(newSVpvn("test", 2));
617 XPUSHs(newSVpvn("test", 0));
618 XPUSHs(newSVpvn(NULL, 2));
619 XPUSHs(newSVpvn(NULL, 0));
620 XSRETURN(5);
0a7c7f4f 621
622SV *
adfe19db 623PL_sv_undef()
0a7c7f4f 624 CODE:
adfe19db 625 RETVAL = newSVsv(&PL_sv_undef);
0a7c7f4f 626 OUTPUT:
adfe19db 627 RETVAL
0a7c7f4f 628
629SV *
adfe19db 630PL_sv_yes()
0a7c7f4f 631 CODE:
adfe19db 632 RETVAL = newSVsv(&PL_sv_yes);
0a7c7f4f 633 OUTPUT:
adfe19db 634 RETVAL
0a7c7f4f 635
636SV *
adfe19db 637PL_sv_no()
0a7c7f4f 638 CODE:
adfe19db 639 RETVAL = newSVsv(&PL_sv_no);
0a7c7f4f 640 OUTPUT:
adfe19db 641 RETVAL
0a7c7f4f 642
643int
adfe19db 644PL_na(string)
645 char *string
0a7c7f4f 646 CODE:
0a7c7f4f 647 PL_na = strlen(string);
648 RETVAL = PL_na;
0a7c7f4f 649 OUTPUT:
adfe19db 650 RETVAL
0a7c7f4f 651
652SV*
adfe19db 653boolSV(value)
0a7c7f4f 654 int value
655 CODE:
adfe19db 656 RETVAL = newSVsv(boolSV(value));
0a7c7f4f 657 OUTPUT:
adfe19db 658 RETVAL
0a7c7f4f 659
660SV*
adfe19db 661DEFSV()
0a7c7f4f 662 CODE:
0a7c7f4f 663 RETVAL = newSVsv(DEFSV);
0a7c7f4f 664 OUTPUT:
adfe19db 665 RETVAL
0a7c7f4f 666
667int
adfe19db 668ERRSV()
0a7c7f4f 669 CODE:
0a7c7f4f 670 RETVAL = SvTRUE(ERRSV);
0a7c7f4f 671 OUTPUT:
adfe19db 672 RETVAL
673
674SV*
675UNDERBAR()
676 CODE:
677 {
678 dUNDERBAR;
679 RETVAL = newSVsv(UNDERBAR);
680 }
681 OUTPUT:
682 RETVAL
683
684##----------------------------------------------------------------------
685## XSUBs from parts/inc/mPUSH
686##----------------------------------------------------------------------
687
688void
689mPUSHp()
690 PPCODE:
691 EXTEND(SP, 3);
692 mPUSHp("one", 3);
693 mPUSHp("two", 3);
694 mPUSHp("three", 5);
695 XSRETURN(3);
696
697void
698mPUSHn()
699 PPCODE:
700 EXTEND(SP, 3);
701 mPUSHn(0.5);
702 mPUSHn(-0.25);
703 mPUSHn(0.125);
704 XSRETURN(3);
705
706void
707mPUSHi()
708 PPCODE:
709 EXTEND(SP, 3);
710 mPUSHi(-1);
711 mPUSHi(2);
712 mPUSHi(-3);
713 XSRETURN(3);
714
715void
716mPUSHu()
717 PPCODE:
718 EXTEND(SP, 3);
719 mPUSHu(1);
720 mPUSHu(2);
721 mPUSHu(3);
722 XSRETURN(3);
723
724void
725mXPUSHp()
726 PPCODE:
727 mXPUSHp("one", 3);
728 mXPUSHp("two", 3);
729 mXPUSHp("three", 5);
730 XSRETURN(3);
731
732void
733mXPUSHn()
734 PPCODE:
735 mXPUSHn(0.5);
736 mXPUSHn(-0.25);
737 mXPUSHn(0.125);
738 XSRETURN(3);
739
740void
741mXPUSHi()
742 PPCODE:
743 mXPUSHi(-1);
744 mXPUSHi(2);
745 mXPUSHi(-3);
746 XSRETURN(3);
747
748void
749mXPUSHu()
750 PPCODE:
751 mXPUSHu(1);
752 mXPUSHu(2);
753 mXPUSHu(3);
754 XSRETURN(3);
755
756##----------------------------------------------------------------------
757## XSUBs from parts/inc/MY_CXT
758##----------------------------------------------------------------------
0a7c7f4f 759
760int
adfe19db 761MY_CXT_1()
0a7c7f4f 762 CODE:
0a7c7f4f 763 dMY_CXT;
adfe19db 764 RETVAL = MY_CXT.dummy == 42;
765 ++MY_CXT.dummy;
0a7c7f4f 766 OUTPUT:
adfe19db 767 RETVAL
0a7c7f4f 768
769int
adfe19db 770MY_CXT_2()
0a7c7f4f 771 CODE:
0a7c7f4f 772 dMY_CXT;
adfe19db 773 RETVAL = MY_CXT.dummy == 43;
774 OUTPUT:
775 RETVAL
776
e4c28a9f 777int
778MY_CXT_CLONE()
779 CODE:
780 MY_CXT_CLONE;
781 RETVAL = 42;
782 OUTPUT:
783 RETVAL
784
adfe19db 785##----------------------------------------------------------------------
786## XSUBs from parts/inc/newCONSTSUB
787##----------------------------------------------------------------------
788
789void
790call_newCONSTSUB_1()
791
792void
793call_newCONSTSUB_2()
794
795void
796call_newCONSTSUB_3()
797
798##----------------------------------------------------------------------
799## XSUBs from parts/inc/newRV
800##----------------------------------------------------------------------
801
802U32
803newRV_inc_REFCNT()
804 PREINIT:
805 SV *sv, *rv;
806 CODE:
807 sv = newSViv(42);
808 rv = newRV_inc(sv);
809 SvREFCNT_dec(sv);
810 RETVAL = SvREFCNT(sv);
811 sv_2mortal(rv);
0a7c7f4f 812 OUTPUT:
adfe19db 813 RETVAL
0a7c7f4f 814
adfe19db 815U32
816newRV_noinc_REFCNT()
817 PREINIT:
818 SV *sv, *rv;
819 CODE:
820 sv = newSViv(42);
821 rv = newRV_noinc(sv);
822 RETVAL = SvREFCNT(sv);
823 sv_2mortal(rv);
824 OUTPUT:
825 RETVAL
826
827##----------------------------------------------------------------------
96ad942f 828## XSUBs from parts/inc/sv_xpvf
829##----------------------------------------------------------------------
830
831SV *
832vnewSVpvf()
833 CODE:
834 RETVAL = test_vnewSVpvf(aTHX_ "%s-%d", "Perl", 42);
835 OUTPUT:
836 RETVAL
837
838SV *
839sv_vcatpvf(sv)
840 SV *sv
841 CODE:
842 RETVAL = newSVsv(sv);
843 test_sv_vcatpvf(aTHX_ RETVAL, "%s-%d", "Perl", 42);
844 OUTPUT:
845 RETVAL
846
847SV *
848sv_vsetpvf(sv)
849 SV *sv
850 CODE:
851 RETVAL = newSVsv(sv);
852 test_sv_vsetpvf(aTHX_ RETVAL, "%s-%d", "Perl", 42);
853 OUTPUT:
854 RETVAL
855
856void
857sv_catpvf_mg(sv)
858 SV *sv
859 CODE:
860#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
861 sv_catpvf_mg(sv, "%s-%d", "Perl", 42);
862#endif
863
864void
865Perl_sv_catpvf_mg(sv)
866 SV *sv
867 CODE:
868#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
869 Perl_sv_catpvf_mg(aTHX_ sv, "%s-%d", "-Perl", 43);
870#endif
871
872void
873sv_catpvf_mg_nocontext(sv)
874 SV *sv
875 CODE:
876#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
877#ifdef PERL_IMPLICIT_CONTEXT
878 sv_catpvf_mg_nocontext(sv, "%s-%d", "-Perl", 44);
879#else
880 sv_catpvf_mg(sv, "%s-%d", "-Perl", 44);
881#endif
882#endif
883
884void
885sv_setpvf_mg(sv)
886 SV *sv
887 CODE:
888#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
889 sv_setpvf_mg(sv, "%s-%d", "mhx", 42);
890#endif
891
892void
893Perl_sv_setpvf_mg(sv)
894 SV *sv
895 CODE:
896#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
897 Perl_sv_setpvf_mg(aTHX_ sv, "%s-%d", "foo", 43);
898#endif
899
900void
901sv_setpvf_mg_nocontext(sv)
902 SV *sv
903 CODE:
904#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
905#ifdef PERL_IMPLICIT_CONTEXT
906 sv_setpvf_mg_nocontext(sv, "%s-%d", "bar", 44);
907#else
908 sv_setpvf_mg(sv, "%s-%d", "bar", 44);
909#endif
910#endif
911
912##----------------------------------------------------------------------
adfe19db 913## XSUBs from parts/inc/SvPV
914##----------------------------------------------------------------------
915
916IV
917SvPVbyte(sv)
918 SV *sv
919 PREINIT:
920 STRLEN len;
921 const char *str;
922 CODE:
923 str = SvPVbyte(sv, len);
924 RETVAL = strEQ(str, "mhx") ? len : -1;
925 OUTPUT:
926 RETVAL
927
928IV
929SvPV_nolen(sv)
930 SV *sv
931 PREINIT:
932 const char *str;
933 CODE:
934 str = SvPV_nolen(sv);
9132e1a3 935 RETVAL = strEQ(str, "mhx") ? 42 : 0;
adfe19db 936 OUTPUT:
937 RETVAL
938
939##----------------------------------------------------------------------
940## XSUBs from parts/inc/threads
941##----------------------------------------------------------------------
942
943IV
944no_THX_arg(sv)
945 SV *sv
946 CODE:
947 RETVAL = 1 + sv_2iv(sv);
948 OUTPUT:
949 RETVAL
950
951void
952with_THX_arg(error)
953 char *error
954 PPCODE:
955 Perl_croak(aTHX_ "%s", error);
956
957##----------------------------------------------------------------------
958## XSUBs from parts/inc/uv
959##----------------------------------------------------------------------
960
961SV *
962sv_setuv(uv)
963 UV uv
964 CODE:
965 RETVAL = newSViv(1);
966 sv_setuv(RETVAL, uv);
967 OUTPUT:
968 RETVAL
969
970SV *
971newSVuv(uv)
972 UV uv
973 CODE:
974 RETVAL = newSVuv(uv);
975 OUTPUT:
976 RETVAL
977
978UV
979sv_2uv(sv)
980 SV *sv
981 CODE:
982 RETVAL = sv_2uv(sv);
983 OUTPUT:
984 RETVAL
985
986UV
987SvUVx(sv)
988 SV *sv
989 CODE:
990 sv--;
991 RETVAL = SvUVx(++sv);
992 OUTPUT:
993 RETVAL
994
995void
996XSRETURN_UV()
997 PPCODE:
998 XSRETURN_UV(42);
96ad942f 999
1000void
1001PUSHu()
1002 PREINIT:
1003 dTARG;
1004 PPCODE:
1005 TARG = sv_newmortal();
1006 EXTEND(SP, 1);
1007 PUSHu(42);
1008 XSRETURN(1);
1009
1010void
1011XPUSHu()
1012 PREINIT:
1013 dTARG;
1014 PPCODE:
1015 TARG = sv_newmortal();
1016 XPUSHu(43);
1017 XSRETURN(1);