diff options
author | FrHun <28605587+frhun@users.noreply.github.com> | 2022-07-04 05:29:46 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2022-07-04 11:15:40 +0200 |
commit | dba6f0bc4bc5aa52b6d8a2b196df763b1d9a1078 (patch) | |
tree | 86ad2d0779e461fdf3792b1fe83a8d795c7a2f2a | |
parent | f35efe9bc833ac8853c390cad488a68859a9f3f1 (diff) | |
download | serenity-dba6f0bc4bc5aa52b6d8a2b196df763b1d9a1078.zip |
AK: Add header for generic shorthands
These are functions that can be expressed with just normal operators,
but would be very repetetive.
-rw-r--r-- | AK/GenericShorthands.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/AK/GenericShorthands.h b/AK/GenericShorthands.h new file mode 100644 index 0000000000..a39b57342a --- /dev/null +++ b/AK/GenericShorthands.h @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2022, Frhun <serenitystuff@frhun.de> + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +namespace AK { + +template<typename T, typename... Ts> +[[nodiscard]] bool first_is_one_of(T const to_compare, Ts const... valid_values) +{ + return (... || (to_compare == valid_values)); +} + +template<typename T, typename... Ts> +[[nodiscard]] bool first_is_smaller_than_one_of(T const to_compare, Ts const... valid_values) +{ + return (... || (to_compare < valid_values)); +} + +template<typename T, typename... Ts> +[[nodiscard]] bool first_is_smaller_or_equal_than_one_of(T const to_compare, Ts const... valid_values) +{ + return (... || (to_compare <= valid_values)); +} + +template<typename T, typename... Ts> +[[nodiscard]] bool first_is_larger_than_one_of(T const to_compare, Ts const... valid_values) +{ + return (... || (to_compare > valid_values)); +} + +template<typename T, typename... Ts> +[[nodiscard]] bool first_is_larger_or_equal_than_one_of(T const to_compare, Ts const... valid_values) +{ + return (... || (to_compare >= valid_values)); +} + +template<typename T, typename... Ts> +[[nodiscard]] bool first_is_smaller_than_all_of(T const to_compare, Ts const... valid_values) +{ + return (... && (to_compare < valid_values)); +} + +template<typename T, typename... Ts> +[[nodiscard]] bool first_is_smaller_or_equal_than_all_of(T const to_compare, Ts const... valid_values) +{ + return (... && (to_compare <= valid_values)); +} + +template<typename T, typename... Ts> +[[nodiscard]] bool first_is_larger_than_all_of(T const to_compare, Ts const... valid_values) +{ + return (... && (to_compare > valid_values)); +} + +template<typename T, typename... Ts> +[[nodiscard]] bool first_is_larger_or_equal_than_all_of(T const to_compare, Ts const... valid_values) +{ + return (... && (to_compare >= valid_values)); +} +} + +using AK::first_is_larger_or_equal_than_all_of; +using AK::first_is_larger_or_equal_than_one_of; +using AK::first_is_larger_than_all_of; +using AK::first_is_larger_than_one_of; +using AK::first_is_one_of; +using AK::first_is_smaller_or_equal_than_all_of; +using AK::first_is_smaller_or_equal_than_one_of; +using AK::first_is_smaller_than_all_of; +using AK::first_is_smaller_than_one_of; |