r68055 - in /trunk/libmouse-perl: ./ debian/ inc/Module/Install/ lib/ lib/Mouse/ lib/Mouse/Meta/ lib/Mouse/Meta/Method/ lib/Mouse/Meta/Role/ lib/Mouse/Util/ xs-src/
ansgar at users.alioth.debian.org
ansgar at users.alioth.debian.org
Sun Jan 30 14:32:21 UTC 2011
Author: ansgar
Date: Sun Jan 30 14:32:06 2011
New Revision: 68055
URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=68055
Log:
New upstream release.
Modified:
trunk/libmouse-perl/Changes
trunk/libmouse-perl/META.yml
trunk/libmouse-perl/debian/changelog
trunk/libmouse-perl/inc/Module/Install/TestTarget.pm
trunk/libmouse-perl/lib/Mouse.pm
trunk/libmouse-perl/lib/Mouse/Exporter.pm
trunk/libmouse-perl/lib/Mouse/Meta/Attribute.pm
trunk/libmouse-perl/lib/Mouse/Meta/Class.pm
trunk/libmouse-perl/lib/Mouse/Meta/Method.pm
trunk/libmouse-perl/lib/Mouse/Meta/Method/Accessor.pm
trunk/libmouse-perl/lib/Mouse/Meta/Method/Constructor.pm
trunk/libmouse-perl/lib/Mouse/Meta/Method/Delegation.pm
trunk/libmouse-perl/lib/Mouse/Meta/Method/Destructor.pm
trunk/libmouse-perl/lib/Mouse/Meta/Module.pm
trunk/libmouse-perl/lib/Mouse/Meta/Role.pm
trunk/libmouse-perl/lib/Mouse/Meta/Role/Application.pm
trunk/libmouse-perl/lib/Mouse/Meta/Role/Composite.pm
trunk/libmouse-perl/lib/Mouse/Meta/Role/Method.pm
trunk/libmouse-perl/lib/Mouse/Meta/TypeConstraint.pm
trunk/libmouse-perl/lib/Mouse/Object.pm
trunk/libmouse-perl/lib/Mouse/PurePerl.pm
trunk/libmouse-perl/lib/Mouse/Role.pm
trunk/libmouse-perl/lib/Mouse/Spec.pm
trunk/libmouse-perl/lib/Mouse/Tiny.pod
trunk/libmouse-perl/lib/Mouse/Util.pm
trunk/libmouse-perl/lib/Mouse/Util/TypeConstraints.pm
trunk/libmouse-perl/lib/Mouse/XS.pod
trunk/libmouse-perl/xs-src/Mouse.xs
trunk/libmouse-perl/xs-src/MouseAccessor.xs
Modified: trunk/libmouse-perl/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/Changes?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/Changes (original)
+++ trunk/libmouse-perl/Changes Sun Jan 30 14:32:06 2011
@@ -1,7 +1,13 @@
Revision history for Mouse
+0.89 2011-01-27 09:18:39
+ [BUG FIXES]
+ * Disable foreign class warnings introduced at 0.71, which affects
+ compatibility with Moose (and will re-introduce in more compatible
+ way in the future)
+
0.88 2010-12-05 14:24:14
- [BUG FIX]
+ [BUG FIXES]
* Workaround SL4A where mro.pm doesn't exist even if Perl >= 5.10.0
(reported by @hide_o_55)
Modified: trunk/libmouse-perl/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/META.yml?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/META.yml (original)
+++ trunk/libmouse-perl/META.yml Sun Jan 30 14:32:06 2011
@@ -31,4 +31,4 @@
resources:
license: http://dev.perl.org/licenses/
repository: git://git.moose.perl.org/Mouse.git
-version: 0.88
+version: 0.89
Modified: trunk/libmouse-perl/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/debian/changelog?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/debian/changelog (original)
+++ trunk/libmouse-perl/debian/changelog Sun Jan 30 14:32:06 2011
@@ -1,9 +1,8 @@
-libmouse-perl (0.88-1) UNRELEASED; urgency=low
-
- IGNORE-VERSION: 0.88-1
- Bugfix for perl w/o mro.pm, but Debian's perl has it.
-
- -- Ansgar Burchardt <ansgar at debian.org> Thu, 09 Dec 2010 12:08:14 +0100
+libmouse-perl (0.89-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Ansgar Burchardt <ansgar at debian.org> Sun, 30 Jan 2011 15:31:41 +0100
libmouse-perl (0.87-1) unstable; urgency=low
Modified: trunk/libmouse-perl/inc/Module/Install/TestTarget.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/inc/Module/Install/TestTarget.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/inc/Module/Install/TestTarget.pm (original)
+++ trunk/libmouse-perl/inc/Module/Install/TestTarget.pm Sun Jan 30 14:32:06 2011
@@ -3,7 +3,7 @@
use 5.006_002;
use strict;
#use warnings; # XXX: warnings.pm produces a lot of 'redefine' warnings!
-our $VERSION = '0.15';
+our $VERSION = '0.16';
use base qw(Module::Install::Base);
use Config;
Modified: trunk/libmouse-perl/lib/Mouse.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse.pm (original)
+++ trunk/libmouse-perl/lib/Mouse.pm Sun Jan 30 14:32:06 2011
@@ -3,10 +3,10 @@
use Mouse::Exporter; # enables strict and warnings
-our $VERSION = '0.88';
-
-use Carp qw(confess);
-use Scalar::Util qw(blessed);
+our $VERSION = '0.89';
+
+use Carp ();
+use Scalar::Util ();
use Mouse::Util ();
@@ -155,7 +155,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 SYNOPSIS
Modified: trunk/libmouse-perl/lib/Mouse/Exporter.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Exporter.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Exporter.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Exporter.pm Sun Jan 30 14:32:06 2011
@@ -1,16 +1,16 @@
package Mouse::Exporter;
use strict;
use warnings;
-
use Carp ();
my %SPEC;
my $strict_bits;
-BEGIN{ $strict_bits = strict::bits(qw(subs refs vars)); }
-
my $warnings_extra_bits;
-BEGIN{ $warnings_extra_bits = warnings::bits(FATAL => 'recursion') }
+BEGIN{
+ $strict_bits = strict::bits(qw(subs refs vars));
+ $warnings_extra_bits = warnings::bits(FATAL => 'recursion');
+}
# it must be "require", because Mouse::Util depends on Mouse::Exporter,
# which depends on Mouse::Util::import()
@@ -190,7 +190,7 @@
require Mouse::Util::MetaRole;
Mouse::Util::MetaRole::apply_metaroles(
- for => $into,
+ for => $into,
Mouse::Util::is_a_metarole($into->meta)
? (role_metaroles => { role => \@traits })
: (class_metaroles => { class => \@traits }),
@@ -234,7 +234,9 @@
for my $keyword (@{ $spec->{REMOVABLES} }) {
next if !exists $stash->{$keyword};
my $gv = \$stash->{$keyword};
- if(ref($gv) eq 'GLOB' && *{$gv}{CODE} == $spec->{EXPORTS}{$keyword}){ # make sure it is from us
+
+ # remove what is from us
+ if(ref($gv) eq 'GLOB' && *{$gv}{CODE} == $spec->{EXPORTS}{$keyword}){
delete $stash->{$keyword};
}
}
@@ -256,8 +258,6 @@
}
}
-#sub _spec{ %SPEC }
-
1;
__END__
@@ -267,7 +267,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 SYNOPSIS
Modified: trunk/libmouse-perl/lib/Mouse/Meta/Attribute.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Meta/Attribute.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Meta/Attribute.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Meta/Attribute.pm Sun Jan 30 14:32:06 2011
@@ -342,7 +342,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 DESCRIPTION
Modified: trunk/libmouse-perl/lib/Mouse/Meta/Class.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Meta/Class.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Meta/Class.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Meta/Class.pm Sun Jan 30 14:32:06 2011
@@ -93,9 +93,11 @@
sub inherit_from_foreign_class {
my($class, $super) = @_;
- Carp::carp("You inherit from non-Mouse class ($super),"
- . " but it is unlikely to work correctly."
- . " Please consider using MouseX::Foreign");
+ if($ENV{PERL_MOUSE_STRICT}) {
+ Carp::carp("You inherit from non-Mouse class ($super),"
+ . " but it is unlikely to work correctly."
+ . " Please consider using MouseX::Foreign");
+ }
return;
}
@@ -468,7 +470,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 DESCRIPTION
Modified: trunk/libmouse-perl/lib/Mouse/Meta/Method.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Meta/Method.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Meta/Method.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Meta/Method.pm Sun Jan 30 14:32:06 2011
@@ -54,7 +54,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 DESCRIPTION
Modified: trunk/libmouse-perl/lib/Mouse/Meta/Method/Accessor.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Meta/Method/Accessor.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Meta/Method/Accessor.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Meta/Method/Accessor.pm Sun Jan 30 14:32:06 2011
@@ -187,7 +187,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 SEE ALSO
Modified: trunk/libmouse-perl/lib/Mouse/Meta/Method/Constructor.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Meta/Method/Constructor.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Meta/Method/Constructor.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Meta/Method/Constructor.pm Sun Jan 30 14:32:06 2011
@@ -232,7 +232,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 SEE ALSO
Modified: trunk/libmouse-perl/lib/Mouse/Meta/Method/Delegation.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Meta/Method/Delegation.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Meta/Method/Delegation.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Meta/Method/Delegation.pm Sun Jan 30 14:32:06 2011
@@ -61,7 +61,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 SEE ALSO
Modified: trunk/libmouse-perl/lib/Mouse/Meta/Method/Destructor.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Meta/Method/Destructor.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Meta/Method/Destructor.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Meta/Method/Destructor.pm Sun Jan 30 14:32:06 2011
@@ -65,7 +65,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 SEE ALSO
Modified: trunk/libmouse-perl/lib/Mouse/Meta/Module.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Meta/Module.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Meta/Module.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Meta/Module.pm Sun Jan 30 14:32:06 2011
@@ -311,7 +311,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 DESCRIPTION
Modified: trunk/libmouse-perl/lib/Mouse/Meta/Role.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Meta/Role.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Meta/Role.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Meta/Role.pm Sun Jan 30 14:32:06 2011
@@ -131,7 +131,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 DESCRIPTION
Modified: trunk/libmouse-perl/lib/Mouse/Meta/Role/Application.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Meta/Role/Application.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Meta/Role/Application.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Meta/Role/Application.pm Sun Jan 30 14:32:06 2011
@@ -209,7 +209,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 SEE ALSO
Modified: trunk/libmouse-perl/lib/Mouse/Meta/Role/Composite.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Meta/Role/Composite.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Meta/Role/Composite.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Meta/Role/Composite.pm Sun Jan 30 14:32:06 2011
@@ -156,7 +156,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 SEE ALSO
Modified: trunk/libmouse-perl/lib/Mouse/Meta/Role/Method.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Meta/Role/Method.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Meta/Role/Method.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Meta/Role/Method.pm Sun Jan 30 14:32:06 2011
@@ -23,7 +23,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 SEE ALSO
Modified: trunk/libmouse-perl/lib/Mouse/Meta/TypeConstraint.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Meta/TypeConstraint.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Meta/TypeConstraint.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Meta/TypeConstraint.pm Sun Jan 30 14:32:06 2011
@@ -276,7 +276,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 DESCRIPTION
Modified: trunk/libmouse-perl/lib/Mouse/Object.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Object.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Object.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Object.pm Sun Jan 30 14:32:06 2011
@@ -10,7 +10,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 METHODS
Modified: trunk/libmouse-perl/lib/Mouse/PurePerl.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/PurePerl.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/PurePerl.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/PurePerl.pm Sun Jan 30 14:32:06 2011
@@ -749,7 +749,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 SEE ALSO
Modified: trunk/libmouse-perl/lib/Mouse/Role.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Role.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Role.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Role.pm Sun Jan 30 14:32:06 2011
@@ -1,10 +1,10 @@
package Mouse::Role;
use Mouse::Exporter; # enables strict and warnings
-our $VERSION = '0.88';
-
-use Carp qw(confess);
-use Scalar::Util qw(blessed);
+our $VERSION = '0.89';
+
+use Carp ();
+use Scalar::Util ();
use Mouse ();
@@ -137,7 +137,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 SYNOPSIS
Modified: trunk/libmouse-perl/lib/Mouse/Spec.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Spec.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Spec.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Spec.pm Sun Jan 30 14:32:06 2011
@@ -2,7 +2,7 @@
use strict;
use warnings;
-our $VERSION = '0.88';
+our $VERSION = '0.89';
our $MouseVersion = $VERSION;
our $MooseVersion = '1.13';
@@ -19,7 +19,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 SYNOPSIS
Modified: trunk/libmouse-perl/lib/Mouse/Tiny.pod
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Tiny.pod?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Tiny.pod (original)
+++ trunk/libmouse-perl/lib/Mouse/Tiny.pod Sun Jan 30 14:32:06 2011
@@ -5,7 +5,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 DESCRIPTION
Modified: trunk/libmouse-perl/lib/Mouse/Util.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Util.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Util.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Util.pm Sun Jan 30 14:32:06 2011
@@ -1,5 +1,7 @@
package Mouse::Util;
use Mouse::Exporter; # enables strict and warnings
+
+# Note that those which don't exist here are defined in XS or Mouse::PurePerl
# must be here because it will be refered by other modules loaded
sub get_linear_isa($;$); ## no critic
@@ -48,7 +50,7 @@
},
);
- our $VERSION = '0.88';
+ our $VERSION = '0.89';
my $xs = !(defined(&is_valid_class_name) || $ENV{MOUSE_PUREPERL} || $ENV{PERL_ONLY});
@@ -75,57 +77,8 @@
}
*MOUSE_XS = sub(){ $xs };
-}
-
-use Carp ();
-use Scalar::Util ();
-
-# aliases as public APIs
-# it must be 'require', not 'use', because Mouse::Meta::Module depends on Mouse::Util
-require Mouse::Meta::Module; # for the entities of metaclass cache utilities
-
-# aliases
-{
- *class_of = \&Mouse::Meta::Module::_class_of;
- *get_metaclass_by_name = \&Mouse::Meta::Module::_get_metaclass_by_name;
- *get_all_metaclass_instances = \&Mouse::Meta::Module::_get_all_metaclass_instances;
- *get_all_metaclass_names = \&Mouse::Meta::Module::_get_all_metaclass_names;
-
- *Mouse::load_class = \&load_class;
- *Mouse::is_class_loaded = \&is_class_loaded;
-
- # is-a predicates
- #generate_isa_predicate_for('Mouse::Meta::TypeConstraint' => 'is_a_type_constraint');
- #generate_isa_predicate_for('Mouse::Meta::Class' => 'is_a_metaclass');
- #generate_isa_predicate_for('Mouse::Meta::Role' => 'is_a_metarole');
-
- # duck type predicates
- generate_can_predicate_for(['_compiled_type_constraint'] => 'is_a_type_constraint');
- generate_can_predicate_for(['create_anon_class'] => 'is_a_metaclass');
- generate_can_predicate_for(['create_anon_role'] => 'is_a_metarole');
-}
-
-our $in_global_destruction = 0;
-END{ $in_global_destruction = 1 }
-
-# Moose::Util compatible utilities
-
-sub find_meta{
- return class_of( $_[0] );
-}
-
-sub does_role{
- my ($class_or_obj, $role_name) = @_;
-
- my $meta = class_of($class_or_obj);
-
- (defined $role_name)
- || ($meta || 'Mouse::Meta::Class')->throw_error("You must supply a role name to does()");
-
- return defined($meta) && $meta->does_role($role_name);
-}
-
-BEGIN {
+
+ # definition of mro::get_linear_isa()
my $get_linear_isa;
if (eval { require mro }) {
$get_linear_isa = \&mro::get_linear_isa;
@@ -178,6 +131,53 @@
*get_linear_isa = $get_linear_isa;
}
+use Carp ();
+use Scalar::Util ();
+
+# aliases as public APIs
+# it must be 'require', not 'use', because Mouse::Meta::Module depends on Mouse::Util
+require Mouse::Meta::Module; # for the entities of metaclass cache utilities
+
+# aliases
+{
+ *class_of = \&Mouse::Meta::Module::_class_of;
+ *get_metaclass_by_name = \&Mouse::Meta::Module::_get_metaclass_by_name;
+ *get_all_metaclass_instances = \&Mouse::Meta::Module::_get_all_metaclass_instances;
+ *get_all_metaclass_names = \&Mouse::Meta::Module::_get_all_metaclass_names;
+
+ *Mouse::load_class = \&load_class;
+ *Mouse::is_class_loaded = \&is_class_loaded;
+
+ # is-a predicates
+ #generate_isa_predicate_for('Mouse::Meta::TypeConstraint' => 'is_a_type_constraint');
+ #generate_isa_predicate_for('Mouse::Meta::Class' => 'is_a_metaclass');
+ #generate_isa_predicate_for('Mouse::Meta::Role' => 'is_a_metarole');
+
+ # duck type predicates
+ generate_can_predicate_for(['_compiled_type_constraint'] => 'is_a_type_constraint');
+ generate_can_predicate_for(['create_anon_class'] => 'is_a_metaclass');
+ generate_can_predicate_for(['create_anon_role'] => 'is_a_metarole');
+}
+
+our $in_global_destruction = 0;
+END{ $in_global_destruction = 1 }
+
+# Moose::Util compatible utilities
+
+sub find_meta{
+ return class_of( $_[0] );
+}
+
+sub does_role{
+ my ($class_or_obj, $role_name) = @_;
+
+ my $meta = class_of($class_or_obj);
+
+ (defined $role_name)
+ || ($meta || 'Mouse::Meta::Class')->throw_error("You must supply a role name to does()");
+
+ return defined($meta) && $meta->does_role($role_name);
+}
# taken from Mouse::Util (0.90)
{
@@ -212,6 +212,7 @@
sub get_code_package;
sub is_valid_class_name;
+sub is_class_loaded;
# taken from Class/MOP.pm
sub load_first_existing_class {
@@ -270,7 +271,6 @@
return $class;
}
-sub is_class_loaded;
sub apply_all_roles {
my $consumer = Scalar::Util::blessed($_[0])
@@ -388,7 +388,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 SYNOPSIS
Modified: trunk/libmouse-perl/lib/Mouse/Util/TypeConstraints.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Util/TypeConstraints.pm?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Util/TypeConstraints.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Util/TypeConstraints.pm Sun Jan 30 14:32:06 2011
@@ -432,7 +432,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head2 SYNOPSIS
Modified: trunk/libmouse-perl/lib/Mouse/XS.pod
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/XS.pod?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/XS.pod (original)
+++ trunk/libmouse-perl/lib/Mouse/XS.pod Sun Jan 30 14:32:06 2011
@@ -5,7 +5,7 @@
=head1 VERSION
-This document describes Mouse version 0.88
+This document describes Mouse version 0.89
=head1 DESCRIPTION
Modified: trunk/libmouse-perl/xs-src/Mouse.xs
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/xs-src/Mouse.xs?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/xs-src/Mouse.xs (original)
+++ trunk/libmouse-perl/xs-src/Mouse.xs Sun Jan 30 14:32:06 2011
@@ -558,9 +558,8 @@
linearized_isa() */
HV* const stash = mouse_get_namespace(aTHX_ self);
AV* const linearized_isa = mro_get_linear_isa(stash);
- I32 len;
+ I32 const len = AvFILLp(linearized_isa) + 1;
I32 i;
- len = AvFILLp(linearized_isa) + 1;
EXTEND(SP, len);
for(i = 0; i < len; i++){
PUSHs(AvARRAY(linearized_isa)[i]);
@@ -592,7 +591,7 @@
object = mouse_instance_create(aTHX_ MOUSE_xc_stash(xc));
mouse_class_initialize_object(aTHX_ meta, object, args, FALSE);
- mouse_buildall(aTHX_ xc, object, sv_2mortal(newRV_inc((SV*)args))); /* BUILDALL */
+ mouse_buildall(aTHX_ xc, object, sv_2mortal(newRV_inc((SV*)args)));
ST(0) = object; /* because object is mortal, we should return it as is */
XSRETURN(1);
}
@@ -664,7 +663,8 @@
get_after_method_modifiers = MOUSE_M_AFTER
PPCODE:
{
- AV* const storage = mouse_get_modifier_storage(aTHX_ self, (enum mouse_modifier_t)ix, name);
+ AV* const storage = mouse_get_modifier_storage(aTHX_ self,
+ (enum mouse_modifier_t)ix, name);
I32 const len = av_len(storage) + 1;
if(GIMME_V == G_ARRAY) {
I32 i;
@@ -732,7 +732,8 @@
/* new_object */
object = mouse_instance_create(aTHX_ MOUSE_xc_stash(xc));
mouse_class_initialize_object(aTHX_ meta, object, (HV*)SvRV(args), FALSE);
- mouse_buildall(aTHX_ xc, object, args); /* BUILDALL */
+ /* BUILDALL */
+ mouse_buildall(aTHX_ xc, object, args);
ST(0) = object; /* because object is mortal, we should return it as is */
XSRETURN(1);
}
Modified: trunk/libmouse-perl/xs-src/MouseAccessor.xs
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/xs-src/MouseAccessor.xs?rev=68055&op=diff
==============================================================================
--- trunk/libmouse-perl/xs-src/MouseAccessor.xs (original)
+++ trunk/libmouse-perl/xs-src/MouseAccessor.xs Sun Jan 30 14:32:06 2011
@@ -2,7 +2,9 @@
#define CHECK_INSTANCE(instance) STMT_START{ \
assert(instance); \
- if(!(SvROK(instance) && SvTYPE(SvRV(instance)) == SVt_PVHV)){ \
+ if(UNLIKELY( \
+ !(SvROK(instance) \
+ && SvTYPE(SvRV(instance)) == SVt_PVHV) )){ \
croak("Invalid object instance: '%"SVf"'", instance); \
} \
} STMT_END
@@ -14,16 +16,87 @@
#define dMOUSE_self SV* const self = mouse_accessor_get_self(aTHX_ ax, items, cv)
+/* simple instance slot accessor (or Mouse::Meta::Instance) */
+
+SV*
+mouse_instance_create(pTHX_ HV* const stash) {
+ SV* instance;
+ assert(stash);
+ assert(SvTYPE(stash) == SVt_PVHV);
+ instance = sv_bless( newRV_noinc((SV*)newHV()), stash );
+ return sv_2mortal(instance);
+}
+
+SV*
+mouse_instance_clone(pTHX_ SV* const instance) {
+ SV* proto;
+ CHECK_INSTANCE(instance);
+ assert(SvOBJECT(SvRV(instance)));
+
+ proto = newRV_noinc((SV*)newHVhv((HV*)SvRV(instance)));
+ sv_bless(proto, SvSTASH(SvRV(instance)));
+ return sv_2mortal(proto);
+}
+
+bool
+mouse_instance_has_slot(pTHX_ SV* const instance, SV* const slot) {
+ assert(slot);
+ CHECK_INSTANCE(instance);
+ return hv_exists_ent((HV*)SvRV(instance), slot, 0U);
+}
+
+SV*
+mouse_instance_get_slot(pTHX_ SV* const instance, SV* const slot) {
+ HE* he;
+ assert(slot);
+ CHECK_INSTANCE(instance);
+ he = hv_fetch_ent((HV*)SvRV(instance), slot, FALSE, 0U);
+ return he ? HeVAL(he) : NULL;
+}
+
+SV*
+mouse_instance_set_slot(pTHX_ SV* const instance, SV* const slot, SV* const value) {
+ HE* he;
+ SV* sv;
+ assert(slot);
+ assert(value);
+ CHECK_INSTANCE(instance);
+ he = hv_fetch_ent((HV*)SvRV(instance), slot, TRUE, 0U);
+ sv = HeVAL(he);
+ sv_setsv(sv, value);
+ SvSETMAGIC(sv);
+ return sv;
+}
+
+SV*
+mouse_instance_delete_slot(pTHX_ SV* const instance, SV* const slot) {
+ assert(instance);
+ assert(slot);
+ CHECK_INSTANCE(instance);
+ return hv_delete_ent((HV*)SvRV(instance), slot, 0, 0U);
+}
+
+void
+mouse_instance_weaken_slot(pTHX_ SV* const instance, SV* const slot) {
+ HE* he;
+ assert(slot);
+ CHECK_INSTANCE(instance);
+ he = hv_fetch_ent((HV*)SvRV(instance), slot, FALSE, 0U);
+ if(he){
+ sv_rvweaken(HeVAL(he));
+ }
+}
+
+/* utilities */
+
STATIC_INLINE SV*
mouse_accessor_get_self(pTHX_ I32 const ax, I32 const items, CV* const cv) {
- if(items < 1){
+ if(UNLIKELY( items < 1 )){
croak("Too few arguments for %s", GvNAME(CvGV(cv)));
}
-
/* NOTE: If self has GETMAGIC, $self->accessor will invoke GETMAGIC
- * before calling methods, so SvGETMAGIC(self) is not necessarily needed here.
+ * before calling methods, so SvGETMAGIC(self) is not required here.
*/
-
return ST(0);
}
@@ -51,17 +124,6 @@
return xsub;
}
-
-#define PUSH_VALUE(value, flags) STMT_START { \
- if((flags) & MOUSEf_ATTR_SHOULD_AUTO_DEREF && GIMME_V == G_ARRAY){ \
- mouse_push_values(aTHX_ value, (flags)); \
- } \
- else{ \
- dSP; \
- XPUSHs(value ? value : &PL_sv_undef); \
- PUTBACK; \
- } \
- } STMT_END \
/* pushes return values, does auto-deref if needed */
static void
@@ -113,7 +175,19 @@
PUTBACK;
}
-static void
+STATIC_INLINE void
+mouse_push_value(pTHX_ SV* const value, U16 const flags) {
+ if(flags & MOUSEf_ATTR_SHOULD_AUTO_DEREF && GIMME_V == G_ARRAY){
+ mouse_push_values(aTHX_ value, flags);
+ }
+ else{
+ dSP;
+ XPUSHs(value ? value : &PL_sv_undef);
+ PUTBACK;
+ }
+}
+
+STATIC_INLINE void
mouse_attr_get(pTHX_ SV* const self, MAGIC* const mg){
U16 const flags = MOUSE_mg_flags(mg);
SV* value;
@@ -125,7 +199,7 @@
value = mouse_xa_set_default(aTHX_ MOUSE_mg_xa(mg), self);
}
- PUSH_VALUE(value, flags);
+ mouse_push_value(aTHX_ value, flags);
}
static void
@@ -165,7 +239,7 @@
assert(SvTYPE(value) != SVTYPEMASK);
}
- PUSH_VALUE(value, flags);
+ mouse_push_value(aTHX_ value, flags);
}
XS(XS_Mouse_accessor)
@@ -394,76 +468,6 @@
XSRETURN(1);
}
-/* simple instance slot accessor (or Mouse::Meta::Instance) */
-
-SV*
-mouse_instance_create(pTHX_ HV* const stash) {
- SV* instance;
- assert(stash);
- assert(SvTYPE(stash) == SVt_PVHV);
- instance = sv_bless( newRV_noinc((SV*)newHV()), stash );
- return sv_2mortal(instance);
-}
-
-SV*
-mouse_instance_clone(pTHX_ SV* const instance) {
- SV* proto;
- CHECK_INSTANCE(instance);
- assert(SvOBJECT(SvRV(instance)));
-
- proto = newRV_noinc((SV*)newHVhv((HV*)SvRV(instance)));
- sv_bless(proto, SvSTASH(SvRV(instance)));
- return sv_2mortal(proto);
-}
-
-bool
-mouse_instance_has_slot(pTHX_ SV* const instance, SV* const slot) {
- assert(slot);
- CHECK_INSTANCE(instance);
- return hv_exists_ent((HV*)SvRV(instance), slot, 0U);
-}
-
-SV*
-mouse_instance_get_slot(pTHX_ SV* const instance, SV* const slot) {
- HE* he;
- assert(slot);
- CHECK_INSTANCE(instance);
- he = hv_fetch_ent((HV*)SvRV(instance), slot, FALSE, 0U);
- return he ? HeVAL(he) : NULL;
-}
-
-SV*
-mouse_instance_set_slot(pTHX_ SV* const instance, SV* const slot, SV* const value) {
- HE* he;
- SV* sv;
- assert(slot);
- assert(value);
- CHECK_INSTANCE(instance);
- he = hv_fetch_ent((HV*)SvRV(instance), slot, TRUE, 0U);
- sv = HeVAL(he);
- sv_setsv(sv, value);
- SvSETMAGIC(sv);
- return sv;
-}
-
-SV*
-mouse_instance_delete_slot(pTHX_ SV* const instance, SV* const slot) {
- assert(instance);
- assert(slot);
- CHECK_INSTANCE(instance);
- return hv_delete_ent((HV*)SvRV(instance), slot, 0, 0U);
-}
-
-void
-mouse_instance_weaken_slot(pTHX_ SV* const instance, SV* const slot) {
- HE* he;
- assert(slot);
- CHECK_INSTANCE(instance);
- he = hv_fetch_ent((HV*)SvRV(instance), slot, FALSE, 0U);
- if(he){
- sv_rvweaken(HeVAL(he));
- }
-}
MODULE = Mouse::Meta::Method::Accessor::XS PACKAGE = Mouse::Meta::Method::Accessor::XS
More information about the Pkg-perl-cvs-commits
mailing list