genUsageTableEnum.pl
changeset 80 e2acfa51664f
parent 79 cdc5f8f1b79e
child 81 baabcd5cdf8c
     1.1 --- a/genUsageTableEnum.pl	Sun Mar 15 20:25:58 2015 +0100
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,106 +0,0 @@
     1.4 -#!/usr/local/bin/perl
     1.5 -#Developed by Stéphane Lenclud
     1.6 -#Generate C# enumeration from parsing Hid Usage Table
     1.7 -#See ../data/gl.h
     1.8 -#Usage example
     1.9 -#perl -S genUsageTableEnum.pl ../data/gl.h
    1.10 -
    1.11 -use strict;
    1.12 -use warnings;	
    1.13 -
    1.14 -
    1.15 -my $inputFile = $ARGV[0];
    1.16 -
    1.17 -#my $dummy="lala";
    1.18 -#$dummy=~s/(^\w)/uc($1)/e;
    1.19 -#print "$dummy";
    1.20 -#exit(0);
    1.21 -
    1.22 -#Open input file
    1.23 -open INPUT, "< $inputFile" or die "Can't read $inputFile\n";
    1.24 -my @lines = <INPUT>;
    1.25 -close INPUT;
    1.26 -
    1.27 -
    1.28 -my %hash = ();
    1.29 -
    1.30 -my $count=0;
    1.31 -foreach my $line(@lines)
    1.32 -	{
    1.33 -	#if ($line=~ /^([a-fA-FxX\d]+)(.+)\s+\w+\s+15\..*$/)	
    1.34 -	if ($line=~ /^([a-fA-FxX\d]+)(.+)\s+\w+\s+\d+\..*$/)
    1.35 -		{
    1.36 -		my $string=$2;
    1.37 -		my $value=$1;
    1.38 -		
    1.39 -		my $varName=FormatVarName($string);	
    1.40 -
    1.41 -		
    1.42 -		$hash{$string}=$value;
    1.43 -		
    1.44 -		print "$varName = 0x$value,\n";			
    1.45 -		}
    1.46 -	else
    1.47 -		{
    1.48 -		#print "NO MATCH $line\n";
    1.49 -		}
    1.50 -	}
    1.51 -
    1.52 -exit(0);	
    1.53 -	
    1.54 -#Output in sorted order	
    1.55 -for my $string ( sort keys %hash )
    1.56 -	{	
    1.57 -    #print "_S8(\"$string\"),$hash{$string}, //$count\n";
    1.58 -    print "_S8(\"$string\"),$string, //$count\n";						
    1.59 -    $count++;	
    1.60 -    }	
    1.61 -	
    1.62 -	
    1.63 -print "$count const found.\n";	
    1.64 -	
    1.65 -exit(0);
    1.66 -
    1.67 -#	
    1.68 -
    1.69 -sub FormatVarName
    1.70 -	{
    1.71 -	my $text=$_[0];	
    1.72 -	my $varName="";
    1.73 -	Trim($text);
    1.74 -	#Make sure AC ends up as AppCtrl
    1.75 -	$text=~s/(^AC)/App Ctrl/;
    1.76 -	#Make sure AL ends up as AppLaunch
    1.77 -	$text=~s/(^AL)/App Launch/;		
    1.78 -	#Replace / by white-space
    1.79 -	$text=~s/\// /g;
    1.80 -	#Replace + with Plus
    1.81 -	$text=~s/\+/Plus/g;
    1.82 -	#Replace - with white-space
    1.83 -	$text=~s/-/ /g;
    1.84 -
    1.85 -	
    1.86 -	$text=lc($text);
    1.87 -	while ($text=~/(\w+)\s+(.+)/)
    1.88 -		{		
    1.89 -		my $word=$1;
    1.90 -		$text=$2;
    1.91 -		#upper case the first letter
    1.92 -		$word=~s/(^\w)/uc($1)/e;	
    1.93 -		$varName.=$word;		
    1.94 -		}
    1.95 -	
    1.96 -	$text=~s/(^\w)/uc($1)/e;					
    1.97 -	$varName.=$text;		
    1.98 -	#get ride of -			
    1.99 -	$varName=~s/-(\w)/uc($1)/e;
   1.100 -
   1.101 -	return $varName;
   1.102 -	}
   1.103 -	
   1.104 -sub Trim
   1.105 -	{
   1.106 -	$_[0] =~ s/^\s+//; #Trim leading space and line return char
   1.107 -	$_[0] =~ s/\s+$//; #Trim trailling space and line return char
   1.108 -	}	
   1.109 -