Changeset 6093

Show
Ignore:
Timestamp:
08/06/05 21:23:54 (3 years ago)
Author:
Stevan
Message:

Perl6::MetaModel? - ::Class now uses the ::create_P6opaque to create the instance (first step towards maybe bootstrapping this too)

Location:
perl5/Perl6-MetaModel/lib/Perl6
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • perl5/Perl6-MetaModel/lib/Perl6/Class.pm

    r6092 r6093  
    2525    my ($class, $identifier, $params) = @_; 
    2626    my ($name, $version, $authority) = _extract_name_from_identifier($identifier);       
    27     my $self = bless {  
     27    my $self = ::create_P6opaque($class => (  
    2828        name       => $name, 
    2929        version    => $version, 
     
    3131        identifier => $identifier, 
    3232        meta       => undef, 
    33     }, $class; 
    34     _validate_params($self, $params) if $params; 
     33        params     => {} 
     34    )); 
     35    if ($params) { 
     36        _validate_params($self, $params); 
     37    } 
    3538    # stash these into the class ... 
    3639    $ALL_CLASSES{$identifier} = $self; 
     
    4346sub _apply_class_to_environment { 
    4447    my ($self) = @_; 
    45     my ($name) = $self->{name}; 
     48    my ($name) = $self->{instance_data}->{name}; 
    4649    # create the package ... 
    4750    my $code = qq| 
     
    5558    eval {   
    5659        no strict 'refs';          
    57         *{$self->{identifier} . '::'} = *{$name . '::'}; 
     60        *{$self->{instance_data}->{identifier} . '::'} = *{$name . '::'}; 
    5861    }; 
    59     confess "Could not create full name " . $self->{identifier} . " : $@" if $@;    
     62    confess "Could not create full name " . $self->{instance_data}->{identifier} . " : $@" if $@;    
    6063    _build_class($self);  
    6164} 
     
    7881    } 
    7982 
    80     $self->{params} = $params; 
     83    $self->{instance_data}->{params} = $params; 
    8184} 
    8285 
     
    9396    my ($self) = @_; 
    9497     
    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});     
    9699 
    97100    # create the metaclass ...      
     
    124127        }  
    125128        # connect the class and the meta; 
    126         $self->{meta} = $meta;  
     129        $self->{instance_data}->{meta} = $meta;  
    127130    }; 
    128131    confess "Could not initialize the metaclass for $name : $@" if $@;  
    129132 
    130     my $superclasses = $self->{params}->{is}; 
     133    my $superclasses = $self->{instance_data}->{params}->{is}; 
    131134    ::dispatch($meta, 'superclasses', ([ map { ::meta($_) } @{$superclasses} ]));         
    132135 
    133     if (my $instance = $self->{params}->{instance}) { 
     136    if (my $instance = $self->{instance_data}->{params}->{instance}) { 
    134137 
    135138        ::dispatch($meta, 'add_method', ('BUILD' => Perl6::Method->create_submethod($name => $instance->{BUILD}))) 
     
    164167        }         
    165168    } 
    166     if (my $class = $self->{params}->{class}) {   
     169    if (my $class = $self->{instance_data}->{params}->{class}) {   
    167170         
    168171        if (exists $class->{attrs}) { 
     
    191194 
    192195 
    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}; 
    195198} 
    196199 
  • perl5/Perl6-MetaModel/lib/Perl6/MetaModel.pm

    r6091 r6093  
    4747        # accomidate the Perl6::Class instance 
    4848        blessed($class) eq 'Perl6::Class' ? 
    49             $class->{name} 
     49            $class->{instance_data}->{name} 
    5050            : 
    5151            blessed($class)