2 # Copyright (C) 2008 Michal Vaner (vorner@ucw.cz)
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # he Free Software Foundation; either version 2 of the License, or
7 # (at your option) any later version.
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 package PciIds::Address::PciClass;
22 use PciIds::Address::Toplevel;
23 use base 'PciIds::Address::Base';
27 return PciIds::Address::Toplevel::new( $address ) if( $address =~ /^PD\/?$/ );
28 return bless PciIds::Address::Base::new( $address );
36 s/^/Program interface /;
38 s/^/PCI device subclass /;
40 s/^/PCI device class /;
51 $prefix = 'Program interface';
53 $prefix = 'Device subclass';
55 $prefix = 'Device class';
57 return $prefix.' '.$_;
60 sub restrictRex( $$ ) {
61 my( $self, $restrict ) = @_;
62 my( $result ) = ( $restrict =~ /^([a-f0-9]{1,2})/ );#TODO every time?
67 return shift->get() =~ /\/.*\/.*\//;
71 my( $self, $suffix ) = @_;
72 return ( undef, 'You can not add to leaf node' ) if( $self->leaf() );
73 return ( undef, "Invalid ID syntax" ) unless ( $suffix =~ /^[0-9a-f]{2,2}$/ );
74 return ( PciIds::Address::new( $self->{'value'} . ( ( $self->{'value'} =~ /\/$/ ) ? '' : '/' ) . $suffix ), undef );
83 return 'Program interfaces' if $self->get() =~ /PD\/..\/../;
84 return 'Device subclasses' if $self->get() =~ /PD\/../;
85 die "Can not happen\n";