From 426660b848319e3ff1e5d720807c46d9416b909e Mon Sep 17 00:00:00 2001 From: Michal Vaner Date: Sun, 14 Sep 2008 17:45:58 +0200 Subject: [PATCH] Doc. system: add support for typedefs And a little cleanup/code compression at the occasion. --- build/doc-defs | 27 ++++++++++++++------------- build/doc-extract | 15 ++++++++------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/build/doc-defs b/build/doc-defs index b0c5a5e8..c3b683ae 100755 --- a/build/doc-defs +++ b/build/doc-defs @@ -23,21 +23,22 @@ while( defined( my $line = <> ) ) { push @dump, [ split /,/, $line, 5 ]; } -my %groups = ( - 'enum' => 0, - 'struct' => 1, - 'fun' => 2, - 'var' => 3, - 'def' => 4 +my @types = ( + [ 'enum', 'Enumerations' ], + [ 'struct', 'Structures' ], + [ 'type', 'Types' ], + [ 'fun', 'Functions' ], + [ 'var', 'Variables' ], + [ 'def', 'Preprocessor definitions' ] ); -my %heads = ( - 'enum' => 'Enums', - 'struct' => 'Structs', - 'fun' => 'Functions', - 'var' => 'Variables', - 'def' => 'Preprocessor definitions' -); +my( $index, %groups, %heads ) = ( 0 ); + +foreach( @types ) { + my( $name, $value ) = @{$_}; + $groups{$name} = ++ $index; + $heads{$name} = $value; +} my $lasttype = ''; diff --git a/build/doc-extract b/build/doc-extract index db713095..dd01f4c4 100755 --- a/build/doc-extract +++ b/build/doc-extract @@ -24,19 +24,20 @@ if( defined $defdump ) { sub detect( $ ) { ( $_ ) = @_; - return( 'struct', 1, $1, "typedef struct { ... } $1;" ) if( /^\s*typedef\s+struct\s*{.*}\s*(\w+)\s*;\s*$/s ); - return( 'enum', 1, $1, "typedef enum { ... } $1;" ) if( /^\s*typedef\s+enum\s*{.*}\s*(\w+)\s*;\s*$/s ); + return( 'struct', 1, $1, "typedef struct { ... } $1;" ) if /^\s*typedef\s+struct\s*{.*}\s*(\w+)\s*;\s*$/s; + return( 'enum', 1, $1, "typedef enum { ... } $1;" ) if /^\s*typedef\s+enum\s*{.*}\s*(\w+)\s*;\s*$/s; my $l = length; s/\n.*//s; - return( 'struct', 0, $1, $_ ) if( /struct\s+(\w+)\s+{/ ); - return( 'enum', 0, $1, $_ ) if( /enum\s+(\w+)\s+{/ ); + return( 'struct', 0, $1, $_ ) if /struct\s+(\w+)\s+{/; + return( 'enum', 0, $1, $_ ) if /enum\s+(\w+)\s+{/; if( $l > length ) { warn( "Unknown statement $_\n" ); return( '', 0, $_, $_ ); } - return( 'def', 0, $1, $_ ) if( /#define\s+(\w+)/ ); - return( 'fun', 1, $2, $1 ) if( /^(.*?(\w+)\([^{]*\)[^{]*)/ ); - return( 'var', 1, $1, $_ ) if( /\s(\w+);/ ); + return( 'def', 0, $1, $_ ) if /#define\s+(\w+)/; + return( 'fun', 1, $2, $1 ) if /^(.*?(\w+)\([^{]*\)[^{]*)/; + return( 'type', 1, $1, $_ ) if /^\s*typedef.*?(\w+);/; + return( 'var', 1, $1, $_ ) if /\s(\w+);/; warn( "Unknown statement $_\n" ); return( '', 0, $_, $_ ); } -- 2.39.2