blob: ad750bcdb47c16f19f54e0fbf20cb9ff6a7c049f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
==============================================================================
Release of version 0.50 of NEXT
==============================================================================
NAME
NEXT - Pseudo class for method redispatch
DESCRIPTION
NEXT.pm adds a pseudoclass named C<NEXT> to any program that
uses it. If a method C<m> calls C<$self->NEXT::m()>, the call to
C<m> is redispatched as if the calling method had not originally
been found.
In other words, a call to C<$self->NEXT::m()> resumes the
depth-first, left-to-right search of parent classes that
resulted in the original call to C<m>.
Note that this is not the same thing as C<$self->SUPER::m()>, which
begins a new dispatch that is restricted to searching the ancestors
of the current class. C<$self->NEXT::m()> can backtrack past
the current class -- to look for a suitable method in other
ancestors of C<$self> -- whereas C<$self->SUPER::m()> cannot.
A particularly interesting use of redispatch is in
C<AUTOLOAD>'ed methods. If such a method determines that it is
not able to handle a particular call, it may choose to
redispatch that call, in the hope that some other C<AUTOLOAD>
(above it, or to its left) might do better.
The module also allows you to specify that multiply inherited
methods should only be redispatched once, and what should
happen if no redispatch is possible.
AUTHOR
Damian Conway (damian@conway.org)
COPYRIGHT
Copyright (c) 2000-2001, Damian Conway. All Rights Reserved.
This module is free software. It may be used, redistributed
and/or modified under the same terms as Perl itself.
==============================================================================
CHANGES IN VERSION 0.50
- Added a $VERSION (oops!)
- Fixed handling of diamond patterns (thanks Paul)
- Added NEXT::ACTUAL to require existence of next method (thanks Paul)
- Added NEXT::UNSEEN to avoid calling multiply inherited
methods twice (thanks Paul)
- Re-fixed setting of $AUTOLOAD in NEXT'd AUTOLOADS to be
consistent with more useful SUPER:: behaviour
- Corified tests
==============================================================================
AVAILABILITY
NEXT has been uploaded to the CPAN
and is also available from:
http://www.csse.monash.edu.au/~damian/CPAN/NEXT.tar.gz
==============================================================================
|