7 use vars qw(@ISA $VERSION $CLASS *declare *qv);
13 eval "use version::vxs $VERSION";
14 if ( $@ ) { # don't have the XS version installed
15 eval "use version::vpp $VERSION"; # don't tempt fate
17 push @ISA, "version::vpp";
19 *version::qv = \&version::vpp::qv;
20 *version::declare = \&version::vpp::declare;
21 *version::_VERSION = \&version::vpp::_VERSION;
22 if ($] > 5.009001 && $] <= 5.010000) {
24 *{'version::stringify'} = \*version::vpp::stringify;
25 *{'version::(""'} = \*version::vpp::stringify;
26 *{'version::new'} = \*version::vpp::new;
29 else { # use XS module
30 push @ISA, "version::vxs";
32 *version::declare = \&version::vxs::declare;
33 *version::qv = \&version::vxs::qv;
34 *version::_VERSION = \&version::vxs::_VERSION;
35 if ($] > 5.009001 && $] < 5.010000) {
37 *{'version::stringify'} = \*version::vxs::stringify;
38 *{'version::(""'} = \*version::vxs::stringify;
40 elsif ($] == 5.010000) {
42 *{'version::stringify'} = \*version::vxs::stringify;
43 *{'version::(""'} = \*version::vxs::stringify;
44 *version::new = \&version::vxs::new;
45 *version::parse = \&version::vxs::parse;
50 # Preloaded methods go here.
55 # Set up any derived class
56 unless ($class eq 'version') {
58 *{$class.'::declare'} = \&version::declare;
59 *{$class.'::qv'} = \&version::qv;
63 if (@_) { # any remaining terms are arguments
64 map { $args{$_} = 1 } @_
66 else { # no parameters at all on use line
70 'UNIVERSAL::VERSION' => 1,
74 my $callpkg = caller();
76 if (exists($args{declare})) {
77 *{$callpkg."::declare"} =
78 sub {return $class->declare(shift) }
79 unless defined(&{$callpkg.'::declare'});
82 if (exists($args{qv})) {
84 sub {return $class->qv(shift) }
85 unless defined(&{"$callpkg\::qv"});
88 if (exists($args{'UNIVERSAL::VERSION'})) {
91 = \&version::_VERSION;
94 if (exists($args{'VERSION'})) {
95 *{$callpkg."::VERSION"} = \&version::_VERSION;