summaryrefslogtreecommitdiff
path: root/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Win32/OLE/Const.pm
diff options
context:
space:
mode:
Diffstat (limited to 'systems/texlive/tlnet/tlpkg/tlperl/site/lib/Win32/OLE/Const.pm')
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Win32/OLE/Const.pm201
1 files changed, 0 insertions, 201 deletions
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Win32/OLE/Const.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Win32/OLE/Const.pm
deleted file mode 100644
index d0fe00b9ea..0000000000
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Win32/OLE/Const.pm
+++ /dev/null
@@ -1,201 +0,0 @@
-# The documentation is at the __END__
-
-package Win32::OLE::Const;
-
-use strict;
-use Carp;
-use Win32::OLE;
-
-my $Typelibs;
-sub _Typelib {
- my ($clsid,$title,$version,$langid,$filename) = @_;
- # Filenames might have a resource index appended to it.
- $filename = $1 if $filename =~ /^(.*\.(?:dll|exe))(\\\d+)$/i;
- # Ignore if it looks like a file but doesn't exist.
- # We don't verify existence of monikers or filenames
- # without a full pathname.
- return if $filename =~ /^\w:\\.*\.(exe|dll)$/ && !-f $filename;
- push @$Typelibs, \@_;
-}
-unless (__PACKAGE__->_Typelibs("TypeLib")) {
- warn("Cannot access HKEY_CLASSES_ROOT\\Typelib");
-}
-# Enumerate 32bit type libraries on Win64
-__PACKAGE__->_Typelibs("Wow6432Node\\TypeLib");
-
-sub import {
- my ($self,$name,$major,$minor,$language,$codepage) = @_;
- return unless defined($name) && $name !~ /^\s*$/;
- $self->Load($name,$major,$minor,$language,$codepage,scalar caller);
-}
-
-sub EnumTypeLibs {
- my ($self,$callback) = @_;
- foreach (@$Typelibs) { &$callback(@$_) }
- return;
-}
-
-sub Load {
- my ($self,$name,$major,$minor,$language,$codepage,$caller) = @_;
-
- if (UNIVERSAL::isa($name,'Win32::OLE')) {
- my $typelib = $name->GetTypeInfo->GetContainingTypeLib;
- return _Constants($typelib, undef);
- }
-
- undef $minor unless defined $major;
- my $typelib = $self->LoadRegTypeLib($name,$major,$minor,
- $language,$codepage);
- return _Constants($typelib, $caller);
-}
-
-sub LoadRegTypeLib {
- my ($self,$name,$major,$minor,$language,$codepage) = @_;
- undef $minor unless defined $major;
-
- unless (defined($name) && $name !~ /^\s*$/) {
- carp "Win32::OLE::Const->Load: No or invalid type library name";
- return;
- }
-
- my @found;
- foreach my $Typelib (@$Typelibs) {
- my ($clsid,$title,$version,$langid,$filename) = @$Typelib;
- next unless $title =~ /^$name/;
- next unless $version =~ /^([0-9a-fA-F]+)\.([0-9a-fA-F]+)$/;
- my ($maj,$min) = (hex($1), hex($2));
- next if defined($major) && $maj != $major;
- next if defined($minor) && $min < $minor;
- next if defined($language) && $language != $langid;
- push @found, [$clsid,$maj,$min,$langid,$filename];
- }
-
- unless (@found) {
- carp "No type library matching \"$name\" found";
- return;
- }
-
- @found = sort {
- # Prefer greater version number
- my $res = $b->[1] <=> $a->[1];
- $res = $b->[2] <=> $a->[2] if $res == 0;
- # Prefer default language for equal version numbers
- $res = -1 if $res == 0 && $a->[3] == 0;
- $res = 1 if $res == 0 && $b->[3] == 0;
- $res;
- } @found;
-
- #printf "Loading %s\n", join(' ', @{$found[0]});
- return _LoadRegTypeLib(@{$found[0]},$codepage);
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Win32::OLE::Const - Extract constant definitions from TypeLib
-
-=head1 SYNOPSIS
-
- use Win32::OLE::Const 'Microsoft Excel';
- printf "xlMarkerStyleDot = %d\n", xlMarkerStyleDot;
-
- my $wd = Win32::OLE::Const->Load("Microsoft Word 8\\.0 Object Library");
- foreach my $key (keys %$wd) {
- printf "$key = %s\n", $wd->{$key};
- }
-
-=head1 DESCRIPTION
-
-This modules makes all constants from a registered OLE type library
-available to the Perl program. The constant definitions can be
-imported as functions, providing compile time name checking.
-Alternatively the constants can be returned in a hash reference
-which avoids defining lots of functions of unknown names.
-
-=head2 Functions/Methods
-
-=over 4
-
-=item use Win32::OLE::Const
-
-The C<use> statement can be used to directly import the constant names
-and values into the users namespace.
-
- use Win32::OLE::Const (TYPELIB,MAJOR,MINOR,LANGUAGE);
-
-The TYPELIB argument specifies a regular expression for searching
-through the registry for the type library. Note that this argument is
-implicitly prefixed with C<^> to speed up matches in the most common
-cases. Use a typelib name like ".*Excel" to match anywhere within the
-description. TYPELIB is the only required argument.
-
-The MAJOR and MINOR arguments specify the requested version of
-the type specification. If the MAJOR argument is used then only
-typelibs with exactly this major version number will be matched. The
-MINOR argument however specifies the minimum acceptable minor version.
-MINOR is ignored if MAJOR is undefined.
-
-If the LANGUAGE argument is used then only typelibs with exactly this
-language id will be matched.
-
-The module will select the typelib with the highest version number
-satisfying the request. If no language id is specified then a the default
-language (0) will be preferred over the others.
-
-Note that only constants with valid Perl variable names will be exported,
-i.e. names matching this regexp: C</^[a-zA-Z_][a-zA-Z0-9_]*$/>.
-
-=item Win32::OLE::Const->Load
-
-The Win32::OLE::Const->Load method returns a reference to a hash of
-constant definitions.
-
- my $const = Win32::OLE::Const->Load(TYPELIB,MAJOR,MINOR,LANGUAGE);
-
-The parameters are the same as for the C<use> case.
-
-This method is generally preferable when the typelib uses a non-english
-language and the constant names contain locale specific characters not
-allowed in Perl variable names.
-
-Another advantage is that all available constants can now be enumerated.
-
-The load method also accepts an OLE object as a parameter. In this case
-the OLE object is queried about its containing type library and no registry
-search is done at all. Interestingly this seems to be slower.
-
-=back
-
-=head1 EXAMPLES
-
-The first example imports all Excel constants names into the main namespace
-and prints the value of xlMarkerStyleDot (-4118).
-
- use Win32::OLE::Const ('Microsoft Excel 8.0 Object Library');
- print "xlMarkerStyleDot = %d\n", xlMarkerStyleDot;
-
-The second example returns all Word constants in a hash ref.
-
- use Win32::OLE::Const;
- my $wd = Win32::OLE::Const->Load("Microsoft Word 8.0 Object Library");
- foreach my $key (keys %$wd) {
- printf "$key = %s\n", $wd->{$key};
- }
- printf "wdGreen = %s\n", $wd->{wdGreen};
-
-The last example uses an OLE object to specify the type library:
-
- use Win32::OLE;
- use Win32::OLE::Const;
- my $Excel = Win32::OLE->new('Excel.Application', 'Quit');
- my $xl = Win32::OLE::Const->Load($Excel);
-
-
-=head1 AUTHORS/COPYRIGHT
-
-This module is part of the Win32::OLE distribution.
-
-=cut