mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 19:57:35 +00:00
AK+Everywhere: Make StdLibExtras templates less wrapper-y
This commit makes the user-facing StdLibExtras templates and utilities arguably more nice-looking by removing the need to reach into the wrapper structs generated by them to get the value/type needed. The C++ standard library had to invent `_v` and `_t` variants (likely because of backwards compat), but we don't need to cater to any codebase except our own, so might as well have good things for free. :^)
This commit is contained in:
parent
d8d16dea95
commit
a6e4482080
41 changed files with 650 additions and 662 deletions
|
@ -90,13 +90,13 @@ public:
|
|||
}
|
||||
|
||||
template<typename T, typename Callback>
|
||||
void for_each_child_of_type(Callback callback) requires IsBaseOf<Object, T>::value;
|
||||
void for_each_child_of_type(Callback callback) requires IsBaseOf<Object, T>;
|
||||
|
||||
template<typename T>
|
||||
T* find_child_of_type_named(const String&) requires IsBaseOf<Object, T>::value;
|
||||
T* find_child_of_type_named(const String&) requires IsBaseOf<Object, T>;
|
||||
|
||||
template<typename T>
|
||||
T* find_descendant_of_type_named(const String&) requires IsBaseOf<Object, T>::value;
|
||||
T* find_descendant_of_type_named(const String&) requires IsBaseOf<Object, T>;
|
||||
|
||||
bool is_ancestor_of(const Object&) const;
|
||||
|
||||
|
@ -187,7 +187,7 @@ struct AK::Formatter<Core::Object> : AK::Formatter<FormatString> {
|
|||
|
||||
namespace Core {
|
||||
template<typename T, typename Callback>
|
||||
inline void Object::for_each_child_of_type(Callback callback) requires IsBaseOf<Object, T>::value
|
||||
inline void Object::for_each_child_of_type(Callback callback) requires IsBaseOf<Object, T>
|
||||
{
|
||||
for_each_child([&](auto& child) {
|
||||
if (auto* child_as_t = dynamic_cast<T*>(&child); child_as_t)
|
||||
|
@ -197,7 +197,7 @@ inline void Object::for_each_child_of_type(Callback callback) requires IsBaseOf<
|
|||
}
|
||||
|
||||
template<typename T>
|
||||
T* Object::find_child_of_type_named(const String& name) requires IsBaseOf<Object, T>::value
|
||||
T* Object::find_child_of_type_named(const String& name) requires IsBaseOf<Object, T>
|
||||
{
|
||||
T* found_child = nullptr;
|
||||
for_each_child_of_type<T>([&](auto& child) {
|
||||
|
@ -212,7 +212,7 @@ T* Object::find_child_of_type_named(const String& name) requires IsBaseOf<Object
|
|||
}
|
||||
|
||||
template<typename T>
|
||||
T* Object::find_descendant_of_type_named(const String& name) requires IsBaseOf<Object, T>::value
|
||||
T* Object::find_descendant_of_type_named(const String& name) requires IsBaseOf<Object, T>
|
||||
{
|
||||
auto* this_as_t = dynamic_cast<T*>(this);
|
||||
if (this_as_t && this->name() == name)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue