2010-07-30 8 views
0
use Class::Struct; 

    struct (TimingStruct => { 
     _timingSense => '$', 
     _timingType => '$', 
     _relatedPin => '$', 
     _whenCond  => '$' 
     }); 

    struct (OutPinStruct => { 
     _outPinName => '$', 
     _outFunction => '$', 
     _timingarray => '@', #_timingarc => 'TimingStruct' 
     }); 

    my @tarray =(); 
    my $t; 

    $t = TimingStruct->new(_timingSense => 'Unate', 
          _timingType => 'Wave', 
          _relatedPin => 'CO', 
          _whenCond => 'A^B' 
         ); 
    push(@tarray, $t); 
    $t = TimingStruct->new(_timingSense => 'Combinational', 
          _timingType => 'Rising', 
          _relatedPin => 'ICO', 
          _whenCond => 'A^B^CI' 
         ); 

    push(@tarray, $t); 

    my $op = OutPinStruct->new(_outPinName => "CO", 
           _outFunction => "A^B^CI", 
           _timingarray => \@tarray); 


    print $op->_outPinName . "\n"; 
    print $op->_outFunction . "\n"; 
    print $op->_timingarray . "\n"; 
    my $t = ${${$op->_timingarray}[0]}[0]; 
    print "\$t = \$op->_timingarray = $t->_timingSense() \n"; 
    my @t = {$op->_timingarray}; 
    print "\@t = \@{\$op->_timingarray} = $$t[1] \n"; 

Chaque broche de sortie peut avoir de nombreux arcs de temporisation et le module OutPinStruct dispose d'une matrice pour maintenir les arcs de temporisation. Je ne suis pas sûr à propos des tableaux de déconnexion (_timingarray) quelqu'un pourrait-il me dire ce que je fais à tort?Perl - Class :: Tableau de défreinage Struct

Merci.

+0

Pouvez-vous être plus précis sur ce qui ne va pas? – Ether

Répondre

0

$op->_timingarray est une "liste de hachages". En général, les clés d'un hachage ne sont pas ordonnées et vous ne pouvez pas rechercher les valeurs de hachage à l'aide d'un index numéroté. Les éléments auxquels vous pouvez accéder sont

$op->_timingarray->[0]{'TimingStruct::_whenCond'} 
$op->_timingarray->[0]{'TimingStruct::_timingSense'} 
$op->_timingarray->[0]{'TimingStruct::_relatedPin'} 
$op->_timingarray->[0]{'TimingStruct::_timingType'} 
$op->_timingarray->[1]{'TimingStruct::_whenCond'} 
$op->_timingarray->[1]{'TimingStruct::_timingSense'} 
$op->_timingarray->[1]{'TimingStruct::_relatedPin'} 
$op->_timingarray->[1]{'TimingStruct::_timingType'} 
Questions connexes