header = """/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */"""
autogen_warning = """/* DO NOT MODIFY THIS MANUALLY! This file was generated using cbindgen. See RunCbindgen.py */
"""
include_guard = "mozilla_dom_MlsGkFFI_h"
include_version = true
braces = "SameLine"
line_length = 100
tab_width = 2
language = "C++"
includes = ["nsStringFwd.h", "nsTArrayForwardDeclare.h"]
# Put FFI calls in the `mozilla::security::mls` namespace.
namespaces = ["mozilla", "security", "mls"]

[enum]
derive_const_casts = true
derive_tagged_enum_destructor = true
cast_assert_name = "MOZ_DIAGNOSTIC_ASSERT"

[export.body]
"GkReceived" = """
  GkReceived() : tag(Tag::None) {}
  GkReceived(GkReceived&& other) : tag(other.tag) {
    switch (tag) {
      case Tag::ApplicationMessage:
        new (&application_message) ApplicationMessage_Body(std::move(other.application_message));
        break;
      case Tag::GroupIdEpoch:
        new (&group_id_epoch) GroupIdEpoch_Body(std::move(other.group_id_epoch));
        break;
      case Tag::CommitOutput:
        new (&commit_output) CommitOutput_Body(std::move(other.commit_output));
        break;
      case Tag::None:
        break;
    }
  }
"""

# Export `ThinVec` references as `nsTArray`.
[export.rename]
"ThinVec" = "nsTArray"
