Audio-AMaMP
view release on metacpan or search on metacpan
666768697071727374757677787980818283848586*
* perl -x ppport.h *.c *.h *.xs foo/bar*.c [etc]
*
* The result will be a list of patches suggesting changes that should at
* least be acceptable,
if
not necessarily the most efficient solution, or a
* fix
for
all possible problems. It won't
catch
where dTHR is needed, and
* doesn't attempt to account
for
global macro or function definitions,
* nested includes, typemaps, etc.
*
* In order to test
for
the need of dTHR, please
try
your module under a
* recent version of Perl that
has
threading compiled-in.
*
*/
/*
#!/usr/bin/perl
@ARGV
= (
"*.xs"
)
if
!
@ARGV
;
%badmacros
=
%funcs
=
%macros
= ();
$replace
= 0;
foreach
(<DATA>) {
$funcs
{$1} = 1
if
/Provide:\s+(\S+)/;
404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444}
#endif
#endif /* newCONSTSUB */
#ifndef START_MY_CXT
/*
* Boilerplate macros
for
initializing and accessing interpreter-
local
* data from C. All statics in extensions should be reworked to
use
* this,
if
you want to make the extension thread-safe. See ext/re/re.xs
*
* Code that uses these macros is responsible
for
the following:
* 1.
#define MY_CXT_KEY to a unique string, e.g. "DynaLoader_guts"
* 2. Declare a typedef named my_cxt_t that is a structure that contains
* all the data that needs to be interpreter-
local
.
* 3. Use the START_MY_CXT macro
after
the declaration of my_cxt_t.
* 4. Use the MY_CXT_INIT macro such that it is called exactly once
* (typically put in the BOOT: section).
* 5. Use the members of the my_cxt_t structure everywhere as
* MY_CXT.member.
* 6. Use the dMY_CXT macro (a declaration) in all the functions that
* access MY_CXT.
*/
#if defined(MULTIPLICITY) || defined(PERL_OBJECT) || \
defined
(PERL_CAPI) ||
defined
(PERL_IMPLICIT_CONTEXT)
/* This must appear in all extensions that define a my_cxt_t structure,
* right
after
the definition (i.e. at file scope). The non-threads
* case below uses it to declare the data as static. */
#define START_MY_CXT
#if (PERL_VERSION < 4 || (PERL_VERSION == 4 && PERL_SUBVERSION < 68 ))
/* Fetches the SV that keeps the per-interpreter data. */
#define dMY_CXT_SV \
SV
*my_cxt_sv
= perl_get_sv(MY_CXT_KEY, FALSE)
#else /* >= perl5.004_68 */
#define dMY_CXT_SV \
SV
*my_cxt_sv
=
*hv_fetch
(PL_modglobal, MY_CXT_KEY, \
( run in 0.292 second using v1.01-cache-2.11-cpan-2b0bae70ee8 )