dawn::wire::client: Make ObjectTypeToTypeEnum a template variable.

Bug: dawn:1451
Change-Id: I21cba4b245b2b574104471da973000d552f1c7de
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/93604
Reviewed-by: Loko Kung <lokokung@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
Corentin Wallez 2022-06-19 19:19:11 +00:00 committed by Dawn LUCI CQ
parent 35199a30ae
commit a55b29e0bd
2 changed files with 6 additions and 10 deletions

View File

@ -20,10 +20,8 @@
namespace dawn::wire::client {
template <typename T>
struct ObjectTypeToTypeEnum {
static constexpr ObjectType value = static_cast<ObjectType>(-1);
};
template<typename T>
static constexpr ObjectType ObjectTypeToTypeEnum = static_cast<ObjectType>(-1);
{% for type in by_category["object"] %}
{% set Type = type.name.CamelCase() %}
@ -43,9 +41,7 @@ namespace dawn::wire::client {
}
template <>
struct ObjectTypeToTypeEnum<{{Type}}> {
static constexpr ObjectType value = ObjectType::{{Type}};
};
static constexpr ObjectType ObjectTypeToTypeEnum<{{Type}}> = ObjectType::{{Type}};
{% endfor %}
} // namespace dawn::wire::client

View File

@ -44,7 +44,7 @@ class Client : public ClientBase {
// T::T(ObjectBaseParams, arg1, arg2, arg3)
template <typename T, typename... Args>
T* Make(Args&&... args) {
constexpr ObjectType type = ObjectTypeToTypeEnum<T>::value;
constexpr ObjectType type = ObjectTypeToTypeEnum<T>;
ObjectBaseParams params = {this, mObjectStores[type].ReserveHandle()};
T* object = new T(params, std::forward<Args>(args)...);
@ -56,13 +56,13 @@ class Client : public ClientBase {
template <typename T>
void Free(T* obj) {
Free(obj, ObjectTypeToTypeEnum<T>::value);
Free(obj, ObjectTypeToTypeEnum<T>);
}
void Free(ObjectBase* obj, ObjectType type);
template <typename T>
T* Get(ObjectId id) {
return static_cast<T*>(mObjectStores[ObjectTypeToTypeEnum<T>::value].Get(id));
return static_cast<T*>(mObjectStores[ObjectTypeToTypeEnum<T>].Get(id));
}
// ChunkedCommandHandler implementation