summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/i686-cygwin/Alias.pm
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/i686-cygwin/Alias.pm')
-rw-r--r--chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/i686-cygwin/Alias.pm370
1 files changed, 0 insertions, 370 deletions
diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/i686-cygwin/Alias.pm b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/i686-cygwin/Alias.pm
deleted file mode 100644
index 50c85f0fa59..00000000000
--- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/i686-cygwin/Alias.pm
+++ /dev/null
@@ -1,370 +0,0 @@
-#
-# Documentation at the __END__
-#
-
-package Alias;
-
-require 5.004;
-require Exporter;
-require DynaLoader;
-
-@ISA = qw(Exporter DynaLoader);
-@EXPORT = qw(alias attr);
-@EXPORT_OK = qw(const);
-
-$VERSION = $VERSION = '2.32';
-
-use Carp;
-
-bootstrap Alias;
-
-$Alias::KeyFilter = "";
-$Alias::AttrPrefix = "";
-$Alias::Deref = ""; # don't deref objects
-
-sub alias {
- croak "Need even number of args" if @_ % 2;
- my($pkg) = caller; # for namespace soundness
- while (@_) {
- # *foo = \*bar works in 5.002
- *{"$pkg\:\:$_[0]"} = (defined($_[1]) and ref($_[1])) ? $_[1] : \$_[1];
- shift; shift;
- }
-}
-
-# alias the elements of hashref
-# same as alias %{$_[0]}, but also localizes the aliases and
-# returns the hashref
-sub attr;
-
-alias const => \&alias; # alias the alias :-)
-
-
-1;
-__END__
-
-=head1 NAME
-
-alias - declare symbolic aliases for perl data
-
-attr - auto-declare hash attributes for convenient access
-
-const - define compile-time scalar constants
-
-
-=head1 SYNOPSIS
-
- use Alias qw(alias const attr);
- alias TEN => $ten, Ten => \$ten, Ten => \&ten,
- Ten => \@ten, Ten => \%ten, TeN => \*ten;
- {
- local @Ten;
- my $ten = [1..10];
- alias Ten => $ten; # local @Ten
- }
-
- const pi => 3.14, ten => 10;
-
- package Foo;
- use Alias;
- sub new { bless {foo => 1, _bar => [2, 3]}, $_[0] }
- sub a_method {
- my $s = attr shift;
- # $foo, @_bar are now local aliases for
- # $_[0]{foo}, @{$_[0]{_bar}} etc.
- }
-
- sub b_method {
- local $Alias::KeyFilter = "_";
- local $Alias::AttrPrefix = "main::";
- my $s = attr shift;
- # local @::_bar is now available, ($foo, $::foo are not)
- }
-
- sub c_method {
- local $Alias::KeyFilter = sub { $_ = shift; return (/^_/ ? 1 : 0) };
- local $Alias::AttrPrefix = sub {
- $_ = shift;
- s/^_(.+)$/main::$1/;
- return $_
- };
- my $s = attr shift;
- # local @::bar is now available, ($foo, $::foo are not)
- }
-
-
-=head1 DESCRIPTION
-
-Provides general mechanisms for aliasing perl data for convenient access.
-
-This module works by putting some values on the symbol table with
-user-supplied names. Values that are references will get dereferenced into
-their base types. This means that a value of C<[1,2,3]> with a name of
-"foo" will be made available as C<@foo>, not C<$foo>.
-
-The exception to this rule is the default behavior of the C<attr> function,
-which will not dereference values which are blessed references (aka
-objects). See L<$Alias::Deref> for how to change this default behavior.
-
-=head2 Functions
-
-=over 4
-
-=item alias
-
-Given a list of name => value pairs, declares aliases
-in the C<caller>s namespace. If the value supplied is a reference, the
-alias is created for the underlying value instead of the reference
-itself (there is no need to use this module to alias references--they
-are automatically "aliased" on assignment). This allows the user to
-alias most of the basic types.
-
-If the value supplied is a scalar compile-time constant, the aliases
-become read-only. Any attempt to write to them will fail with a run time
-error.
-
-Aliases can be dynamically scoped by pre-declaring the target variable as
-C<local>. Using C<attr> for this purpose is more convenient, and
-recommended.
-
-=item attr
-
-Given a hash reference, aliases the values of the hash to the names that
-correspond to the keys. It always returns the supplied value. The aliases
-are local to the enclosing block. If any of the values are unblessed
-references, they are available as their dereferenced types. Thus the action
-is similar to saying:
-
- alias %{$_[0]}
-
-but, in addition, also localizes the aliases, and does not dereference
-objects. Dereferencing of objects can be forced by setting the C<Deref>
-option. See L<$Alias::Deref>.
-
-This can be used for convenient access to hash values and hash-based object
-attributes.
-
-Note that this makes available the semantics of C<local> subroutines and
-methods. That makes for some nifty possibilities. We could make truly
-private methods by putting anonymous subs within an object. These subs
-would be available within methods where we use C<attr>, and will not
-be visible to the outside world as normal methods. We could forbid
-recursion in methods by always putting an empty sub in the object hash
-with the same key as the method name. This would be useful where a method
-has to run code from other modules, but cannot be certain whether that
-module will call it back again.
-
-The default behavior is to create aliases for all the entries in the hash,
-in the callers namespace. This can be controlled by setting a few options.
-See L<Configuration Variables> for details.
-
-=item const
-
-This is simply a function alias for C<alias>, described above. Provided on
-demand at C<use> time, since it reads better for constant declarations.
-Note that hashes and arrays cannot be so C<const>rained.
-
-=back
-
-=head2 Configuration Variables
-
-The following configuration variables can be used to control the behavior of
-the C<attr> function. They are typically set after the C<use Alias;>
-statement. Another typical usage is to C<local>ize them in a block so that
-their values are only effective within that block.
-
-=over 4
-
-=item $Alias::KeyFilter
-
-Specifies the key prefix used for determining which hash entries will be
-interned by C<attr>. Can be a CODE reference, in which case it will be
-called with the key, and the boolean return value will determine if
-that hash entry is a candidate attribute.
-
-=item $Alias::AttrPrefix
-
-Specifies a prefix to prepend to the names of localized attributes created
-by C<attr>. Can be a CODE reference, in which case it will be called with
-the key, and the result will determine the full name of the attribute. The
-value can have embedded package delimiters ("::" or "'"), which cause the
-attributes to be interned in that namespace instead of the C<caller>s own
-namespace. For example, setting it to "main::" makes C<use strict 'vars';>
-somewhat more palatable (since we can refer to the attributes as C<$::foo>,
-etc., without actually declaring the attributes).
-
-=item $Alias::Deref
-
-Controls the implicit dereferencing behavior of C<attr>. If it is set to
-"" or 0, C<attr> will not dereference blessed references. If it is a true
-value (anything but "", 0, or a CODE reference), all references will be
-made available as their dereferenced types, including values that may be
-objects. The default is "".
-
-This option can be used as a filter if it is set to a CODE reference, in
-which case it will be called with the key and the value (whenever the value
-happens to be a reference), and the boolean return value will determine if
-that particular reference must be dereferenced.
-
-
-=back
-
-=head2 Exports
-
-=over 4
-
-=item alias
-
-=item attr
-
-=back
-
-=head1 EXAMPLES
-
-Run these code snippets and observe the results to become more familiar
-with the features of this module.
-
- use Alias qw(alias const attr);
- $ten = 10;
- alias TEN => $ten, Ten => \$ten, Ten => \&ten,
- Ten => \@ten, Ten => \%ten;
- alias TeN => \*ten; # same as *TeN = *ten
-
- # aliasing basic types
- $ten = 20;
- print "$TEN|$Ten|$ten\n"; # should print "20|20|20"
- sub ten { print "10\n"; }
- @ten = (1..10);
- %ten = (a..j);
- &Ten; # should print "10"
- print @Ten, "|", %Ten, "\n";
-
- # this will fail at run time
- const _TEN_ => 10;
- eval { $_TEN_ = 20 };
- print $@ if $@;
-
- # dynamically scoped aliases
- @DYNAMIC = qw(m n o);
- {
- my $tmp = [ qw(a b c d) ];
- local @DYNAMIC;
- alias DYNAMIC => $tmp, PERM => $tmp;
-
- $DYNAMIC[2] = 'zzz';
- # prints "abzzzd|abzzzd|abzzzd"
- print @$tmp, "|", @DYNAMIC, "|", @PERM, "\n";
-
- @DYNAMIC = qw(p q r);
- # prints "pqr|pqr|pqr"
- print @$tmp, "|", @DYNAMIC, "|", @PERM, "\n";
- }
-
- # prints "mno|pqr"
- print @DYNAMIC, "|", @PERM, "\n";
-
- # named closures
- my($lex) = 'abcd';
- $closure = sub { print $lex, "\n" };
- alias NAMEDCLOSURE => \&$closure;
- NAMEDCLOSURE(); # prints "abcd"
- $lex = 'pqrs';
- NAMEDCLOSURE(); # prints "pqrs"
-
- # hash/object attributes
- package Foo;
- use Alias;
- sub new {
- bless
- { foo => 1,
- bar => [2,3],
- buz => { a => 4},
- privmeth => sub { "private" },
- easymeth => sub { die "to recurse or to die, is the question" },
- }, $_[0];
- }
-
- sub easymeth {
- my $s = attr shift; # localizes $foo, @bar, %buz etc with values
- eval { $s->easymeth }; # should fail
- print $@ if $@;
-
- # prints "1|2|3|a|4|private|"
- print join '|', $foo, @bar, %buz, $s->privmeth, "\n";
- }
-
- $foo = 6;
- @bar = (7,8);
- %buz = (b => 9);
- Foo->new->easymeth; # this will not recurse endlessly
-
- # prints "6|7|8|b|9|"
- print join '|', $foo, @bar, %buz, "\n";
-
- # this should fail at run-time
- eval { Foo->new->privmeth };
- print $@ if $@;
-
-
-=head1 NOTES
-
-It is worth repeating that the aliases created by C<alias> and C<const> will
-be created in the C<caller>s namespace (we can use the C<AttrPrefix> option to
-specify a different namespace for C<attr>). If that namespace happens to be
-C<local>ized, the aliases created will be local to that block. C<attr>
-localizes the aliases for us.
-
-Remember that references will be available as their dereferenced types.
-
-Aliases cannot be lexical, since, by neccessity, they live on the
-symbol table.
-
-Lexicals can be aliased. Note that this provides a means of reversing the
-action of anonymous type generators C<\>, C<[]> and C<{}>. This allows us
-to anonymously construct data or code and give it a symbol-table presence
-when we choose.
-
-Any occurrence of C<::> or C<'> in names will be treated as package
-qualifiers, and the value will be interned in that namespace.
-
-Remember that aliases are very much like references, only we don't
-have to dereference them as often. Which means we won't have to
-pound on the dollars so much.
-
-We can dynamically make subroutines and named closures with this scheme.
-
-It is possible to alias packages, but that might be construed as
-abuse.
-
-Using this module will dramatically reduce noise characters in
-object-oriented perl code.
-
-
-=head1 BUGS
-
-C<use strict 'vars';> is not very usable, since we B<depend> so much
-on the symbol table. You can declare the attributes with C<use vars> to
-avoid warnings. Setting C<$Alias::AttrPrefix> to "main::" is one way
-to avoid C<use vars> and frustration.
-
-Tied variables cannot be aliased properly, yet.
-
-
-=head1 VERSION
-
-Version 2.32 30 Apr 1999
-
-
-=head1 AUTHOR
-
-Gurusamy Sarathy gsar@umich.edu
-
-Copyright (c) 1995-99 Gurusamy Sarathy. All rights reserved.
-This program is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-=head1 SEE ALSO
-
-perl(1)
-
-=cut