| line | stmt | bran | cond | sub | pod | time | code | 
| 1 |  |  |  |  |  |  | package Evo::Class; | 
| 2 | 37 |  |  | 161 |  | 18501 | use Evo '-Export export_proxy; Evo::Class::Meta; Evo::Class::Base'; | 
|  | 37 |  |  |  |  | 89 |  | 
|  | 37 |  |  |  |  | 266 |  | 
| 3 |  |  |  |  |  |  |  | 
| 4 |  |  |  |  |  |  | export_proxy '::Syntax', qw(lazy rw ro optional check inject no_method); | 
| 5 |  |  |  |  |  |  |  | 
| 6 | 121 | 50 |  | 121 |  | 1169 | sub import ($me, @list) { | 
|  | 121 |  |  |  |  | 337 |  | 
|  | 121 |  |  |  |  | 436 |  | 
|  | 121 |  |  |  |  | 257 |  | 
| 7 | 121 |  |  |  |  | 316 | my $caller = caller; | 
| 8 | 121 |  |  |  |  | 720 | my $meta   = Evo::Class::Meta->register($caller); | 
| 9 | 37 |  |  | 55 |  | 323 | no strict 'refs';    ## no critic | 
|  | 37 |  |  |  |  | 99 |  | 
|  | 37 |  |  |  |  | 6389 |  | 
| 10 | 121 | 50 |  |  |  | 1276 | push @{"${caller}::ISA"}, 'Evo::Class::Base' unless $caller->isa('Evo::Class::Base'); | 
|  | 121 |  |  |  |  | 1339 |  | 
| 11 | 121 | 100 |  |  |  | 1033 | Evo::Export->install_in($caller, $me, @list ? @list : '*'); | 
| 12 |  |  |  |  |  |  | } | 
| 13 |  |  |  |  |  |  |  | 
| 14 | 121 | 50 |  | 121 | 1 | 421 | sub META ($me, $dest) : ExportGen { | 
|  | 121 | 50 |  |  |  | 359 |  | 
|  | 121 |  |  |  |  | 241 |  | 
|  | 121 |  |  |  |  | 229 |  | 
|  | 121 |  |  |  |  | 216 |  | 
| 15 | 121 |  |  | 45 |  | 823 | sub { Evo::Class::Meta->find_or_croak($dest); }; | 
|  | 45 |  |  |  |  | 1460 |  | 
| 16 | 37 |  |  | 37 |  | 256 | } | 
|  | 37 |  |  |  |  | 77 |  | 
|  | 37 |  |  |  |  | 253 |  | 
| 17 |  |  |  |  |  |  |  | 
| 18 | 120 | 50 |  | 120 | 0 | 385 | sub requires ($me, $dest) : ExportGen { | 
|  | 120 | 50 |  |  |  | 354 |  | 
|  | 120 |  |  |  |  | 228 |  | 
|  | 120 |  |  |  |  | 207 |  | 
|  | 120 |  |  |  |  | 201 |  | 
| 19 |  |  |  |  |  |  |  | 
| 20 | 13 |  |  | 13 |  | 1464 | sub (@names) { | 
|  | 13 |  |  |  |  | 213 |  | 
| 21 | 13 |  |  |  |  | 213 | my $meta = Evo::Class::Meta->find_or_croak($dest); | 
| 22 | 13 |  |  |  |  | 107 | $meta->reg_requirement($_) for @names; | 
| 23 | 120 |  |  |  |  | 781 | }; | 
| 24 | 37 |  |  | 37 |  | 8215 | } | 
|  | 37 |  |  |  |  | 87 |  | 
|  | 37 |  |  |  |  | 159 |  | 
| 25 |  |  |  |  |  |  |  | 
| 26 |  |  |  |  |  |  |  | 
| 27 | 1 | 50 |  | 1 | 0 | 5 | sub Over ($dest, $code, $name) : Attr { | 
|  | 1 | 50 |  |  |  | 4 |  | 
|  | 1 |  |  |  |  | 3 |  | 
|  | 1 |  |  |  |  | 2 |  | 
|  | 1 |  |  |  |  | 4 |  | 
|  | 1 |  |  |  |  | 2 |  | 
| 28 | 1 |  |  |  |  | 5 | Evo::Class::Meta->find_or_croak($dest)->mark_as_overridden($name); | 
| 29 | 37 |  |  | 37 |  | 5595 | } | 
|  | 37 |  |  |  |  | 84 |  | 
|  | 37 |  |  |  |  | 151 |  | 
| 30 |  |  |  |  |  |  |  | 
| 31 | 7 | 50 |  | 7 | 1 | 23 | sub Private ($dest, $code, $name) : Attr { | 
|  | 7 | 50 |  |  |  | 20 |  | 
|  | 7 |  |  |  |  | 12 |  | 
|  | 7 |  |  |  |  | 10 |  | 
|  | 7 |  |  |  |  | 12 |  | 
|  | 7 |  |  |  |  | 11 |  | 
| 32 | 7 |  |  |  |  | 34 | Evo::Class::Meta->find_or_croak($dest)->mark_as_private($name); | 
| 33 | 37 |  |  | 37 |  | 5615 | } | 
|  | 37 |  |  |  |  | 85 |  | 
|  | 37 |  |  |  |  | 159 |  | 
| 34 |  |  |  |  |  |  |  | 
| 35 | 120 | 50 |  | 120 | 0 | 381 | sub has ($me, $dest) : ExportGen { | 
|  | 120 | 50 |  |  |  | 372 |  | 
|  | 120 |  |  |  |  | 256 |  | 
|  | 120 |  |  |  |  | 216 |  | 
|  | 120 |  |  |  |  | 210 |  | 
| 36 | 374 | 50 |  | 374 |  | 1098 | sub ($name, @opts) { | 
|  | 374 |  |  | 357 |  | 705 |  | 
|  | 374 |  |  | 246 |  | 1017 |  | 
|  | 374 |  |  | 10 |  | 651 |  | 
|  |  |  |  | 6 |  |  |  | 
| 37 | 374 |  |  |  |  | 1361 | Evo::Class::Meta->find_or_croak($dest)->reg_attr($name, @opts); | 
| 38 | 120 |  |  |  |  | 851 | }; | 
| 39 | 37 |  |  | 37 |  | 6979 | } | 
|  | 37 |  |  |  |  | 85 |  | 
|  | 37 |  |  |  |  | 151 |  | 
| 40 |  |  |  |  |  |  |  | 
| 41 | 120 | 50 |  | 120 | 0 | 380 | sub has_over ($me, $dest) : ExportGen { | 
|  | 120 | 50 |  |  |  | 370 |  | 
|  | 120 |  |  |  |  | 242 |  | 
|  | 120 |  |  |  |  | 207 |  | 
|  | 120 |  |  |  |  | 209 |  | 
| 42 | 4 | 50 |  | 4 |  | 20 | sub ($name, @opts) { | 
|  | 4 |  |  |  |  | 10 |  | 
|  | 4 |  |  |  |  | 14 |  | 
|  | 4 |  |  |  |  | 8 |  | 
| 43 | 4 |  |  |  |  | 15 | Evo::Class::Meta->find_or_croak($dest)->reg_attr_over($name, @opts); | 
| 44 | 120 |  |  |  |  | 768 | }; | 
| 45 | 37 |  |  | 37 |  | 7218 | } | 
|  | 37 |  |  |  |  | 86 |  | 
|  | 37 |  |  |  |  | 155 |  | 
| 46 |  |  |  |  |  |  |  | 
| 47 | 120 | 50 |  | 120 | 1 | 386 | sub extends ($me, $dest) : ExportGen { | 
|  | 120 | 50 |  |  |  | 355 |  | 
|  | 120 |  |  |  |  | 245 |  | 
|  | 120 |  |  |  |  | 226 |  | 
|  | 120 |  |  |  |  | 211 |  | 
| 48 | 2 |  |  | 2 |  | 12 | sub(@parents) { | 
|  | 2 |  |  |  |  | 4 |  | 
| 49 | 2 |  |  |  |  | 12 | Evo::Class::Meta->find_or_croak($dest)->extend_with($_) for @parents; | 
| 50 | 120 |  |  |  |  | 782 | }; | 
| 51 | 37 |  |  | 37 |  | 6882 | } | 
|  | 37 |  |  |  |  | 84 |  | 
|  | 37 |  |  |  |  | 157 |  | 
| 52 |  |  |  |  |  |  |  | 
| 53 | 120 | 50 |  | 120 | 1 | 373 | sub implements ($me, $dest) : ExportGen { | 
|  | 120 | 50 |  |  |  | 342 |  | 
|  | 120 |  |  |  |  | 228 |  | 
|  | 120 |  |  |  |  | 215 |  | 
|  | 120 |  |  |  |  | 198 |  | 
| 54 | 2 |  |  | 2 |  | 28 | sub(@parents) { | 
|  | 2 |  |  |  |  | 4 |  | 
| 55 | 2 |  |  |  |  | 13 | Evo::Class::Meta->find_or_croak($dest)->check_implementation($_) for @parents; | 
| 56 | 120 |  |  |  |  | 695 | }; | 
| 57 | 37 |  |  | 37 |  | 6504 | } | 
|  | 37 |  |  |  |  | 90 |  | 
|  | 37 |  |  |  |  | 162 |  | 
| 58 |  |  |  |  |  |  |  | 
| 59 |  |  |  |  |  |  |  | 
| 60 | 120 | 50 |  | 120 | 1 | 391 | sub with ($me, $dest) : ExportGen { | 
|  | 120 | 50 |  |  |  | 425 |  | 
|  | 120 |  |  |  |  | 250 |  | 
|  | 120 |  |  |  |  | 214 |  | 
|  | 120 |  |  |  |  | 210 |  | 
| 61 |  |  |  |  |  |  |  | 
| 62 | 15 |  |  | 15 |  | 154 | sub (@parents) { | 
|  | 15 |  |  | 15 |  | 40 |  | 
|  |  |  |  | 13 |  |  |  | 
| 63 | 15 |  |  |  |  | 149 | my $meta = Evo::Class::Meta->find_or_croak($dest); | 
| 64 | 15 |  |  |  |  | 60 | foreach my $parent (@parents) { | 
| 65 | 15 |  |  |  |  | 97 | $meta->extend_with($parent); | 
| 66 | 15 |  |  |  |  | 83 | $meta->check_implementation($parent); | 
| 67 |  |  |  |  |  |  | } | 
| 68 | 120 |  |  |  |  | 830 | }; | 
| 69 | 37 |  |  | 37 |  | 7946 | } | 
|  | 37 |  |  |  |  | 83 |  | 
|  | 37 |  |  |  |  | 156 |  | 
| 70 |  |  |  |  |  |  |  | 
| 71 |  |  |  |  |  |  |  | 
| 72 |  |  |  |  |  |  | 1; | 
| 73 |  |  |  |  |  |  |  | 
| 74 |  |  |  |  |  |  | __END__ |