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>
diff --git a/generator/templates/dawn/wire/client/ApiObjects.h b/generator/templates/dawn/wire/client/ApiObjects.h
index 8c1729d..719f893 100644
--- a/generator/templates/dawn/wire/client/ApiObjects.h
+++ b/generator/templates/dawn/wire/client/ApiObjects.h
@@ -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 @@
}
template <>
- struct ObjectTypeToTypeEnum<{{Type}}> {
- static constexpr ObjectType value = ObjectType::{{Type}};
- };
+ static constexpr ObjectType ObjectTypeToTypeEnum<{{Type}}> = ObjectType::{{Type}};
{% endfor %}
} // namespace dawn::wire::client
diff --git a/src/dawn/wire/client/Client.h b/src/dawn/wire/client/Client.h
index ad5769a..d7e29d3 100644
--- a/src/dawn/wire/client/Client.h
+++ b/src/dawn/wire/client/Client.h
@@ -44,7 +44,7 @@
// 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 @@
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