/src/serenity/AK/EnumBits.h
Line | Count | Source |
1 | | /* |
2 | | * Copyright (c) 2021, Brian Gianforcaro <bgianf@serenityos.org> |
3 | | * |
4 | | * SPDX-License-Identifier: BSD-2-Clause |
5 | | */ |
6 | | |
7 | | #pragma once |
8 | | |
9 | | #include <AK/StdLibExtraDetails.h> |
10 | | |
11 | | // Enables bitwise operators for the specified Enum type. |
12 | | // |
13 | | #define AK_ENUM_BITWISE_OPERATORS(Enum) \ |
14 | | _AK_ENUM_BITWISE_OPERATORS_INTERNAL(Enum, ) |
15 | | |
16 | | // Enables bitwise operators for the specified Enum type, this |
17 | | // version is meant for use on enums which are private to the |
18 | | // containing type. |
19 | | // |
20 | | #define AK_ENUM_BITWISE_FRIEND_OPERATORS(Enum) \ |
21 | | _AK_ENUM_BITWISE_OPERATORS_INTERNAL(Enum, friend) |
22 | | |
23 | | #define _AK_ENUM_BITWISE_OPERATORS_INTERNAL(Enum, Prefix) \ |
24 | | \ |
25 | | [[nodiscard]] Prefix constexpr Enum operator|(Enum lhs, Enum rhs) \ |
26 | 12 | { \ |
27 | 12 | using Type = UnderlyingType<Enum>; \ |
28 | 12 | return static_cast<Enum>( \ |
29 | 12 | static_cast<Type>(lhs) | static_cast<Type>(rhs)); \ |
30 | 12 | } \ Unexecuted instantiation: AK::operator|(AK::SplitBehavior, AK::SplitBehavior) Unexecuted instantiation: Core::operator|(Core::NotificationType, Core::NotificationType) Unexecuted instantiation: Core::operator|(Core::File::OpenMode, Core::File::OpenMode) Unexecuted instantiation: Gfx::operator|(Gfx::ViewportMode, Gfx::ViewportMode) Unexecuted instantiation: FileSystem::operator|(FileSystem::PreserveMode, FileSystem::PreserveMode) AK::operator|(AK::CPUFeatures, AK::CPUFeatures) Line | Count | Source | 26 | 12 | { \ | 27 | 12 | using Type = UnderlyingType<Enum>; \ | 28 | 12 | return static_cast<Enum>( \ | 29 | 12 | static_cast<Type>(lhs) | static_cast<Type>(rhs)); \ | 30 | 12 | } \ |
Unexecuted instantiation: JS::operator|(JS::RegExpObject::Flags, JS::RegExpObject::Flags) Unexecuted instantiation: Audio::MP3::operator|(Audio::MP3::ModeExtension, Audio::MP3::ModeExtension) Unexecuted instantiation: Web::HTML::operator|(Web::HTML::SandboxingFlagSet, Web::HTML::SandboxingFlagSet) Unexecuted instantiation: operator|(KeyModifier, KeyModifier) Unexecuted instantiation: Web::UIEvents::operator|(Web::UIEvents::MouseButton, Web::UIEvents::MouseButton) Unexecuted instantiation: Web::DOM::operator|(Web::DOM::NodeFilter::WhatToShow, Web::DOM::NodeFilter::WhatToShow) |
31 | | \ |
32 | | [[nodiscard]] Prefix constexpr Enum operator&(Enum lhs, Enum rhs) \ |
33 | 3.94M | { \ |
34 | 3.94M | using Type = UnderlyingType<Enum>; \ |
35 | 3.94M | return static_cast<Enum>( \ |
36 | 3.94M | static_cast<Type>(lhs) & static_cast<Type>(rhs)); \ |
37 | 3.94M | } \ AK::operator&(AK::SplitBehavior, AK::SplitBehavior) Line | Count | Source | 33 | 3.84M | { \ | 34 | 3.84M | using Type = UnderlyingType<Enum>; \ | 35 | 3.84M | return static_cast<Enum>( \ | 36 | 3.84M | static_cast<Type>(lhs) & static_cast<Type>(rhs)); \ | 37 | 3.84M | } \ |
Unexecuted instantiation: Core::operator&(Core::NotificationType, Core::NotificationType) Unexecuted instantiation: Core::operator&(Core::File::OpenMode, Core::File::OpenMode) Gfx::operator&(Gfx::ViewportMode, Gfx::ViewportMode) Line | Count | Source | 33 | 26.6k | { \ | 34 | 26.6k | using Type = UnderlyingType<Enum>; \ | 35 | 26.6k | return static_cast<Enum>( \ | 36 | 26.6k | static_cast<Type>(lhs) & static_cast<Type>(rhs)); \ | 37 | 26.6k | } \ |
Unexecuted instantiation: FileSystem::operator&(FileSystem::PreserveMode, FileSystem::PreserveMode) AK::operator&(AK::CPUFeatures, AK::CPUFeatures) Line | Count | Source | 33 | 20 | { \ | 34 | 20 | using Type = UnderlyingType<Enum>; \ | 35 | 20 | return static_cast<Enum>( \ | 36 | 20 | static_cast<Type>(lhs) & static_cast<Type>(rhs)); \ | 37 | 20 | } \ |
Unexecuted instantiation: JS::operator&(JS::RegExpObject::Flags, JS::RegExpObject::Flags) Audio::MP3::operator&(Audio::MP3::ModeExtension, Audio::MP3::ModeExtension) Line | Count | Source | 33 | 76.6k | { \ | 34 | 76.6k | using Type = UnderlyingType<Enum>; \ | 35 | 76.6k | return static_cast<Enum>( \ | 36 | 76.6k | static_cast<Type>(lhs) & static_cast<Type>(rhs)); \ | 37 | 76.6k | } \ |
Unexecuted instantiation: Web::HTML::operator&(Web::HTML::SandboxingFlagSet, Web::HTML::SandboxingFlagSet) Unexecuted instantiation: operator&(KeyModifier, KeyModifier) Unexecuted instantiation: Web::UIEvents::operator&(Web::UIEvents::MouseButton, Web::UIEvents::MouseButton) Unexecuted instantiation: Web::DOM::operator&(Web::DOM::NodeFilter::WhatToShow, Web::DOM::NodeFilter::WhatToShow) |
38 | | \ |
39 | | [[nodiscard]] Prefix constexpr Enum operator^(Enum lhs, Enum rhs) \ |
40 | 0 | { \ |
41 | 0 | using Type = UnderlyingType<Enum>; \ |
42 | 0 | return static_cast<Enum>( \ |
43 | 0 | static_cast<Type>(lhs) ^ static_cast<Type>(rhs)); \ |
44 | 0 | } \ Unexecuted instantiation: AK::operator^(AK::SplitBehavior, AK::SplitBehavior) Unexecuted instantiation: Core::operator^(Core::NotificationType, Core::NotificationType) Unexecuted instantiation: Core::operator^(Core::File::OpenMode, Core::File::OpenMode) Unexecuted instantiation: Gfx::operator^(Gfx::ViewportMode, Gfx::ViewportMode) Unexecuted instantiation: FileSystem::operator^(FileSystem::PreserveMode, FileSystem::PreserveMode) Unexecuted instantiation: AK::operator^(AK::CPUFeatures, AK::CPUFeatures) Unexecuted instantiation: JS::operator^(JS::RegExpObject::Flags, JS::RegExpObject::Flags) Unexecuted instantiation: Audio::MP3::operator^(Audio::MP3::ModeExtension, Audio::MP3::ModeExtension) Unexecuted instantiation: Web::HTML::operator^(Web::HTML::SandboxingFlagSet, Web::HTML::SandboxingFlagSet) Unexecuted instantiation: operator^(KeyModifier, KeyModifier) Unexecuted instantiation: Web::UIEvents::operator^(Web::UIEvents::MouseButton, Web::UIEvents::MouseButton) Unexecuted instantiation: Web::DOM::operator^(Web::DOM::NodeFilter::WhatToShow, Web::DOM::NodeFilter::WhatToShow) |
45 | | \ |
46 | | [[nodiscard]] Prefix constexpr Enum operator~(Enum rhs) \ |
47 | 0 | { \ |
48 | 0 | using Type = UnderlyingType<Enum>; \ |
49 | 0 | return static_cast<Enum>( \ |
50 | 0 | ~static_cast<Type>(rhs)); \ |
51 | 0 | } \ Unexecuted instantiation: AK::operator~(AK::SplitBehavior) Unexecuted instantiation: Core::operator~(Core::NotificationType) Unexecuted instantiation: Core::operator~(Core::File::OpenMode) Unexecuted instantiation: Gfx::operator~(Gfx::ViewportMode) Unexecuted instantiation: FileSystem::operator~(FileSystem::PreserveMode) Unexecuted instantiation: AK::operator~(AK::CPUFeatures) Unexecuted instantiation: JS::operator~(JS::RegExpObject::Flags) Unexecuted instantiation: Audio::MP3::operator~(Audio::MP3::ModeExtension) Unexecuted instantiation: Web::HTML::operator~(Web::HTML::SandboxingFlagSet) Unexecuted instantiation: operator~(KeyModifier) Unexecuted instantiation: Web::UIEvents::operator~(Web::UIEvents::MouseButton) Unexecuted instantiation: Web::DOM::operator~(Web::DOM::NodeFilter::WhatToShow) |
52 | | \ |
53 | | Prefix constexpr Enum& operator|=(Enum& lhs, Enum rhs) \ |
54 | 20 | { \ |
55 | 20 | using Type = UnderlyingType<Enum>; \ |
56 | 20 | lhs = static_cast<Enum>( \ |
57 | 20 | static_cast<Type>(lhs) | static_cast<Type>(rhs)); \ |
58 | 20 | return lhs; \ |
59 | 20 | } \ Unexecuted instantiation: AK::operator|=(AK::SplitBehavior&, AK::SplitBehavior) Unexecuted instantiation: Core::operator|=(Core::NotificationType&, Core::NotificationType) Unexecuted instantiation: Core::operator|=(Core::File::OpenMode&, Core::File::OpenMode) Unexecuted instantiation: Gfx::operator|=(Gfx::ViewportMode&, Gfx::ViewportMode) Unexecuted instantiation: FileSystem::operator|=(FileSystem::PreserveMode&, FileSystem::PreserveMode) AK::operator|=(AK::CPUFeatures&, AK::CPUFeatures) Line | Count | Source | 54 | 20 | { \ | 55 | 20 | using Type = UnderlyingType<Enum>; \ | 56 | 20 | lhs = static_cast<Enum>( \ | 57 | 20 | static_cast<Type>(lhs) | static_cast<Type>(rhs)); \ | 58 | 20 | return lhs; \ | 59 | 20 | } \ |
Unexecuted instantiation: JS::operator|=(JS::RegExpObject::Flags&, JS::RegExpObject::Flags) Unexecuted instantiation: Audio::MP3::operator|=(Audio::MP3::ModeExtension&, Audio::MP3::ModeExtension) Unexecuted instantiation: Web::HTML::operator|=(Web::HTML::SandboxingFlagSet&, Web::HTML::SandboxingFlagSet) Unexecuted instantiation: operator|=(KeyModifier&, KeyModifier) Unexecuted instantiation: Web::UIEvents::operator|=(Web::UIEvents::MouseButton&, Web::UIEvents::MouseButton) Unexecuted instantiation: Web::DOM::operator|=(Web::DOM::NodeFilter::WhatToShow&, Web::DOM::NodeFilter::WhatToShow) |
60 | | \ |
61 | | Prefix inline void operator|=(Enum volatile& lhs, Enum rhs) \ |
62 | 0 | { \ |
63 | 0 | using Type = UnderlyingType<Enum>; \ |
64 | 0 | lhs = static_cast<Enum>( \ |
65 | 0 | static_cast<Type>(lhs) | static_cast<Type>(rhs)); \ |
66 | 0 | } \ Unexecuted instantiation: AK::operator|=(AK::SplitBehavior volatile&, AK::SplitBehavior) Unexecuted instantiation: Core::operator|=(Core::NotificationType volatile&, Core::NotificationType) Unexecuted instantiation: Core::operator|=(Core::File::OpenMode volatile&, Core::File::OpenMode) Unexecuted instantiation: Gfx::operator|=(Gfx::ViewportMode volatile&, Gfx::ViewportMode) Unexecuted instantiation: FileSystem::operator|=(FileSystem::PreserveMode volatile&, FileSystem::PreserveMode) Unexecuted instantiation: AK::operator|=(AK::CPUFeatures volatile&, AK::CPUFeatures) Unexecuted instantiation: JS::operator|=(JS::RegExpObject::Flags volatile&, JS::RegExpObject::Flags) Unexecuted instantiation: Audio::MP3::operator|=(Audio::MP3::ModeExtension volatile&, Audio::MP3::ModeExtension) Unexecuted instantiation: Web::HTML::operator|=(Web::HTML::SandboxingFlagSet volatile&, Web::HTML::SandboxingFlagSet) Unexecuted instantiation: operator|=(KeyModifier volatile&, KeyModifier) Unexecuted instantiation: Web::UIEvents::operator|=(Web::UIEvents::MouseButton volatile&, Web::UIEvents::MouseButton) Unexecuted instantiation: Web::DOM::operator|=(Web::DOM::NodeFilter::WhatToShow volatile&, Web::DOM::NodeFilter::WhatToShow) |
67 | | \ |
68 | | Prefix constexpr Enum& operator&=(Enum& lhs, Enum rhs) \ |
69 | 0 | { \ |
70 | 0 | using Type = UnderlyingType<Enum>; \ |
71 | 0 | lhs = static_cast<Enum>( \ |
72 | 0 | static_cast<Type>(lhs) & static_cast<Type>(rhs)); \ |
73 | 0 | return lhs; \ |
74 | 0 | } \ Unexecuted instantiation: AK::operator&=(AK::SplitBehavior&, AK::SplitBehavior) Unexecuted instantiation: Core::operator&=(Core::NotificationType&, Core::NotificationType) Unexecuted instantiation: Core::operator&=(Core::File::OpenMode&, Core::File::OpenMode) Unexecuted instantiation: Gfx::operator&=(Gfx::ViewportMode&, Gfx::ViewportMode) Unexecuted instantiation: FileSystem::operator&=(FileSystem::PreserveMode&, FileSystem::PreserveMode) Unexecuted instantiation: AK::operator&=(AK::CPUFeatures&, AK::CPUFeatures) Unexecuted instantiation: JS::operator&=(JS::RegExpObject::Flags&, JS::RegExpObject::Flags) Unexecuted instantiation: Audio::MP3::operator&=(Audio::MP3::ModeExtension&, Audio::MP3::ModeExtension) Unexecuted instantiation: Web::HTML::operator&=(Web::HTML::SandboxingFlagSet&, Web::HTML::SandboxingFlagSet) Unexecuted instantiation: operator&=(KeyModifier&, KeyModifier) Unexecuted instantiation: Web::UIEvents::operator&=(Web::UIEvents::MouseButton&, Web::UIEvents::MouseButton) Unexecuted instantiation: Web::DOM::operator&=(Web::DOM::NodeFilter::WhatToShow&, Web::DOM::NodeFilter::WhatToShow) |
75 | | \ |
76 | | Prefix inline void operator&=(Enum volatile& lhs, Enum rhs) \ |
77 | 0 | { \ |
78 | 0 | using Type = UnderlyingType<Enum>; \ |
79 | 0 | lhs = static_cast<Enum>( \ |
80 | 0 | static_cast<Type>(lhs) & static_cast<Type>(rhs)); \ |
81 | 0 | } \ Unexecuted instantiation: AK::operator&=(AK::SplitBehavior volatile&, AK::SplitBehavior) Unexecuted instantiation: Core::operator&=(Core::NotificationType volatile&, Core::NotificationType) Unexecuted instantiation: Core::operator&=(Core::File::OpenMode volatile&, Core::File::OpenMode) Unexecuted instantiation: Gfx::operator&=(Gfx::ViewportMode volatile&, Gfx::ViewportMode) Unexecuted instantiation: FileSystem::operator&=(FileSystem::PreserveMode volatile&, FileSystem::PreserveMode) Unexecuted instantiation: AK::operator&=(AK::CPUFeatures volatile&, AK::CPUFeatures) Unexecuted instantiation: JS::operator&=(JS::RegExpObject::Flags volatile&, JS::RegExpObject::Flags) Unexecuted instantiation: Audio::MP3::operator&=(Audio::MP3::ModeExtension volatile&, Audio::MP3::ModeExtension) Unexecuted instantiation: Web::HTML::operator&=(Web::HTML::SandboxingFlagSet volatile&, Web::HTML::SandboxingFlagSet) Unexecuted instantiation: operator&=(KeyModifier volatile&, KeyModifier) Unexecuted instantiation: Web::UIEvents::operator&=(Web::UIEvents::MouseButton volatile&, Web::UIEvents::MouseButton) Unexecuted instantiation: Web::DOM::operator&=(Web::DOM::NodeFilter::WhatToShow volatile&, Web::DOM::NodeFilter::WhatToShow) |
82 | | \ |
83 | | Prefix constexpr Enum& operator^=(Enum& lhs, Enum rhs) \ |
84 | 0 | { \ |
85 | 0 | using Type = UnderlyingType<Enum>; \ |
86 | 0 | lhs = static_cast<Enum>( \ |
87 | 0 | static_cast<Type>(lhs) ^ static_cast<Type>(rhs)); \ |
88 | 0 | return lhs; \ |
89 | 0 | } \ Unexecuted instantiation: AK::operator^=(AK::SplitBehavior&, AK::SplitBehavior) Unexecuted instantiation: Core::operator^=(Core::NotificationType&, Core::NotificationType) Unexecuted instantiation: Core::operator^=(Core::File::OpenMode&, Core::File::OpenMode) Unexecuted instantiation: Gfx::operator^=(Gfx::ViewportMode&, Gfx::ViewportMode) Unexecuted instantiation: FileSystem::operator^=(FileSystem::PreserveMode&, FileSystem::PreserveMode) Unexecuted instantiation: AK::operator^=(AK::CPUFeatures&, AK::CPUFeatures) Unexecuted instantiation: JS::operator^=(JS::RegExpObject::Flags&, JS::RegExpObject::Flags) Unexecuted instantiation: Audio::MP3::operator^=(Audio::MP3::ModeExtension&, Audio::MP3::ModeExtension) Unexecuted instantiation: Web::HTML::operator^=(Web::HTML::SandboxingFlagSet&, Web::HTML::SandboxingFlagSet) Unexecuted instantiation: operator^=(KeyModifier&, KeyModifier) Unexecuted instantiation: Web::UIEvents::operator^=(Web::UIEvents::MouseButton&, Web::UIEvents::MouseButton) Unexecuted instantiation: Web::DOM::operator^=(Web::DOM::NodeFilter::WhatToShow&, Web::DOM::NodeFilter::WhatToShow) |
90 | | \ |
91 | | Prefix inline void operator^=(Enum volatile& lhs, Enum rhs) \ |
92 | 0 | { \ |
93 | 0 | using Type = UnderlyingType<Enum>; \ |
94 | 0 | lhs = static_cast<Enum>( \ |
95 | 0 | static_cast<Type>(lhs) ^ static_cast<Type>(rhs)); \ |
96 | 0 | } \ Unexecuted instantiation: AK::operator^=(AK::SplitBehavior volatile&, AK::SplitBehavior) Unexecuted instantiation: Core::operator^=(Core::NotificationType volatile&, Core::NotificationType) Unexecuted instantiation: Core::operator^=(Core::File::OpenMode volatile&, Core::File::OpenMode) Unexecuted instantiation: Gfx::operator^=(Gfx::ViewportMode volatile&, Gfx::ViewportMode) Unexecuted instantiation: FileSystem::operator^=(FileSystem::PreserveMode volatile&, FileSystem::PreserveMode) Unexecuted instantiation: AK::operator^=(AK::CPUFeatures volatile&, AK::CPUFeatures) Unexecuted instantiation: JS::operator^=(JS::RegExpObject::Flags volatile&, JS::RegExpObject::Flags) Unexecuted instantiation: Audio::MP3::operator^=(Audio::MP3::ModeExtension volatile&, Audio::MP3::ModeExtension) Unexecuted instantiation: Web::HTML::operator^=(Web::HTML::SandboxingFlagSet volatile&, Web::HTML::SandboxingFlagSet) Unexecuted instantiation: operator^=(KeyModifier volatile&, KeyModifier) Unexecuted instantiation: Web::UIEvents::operator^=(Web::UIEvents::MouseButton volatile&, Web::UIEvents::MouseButton) Unexecuted instantiation: Web::DOM::operator^=(Web::DOM::NodeFilter::WhatToShow volatile&, Web::DOM::NodeFilter::WhatToShow) |
97 | | \ |
98 | | Prefix constexpr bool has_flag(Enum value, Enum mask) \ |
99 | 3.94M | { \ |
100 | 3.94M | using Type = UnderlyingType<Enum>; \ |
101 | 3.94M | return static_cast<Type>(value & mask) == static_cast<Type>(mask); \ |
102 | 3.94M | } \ AK::has_flag(AK::SplitBehavior, AK::SplitBehavior) Line | Count | Source | 99 | 3.84M | { \ | 100 | 3.84M | using Type = UnderlyingType<Enum>; \ | 101 | 3.84M | return static_cast<Type>(value & mask) == static_cast<Type>(mask); \ | 102 | 3.84M | } \ |
Unexecuted instantiation: Core::has_flag(Core::NotificationType, Core::NotificationType) Unexecuted instantiation: Core::has_flag(Core::File::OpenMode, Core::File::OpenMode) Gfx::has_flag(Gfx::ViewportMode, Gfx::ViewportMode) Line | Count | Source | 99 | 26.6k | { \ | 100 | 26.6k | using Type = UnderlyingType<Enum>; \ | 101 | 26.6k | return static_cast<Type>(value & mask) == static_cast<Type>(mask); \ | 102 | 26.6k | } \ |
Unexecuted instantiation: FileSystem::has_flag(FileSystem::PreserveMode, FileSystem::PreserveMode) AK::has_flag(AK::CPUFeatures, AK::CPUFeatures) Line | Count | Source | 99 | 20 | { \ | 100 | 20 | using Type = UnderlyingType<Enum>; \ | 101 | 20 | return static_cast<Type>(value & mask) == static_cast<Type>(mask); \ | 102 | 20 | } \ |
Unexecuted instantiation: JS::has_flag(JS::RegExpObject::Flags, JS::RegExpObject::Flags) Audio::MP3::has_flag(Audio::MP3::ModeExtension, Audio::MP3::ModeExtension) Line | Count | Source | 99 | 76.6k | { \ | 100 | 76.6k | using Type = UnderlyingType<Enum>; \ | 101 | 76.6k | return static_cast<Type>(value & mask) == static_cast<Type>(mask); \ | 102 | 76.6k | } \ |
Unexecuted instantiation: Web::HTML::has_flag(Web::HTML::SandboxingFlagSet, Web::HTML::SandboxingFlagSet) Unexecuted instantiation: has_flag(KeyModifier, KeyModifier) Unexecuted instantiation: Web::UIEvents::has_flag(Web::UIEvents::MouseButton, Web::UIEvents::MouseButton) Unexecuted instantiation: Web::DOM::has_flag(Web::DOM::NodeFilter::WhatToShow, Web::DOM::NodeFilter::WhatToShow) |
103 | | \ |
104 | | Prefix constexpr bool has_any_flag(Enum value, Enum mask) \ |
105 | 0 | { \ |
106 | 0 | using Type = UnderlyingType<Enum>; \ |
107 | 0 | return static_cast<Type>(value & mask) != 0; \ |
108 | 0 | } Unexecuted instantiation: AK::has_any_flag(AK::SplitBehavior, AK::SplitBehavior) Unexecuted instantiation: Core::has_any_flag(Core::NotificationType, Core::NotificationType) Unexecuted instantiation: Core::has_any_flag(Core::File::OpenMode, Core::File::OpenMode) Unexecuted instantiation: Gfx::has_any_flag(Gfx::ViewportMode, Gfx::ViewportMode) Unexecuted instantiation: FileSystem::has_any_flag(FileSystem::PreserveMode, FileSystem::PreserveMode) Unexecuted instantiation: AK::has_any_flag(AK::CPUFeatures, AK::CPUFeatures) Unexecuted instantiation: JS::has_any_flag(JS::RegExpObject::Flags, JS::RegExpObject::Flags) Unexecuted instantiation: Audio::MP3::has_any_flag(Audio::MP3::ModeExtension, Audio::MP3::ModeExtension) Unexecuted instantiation: Web::HTML::has_any_flag(Web::HTML::SandboxingFlagSet, Web::HTML::SandboxingFlagSet) Unexecuted instantiation: has_any_flag(KeyModifier, KeyModifier) Unexecuted instantiation: Web::UIEvents::has_any_flag(Web::UIEvents::MouseButton, Web::UIEvents::MouseButton) Unexecuted instantiation: Web::DOM::has_any_flag(Web::DOM::NodeFilter::WhatToShow, Web::DOM::NodeFilter::WhatToShow) |