76 lines
1.9 KiB
Perl
76 lines
1.9 KiB
Perl
package Win32::Sound;
|
|
#######################################################################
|
|
#
|
|
# Win32::Sound - Perl Module for Windows Sound Interaction
|
|
# ^^^^^^^^^^^^^^^^
|
|
# Version: 0.03 (08 Apr 1997)
|
|
#
|
|
#######################################################################
|
|
|
|
require Exporter; # to export the constants to the main:: space
|
|
require DynaLoader; # to dynuhlode the module.
|
|
|
|
@ISA= qw( Exporter DynaLoader );
|
|
@EXPORT = qw(
|
|
SND_ASYNC
|
|
SND_NODEFAULT
|
|
SND_LOOP
|
|
SND_NOSTOP
|
|
);
|
|
|
|
#######################################################################
|
|
# This AUTOLOAD is used to 'autoload' constants from the constant()
|
|
# XS function. If a constant is not found then control is passed
|
|
# to the AUTOLOAD in AutoLoader.
|
|
#
|
|
|
|
sub AUTOLOAD {
|
|
my($constname);
|
|
($constname = $AUTOLOAD) =~ s/.*:://;
|
|
#reset $! to zero to reset any current errors.
|
|
$!=0;
|
|
my $val = constant($constname, @_ ? $_[0] : 0);
|
|
if ($! != 0) {
|
|
|
|
# [dada] This results in an ugly Autoloader error
|
|
|
|
#if ($! =~ /Invalid/) {
|
|
# $AutoLoader::AUTOLOAD = $AUTOLOAD;
|
|
# goto &AutoLoader::AUTOLOAD;
|
|
#} else {
|
|
|
|
# [dada] ... I prefer this one :)
|
|
|
|
($pack, $file, $line) = caller;
|
|
undef $pack; # [dada] and get rid of "used only once" warning...
|
|
die "Win32::Sound::$constname is not defined, used at $file line $line.";
|
|
|
|
#}
|
|
}
|
|
eval "sub $AUTOLOAD { $val }";
|
|
goto &$AUTOLOAD;
|
|
}
|
|
|
|
|
|
#######################################################################
|
|
# STATIC OBJECT PROPERTIES
|
|
#
|
|
$VERSION="0.03";
|
|
undef unless $VERSION; # [dada] to avoid "possible typo" warning
|
|
|
|
|
|
#######################################################################
|
|
# dynamically load in the Sound.pll module.
|
|
#
|
|
|
|
bootstrap Win32::Sound;
|
|
|
|
# Preloaded methods go here.
|
|
|
|
#Currently Autoloading is not implemented in Perl for win32
|
|
# Autoload methods go after __END__, and are processed by the autosplit program.
|
|
|
|
1;
|
|
__END__
|
|
|