Add *FreeMembers functions for out structs with non-value members
The function is called automatically in the dtor of the C++ structs.
The C++ structs are also made non-copyable to prevent a double-free.
Bug: dawn:1959
Change-Id: Idfebdc1ea144d69543de8ed7671657a0617e3b82
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/141501
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Loko Kung <lokokung@google.com>
Commit-Queue: Austin Eng <enga@chromium.org>
diff --git a/generator/templates/mock_api.cpp b/generator/templates/mock_api.cpp
index bf8f871..91bcfce 100644
--- a/generator/templates/mock_api.cpp
+++ b/generator/templates/mock_api.cpp
@@ -13,6 +13,7 @@
//* limitations under the License.
{% set api = metadata.api.lower() %}
+#include "dawn/common/Log.h"
#include "mock_{{api}}.h"
using namespace testing;
@@ -48,6 +49,12 @@
table->{{as_varName(type.name, method.name)}} = reinterpret_cast<{{as_cProc(type.name, method.name)}}>(Forward{{as_MethodSuffix(type.name, method.name)}});
{% endfor %}
{% endfor %}
+
+ {% for type in by_category["structure"] if type.has_free_members_function %}
+ table->{{as_varName(type.name, Name("free members"))}} = []({{as_cType(type.name)}} {{as_varName(type.name)}}) {
+ dawn::WarningLog() << "No mock available for {{as_varName(type.name, Name('free members'))}}";
+ };
+ {% endfor %}
}
{% for type in by_category["object"] %}