mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
kernel-doc: better format typedef function output
A typedef function looks more likely a function and not a normal typedef. Change the code to use the output_function_*, in order to properly parse the function prototype parameters. Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
parent
3a80a76632
commit
837664528e
@ -1869,6 +1869,31 @@ sub dump_typedef($$) {
|
||||
my $file = shift;
|
||||
|
||||
$x =~ s@/\*.*?\*/@@gos; # strip comments.
|
||||
|
||||
# Parse function prototypes
|
||||
if ($x =~ /typedef\s+(\w+)\s*\(\*\s*(\w\S+)\s*\)\s*\((.*)\);/) {
|
||||
# Function typedefs
|
||||
$return_type = $1;
|
||||
$declaration_name = $2;
|
||||
my $args = $3;
|
||||
|
||||
create_parameterlist($args, ',', $file);
|
||||
|
||||
output_declaration($declaration_name,
|
||||
'function',
|
||||
{'function' => $declaration_name,
|
||||
'module' => $modulename,
|
||||
'functiontype' => $return_type,
|
||||
'parameterlist' => \@parameterlist,
|
||||
'parameterdescs' => \%parameterdescs,
|
||||
'parametertypes' => \%parametertypes,
|
||||
'sectionlist' => \@sectionlist,
|
||||
'sections' => \%sections,
|
||||
'purpose' => $declaration_purpose
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
while (($x =~ /\(*.\)\s*;$/) || ($x =~ /\[*.\]\s*;$/)) {
|
||||
$x =~ s/\(*.\)\s*;$/;/;
|
||||
$x =~ s/\[*.\]\s*;$/;/;
|
||||
@ -1886,18 +1911,6 @@ sub dump_typedef($$) {
|
||||
'purpose' => $declaration_purpose
|
||||
});
|
||||
}
|
||||
elsif ($x =~ /typedef\s+\w+\s*\(\*\s*(\w\S+)\s*\)\s*\(/) { # functions
|
||||
$declaration_name = $1;
|
||||
|
||||
output_declaration($declaration_name,
|
||||
'typedef',
|
||||
{'typedef' => $declaration_name,
|
||||
'module' => $modulename,
|
||||
'sectionlist' => \@sectionlist,
|
||||
'sections' => \%sections,
|
||||
'purpose' => $declaration_purpose
|
||||
});
|
||||
}
|
||||
else {
|
||||
print STDERR "${file}:$.: error: Cannot parse typedef!\n";
|
||||
++$errors;
|
||||
|
Loading…
Reference in New Issue
Block a user