- Minor fixes.
- Moved some of the API specifications from the global file to the
local files.
diff --git a/tools/winapi_check/winapi.pm b/tools/winapi_check/winapi.pm
index f7a6a88..9bcae11 100644
--- a/tools/winapi_check/winapi.pm
+++ b/tools/winapi_check/winapi.pm
@@ -271,9 +271,15 @@
my $allowed_modules_limited = \%{$self->{ALLOWED_MODULES_LIMITED}};
my $type = shift;
- my $module = shift;
+ my @modules = split(/ \& /, shift);
- return !$$allowed_modules_limited{$type} || $$allowed_modules{$type}{$module};
+ if(!$$allowed_modules_limited{$type}) { return 1; }
+
+ foreach my $module (@modules) {
+ if($$allowed_modules{$type}{$module}) { return 1; }
+ }
+
+ return 0;
}
sub type_used_in_module {
@@ -281,10 +287,12 @@
my $used_modules = \%{$self->{USED_MODULES}};
my $type = shift;
- my $module = shift;
+ my @modules = split(/ \& /, shift);
- $$used_modules{$type}{$module} = 1;
-
+ foreach my $module (@modules) {
+ $$used_modules{$type}{$module} = 1;
+ }
+
return ();
}
@@ -304,6 +312,31 @@
return $not_used;
}
+sub types_unlimited_used_in_modules {
+ my $self = shift;
+
+ my $output = \${$self->{OUTPUT}};
+ my $used_modules = \%{$self->{USED_MODULES}};
+ my $allowed_modules = \%{$self->{ALLOWED_MODULES}};
+ my $allowed_modules_unlimited = \%{$self->{ALLOWED_MODULES_UNLIMITED}};
+
+ my $used_types;
+ foreach my $type (sort(keys(%$allowed_modules_unlimited))) {
+ my $count = 0;
+ my @modules = ();
+ foreach my $module (sort(keys(%{$$used_modules{$type}}))) {
+ $count++;
+ push @modules, $module;
+ }
+ if($count <= 1) {
+ foreach my $module (@modules) {
+ $$used_types{$type}{$module} = 1;
+ }
+ }
+ }
+ return $used_types;
+}
+
sub translate_argument {
my $self = shift;
my $translate_argument = \%{$self->{TRANSLATE_ARGUMENT}};