| line | stmt | bran | cond | sub | pod | time | code | 
| 1 |  |  |  |  |  |  | package Evo::Class; | 
| 2 | 37 |  |  | 401 |  | 19355 | use Evo '-Export export_proxy; Evo::Class::Meta; Evo::Class::Base'; | 
|  | 37 |  |  |  |  | 98 |  | 
|  | 37 |  |  |  |  | 291 |  | 
| 3 |  |  |  |  |  |  |  | 
| 4 |  |  |  |  |  |  | export_proxy '::Syntax', qw(lazy rw ro optional check inject no_method); | 
| 5 |  |  |  |  |  |  |  | 
| 6 | 121 | 50 |  | 121 |  | 1150 | sub import ($me, @list) { | 
|  | 121 |  |  |  |  | 318 |  | 
|  | 121 |  |  |  |  | 427 |  | 
|  | 121 |  |  |  |  | 252 |  | 
| 7 | 121 |  |  |  |  | 290 | my $caller = caller; | 
| 8 | 121 |  |  |  |  | 713 | my $meta   = Evo::Class::Meta->register($caller); | 
| 9 | 37 |  |  | 344 |  | 281 | no strict 'refs';    ## no critic | 
|  | 37 |  |  |  |  | 95 |  | 
|  | 37 |  |  |  |  | 6359 |  | 
| 10 | 121 | 50 |  |  |  | 1357 | push @{"${caller}::ISA"}, 'Evo::Class::Base' unless $caller->isa('Evo::Class::Base'); | 
|  | 121 |  |  |  |  | 1354 |  | 
| 11 | 121 | 100 |  |  |  | 1042 | Evo::Export->install_in($caller, $me, @list ? @list : '*'); | 
| 12 |  |  |  |  |  |  | } | 
| 13 |  |  |  |  |  |  |  | 
| 14 | 121 | 50 |  | 121 | 1 | 432 | sub META ($me, $dest) : ExportGen { | 
|  | 121 | 50 |  |  |  | 382 |  | 
|  | 121 |  |  |  |  | 502 |  | 
|  | 121 |  |  |  |  | 238 |  | 
|  | 121 |  |  |  |  | 210 |  | 
| 15 | 121 |  |  | 45 |  | 836 | sub { Evo::Class::Meta->find_or_croak($dest); }; | 
|  | 45 |  |  |  |  | 2133 |  | 
| 16 | 37 |  |  | 173 |  | 257 | } | 
|  | 37 |  |  |  |  | 83 |  | 
|  | 37 |  |  |  |  | 260 |  | 
| 17 |  |  |  |  |  |  |  | 
| 18 | 120 | 50 |  | 120 | 0 | 425 | sub requires ($me, $dest) : ExportGen { | 
|  | 120 | 50 |  |  |  | 371 |  | 
|  | 120 |  |  |  |  | 241 |  | 
|  | 120 |  |  |  |  | 226 |  | 
|  | 120 |  |  |  |  | 212 |  | 
| 19 |  |  |  |  |  |  |  | 
| 20 | 13 |  |  | 13 |  | 1580 | sub (@names) { | 
|  | 13 |  |  |  |  | 153 |  | 
| 21 | 13 |  |  |  |  | 220 | my $meta = Evo::Class::Meta->find_or_croak($dest); | 
| 22 | 13 |  |  |  |  | 93 | $meta->reg_requirement($_) for @names; | 
| 23 | 120 |  |  |  |  | 892 | }; | 
| 24 | 37 |  |  | 69 |  | 8572 | } | 
|  | 37 |  |  |  |  | 85 |  | 
|  | 37 |  |  |  |  | 162 |  | 
| 25 |  |  |  |  |  |  |  | 
| 26 |  |  |  |  |  |  |  | 
| 27 | 1 | 50 |  | 1 | 0 | 5 | sub Over ($dest, $code, $name) : Attr { | 
|  | 1 | 50 |  |  |  | 3 |  | 
|  | 1 |  |  |  |  | 1 |  | 
|  | 1 |  |  |  |  | 3 |  | 
|  | 1 |  |  |  |  | 1 |  | 
|  | 1 |  |  |  |  | 2 |  | 
| 28 | 1 |  |  |  |  | 3 | Evo::Class::Meta->find_or_croak($dest)->mark_as_overridden($name); | 
| 29 | 37 |  |  | 37 |  | 5744 | } | 
|  | 37 |  |  |  |  | 78 |  | 
|  | 37 |  |  |  |  | 152 |  | 
| 30 |  |  |  |  |  |  |  | 
| 31 | 7 | 50 |  | 7 | 1 | 29 | sub Private ($dest, $code, $name) : Attr { | 
|  | 7 | 50 |  |  |  | 24 |  | 
|  | 7 |  |  |  |  | 21 |  | 
|  | 7 |  |  |  |  | 17 |  | 
|  | 7 |  |  |  |  | 11 |  | 
|  | 7 |  |  |  |  | 10 |  | 
| 32 | 7 |  |  |  |  | 41 | Evo::Class::Meta->find_or_croak($dest)->mark_as_private($name); | 
| 33 | 37 |  |  | 37 |  | 5624 | } | 
|  | 37 |  |  |  |  | 92 |  | 
|  | 37 |  |  |  |  | 157 |  | 
| 34 |  |  |  |  |  |  |  | 
| 35 | 120 | 50 |  | 120 | 0 | 399 | sub has ($me, $dest) : ExportGen { | 
|  | 120 | 50 |  |  |  | 389 |  | 
|  | 120 |  |  |  |  | 230 |  | 
|  | 120 |  |  |  |  | 223 |  | 
|  | 120 |  |  |  |  | 206 |  | 
| 36 | 374 | 50 |  | 374 |  | 1092 | sub ($name, @opts) { | 
|  | 374 |  |  | 11 |  | 711 |  | 
|  | 374 |  |  |  |  | 1036 |  | 
|  | 374 |  |  |  |  | 622 |  | 
| 37 | 374 |  |  |  |  | 1370 | Evo::Class::Meta->find_or_croak($dest)->reg_attr($name, @opts); | 
| 38 | 120 |  |  |  |  | 846 | }; | 
| 39 | 37 |  |  | 37 |  | 7035 | } | 
|  | 37 |  |  |  |  | 84 |  | 
|  | 37 |  |  |  |  | 167 |  | 
| 40 |  |  |  |  |  |  |  | 
| 41 | 120 | 50 |  | 120 | 0 | 424 | sub has_over ($me, $dest) : ExportGen { | 
|  | 120 | 50 |  |  |  | 369 |  | 
|  | 120 |  |  |  |  | 253 |  | 
|  | 120 |  |  |  |  | 222 |  | 
|  | 120 |  |  |  |  | 209 |  | 
| 42 | 4 | 50 |  | 4 |  | 18 | sub ($name, @opts) { | 
|  | 4 |  |  |  |  | 10 |  | 
|  | 4 |  |  |  |  | 14 |  | 
|  | 4 |  |  |  |  | 7 |  | 
| 43 | 4 |  |  |  |  | 15 | Evo::Class::Meta->find_or_croak($dest)->reg_attr_over($name, @opts); | 
| 44 | 120 |  |  |  |  | 837 | }; | 
| 45 | 37 |  |  | 37 |  | 7049 | } | 
|  | 37 |  |  |  |  | 82 |  | 
|  | 37 |  |  |  |  | 185 |  | 
| 46 |  |  |  |  |  |  |  | 
| 47 | 120 | 50 |  | 120 | 1 | 388 | sub extends ($me, $dest) : ExportGen { | 
|  | 120 | 50 |  |  |  | 354 |  | 
|  | 120 |  |  |  |  | 228 |  | 
|  | 120 |  |  |  |  | 290 |  | 
|  | 120 |  |  |  |  | 216 |  | 
| 48 | 2 |  |  | 2 |  | 11 | sub(@parents) { | 
|  | 2 |  |  |  |  | 5 |  | 
| 49 | 2 |  |  |  |  | 12 | Evo::Class::Meta->find_or_croak($dest)->extend_with($_) for @parents; | 
| 50 | 120 |  |  |  |  | 820 | }; | 
| 51 | 37 |  |  | 37 |  | 6718 | } | 
|  | 37 |  |  |  |  | 82 |  | 
|  | 37 |  |  |  |  | 157 |  | 
| 52 |  |  |  |  |  |  |  | 
| 53 | 120 | 50 |  | 120 | 1 | 393 | sub implements ($me, $dest) : ExportGen { | 
|  | 120 | 50 |  |  |  | 352 |  | 
|  | 120 |  |  |  |  | 257 |  | 
|  | 120 |  |  |  |  | 239 |  | 
|  | 120 |  |  |  |  | 198 |  | 
| 54 | 2 |  |  | 2 |  | 14 | sub(@parents) { | 
|  | 2 |  |  |  |  | 4 |  | 
| 55 | 2 |  |  |  |  | 8 | Evo::Class::Meta->find_or_croak($dest)->check_implementation($_) for @parents; | 
| 56 | 120 |  |  |  |  | 729 | }; | 
| 57 | 37 |  |  | 37 |  | 6631 | } | 
|  | 37 |  |  |  |  | 87 |  | 
|  | 37 |  |  |  |  | 153 |  | 
| 58 |  |  |  |  |  |  |  | 
| 59 |  |  |  |  |  |  |  | 
| 60 | 120 | 50 |  | 120 | 1 | 403 | sub with ($me, $dest) : ExportGen { | 
|  | 120 | 50 |  |  |  | 424 |  | 
|  | 120 |  |  |  |  | 239 |  | 
|  | 120 |  |  |  |  | 217 |  | 
|  | 120 |  |  |  |  | 207 |  | 
| 61 |  |  |  |  |  |  |  | 
| 62 | 15 |  |  | 15 |  | 143 | sub (@parents) { | 
|  | 15 |  |  | 15 |  | 34 |  | 
|  |  |  |  | 15 |  |  |  | 
| 63 | 15 |  |  |  |  | 150 | my $meta = Evo::Class::Meta->find_or_croak($dest); | 
| 64 | 15 |  |  |  |  | 54 | foreach my $parent (@parents) { | 
| 65 | 15 |  |  |  |  | 91 | $meta->extend_with($parent); | 
| 66 | 15 |  |  |  |  | 95 | $meta->check_implementation($parent); | 
| 67 |  |  |  |  |  |  | } | 
| 68 | 120 |  |  |  |  | 802 | }; | 
| 69 | 37 |  |  | 37 |  | 8092 | } | 
|  | 37 |  |  |  |  | 88 |  | 
|  | 37 |  |  |  |  | 183 |  | 
| 70 |  |  |  |  |  |  |  | 
| 71 |  |  |  |  |  |  |  | 
| 72 |  |  |  |  |  |  | 1; | 
| 73 |  |  |  |  |  |  |  | 
| 74 |  |  |  |  |  |  | __END__ |