Changeset 6093
- Timestamp:
- 08/06/05 21:23:54 (3 years ago)
- Location:
- perl5/Perl6-MetaModel/lib/Perl6
- Files:
-
- 2 modified
-
Class.pm (modified) (9 diffs)
-
MetaModel.pm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
perl5/Perl6-MetaModel/lib/Perl6/Class.pm
r6092 r6093 25 25 my ($class, $identifier, $params) = @_; 26 26 my ($name, $version, $authority) = _extract_name_from_identifier($identifier); 27 my $self = bless {27 my $self = ::create_P6opaque($class => ( 28 28 name => $name, 29 29 version => $version, … … 31 31 identifier => $identifier, 32 32 meta => undef, 33 }, $class; 34 _validate_params($self, $params) if $params; 33 params => {} 34 )); 35 if ($params) { 36 _validate_params($self, $params); 37 } 35 38 # stash these into the class ... 36 39 $ALL_CLASSES{$identifier} = $self; … … 43 46 sub _apply_class_to_environment { 44 47 my ($self) = @_; 45 my ($name) = $self->{ name};48 my ($name) = $self->{instance_data}->{name}; 46 49 # create the package ... 47 50 my $code = qq| … … 55 58 eval { 56 59 no strict 'refs'; 57 *{$self->{i dentifier} . '::'} = *{$name . '::'};60 *{$self->{instance_data}->{identifier} . '::'} = *{$name . '::'}; 58 61 }; 59 confess "Could not create full name " . $self->{i dentifier} . " : $@" if $@;62 confess "Could not create full name " . $self->{instance_data}->{identifier} . " : $@" if $@; 60 63 _build_class($self); 61 64 } … … 78 81 } 79 82 80 $self->{ params} = $params;83 $self->{instance_data}->{params} = $params; 81 84 } 82 85 … … 93 96 my ($self) = @_; 94 97 95 my ($name, $version, $authority) = ($self->{ name}, $self->{version}, $self->{authority});98 my ($name, $version, $authority) = ($self->{instance_data}->{name}, $self->{instance_data}->{version}, $self->{instance_data}->{authority}); 96 99 97 100 # create the metaclass ... … … 124 127 } 125 128 # connect the class and the meta; 126 $self->{ meta} = $meta;129 $self->{instance_data}->{meta} = $meta; 127 130 }; 128 131 confess "Could not initialize the metaclass for $name : $@" if $@; 129 132 130 my $superclasses = $self->{ params}->{is};133 my $superclasses = $self->{instance_data}->{params}->{is}; 131 134 ::dispatch($meta, 'superclasses', ([ map { ::meta($_) } @{$superclasses} ])); 132 135 133 if (my $instance = $self->{ params}->{instance}) {136 if (my $instance = $self->{instance_data}->{params}->{instance}) { 134 137 135 138 ::dispatch($meta, 'add_method', ('BUILD' => Perl6::Method->create_submethod($name => $instance->{BUILD}))) … … 164 167 } 165 168 } 166 if (my $class = $self->{ params}->{class}) {169 if (my $class = $self->{instance_data}->{params}->{class}) { 167 170 168 171 if (exists $class->{attrs}) { … … 191 194 192 195 193 Perl6::Role->flatten_roles_into($meta, @{$self->{ params}->{does}})194 if $self->{ params}->{does};196 Perl6::Role->flatten_roles_into($meta, @{$self->{instance_data}->{params}->{does}}) 197 if $self->{instance_data}->{params}->{does}; 195 198 } 196 199 -
perl5/Perl6-MetaModel/lib/Perl6/MetaModel.pm
r6091 r6093 47 47 # accomidate the Perl6::Class instance 48 48 blessed($class) eq 'Perl6::Class' ? 49 $class->{ name}49 $class->{instance_data}->{name} 50 50 : 51 51 blessed($class)
