15759b3d2Safresh1################################################################################
25759b3d2Safresh1##
35759b3d2Safresh1##  Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz.
45759b3d2Safresh1##  Version 2.x, Copyright (C) 2001, Paul Marquess.
55759b3d2Safresh1##  Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
65759b3d2Safresh1##
75759b3d2Safresh1##  This program is free software; you can redistribute it and/or
85759b3d2Safresh1##  modify it under the same terms as Perl itself.
95759b3d2Safresh1##
105759b3d2Safresh1################################################################################
115759b3d2Safresh1
125759b3d2Safresh1=provides
135759b3d2Safresh1
145759b3d2Safresh1__UNDEFINED__
155759b3d2Safresh1aTHXR
165759b3d2Safresh1aTHXR_
175759b3d2Safresh1dTHXR
185759b3d2Safresh1
195759b3d2Safresh1=implementation
205759b3d2Safresh1
215759b3d2Safresh1__UNDEFINED__  dTHR       dNOOP
225759b3d2Safresh1
235759b3d2Safresh1__UNDEFINED__  dTHX       dNOOP
24*de8cc8edSafresh1/* Hint: dTHX
25*de8cc8edSafresh1
26*de8cc8edSafresh1  For pre-5.6.0 thread compatibility, instead use dTHXR, available only through
27*de8cc8edSafresh1  ppport.h */
28*de8cc8edSafresh1
295759b3d2Safresh1__UNDEFINED__  dTHXa(x)   dNOOP
305759b3d2Safresh1
315759b3d2Safresh1__UNDEFINED__  pTHX       void
325759b3d2Safresh1__UNDEFINED__  pTHX_
335759b3d2Safresh1__UNDEFINED__  aTHX
34*de8cc8edSafresh1/* Hint: aTHX
35*de8cc8edSafresh1
36*de8cc8edSafresh1  For pre-5.6.0 thread compatibility, instead use aTHXR, available only through
37*de8cc8edSafresh1  ppport.h */
38*de8cc8edSafresh1
395759b3d2Safresh1__UNDEFINED__  aTHX_
40*de8cc8edSafresh1/* Hint: aTHX_
41*de8cc8edSafresh1
42*de8cc8edSafresh1  For pre-5.6.0 thread compatibility, instead use aTHXR_, available only
43*de8cc8edSafresh1  through ppport.h */
445759b3d2Safresh1
455759b3d2Safresh1#if { VERSION < 5.6.0 }
465759b3d2Safresh1#  ifdef USE_THREADS
475759b3d2Safresh1#    define aTHXR  thr
485759b3d2Safresh1#    define aTHXR_ thr,
495759b3d2Safresh1#  else
505759b3d2Safresh1#    define aTHXR
515759b3d2Safresh1#    define aTHXR_
525759b3d2Safresh1#  endif
535759b3d2Safresh1#  define dTHXR  dTHR
545759b3d2Safresh1#else
555759b3d2Safresh1#  define aTHXR  aTHX
565759b3d2Safresh1#  define aTHXR_ aTHX_
575759b3d2Safresh1#  define dTHXR  dTHX
585759b3d2Safresh1#endif
595759b3d2Safresh1
605759b3d2Safresh1__UNDEFINED__  dTHXoa(x)  dTHXa(x)
615759b3d2Safresh1
625759b3d2Safresh1=xsubs
635759b3d2Safresh1
645759b3d2Safresh1IV
655759b3d2Safresh1no_THX_arg(sv)
665759b3d2Safresh1        SV *sv
675759b3d2Safresh1        CODE:
685759b3d2Safresh1                RETVAL = 1 + sv_2iv(sv);
695759b3d2Safresh1        OUTPUT:
705759b3d2Safresh1                RETVAL
715759b3d2Safresh1
725759b3d2Safresh1void
735759b3d2Safresh1with_THX_arg(error)
745759b3d2Safresh1        SV *error
755759b3d2Safresh1        PPCODE:
765759b3d2Safresh1                croak_sv(error);
775759b3d2Safresh1
785759b3d2Safresh1=tests plan => 2
795759b3d2Safresh1
80*de8cc8edSafresh1is(&Devel::PPPort::no_THX_arg("42"), 43);
815759b3d2Safresh1eval { &Devel::PPPort::with_THX_arg("yes\n"); };
825759b3d2Safresh1ok($@ =~ /^yes/);
83