3 # Copyright 2001 Patrik Stridvall
8 $0 =~ m
%^(.*?
/?tools)/winapi
/winapi_fixup
$%;
9 require "$1/winapi/setup.pm";
13 &file_type &files_filter
14 &file_skip &files_skip
17 $current_dir $wine_dir $winapi_dir $winapi_check_dir
19 use output qw($output);
20 use winapi_fixup_options qw($options);
22 if($options->progress) {
23 $output->enable_progress;
25 $output->disable_progress;
31 use winapi_fixup_documentation qw(&fixup_documentation);
32 use winapi_fixup_editor
;
33 use winapi_fixup_statements
qw(&fixup_statements);
35 my @c_files = $options->c_files;
36 @c_files = files_skip
(@c_files);
37 @c_files = files_filter
("winelib", @c_files);
40 my $progress_current = 0;
41 my $progress_max = scalar(@c_files);
43 foreach my $file (@c_files) {
44 my $editor = new winapi_fixup_editor
($file);
47 $output->progress("$file (file $progress_current of $progress_max)");
48 $output->prefix("$file:");
60 while(s/^.*?\n//) { $max_line++; }
61 if($_) { $max_line++; }
64 my $parser = new c_parser
($file);
69 my $update_output = sub {
73 $progress .= "$file (file $progress_current of $progress_max)";
76 if(defined($function)) {
77 my $name = $function->name;
78 my $begin_line = $function->begin_line;
79 my $begin_column = $function->begin_column;
81 $progress .= ": function $name";
82 $prefix .= "$begin_line.$begin_column: function $name: ";
86 $progress .= ": line $line of $max_line";
89 $output->progress($progress);
90 $output->prefix($prefix);
93 my $found_preprocessor = sub {
94 my $begin_line = shift;
95 my $begin_column = shift;
96 my $preprocessor = shift;
98 # $output->write("$begin_line.$begin_column: preprocessor: $preprocessor\n");
103 $parser->set_found_preprocessor_callback($found_preprocessor);
105 my $found_comment = sub {
106 my $begin_line = shift;
107 my $begin_column = shift;
110 # $output->write("$begin_line.$begin_column: comment: $comment\n");
115 $parser->set_found_comment_callback($found_comment);
117 my $found_line = sub {
123 # $output->progress("$file: line $line of ?");
126 $parser->set_found_line_callback($found_line);
128 my $found_declaration = sub {
129 my $begin_line = shift;
130 my $begin_column = shift;
131 my $end_line = shift;
132 my $end_column = shift;
133 my $declaration = shift;
135 # $output->write("$begin_line.$begin_column-$end_line.$end_column: declaration: \\\n$declaration\n");
140 $parser->set_found_declaration_callback($found_declaration);
142 my $found_function = sub {
147 my $name = $function->name;
148 my $begin_line = $function->begin_line;
149 my $begin_column = $function->begin_column;
150 my $end_line = $function->end_line;
151 my $end_column = $function->end_column;
153 if($options->documentation) {
154 # fixup_documentation($function, $editor);
157 if($options->statements) {
158 fixup_statements
($function, $editor);
161 my $statements = $function->statements;
162 if(!defined($statements)) {
164 $output->prefix("$file: ");
166 # $output->write("$begin_line.$begin_column-$end_line.$end_column: function $name\n");
172 $parser->set_found_function_callback($found_function);
174 my $found_variable = sub {
175 my $begin_line = shift;
176 my $begin_column = shift;
181 # $output->write("$begin_line.$begin_column: $linkage $type $name = /* ... */\n");
186 $parser->set_found_variable_callback($found_variable);
188 my $found_function_call = sub {
189 my $begin_line = shift;
190 my $begin_column = shift;
191 my $end_line = shift;
192 my $end_column = shift;
194 my $arguments = shift;
196 $output->write("$begin_line.$begin_column-$end_line.$end_column: $name(" . join(", ", @
$arguments) . ")\n");
201 $parser->set_found_function_call_callback($found_function_call);
206 if(!$parser->parse_c_file(\
$_, \
$line, \
$column)) {
207 $output->write("can't parse file\n");