chromium/components/exo/wayland/compatibility_test/template_client_helpers.h.tmpl

// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

{% set header_guard = "COMPONENTS_EXO_WAYLAND_COMPATIBILITY_TEST_" + protocol.name|upper + "_CLIENT_HELPERS_H_" %}
#ifndef {{ header_guard }}
#define {{ header_guard }}

#include <memory>

#include <{{ protocol.filename }}-client-protocol.h>

namespace std {

{% for interface in protocol.interfaces|sort(attribute="name") %}
template <>
struct default_delete<struct {{ interface.name }}> {
  void operator()(struct {{ interface.name }}*) noexcept;
};

{% endfor %}

}  // namespace std

template <typename T>
struct WaylandGlobalInterfaceDescriptor;

{% for interface in protocol.interfaces|sort(attribute="name") %}
template <>
struct WaylandGlobalInterfaceDescriptor<struct {{ interface.name }}> {
  using CType = struct {{ interface.name }};
  static const wl_interface* protocol_interface;
  static constexpr const char* interface_name = "{{ interface.name }}";
  static constexpr uint32_t protocol_version = {{ interface.version }};
};

{% endfor %}

#endif  /* {{ header_guard }} */