| #!/usr/bin/perl -w |
| |
| # Copyright 2001 Patrik Stridvall |
| |
| use strict; |
| |
| BEGIN { |
| $0 =~ m%^(.*?/?tools)/winapi/winapi_fixup$%; |
| require "$1/winapi/setup.pm"; |
| } |
| |
| use config qw( |
| &file_type &files_filter |
| &file_skip &files_skip |
| &file_normalize |
| &get_spec_files |
| $current_dir $wine_dir $winapi_dir $winapi_check_dir |
| ); |
| use output qw($output); |
| use winapi_fixup_options qw($options); |
| |
| use type; |
| use winapi_function; |
| use winapi_parser; |
| |
| use winapi_fixup_documentation qw(&fixup_documentation); |
| use winapi_fixup_editor; |
| use winapi_fixup_statements qw(&fixup_statements); |
| |
| my @c_files = $options->c_files; |
| @c_files = files_skip(@c_files); |
| @c_files = files_filter("winelib", @c_files); |
| |
| my $progress_output; |
| my $progress_current = 0; |
| my $progress_max = scalar(@c_files); |
| |
| foreach my $file (@c_files) { |
| my $editor = new winapi_fixup_editor($file); |
| |
| $progress_current++; |
| if($options->progress) { |
| $output->progress("$file (file $progress_current of $progress_max)"); |
| } |
| |
| my $create_function = sub { |
| return 'winapi_function'->new; |
| }; |
| |
| my $found_function = sub { |
| my $function = shift; |
| |
| my $internal_name = $function->internal_name; |
| if($options->progress) { |
| $output->progress("$file (file $progress_current of $progress_max): $internal_name"); |
| } |
| |
| $output->prefix_callback(sub { return $function->prefix; }); |
| |
| if($options->documentation) { |
| fixup_documentation($function, $editor); |
| } |
| |
| if($options->statements) { |
| fixup_statements($function, $editor); |
| } |
| |
| $output->prefix(""); |
| }; |
| |
| my $create_type = sub { |
| return 'type'->new; |
| }; |
| |
| my $found_type = sub { |
| my $type = shift; |
| }; |
| |
| my $found_preprocessor = sub { |
| my $directive = shift; |
| my $argument = shift; |
| }; |
| |
| &winapi_parser::parse_c_file($file, $create_function, $found_function, $create_type, $found_type, $found_preprocessor); |
| |
| $editor->flush; |
| } |
| |