- A few more bug fixes
- Reorganization continues
- New tool (make_filter) for filtering make output added
diff --git a/tools/winapi/winapi_extract b/tools/winapi/winapi_extract
index c93c1e2..8423836 100755
--- a/tools/winapi/winapi_extract
+++ b/tools/winapi/winapi_extract
@@ -13,18 +13,18 @@
&file_type &files_skip &files_filter &get_spec_files
$current_dir $wine_dir $winapi_dir $winapi_check_dir
);
-use modules;
-use nativeapi;
use output qw($output);
-use options;
-use winapi;
+use winapi_extract_options qw($options);
+
+use function;
+use type;
use winapi_function;
use winapi_parser;
-use winapi_extract_options qw($options);
+use winapi qw(@winapis);
my %module2spec_file;
my %module2type;
-{
+if($options->spec_files) {
local $_;
foreach my $spec_file (get_spec_files("winelib")) {
@@ -49,22 +49,6 @@
}
}
-my $modules = 'modules'->new($options, $output, $wine_dir, $current_dir, \&file_type, "$winapi_check_dir/modules.dat");
-
-my $win16api = 'winapi'->new($options, $output, "win16", "$winapi_check_dir/win16");
-my $win32api = 'winapi'->new($options, $output, "win32", "$winapi_check_dir/win32");
-my @winapis = ($win16api, $win32api);
-
-if($wine_dir eq ".") {
- 'winapi'->read_all_spec_files($modules, $wine_dir, $current_dir, \&file_type, $win16api, $win32api);
-} else {
- my @spec_files = $modules->allowed_spec_files($wine_dir, $current_dir);
- 'winapi'->read_spec_files($modules, $wine_dir, $current_dir, \@spec_files, $win16api, $win32api);
-}
-
-my $nativeapi = 'nativeapi'->new($options, $output, "$winapi_check_dir/nativeapi.dat",
- "$wine_dir/configure.in", "$wine_dir/include/config.h.in");
-
my %specifications;
sub documentation_specifications {
@@ -164,6 +148,14 @@
$output->progress("$file: file $progress_current of $progress_max");
}
+ my $create_function = sub {
+ if($options->stub_statistics) {
+ return 'winapi_function'->new;
+ } else {
+ return 'function'->new;
+ }
+ };
+
my $found_function = sub {
my $function = shift;
@@ -191,12 +183,20 @@
$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($options, $file, $found_function, $found_preprocessor);
+ &winapi_parser::parse_c_file($file, $create_function, $found_function, $create_type, $found_type, $found_preprocessor);
my @internal_names = keys(%functions);
if($#internal_names < 0) {
@@ -342,7 +342,7 @@
foreach my $internal_name ($winapi->all_internal_functions,$winapi->all_functions_stub) {
foreach my $module (split(/ \& /, $winapi->function_internal_module($internal_name))) {
- if($winapi->function_stub($internal_name)) {
+ if($winapi->is_function_stub_in_module($module, $internal_name)) {
$module_stub_count{$module}++;
}
$module_total_count{$module}++;
@@ -372,4 +372,3 @@
}
}
-$output->hide_progress;