Commit 1d796741 authored by Max TenEyck Woodbury's avatar Max TenEyck Woodbury Committed by Alexandre Julliard

c2man: Label export list slots.

parent e705f29f
...@@ -38,6 +38,12 @@ my $FLAG_APAIR = 16; # The A version of a matching W function ...@@ -38,6 +38,12 @@ my $FLAG_APAIR = 16; # The A version of a matching W function
my $FLAG_WPAIR = 32; # The W version of a matching A function my $FLAG_WPAIR = 32; # The W version of a matching A function
my $FLAG_64PAIR = 64; # The 64 bit version of a matching 32 bit function my $FLAG_64PAIR = 64; # The 64 bit version of a matching 32 bit function
# Export list slot labels.
my $EXPORT_ORDINAL = 0; # Ordinal.
my $EXPORT_CALL = 1; # Call type.
my $EXPORT_EXPNAME = 2; # Export name.
my $EXPORT_IMPNAME = 3; # Implementation name.
my $EXPORT_FLAGS = 4; # Flags - see above.
# Options # Options
my $opt_output_directory = "man3w"; # All default options are for nroff (man pages) my $opt_output_directory = "man3w"; # All default options are for nroff (man pages)
...@@ -595,9 +601,9 @@ sub process_comment($) ...@@ -595,9 +601,9 @@ sub process_comment($)
# Find the name from the .spec file # Find the name from the .spec file
for (@{$spec_details->{EXPORTS}}) for (@{$spec_details->{EXPORTS}})
{ {
if (@$_[0] eq $comment->{ORDINAL}) if (@$_[$EXPORT_ORDINAL] eq $comment->{ORDINAL})
{ {
$comment->{COMMENT_NAME} = @$_[2]; $comment->{COMMENT_NAME} = @$_[$EXPORT_EXPNAME];
$found = 1; $found = 1;
} }
} }
...@@ -644,7 +650,7 @@ sub process_comment($) ...@@ -644,7 +650,7 @@ sub process_comment($)
print "Info: Found alternate name '",$1,"\n"; print "Info: Found alternate name '",$1,"\n";
} }
my $alt_export = @{$spec_details->{EXPORTS}}[$alt_index]; my $alt_export = @{$spec_details->{EXPORTS}}[$alt_index];
@$alt_export[4] |= $FLAG_DOCUMENTED; @$alt_export[$EXPORT_FLAGS] |= $FLAG_DOCUMENTED;
$spec_details->{NUM_DOCS}++; $spec_details->{NUM_DOCS}++;
${$comment->{TEXT}}[1] = ""; ${$comment->{TEXT}}[1] = "";
} }
...@@ -668,12 +674,12 @@ sub process_comment($) ...@@ -668,12 +674,12 @@ sub process_comment($)
# We want our docs generated using the implementation name, so they are unique # We want our docs generated using the implementation name, so they are unique
my $export = @{$spec_details->{EXPORTS}}[$export_index]; my $export = @{$spec_details->{EXPORTS}}[$export_index];
$comment->{COMMENT_NAME} = @$export[3]; $comment->{COMMENT_NAME} = @$export[$EXPORT_IMPNAME];
$comment->{ALT_NAME} = @$export[2]; $comment->{ALT_NAME} = @$export[$EXPORT_EXPNAME];
# Mark the function as documented # Mark the function as documented
$spec_details->{NUM_DOCS}++; $spec_details->{NUM_DOCS}++;
@$export[4] |= $FLAG_DOCUMENTED; @$export[$EXPORT_FLAGS] |= $FLAG_DOCUMENTED;
# This file is used by the DLL - Make sure we get our contributors right # This file is used by the DLL - Make sure we get our contributors right
push (@{$spec_details->{SOURCES}},$comment->{FILE}); push (@{$spec_details->{SOURCES}},$comment->{FILE});
...@@ -774,11 +780,11 @@ sub process_comment($) ...@@ -774,11 +780,11 @@ sub process_comment($)
else else
{ {
my $ascii_export = @{$spec_details->{EXPORTS}}[$ascii_export_index]; my $ascii_export = @{$spec_details->{EXPORTS}}[$ascii_export_index];
if (@$ascii_export[4] & $FLAG_DOCUMENTED) if (@$ascii_export[$EXPORT_FLAGS] & $FLAG_DOCUMENTED)
{ {
# Flag these functions as an A/W pair # Flag these functions as an A/W pair
@$ascii_export[4] |= $FLAG_APAIR; @$ascii_export[$EXPORT_FLAGS] |= $FLAG_APAIR;
@$export[4] |= $FLAG_WPAIR; @$export[$EXPORT_FLAGS] |= $FLAG_WPAIR;
} }
} }
} }
...@@ -786,12 +792,12 @@ sub process_comment($) ...@@ -786,12 +792,12 @@ sub process_comment($)
} }
elsif ( /^Unicode version of ([A-Za-z0-9_]+)\.$/ ) elsif ( /^Unicode version of ([A-Za-z0-9_]+)\.$/ )
{ {
@$export[4] |= $FLAG_WPAIR; # Explicitly marked as W version @$export[$EXPORT_FLAGS] |= $FLAG_WPAIR; # Explicitly marked as W version
$found_returns = 1; $found_returns = 1;
} }
elsif ( /^64\-bit version of ([A-Za-z0-9_]+)\.$/ ) elsif ( /^64\-bit version of ([A-Za-z0-9_]+)\.$/ )
{ {
@$export[4] |= $FLAG_64PAIR; # Explicitly marked as 64 bit version @$export[$EXPORT_FLAGS] |= $FLAG_64PAIR; # Explicitly marked as 64 bit version
$found_returns = 1; $found_returns = 1;
} }
$found_description_text = 1; $found_description_text = 1;
...@@ -810,7 +816,7 @@ sub process_comment($) ...@@ -810,7 +816,7 @@ sub process_comment($)
"description and/or RETURNS section, skipping\n"; "description and/or RETURNS section, skipping\n";
} }
$spec_details->{NUM_DOCS}--; $spec_details->{NUM_DOCS}--;
@$export[4] &= ~$FLAG_DOCUMENTED; @$export[$EXPORT_FLAGS] &= ~$FLAG_DOCUMENTED;
return; return;
} }
} }
...@@ -844,7 +850,7 @@ sub process_comment($) ...@@ -844,7 +850,7 @@ sub process_comment($)
# Find header file # Find header file
my $h_file = ""; my $h_file = "";
if (@$export[4] & $FLAG_NONAME) if (@$export[$EXPORT_FLAGS] & $FLAG_NONAME)
{ {
$h_file = "Exported by ordinal only. Use GetProcAddress() to obtain a pointer to the function."; $h_file = "Exported by ordinal only. Use GetProcAddress() to obtain a pointer to the function.";
} }
...@@ -913,11 +919,11 @@ sub process_comment($) ...@@ -913,11 +919,11 @@ sub process_comment($)
# Add the implementation details # Add the implementation details
push (@{$comment->{TEXT}}, "IMPLEMENTATION","",$h_file,"",$c_file); push (@{$comment->{TEXT}}, "IMPLEMENTATION","",$h_file,"",$c_file);
if (@$export[4] & $FLAG_I386) if (@$export[$EXPORT_FLAGS] & $FLAG_I386)
{ {
push (@{$comment->{TEXT}}, "", "Available on x86 platforms only."); push (@{$comment->{TEXT}}, "", "Available on x86 platforms only.");
} }
if (@$export[4] & $FLAG_REGISTER) if (@$export[$EXPORT_FLAGS] & $FLAG_REGISTER)
{ {
push (@{$comment->{TEXT}}, "", "This function passes one or more arguments in registers. ", push (@{$comment->{TEXT}}, "", "This function passes one or more arguments in registers. ",
"For more details, please read the source code."); "For more details, please read the source code.");
...@@ -1209,57 +1215,57 @@ sub output_spec($) ...@@ -1209,57 +1215,57 @@ sub output_spec($)
my $line = ""; my $line = "";
# @$_ => ordinal, call convention, exported name, implementation name, flags; # @$_ => ordinal, call convention, exported name, implementation name, flags;
if (@$_[1] eq "forward") if (@$_[$EXPORT_CALL] eq "forward")
{ {
my $forward_dll = @$_[3]; my $forward_dll = @$_[$EXPORT_IMPNAME];
$forward_dll =~ s/\.(.*)//; $forward_dll =~ s/\.(.*)//;
$line = @$_[2]." (forward to ".$1."() in ".$forward_dll."())"; $line = @$_[$EXPORT_EXPNAME]." (forward to ".$1."() in ".$forward_dll."())";
} }
elsif (@$_[1] eq "extern") elsif (@$_[$EXPORT_CALL] eq "extern")
{ {
$line = @$_[2]." (extern)"; $line = @$_[$EXPORT_EXPNAME]." (extern)";
} }
elsif (@$_[1] eq "stub") elsif (@$_[$EXPORT_CALL] eq "stub")
{ {
$line = @$_[2]." (stub)"; $line = @$_[$EXPORT_EXPNAME]." (stub)";
} }
elsif (@$_[1] eq "fake") elsif (@$_[$EXPORT_CALL] eq "fake")
{ {
# Don't add this function here, it gets listed with the extra documentation # Don't add this function here, it gets listed with the extra documentation
if (!(@$_[4] & $FLAG_WPAIR)) if (!(@$_[$EXPORT_FLAGS] & $FLAG_WPAIR))
{ {
# This function should be indexed # This function should be indexed
push (@index_entries_list, @$_[3].",".@$_[3]); push (@index_entries_list, @$_[$EXPORT_IMPNAME].",".@$_[$EXPORT_IMPNAME]);
} }
} }
elsif (@$_[1] eq "equate" || @$_[1] eq "variable") elsif (@$_[$EXPORT_CALL] eq "equate" || @$_[$EXPORT_CALL] eq "variable")
{ {
$line = @$_[2]." (data)"; $line = @$_[$EXPORT_EXPNAME]." (data)";
} }
else else
{ {
# A function # A function
if (@$_[4] & $FLAG_DOCUMENTED) if (@$_[$EXPORT_FLAGS] & $FLAG_DOCUMENTED)
{ {
# Documented # Documented
$line = @$_[2]." (implemented as ".@$_[3]."())"; $line = @$_[$EXPORT_EXPNAME]." (implemented as ".@$_[$EXPORT_IMPNAME]."())";
if (@$_[2] ne @$_[3]) if (@$_[$EXPORT_EXPNAME] ne @$_[$EXPORT_IMPNAME])
{ {
$line = @$_[2]." (implemented as ".@$_[3]."())"; $line = @$_[$EXPORT_EXPNAME]." (implemented as ".@$_[$EXPORT_IMPNAME]."())";
} }
else else
{ {
$line = @$_[2]."()"; $line = @$_[$EXPORT_EXPNAME]."()";
} }
if (!(@$_[4] & $FLAG_WPAIR)) if (!(@$_[$EXPORT_FLAGS] & $FLAG_WPAIR))
{ {
# This function should be indexed # This function should be indexed
push (@index_entries_list, @$_[2].",".@$_[3]); push (@index_entries_list, @$_[$EXPORT_EXPNAME].",".@$_[$EXPORT_IMPNAME]);
} }
} }
else else
{ {
$line = @$_[2]." (not documented)"; $line = @$_[$EXPORT_EXPNAME]." (not documented)";
} }
} }
if ($line ne "") if ($line ne "")
...@@ -1981,11 +1987,13 @@ sub output_sgml_dll_file($) ...@@ -1981,11 +1987,13 @@ sub output_sgml_dll_file($)
for (@$exports) for (@$exports)
{ {
# @$_ => ordinal, call convention, exported name, implementation name, documented; # @$_ => ordinal, call convention, exported name, implementation name, documented;
if (@$_[1] ne "forward" && @$_[1] ne "extern" && @$_[1] ne "stub" && @$_[1] ne "equate" && if (@$_[$EXPORT_CALL] ne "forward" && @$_[$EXPORT_CALL] ne "extern" &&
@$_[1] ne "variable" && @$_[1] ne "fake" && @$_[4] & 1) @$_[$EXPORT_CALL] ne "stub" && @$_[$EXPORT_CALL] ne "equate" &&
@$_[$EXPORT_CALL] ne "variable" && @$_[$EXPORT_CALL] ne "fake" &&
@$_[$EXPORT_FLAGS] & $FLAGS_DOCUMENTED)
{ {
# A documented function # A documented function
push (@source_files,@$_[3]); push (@source_files,@$_[$EXPORT_IMPNAME]);
} }
} }
...@@ -2025,11 +2033,13 @@ sub output_xml_dll_file($) ...@@ -2025,11 +2033,13 @@ sub output_xml_dll_file($)
for (@$exports) for (@$exports)
{ {
# @$_ => ordinal, call convention, exported name, implementation name, documented; # @$_ => ordinal, call convention, exported name, implementation name, documented;
if (@$_[1] ne "forward" && @$_[1] ne "extern" && @$_[1] ne "stub" && @$_[1] ne "equate" && if (@$_[$EXPORT_CALL] ne "forward" && @$_[$EXPORT_CALL] ne "extern" &&
@$_[1] ne "variable" && @$_[1] ne "fake" && @$_[4] & 1) @$_[$EXPORT_CALL] ne "stub" && @$_[$EXPORT_CALL] ne "equate" &&
@$_[$EXPORT_CALL] ne "variable" && @$_[$EXPORT_CALL] ne "fake" &&
@$_[$EXPORT_FLAGS] & $FLAG_DOCUMENTED)
{ {
# A documented function # A documented function
push (@source_files,@$_[3]); push (@source_files,@$_[$EXPORT_IMPNAME]);
} }
} }
...@@ -2341,7 +2351,8 @@ if ($opt_verbose > 3) ...@@ -2341,7 +2351,8 @@ if ($opt_verbose > 3)
my $exports = $spec_details->{EXPORTS}; my $exports = $spec_details->{EXPORTS};
for (@$exports) for (@$exports)
{ {
print @$_[0].",".@$_[1].",".@$_[2].",".@$_[3]."\n"; print @$_[$EXPORT_ORDINAL].",".@$_[$EXPORT_CALL].", ".
@$_[$EXPORT_EXPNAME].",".@$_[$EXPORT_IMPNAME]."\n";
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment