#!/usr/bin/perl -w

use strict;

my $class;

# BEGIN - Generate C code
print <<EOF;
/* Do not edit - generated from pci.ids by make_pci_class_lookup */

#include <stdio.h>
#include <stdbool.h>
#include "adapter_pci_legacy_proc.h"

bool
adapter_pci_legacy_class(const char * this_line, proc_pci_list_t * l)
{
	char c;

	if (false) {
		return false;
EOF
# END - Generate C code

while (<>) {
    chomp;
    if ($_ =~ "^\t\t") {
	next;
    } elsif ($class && ($_ =~ '^\t([[:xdigit:]]+)\s+(.+)$')) {


	# BEGIN - Generate C code
	print <<EOF;
	} else if (1 == sscanf(this_line, \" $2: \%c\", \&c)) {
		l->class = (uint16_t) 0x${class}$1;
		return true;
EOF
        # END - Generate C code


    } elsif ($_ =~ '^C\s+([[:xdigit:]]+)\s+.+$') {
	$class = $1;
    }
}

# BEGIN - Generate C code
print <<EOF;
	} else
		return false;
}
EOF
# END - Generate C code
