| File | /usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Moose/Meta/TypeConstraint/Registry.pm |
| Statements Executed | 272 |
| Statement Execution Time | 871µs |
| Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
|---|---|---|---|---|---|
| 23 | 6 | 1 | 280µs | 481µs | Moose::Meta::TypeConstraint::Registry::add_type_constraint |
| 44 | 3 | 1 | 166µs | 219µs | Moose::Meta::TypeConstraint::Registry::get_type_constraint |
| 23 | 1 | 1 | 90µs | 125µs | Moose::Meta::TypeConstraint::Registry::has_type_constraint |
| 1 | 1 | 1 | 13µs | 16µs | Moose::Meta::TypeConstraint::Registry::BEGIN@4 |
| 1 | 1 | 1 | 12µs | 21µs | Moose::Meta::TypeConstraint::Registry::BEGIN@5 |
| 1 | 1 | 1 | 12µs | 54µs | Moose::Meta::TypeConstraint::Registry::BEGIN@14 |
| 1 | 1 | 1 | 11µs | 323µs | Moose::Meta::TypeConstraint::Registry::new |
| 1 | 1 | 1 | 7µs | 33µs | Moose::Meta::TypeConstraint::Registry::BEGIN@8 |
| 1 | 1 | 1 | 7µs | 120µs | Moose::Meta::TypeConstraint::Registry::BEGIN@6 |
| 1 | 1 | 1 | 2µs | 2µs | Moose::Meta::TypeConstraint::Registry::__ANON__[:24] |
| 0 | 0 | 0 | 0s | 0s | Moose::Meta::TypeConstraint::Registry::find_type_constraint |
| Line | State ments |
Time on line |
Calls | Time in subs |
Code |
|---|---|---|---|---|---|
| 1 | |||||
| 2 | package Moose::Meta::TypeConstraint::Registry; | ||||
| 3 | |||||
| 4 | 3 | 20µs | 2 | 19µs | # spent 16µs (13+3) within Moose::Meta::TypeConstraint::Registry::BEGIN@4 which was called
# once (13µs+3µs) by Moose::Util::TypeConstraints::BEGIN@38 at line 4 # spent 16µs making 1 call to Moose::Meta::TypeConstraint::Registry::BEGIN@4
# spent 3µs making 1 call to strict::import |
| 5 | 3 | 23µs | 2 | 30µs | # spent 21µs (12+9) within Moose::Meta::TypeConstraint::Registry::BEGIN@5 which was called
# once (12µs+9µs) by Moose::Util::TypeConstraints::BEGIN@38 at line 5 # spent 21µs making 1 call to Moose::Meta::TypeConstraint::Registry::BEGIN@5
# spent 9µs making 1 call to warnings::import |
| 6 | 3 | 28µs | 2 | 233µs | # spent 120µs (7+113) within Moose::Meta::TypeConstraint::Registry::BEGIN@6 which was called
# once (7µs+113µs) by Moose::Util::TypeConstraints::BEGIN@38 at line 6 # spent 120µs making 1 call to Moose::Meta::TypeConstraint::Registry::BEGIN@6
# spent 113µs making 1 call to metaclass::import |
| 7 | |||||
| 8 | 3 | 53µs | 2 | 59µs | # spent 33µs (7+26) within Moose::Meta::TypeConstraint::Registry::BEGIN@8 which was called
# once (7µs+26µs) by Moose::Util::TypeConstraints::BEGIN@38 at line 8 # spent 33µs making 1 call to Moose::Meta::TypeConstraint::Registry::BEGIN@8
# spent 26µs making 1 call to Exporter::import |
| 9 | |||||
| 10 | 1 | 700ns | our $VERSION = '0.98'; | ||
| 11 | 1 | 13µs | $VERSION = eval $VERSION; | ||
| 12 | 1 | 300ns | our $AUTHORITY = 'cpan:STEVAN'; | ||
| 13 | |||||
| 14 | 3 | 229µs | 2 | 95µs | # spent 54µs (12+42) within Moose::Meta::TypeConstraint::Registry::BEGIN@14 which was called
# once (12µs+42µs) by Moose::Util::TypeConstraints::BEGIN@38 at line 14 # spent 54µs making 1 call to Moose::Meta::TypeConstraint::Registry::BEGIN@14
# spent 42µs making 1 call to base::import |
| 15 | |||||
| 16 | 1 | 3µs | 2 | 574µs | __PACKAGE__->meta->add_attribute('parent_registry' => ( # spent 557µs making 1 call to Class::MOP::Mixin::HasAttributes::add_attribute
# spent 17µs making 1 call to Moose::Meta::TypeConstraint::Registry::meta |
| 17 | reader => 'get_parent_registry', | ||||
| 18 | writer => 'set_parent_registry', | ||||
| 19 | predicate => 'has_parent_registry', | ||||
| 20 | )); | ||||
| 21 | |||||
| 22 | __PACKAGE__->meta->add_attribute('type_constraints' => ( | ||||
| 23 | reader => 'type_constraints', | ||||
| 24 | 1 | 3µs | # spent 2µs within Moose::Meta::TypeConstraint::Registry::__ANON__[/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Moose/Meta/TypeConstraint/Registry.pm:24] which was called
# once (2µs+0s) by Class::MOP::Mixin::AttributeCore::default at line 53 of Class/MOP/Mixin/AttributeCore.pm | ||
| 25 | 1 | 4µs | 2 | 286µs | )); # spent 274µs making 1 call to Class::MOP::Mixin::HasAttributes::add_attribute
# spent 11µs making 1 call to Moose::Meta::TypeConstraint::Registry::meta |
| 26 | |||||
| 27 | # spent 323µs (11+312) within Moose::Meta::TypeConstraint::Registry::new which was called
# once (11µs+312µs) by Moose::Meta::Attribute::BEGIN@18 at line 58 of Moose/Util/TypeConstraints.pm | ||||
| 28 | 1 | 500ns | my $class = shift; | ||
| 29 | 1 | 4µs | 1 | 312µs | my $self = $class->_new(@_); # spent 312µs making 1 call to Class::MOP::Object::_new |
| 30 | 1 | 6µs | return $self; | ||
| 31 | } | ||||
| 32 | |||||
| 33 | # spent 125µs (90+35) within Moose::Meta::TypeConstraint::Registry::has_type_constraint which was called 23 times, avg 5µs/call:
# 23 times (90µs+35µs) by Moose::Util::TypeConstraints::find_type_constraint at line 259 of Moose/Util/TypeConstraints.pm, avg 5µs/call | ||||
| 34 | 23 | 10µs | my ($self, $type_name) = @_; | ||
| 35 | 23 | 68µs | 23 | 35µs | ($type_name and exists $self->type_constraints->{$type_name}) ? 1 : 0 # spent 35µs making 23 calls to Moose::Meta::TypeConstraint::Registry::type_constraints, avg 2µs/call |
| 36 | } | ||||
| 37 | |||||
| 38 | # spent 219µs (166+53) within Moose::Meta::TypeConstraint::Registry::get_type_constraint which was called 44 times, avg 5µs/call:
# 22 times (75µs+22µs) by Moose::Util::TypeConstraints::find_type_constraint at line 260 of Moose/Util/TypeConstraints.pm, avg 4µs/call
# 18 times (79µs+26µs) by Moose::Util::TypeConstraints::_create_type_constraint at line 498 of Moose/Util/TypeConstraints.pm, avg 6µs/call
# 4 times (13µs+4µs) by Moose::Meta::Attribute::BEGIN@18 at line 793 of Moose/Util/TypeConstraints.pm, avg 4µs/call | ||||
| 39 | 44 | 16µs | my ($self, $type_name) = @_; | ||
| 40 | 44 | 5µs | return unless defined $type_name; | ||
| 41 | 44 | 110µs | 44 | 53µs | $self->type_constraints->{$type_name} # spent 53µs making 44 calls to Moose::Meta::TypeConstraint::Registry::type_constraints, avg 1µs/call |
| 42 | } | ||||
| 43 | |||||
| 44 | # spent 481µs (280+201) within Moose::Meta::TypeConstraint::Registry::add_type_constraint which was called 23 times, avg 21µs/call:
# 18 times (215µs+155µs) by Moose::Util::TypeConstraints::_create_type_constraint at line 536 of Moose/Util/TypeConstraints.pm, avg 21µs/call
# once (18µs+11µs) by Moose::Util::TypeConstraints::register_type_constraint at line 268 of Moose/Util/TypeConstraints.pm
# once (13µs+11µs) by Moose::Meta::Attribute::BEGIN@18 at line 731 of Moose/Util/TypeConstraints.pm
# once (11µs+8µs) by Moose::Meta::Attribute::BEGIN@18 at line 790 of Moose/Util/TypeConstraints.pm
# once (11µs+8µs) by Moose::Meta::Attribute::BEGIN@18 at line 773 of Moose/Util/TypeConstraints.pm
# once (11µs+8µs) by Moose::Meta::Attribute::BEGIN@18 at line 752 of Moose/Util/TypeConstraints.pm | ||||
| 45 | 23 | 9µs | my ($self, $type) = @_; | ||
| 46 | |||||
| 47 | 23 | 154µs | 69 | 143µs | unless ( $type && blessed $type && $type->isa('Moose::Meta::TypeConstraint') ) { # spent 105µs making 23 calls to Moose::Meta::TypeConstraint::__ANON__[Moose/Meta/TypeConstraint.pm:8], avg 5µs/call
# spent 19µs making 23 calls to UNIVERSAL::isa, avg 839ns/call
# spent 19µs making 23 calls to Scalar::Util::blessed, avg 817ns/call |
| 48 | require Moose; | ||||
| 49 | Moose->throw_error("No type supplied / type is not a valid type constraint"); | ||||
| 50 | } | ||||
| 51 | |||||
| 52 | 23 | 101µs | 46 | 59µs | $self->type_constraints->{$type->name} = $type; # spent 32µs making 23 calls to Moose::Meta::TypeConstraint::Registry::type_constraints, avg 1µs/call
# spent 27µs making 23 calls to Moose::Meta::TypeConstraint::name, avg 1µs/call |
| 53 | } | ||||
| 54 | |||||
| 55 | sub find_type_constraint { | ||||
| 56 | my ($self, $type_name) = @_; | ||||
| 57 | return $self->get_type_constraint($type_name) | ||||
| 58 | if $self->has_type_constraint($type_name); | ||||
| 59 | return $self->get_parent_registry->find_type_constraint($type_name) | ||||
| 60 | if $self->has_parent_registry; | ||||
| 61 | return; | ||||
| 62 | } | ||||
| 63 | |||||
| 64 | 1 | 11µs | 1; | ||
| 65 | |||||
| 66 | __END__ | ||||
| 67 | |||||
| 68 | |||||
| 69 | =pod | ||||
| 70 | |||||
| 71 | =head1 NAME | ||||
| 72 | |||||
| 73 | Moose::Meta::TypeConstraint::Registry - registry for type constraints | ||||
| 74 | |||||
| 75 | =head1 DESCRIPTION | ||||
| 76 | |||||
| 77 | This class is a registry that maps type constraint names to | ||||
| 78 | L<Moose::Meta::TypeConstraint> objects. | ||||
| 79 | |||||
| 80 | Currently, it is only used internally by | ||||
| 81 | L<Moose::Util::TypeConstraints>, which creates a single global | ||||
| 82 | registry. | ||||
| 83 | |||||
| 84 | =head1 INHERITANCE | ||||
| 85 | |||||
| 86 | C<Moose::Meta::TypeConstraint::Registry> is a subclass of | ||||
| 87 | L<Class::MOP::Object>. | ||||
| 88 | |||||
| 89 | =head1 METHODS | ||||
| 90 | |||||
| 91 | =over 4 | ||||
| 92 | |||||
| 93 | =item B<< Moose::Meta::TypeConstraint::Registry->new(%options) >> | ||||
| 94 | |||||
| 95 | This creates a new registry object based on the provided C<%options>: | ||||
| 96 | |||||
| 97 | =over 8 | ||||
| 98 | |||||
| 99 | =item * parent_registry | ||||
| 100 | |||||
| 101 | This is an optional L<Moose::Meta::TypeConstraint::Registry> | ||||
| 102 | object. | ||||
| 103 | |||||
| 104 | =item * type_constraints | ||||
| 105 | |||||
| 106 | This is hash reference of type names to type objects. This is | ||||
| 107 | optional. Constraints can be added to the registry after it is | ||||
| 108 | created. | ||||
| 109 | |||||
| 110 | =back | ||||
| 111 | |||||
| 112 | =item B<< $registry->get_parent_registry >> | ||||
| 113 | |||||
| 114 | Returns the registry's parent registry, if it has one. | ||||
| 115 | |||||
| 116 | =item B<< $registry->has_parent_registry >> | ||||
| 117 | |||||
| 118 | Returns true if the registry has a parent. | ||||
| 119 | |||||
| 120 | =item B<< $registry->set_parent_registry($registry) >> | ||||
| 121 | |||||
| 122 | Sets the parent registry. | ||||
| 123 | |||||
| 124 | =item B<< $registry->get_type_constraint($type_name) >> | ||||
| 125 | |||||
| 126 | This returns the L<Moose::Meta::TypeConstraint> object from the | ||||
| 127 | registry for the given name, if one exists. | ||||
| 128 | |||||
| 129 | =item B<< $registry->has_type_constraint($type_name) >> | ||||
| 130 | |||||
| 131 | Returns true if the registry has a type of the given name. | ||||
| 132 | |||||
| 133 | =item B<< $registry->add_type_constraint($type) >> | ||||
| 134 | |||||
| 135 | Adds a new L<Moose::Meta::TypeConstraint> object to the registry. | ||||
| 136 | |||||
| 137 | =item B<< $registry->find_type_constraint($type_name) >> | ||||
| 138 | |||||
| 139 | This method looks in the current registry for the named type. If the | ||||
| 140 | type is not found, then this method will look in the registry's | ||||
| 141 | parent, if it has one. | ||||
| 142 | |||||
| 143 | =back | ||||
| 144 | |||||
| 145 | =head1 BUGS | ||||
| 146 | |||||
| 147 | See L<Moose/BUGS> for details on reporting bugs. | ||||
| 148 | |||||
| 149 | =head1 AUTHOR | ||||
| 150 | |||||
| 151 | Stevan Little E<lt>stevan@iinteractive.comE<gt> | ||||
| 152 | |||||
| 153 | =head1 COPYRIGHT AND LICENSE | ||||
| 154 | |||||
| 155 | Copyright 2006-2010 by Infinity Interactive, Inc. | ||||
| 156 | |||||
| 157 | L<http://www.iinteractive.com> | ||||
| 158 | |||||
| 159 | This library is free software; you can redistribute it and/or modify | ||||
| 160 | it under the same terms as Perl itself. | ||||
| 161 | |||||
| 162 | =cut |