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