mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-16 08:27:05 +00:00
Add CastableBase::To() overload with predicate
This allows for a more optimal way to filter the result of To(). Updated Type query functions to make use of it. Added tests. Change-Id: If3a65259345fbe6b92c6d367ab01fa718bb7cfee Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/44463 Reviewed-by: Ben Clayton <bclayton@google.com> Commit-Queue: Antonio Maiorano <amaiorano@google.com>
This commit is contained in:
committed by
Commit Bot service account
parent
b903aadcd2
commit
5106a0653c
@@ -79,11 +79,13 @@ bool Type::is_float_scalar() const {
|
||||
}
|
||||
|
||||
bool Type::is_float_matrix() const {
|
||||
return Is<Matrix>() && As<Matrix>()->type()->is_float_scalar();
|
||||
return Is<Matrix>(
|
||||
[](const Matrix* m) { return m->type()->is_float_scalar(); });
|
||||
}
|
||||
|
||||
bool Type::is_float_vector() const {
|
||||
return Is<Vector>() && As<Vector>()->type()->is_float_scalar();
|
||||
return Is<Vector>(
|
||||
[](const Vector* v) { return v->type()->is_float_scalar(); });
|
||||
}
|
||||
|
||||
bool Type::is_float_scalar_or_vector() const {
|
||||
@@ -95,19 +97,19 @@ bool Type::is_integer_scalar() const {
|
||||
}
|
||||
|
||||
bool Type::is_unsigned_integer_vector() const {
|
||||
return Is<Vector>() && As<Vector>()->type()->Is<U32>();
|
||||
return Is<Vector>([](const Vector* v) { return v->type()->Is<U32>(); });
|
||||
}
|
||||
|
||||
bool Type::is_signed_integer_vector() const {
|
||||
return Is<Vector>() && As<Vector>()->type()->Is<I32>();
|
||||
return Is<Vector>([](const Vector* v) { return v->type()->Is<I32>(); });
|
||||
}
|
||||
|
||||
bool Type::is_unsigned_scalar_or_vector() const {
|
||||
return Is<U32>() || (Is<Vector>() && As<Vector>()->type()->Is<U32>());
|
||||
return Is<U32>() || is_unsigned_integer_vector();
|
||||
}
|
||||
|
||||
bool Type::is_signed_scalar_or_vector() const {
|
||||
return Is<I32>() || (Is<Vector>() && As<Vector>()->type()->Is<I32>());
|
||||
return Is<I32>() || is_signed_integer_vector();
|
||||
}
|
||||
|
||||
bool Type::is_integer_scalar_or_vector() const {
|
||||
@@ -115,7 +117,7 @@ bool Type::is_integer_scalar_or_vector() const {
|
||||
}
|
||||
|
||||
bool Type::is_bool_vector() const {
|
||||
return Is<Vector>() && As<Vector>()->type()->Is<Bool>();
|
||||
return Is<Vector>([](const Vector* v) { return v->type()->Is<Bool>(); });
|
||||
}
|
||||
|
||||
bool Type::is_bool_scalar_or_vector() const {
|
||||
|
||||
Reference in New Issue
Block a user